playwright-json-runner
Version:
Extends Playwright to run tests using JSON-based test definitions.
1 lines • 11.9 kB
Source Map (JSON)
{"version":3,"sources":["../src/schemas/test-base.ts","../src/schemas/locators/playwright-schema-fork.ts","../src/schemas/locators/locator-parameters.ts","../src/schemas/test-action.ts","../src/schemas/test-step.ts","../src/schemas/test-scenario.ts","../src/schemas/test-run.ts"],"names":["z"],"mappings":"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","file":"chunk-JCIGD4K4.mjs","sourcesContent":["import { z } from \"zod\";\n\nconst withLabelSchema = z.object({\n label: z.string().optional(),\n});\nconst withDescriptionSchema = z.object({\n description: z.string().optional(),\n});\nexport const testObjectSchema = withLabelSchema.merge(withDescriptionSchema);\n\n","import { z } from \"zod\";\n\n/**\n * Options for getByRole() as a Zod object, then made optional at the end.\n */\nexport const PlaywrightRoleOptionsSchema = z\n .object({\n checked: z.boolean().optional(),\n disabled: z.boolean().optional(),\n exact: z.boolean().optional(),\n expanded: z.boolean().optional(),\n includeHidden: z.boolean().optional(),\n level: z.number().optional(),\n // For name, accept string or RegExp. \n // If you strictly need to parse only real RegExp objects at runtime, keep it like this.\n // If you want to accept a \"string that might be a pattern,\" consider a string-based approach.\n name: z.union([z.string(), z.instanceof(RegExp)]).optional(),\n pressed: z.boolean().optional(),\n selected: z.boolean().optional(),\n })\n .optional();\n\n \nexport const PlaywrightRoleSchema = z.enum([\n \"alert\",\n \"alertdialog\",\n \"application\",\n \"article\",\n \"banner\",\n \"blockquote\",\n \"button\",\n \"caption\",\n \"cell\",\n \"checkbox\",\n \"code\",\n \"columnheader\",\n \"combobox\",\n \"complementary\",\n \"contentinfo\",\n \"definition\",\n \"deletion\",\n \"dialog\",\n \"directory\",\n \"document\",\n \"emphasis\",\n \"feed\",\n \"figure\",\n \"form\",\n \"generic\",\n \"grid\",\n \"gridcell\",\n \"group\",\n \"heading\",\n \"img\",\n \"insertion\",\n \"link\",\n \"list\",\n \"listbox\",\n \"listitem\",\n \"log\",\n \"main\",\n \"marquee\",\n \"math\",\n \"meter\",\n \"menu\",\n \"menubar\",\n \"menuitem\",\n \"menuitemcheckbox\",\n \"menuitemradio\",\n \"navigation\",\n \"none\",\n \"note\",\n \"option\",\n \"paragraph\",\n \"presentation\",\n \"progressbar\",\n \"radio\",\n \"radiogroup\",\n \"region\",\n \"row\",\n \"rowgroup\",\n \"rowheader\",\n \"scrollbar\",\n \"search\",\n \"searchbox\",\n \"separator\",\n \"slider\",\n \"spinbutton\",\n \"status\",\n \"strong\",\n \"subscript\",\n \"superscript\",\n \"switch\",\n \"tab\",\n \"table\",\n \"tablist\",\n \"tabpanel\",\n \"term\",\n \"textbox\",\n \"time\",\n \"timer\",\n \"toolbar\",\n \"tooltip\",\n \"tree\",\n \"treegrid\",\n \"treeitem\",\n]);\n\n","import { z } from \"zod\";\nimport { PlaywrightRoleOptionsSchema, PlaywrightRoleSchema } from \"./playwright-schema-fork\";\n\n\n/** Selector strategy */\nexport const selectorStrategyParamsSchema = z.object({\n type: z.literal(\"selector\"),\n value: z.string(),\n});\nexport type SelectorStrategyParams = z.infer<typeof selectorStrategyParamsSchema>;\n\n\n/** Role strategy */\nexport const roleStrategyParamsSchema = z.object({\n type: z.literal(\"role\"),\n value: z.object({\n role: PlaywrightRoleSchema,\n options: PlaywrightRoleOptionsSchema,\n }).describe(\"the values for role are role name and then optiosn object e.g. {value: {role: 'link', options: {name: 'sign on'}}}\"),\n});\n\nexport type RoleStrategyParams = z.infer<typeof roleStrategyParamsSchema>;\n\n\n/** Test ID strategy */\nexport const testIdStrategyParamsSchema = z.object({\n type: z.literal(\"testId\"),\n value: z.string(),\n});\nexport type TestIdStrategyParams = z.infer<typeof testIdStrategyParamsSchema>;\n\n/** Text strategy */\nexport const textStrategyParamsSchema = z.object({\n type: z.literal(\"text\"),\n value: z.string(),\n});\nexport type TextStrategyParams = z.infer<typeof textStrategyParamsSchema>;\n\n\n/**\n * 1) First define the TypeScript union type manually.\n * This represents the union of all strategies, including the \"nested\" type\n * that references itself recursively.\n */\nexport type LocatorStrategyParams =\n | z.infer<typeof selectorStrategyParamsSchema>\n | z.infer<typeof roleStrategyParamsSchema>\n | z.infer<typeof testIdStrategyParamsSchema>\n | z.infer<typeof textStrategyParamsSchema>\n | {\n type: \"nested\";\n parent: LocatorStrategyParams;\n child: LocatorStrategyParams;\n };\n\n/**\n * 2) Next, declare a mutable schema variable that we’ll assign after\n * creating the lazy references.\n */\nlet locatorParamsSchema: z.ZodType<LocatorStrategyParams>;\n\n/**\n * 3) Define the nested locator strategy schema. We use z.lazy to handle\n * the self-referencing union.\n */\nexport const nestedStrategyParamsSchema = z.lazy(() =>\n z.object({\n type: z.literal(\"nested\"),\n parent: locatorParamsSchema,\n child: locatorParamsSchema,\n })\n);\nexport type NestedStrategyParams = z.infer<typeof nestedStrategyParamsSchema>;\n\n\n/**\n * 4) Finally, assign the union of all individual schemas plus\n * the nested schema to `locatorParamsSchema`.\n */\nlocatorParamsSchema = z.union([\n selectorStrategyParamsSchema,\n roleStrategyParamsSchema,\n testIdStrategyParamsSchema,\n textStrategyParamsSchema,\n nestedStrategyParamsSchema,\n]);\n\n/**\n * Export the fully built schema and\n * the TypeScript type that is inferred from it.\n */\nexport { locatorParamsSchema };","import { locatorParamsSchema } from \"./locators/locator-parameters\";\nimport { testObjectSchema } from \"./test-base\";\nimport { z } from \"zod\";\n\nexport const actionTypeSchema = z.enum([\n \"setfieldvalue\",\n \"click\",\n \"navigate\",\n \"expect\",\n \"assertFieldValueEquals\",\n \"assertFieldValueContains\",\n \"assertElementExists\",\n \"sleep\"\n]).describe(\"The type of action to perform\");\n\nexport type ActionType = z.infer<typeof actionTypeSchema>;\n\nexport const testActionSchema = testObjectSchema.extend({\n type: actionTypeSchema,\n value: z.string().optional(),\n playwrightFunction: z.string().optional().describe(\"on verify steps, the expect function to use (e.g. toBe is the playwright equivalent to: expect(locator).toBe(value)\"),\n locator: locatorParamsSchema.optional().describe(\"Locator to use for the action\"),\n selector: z.string().optional().describe(\"Selector to use for the action (replaces locator)\"),\n});\nexport type TestAction = z.infer<typeof testActionSchema>;\n","import { testActionSchema } from \"./test-action\";\nimport { testObjectSchema } from \"./test-base\";\nimport { z } from \"zod\";\n\nexport const testStepSchema = testObjectSchema.extend({\n description: z.string(),\n actions: z.array(testActionSchema),\n});\nexport type TestStep = z.infer<typeof testStepSchema>;\n","import { testObjectSchema } from \"./test-base\";\nimport { z } from \"zod\";\nimport { testStepSchema } from \"./test-step\";\n\nexport const testScenarioSchema = testObjectSchema.extend({\n name: z.string(),\n steps: z.array(testStepSchema),\n});\nexport type TestScenario = z.infer<typeof testScenarioSchema>;\n","import { testObjectSchema } from \"./test-base\";\nimport { z } from \"zod\";\nimport { testScenarioSchema } from \"./test-scenario\";\n\nexport const testRunSchema = testObjectSchema.extend({\n browser: z.enum([\"chrome\", \"firefox\", \"webkit\"]),\n host: z.string(),\n scenarios: z.array(testScenarioSchema),\n});\nexport type TestRun = z.infer<typeof testRunSchema>;\n"]}