Praman — Agent-First SAP UI5 Test Automation Plugin - v1.2.0
    Preparing search index...

    Variable testConst

    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.

    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.

    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();
    });