UNPKG

playwright-json-runner

Version:

Extends Playwright to run tests using JSON-based test definitions.

1 lines 4.75 kB
{"version":3,"sources":["../src/runner-playwright.ts"],"names":["config","jsonFiles","_a"],"mappings":";;;;;;AAQA,SAAS,aAAgB,GAAA;AACvB,EAAA,MAAMA,UAAS,gBAAiB,EAAA;AAEhC,EAAA,MAAM,mBAAmB,CAAMA,GAAAA,EAAAA,OAAAA,CAAO,WAAW,CAAA,CAAA,EAAIA,QAAO,aAAa,CAAA,CAAA;AACzE,EAAQ,OAAA,CAAA,GAAA,CAAI,qCAAqC,gBAAgB,CAAA;AACjE,EAAMC,MAAAA,UAAAA,GAAY,SAAS,gBAAkB,EAAA,EAAE,KAAKD,OAAO,CAAA,SAAA,EAAY,QAAU,EAAA,IAAA,EAAM,CAAA;AACvF,EAAA,OAAA,CAAQ,IAAI,QAAUC,EAAAA,UAAAA,IAAA,IAAAA,GAAAA,MAAAA,GAAAA,UAAAA,CAAW,QAAQ,SAAS,CAAA;AAElD,EAAA,OAAO,EAAE,SAAA,EAAAA,UAAW,EAAA,MAAA,EAAAD,OAAO,EAAA;AAC7B;AAEA,SAAS,mBAAmBA,OAAqD,EAAA;AAnBjF,EAAAE,IAAAA,GAAAA;AAoBE,EAAA,MAAM,MAAMF,OAAO,CAAA,WAAA;AACnB,EAAA,IAAI,IAAK,CAAA,UAAA,CAAW,GAAG,CAAA,EAAU,OAAA,GAAA;AACjC,EAAO,OAAA,IAAA,CAAK,IAAKE,CAAAA,CAAAA,GAAAA,GAAAF,OAAO,CAAA,SAAA,KAAP,OAAAE,GAAoB,GAAA,OAAA,CAAQ,GAAI,EAAA,EAAG,GAAG,CAAA;AACzD;AAEA,IAAM,EAAE,SAAA,EAAW,MAAO,EAAA,GAAI,aAAc,EAAA;AAzB5C,IAAA,EAAA;AA2BA,KAAA,MAAW,gBAAgB,SAAW,EAAA;AAEpC,EAAA,MAAM,UAAmB,IAAK,CAAA,KAAA,CAAM,YAAa,CAAA,YAAA,EAAc,OAAO,CAAC,CAAA;AAEvE,EAAW,KAAA,MAAA,QAAA,IAAY,QAAQ,SAAW,EAAA;AACxC,IAAK,IAAA,YAAA,CAAA,IAAA,EAAA,CAAA,EAAA,GAAA,QAAA,CAAS,UAAT,IAAkB,GAAA,EAAA,GAAA,QAAA,CAAS,MAAM,OAAO,EAAE,IAAK,EAAA,EAAG,QAAa,KAAA;AAhCxE,MAAA,IAAAA,GAAA,EAAA,EAAA,EAAA,EAAA;AAiCM,MAAA,MAAM,kBAAqB,GAAA,QAAA,CAAS,OAAQ,CAAA,WAAA,KAAgB,SAAS,OAAQ,CAAA,OAAA;AAC7E,MAAA,IAAI,CAAC,kBAAoB,EAAA;AACvB,QAAC,QAAS,CAAA,OAAA,CAAgB,WAAc,GAAA,kBAAA,CAAmB,MAAM,CAAA;AACjE,QAAC,QAAA,CAAiB,iBAAiB,oBACjC,GAAA,yDAAA;AAAA;AAEJ,MAAA,IAAI,GAAM,GAAA,CAAA;AACV,MAAM,MAAA,IAAA,CAAK,IAAK,CAAA,OAAA,CAAQ,IAAI,CAAA;AAC5B,MAAQ,OAAA,CAAA,GAAA,CAAI,kCAA0BA,GAAA,GAAA,QAAA,CAAS,UAAT,IAAAA,GAAAA,GAAAA,GAAkB,QAAS,CAAA,IAAI,CAAE,CAAA,CAAA;AAEvE,MAAW,KAAA,MAAA,IAAA,IAAQ,SAAS,KAAO,EAAA;AACjC,QAAA,OAAA,CAAQ,IAAI,CAAc,kBAAA,EAAA,CAAA,EAAA,GAAA,IAAA,CAAK,UAAL,IAAc,GAAA,EAAA,GAAA,IAAA,CAAK,WAAW,CAAE,CAAA,CAAA;AAC1D,QAAA,MAAM,kBAAK,IAAK,CAAA,CAAA,EAAA,GAAA,IAAA,CAAK,UAAL,IAAc,GAAA,EAAA,GAAA,IAAA,CAAK,aAAa,YAAY;AAC1D,UAAW,KAAA,MAAA,MAAA,IAAU,KAAK,OAAS,EAAA;AACjC,YAAI,IAAA;AACF,cAAM,MAAA,IAAA,CAAK,QAAS,CAAA,CAAC,EAAO,KAAA,OAAA,CAAQ,IAAI,CAAW,QAAA,EAAA,EAAE,CAAQ,MAAA,CAAA,CAAA,EAAG,GAAG,CAAA;AACnE,cAAM,MAAA,aAAA,CAAc,MAAQ,EAAA,IAAA,EAAM,MAAM,CAAA;AACxC,cAAM,MAAA,IAAA,CAAK,QAAS,CAAA,CAAC,EAAO,KAAA,OAAA,CAAQ,IAAI,CAAW,QAAA,EAAA,EAAE,CAAM,IAAA,CAAA,CAAA,EAAG,GAAG,CAAA;AAAA,aACjE,SAAA;AACA,cAAA,GAAA,EAAA;AAAA;AACF;AACF,SACD,CAAA;AAAA;AACH,KACD,CAAA;AAAA;AAEL","file":"runner-playwright.mjs","sourcesContent":["import { getConfiguration } from \".\";\nimport { test } from '@playwright/test'\nimport { readFileSync } from \"fs\";\nimport { globSync } from \"glob\";\nimport { TestRun } from \".\";\nimport { executeAction } from \".\";\nimport path from \"path\";\n\nfunction loadTestFiles() {\n const config = getConfiguration();\n\n const finalGlobPattern = `**/${config.jsonTestDir}/${config.jsonTestMatch}`;\n console.log(\"Glob pattern to find test files: \", finalGlobPattern);\n const jsonFiles = globSync(finalGlobPattern, { cwd: config.configDir!, absolute: true });\n console.log(\"Found \", jsonFiles?.length, \" Files.\");\n\n return { jsonFiles, config };\n}\n\nfunction resolveSnapshotDir(config: ReturnType<typeof getConfiguration>): string {\n const dir = config.snapshotDir;\n if (path.isAbsolute(dir)) return dir;\n return path.join(config.configDir ?? process.cwd(), dir);\n}\n\nconst { jsonFiles, config } = loadTestFiles();\n\nfor (const testFilePath of jsonFiles) {\n\n const testRun: TestRun = JSON.parse(readFileSync(testFilePath, 'utf-8'));\n\n for (const scenario of testRun.scenarios) {\n test(scenario.label ?? scenario.name, async ({ page }, testInfo) => {\n const userSetSnapshotDir = testInfo.project.snapshotDir !== testInfo.project.testDir;\n if (!userSetSnapshotDir) {\n (testInfo.project as any).snapshotDir = resolveSnapshotDir(config);\n (testInfo as any)._projectInternal.snapshotPathTemplate =\n '{snapshotDir}/{arg}{-projectName}{-snapshotSuffix}{ext}';\n }\n let idx = 0;\n await page.goto(testRun.host);\n console.log(`📌 Executing scenario: ${scenario.label ?? scenario.name}`);\n\n for (const step of scenario.steps) {\n console.log(` 🛠 Step: ${step.label ?? step.description}`);\n await test.step(step.label ?? step.description, async () => {\n for (const action of step.actions) {\n try {\n await page.evaluate((id) => console.log(`JSONIDX:${id}:START`), idx);\n await executeAction(config, page, action);\n await page.evaluate((id) => console.log(`JSONIDX:${id}:END`), idx);\n } finally {\n idx++;\n }\n }\n });\n }\n })\n }\n}\n"]}