Skip to main content
Version: 1.x

Variable: test

const test: MergedTestType<[TestType<PlaywrightTestArgs & PlaywrightTestOptions & TestFixtures & ModuleFixtures, PlaywrightWorkerArgs & PlaywrightWorkerOptions & WorkerFixtures>, TestType<PlaywrightTestArgs & PlaywrightTestOptions & AuthFixtures & AuthFixtureOptions, PlaywrightWorkerArgs & PlaywrightWorkerOptions & AuthDeps>, TestType<PlaywrightTestArgs & PlaywrightTestOptions & NavFixtures, PlaywrightWorkerArgs & PlaywrightWorkerOptions & NavWorkerDeps>]>

Unified Playwright test object with all Praman fixtures.

Remarks

Combines moduleTest (config, logger, ui5 + table/dialog/date/odata), authTest (sapAuth), navTest (ui5Navigation, btpWorkZone), stabilityTest (auto-wait, request interception), and feTest (fe).

Fixture override precedence in mergeTests():

When multiple modules declare the same fixture name, Playwright resolves them using last-writer-wins semantics — the last module in the argument list that provides a real (non-placeholder) implementation wins.

Overlapping fixtures and their resolution:

  • pramanConfig / rootLogger — real impl in coreTest (pulled in transitively via moduleTest); 7 other modules declare placeholders (option: true) that are satisfied by the real provider.

  • ui5 — base impl in coreTest, overridden by moduleTest (adds .table, .dialog, .date, .odata sub-namespaces). intentTest declares a placeholder that resolves to moduleTest's enriched version. moduleTest must appear before intentTest.

  • All remaining fixture names (sapAuth, fe, intent, flpLocks, etc.) are unique to their respective modules — no precedence concern.

Example

import { test } from 'playwright-praman';

test('table and FE ops', async ({ ui5, ui5Navigation, fe }) => {
await ui5Navigation.navigateToApp('PurchaseOrder-manage');
await ui5.table.getRows('myTable');
await fe.listReport.search();
});