@one2x/playwright 1.57.0-alpha.1 → 1.57.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/package.json +2 -2
  2. package/lib/agents/generateAgents.js.map +0 -7
  3. package/lib/common/config.js.map +0 -7
  4. package/lib/common/configLoader.js.map +0 -7
  5. package/lib/common/esmLoaderHost.js.map +0 -7
  6. package/lib/common/expectBundle.js.map +0 -7
  7. package/lib/common/expectBundleImpl.js.map +0 -7
  8. package/lib/common/fixtures.js.map +0 -7
  9. package/lib/common/globals.js.map +0 -7
  10. package/lib/common/ipc.js.map +0 -7
  11. package/lib/common/poolBuilder.js.map +0 -7
  12. package/lib/common/process.js.map +0 -7
  13. package/lib/common/suiteUtils.js.map +0 -7
  14. package/lib/common/test.js.map +0 -7
  15. package/lib/common/testLoader.js.map +0 -7
  16. package/lib/common/testType.js.map +0 -7
  17. package/lib/common/validators.js.map +0 -7
  18. package/lib/fsWatcher.js.map +0 -7
  19. package/lib/index.js.map +0 -7
  20. package/lib/internalsForTest.js.map +0 -7
  21. package/lib/isomorphic/events.js.map +0 -7
  22. package/lib/isomorphic/folders.js.map +0 -7
  23. package/lib/isomorphic/stringInternPool.js.map +0 -7
  24. package/lib/isomorphic/teleReceiver.js.map +0 -7
  25. package/lib/isomorphic/teleSuiteUpdater.js.map +0 -7
  26. package/lib/isomorphic/testServerConnection.js.map +0 -7
  27. package/lib/isomorphic/testServerInterface.js.map +0 -7
  28. package/lib/isomorphic/testTree.js.map +0 -7
  29. package/lib/isomorphic/types.d.js.map +0 -7
  30. package/lib/loader/loaderMain.js.map +0 -7
  31. package/lib/matchers/expect.js.map +0 -7
  32. package/lib/matchers/matcherHint.js.map +0 -7
  33. package/lib/matchers/matchers.js.map +0 -7
  34. package/lib/matchers/toBeTruthy.js.map +0 -7
  35. package/lib/matchers/toEqual.js.map +0 -7
  36. package/lib/matchers/toHaveURL.js.map +0 -7
  37. package/lib/matchers/toMatchAriaSnapshot.js.map +0 -7
  38. package/lib/matchers/toMatchSnapshot.js.map +0 -7
  39. package/lib/matchers/toMatchText.js.map +0 -7
  40. package/lib/mcp/browser/actions.d.js.map +0 -7
  41. package/lib/mcp/browser/browserContextFactory.js.map +0 -7
  42. package/lib/mcp/browser/browserServerBackend.js.map +0 -7
  43. package/lib/mcp/browser/codegen.js.map +0 -7
  44. package/lib/mcp/browser/config.js.map +0 -7
  45. package/lib/mcp/browser/context.js.map +0 -7
  46. package/lib/mcp/browser/response.js.map +0 -7
  47. package/lib/mcp/browser/sessionLog.js.map +0 -7
  48. package/lib/mcp/browser/tab.js.map +0 -7
  49. package/lib/mcp/browser/tools/actionRetry.js.map +0 -7
  50. package/lib/mcp/browser/tools/common.js.map +0 -7
  51. package/lib/mcp/browser/tools/console.js.map +0 -7
  52. package/lib/mcp/browser/tools/dialogs.js.map +0 -7
  53. package/lib/mcp/browser/tools/evaluate.js.map +0 -7
  54. package/lib/mcp/browser/tools/files.js.map +0 -7
  55. package/lib/mcp/browser/tools/form.js.map +0 -7
  56. package/lib/mcp/browser/tools/install.js.map +0 -7
  57. package/lib/mcp/browser/tools/keyboard.js.map +0 -7
  58. package/lib/mcp/browser/tools/mouse.js.map +0 -7
  59. package/lib/mcp/browser/tools/navigate.js.map +0 -7
  60. package/lib/mcp/browser/tools/network.js.map +0 -7
  61. package/lib/mcp/browser/tools/pdf.js.map +0 -7
  62. package/lib/mcp/browser/tools/screenshot.js.map +0 -7
  63. package/lib/mcp/browser/tools/snapshot.js.map +0 -7
  64. package/lib/mcp/browser/tools/tabs.js.map +0 -7
  65. package/lib/mcp/browser/tools/tool.js.map +0 -7
  66. package/lib/mcp/browser/tools/tracing.js.map +0 -7
  67. package/lib/mcp/browser/tools/utils.js.map +0 -7
  68. package/lib/mcp/browser/tools/verify.js.map +0 -7
  69. package/lib/mcp/browser/tools/wait.js.map +0 -7
  70. package/lib/mcp/browser/tools.js.map +0 -7
  71. package/lib/mcp/browser/watchdog.js.map +0 -7
  72. package/lib/mcp/config.d.js.map +0 -7
  73. package/lib/mcp/extension/cdpRelay.js.map +0 -7
  74. package/lib/mcp/extension/extensionContextFactory.js.map +0 -7
  75. package/lib/mcp/extension/protocol.js.map +0 -7
  76. package/lib/mcp/index.js.map +0 -7
  77. package/lib/mcp/log.js.map +0 -7
  78. package/lib/mcp/program.js.map +0 -7
  79. package/lib/mcp/sdk/bundle.js.map +0 -7
  80. package/lib/mcp/sdk/exports.js.map +0 -7
  81. package/lib/mcp/sdk/http.js.map +0 -7
  82. package/lib/mcp/sdk/inProcessTransport.js.map +0 -7
  83. package/lib/mcp/sdk/mdb.js.map +0 -7
  84. package/lib/mcp/sdk/proxyBackend.js.map +0 -7
  85. package/lib/mcp/sdk/server.js.map +0 -7
  86. package/lib/mcp/sdk/tool.js.map +0 -7
  87. package/lib/mcp/test/browserBackend.js.map +0 -7
  88. package/lib/mcp/test/generatorTools.js.map +0 -7
  89. package/lib/mcp/test/plannerTools.js.map +0 -7
  90. package/lib/mcp/test/seed.js.map +0 -7
  91. package/lib/mcp/test/streams.js.map +0 -7
  92. package/lib/mcp/test/testBackend.js.map +0 -7
  93. package/lib/mcp/test/testContext.js.map +0 -7
  94. package/lib/mcp/test/testTool.js.map +0 -7
  95. package/lib/mcp/test/testTools.js.map +0 -7
  96. package/lib/mcpBundleImpl.js.map +0 -7
  97. package/lib/plugins/gitCommitInfoPlugin.js.map +0 -7
  98. package/lib/plugins/index.js.map +0 -7
  99. package/lib/plugins/webServerPlugin.js.map +0 -7
  100. package/lib/program.js.map +0 -7
  101. package/lib/reporters/base.js.map +0 -7
  102. package/lib/reporters/blob.js.map +0 -7
  103. package/lib/reporters/dot.js.map +0 -7
  104. package/lib/reporters/empty.js.map +0 -7
  105. package/lib/reporters/github.js.map +0 -7
  106. package/lib/reporters/html.js.map +0 -7
  107. package/lib/reporters/internalReporter.js.map +0 -7
  108. package/lib/reporters/json.js.map +0 -7
  109. package/lib/reporters/junit.js.map +0 -7
  110. package/lib/reporters/line.js.map +0 -7
  111. package/lib/reporters/list.js.map +0 -7
  112. package/lib/reporters/listModeReporter.js.map +0 -7
  113. package/lib/reporters/markdown.js.map +0 -7
  114. package/lib/reporters/merge.js.map +0 -7
  115. package/lib/reporters/multiplexer.js.map +0 -7
  116. package/lib/reporters/reporterV2.js.map +0 -7
  117. package/lib/reporters/teleEmitter.js.map +0 -7
  118. package/lib/reporters/versions/blobV1.js.map +0 -7
  119. package/lib/runner/dispatcher.js.map +0 -7
  120. package/lib/runner/failureTracker.js.map +0 -7
  121. package/lib/runner/lastRun.js.map +0 -7
  122. package/lib/runner/loadUtils.js.map +0 -7
  123. package/lib/runner/loaderHost.js.map +0 -7
  124. package/lib/runner/processHost.js.map +0 -7
  125. package/lib/runner/projectUtils.js.map +0 -7
  126. package/lib/runner/rebase.js.map +0 -7
  127. package/lib/runner/reporters.js.map +0 -7
  128. package/lib/runner/runner.js +0 -110
  129. package/lib/runner/sigIntWatcher.js.map +0 -7
  130. package/lib/runner/taskRunner.js.map +0 -7
  131. package/lib/runner/tasks.js.map +0 -7
  132. package/lib/runner/testGroups.js.map +0 -7
  133. package/lib/runner/testRunner.js.map +0 -7
  134. package/lib/runner/testServer.js.map +0 -7
  135. package/lib/runner/uiModeReporter.js.map +0 -7
  136. package/lib/runner/vcs.js.map +0 -7
  137. package/lib/runner/watchMode.js.map +0 -7
  138. package/lib/runner/workerHost.js.map +0 -7
  139. package/lib/third_party/pirates.js.map +0 -7
  140. package/lib/third_party/tsconfig-loader.js.map +0 -7
  141. package/lib/transform/babelBundle.js.map +0 -7
  142. package/lib/transform/babelBundleImpl.js.map +0 -7
  143. package/lib/transform/compilationCache.js.map +0 -7
  144. package/lib/transform/esmLoader.js.map +0 -7
  145. package/lib/transform/portTransport.js.map +0 -7
  146. package/lib/transform/transform.js.map +0 -7
  147. package/lib/util.js.map +0 -7
  148. package/lib/utilsBundle.js.map +0 -7
  149. package/lib/utilsBundleImpl.js.map +0 -7
  150. package/lib/worker/fixtureRunner.js.map +0 -7
  151. package/lib/worker/testInfo.js.map +0 -7
  152. package/lib/worker/testTracing.js.map +0 -7
  153. package/lib/worker/timeoutManager.js.map +0 -7
  154. package/lib/worker/util.js.map +0 -7
  155. package/lib/worker/workerMain.js.map +0 -7
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@one2x/playwright",
3
- "version": "1.57.0-alpha.1",
3
+ "version": "1.57.0-alpha.2",
4
4
  "description": "A high-level API to automate web browsers",
5
5
  "repository": {
6
6
  "type": "git",
@@ -65,7 +65,7 @@
65
65
  "license": "Apache-2.0",
66
66
  "dependencies": {
67
67
  "content-type": "^1.0.5",
68
- "playwright-core": "npm:@one2x/playwright-core@1.57.0-alpha.1",
68
+ "playwright-core": "npm:@one2x/playwright-core@1.57.0-alpha.2",
69
69
  "raw-body": "^2.5.2"
70
70
  },
71
71
  "optionalDependencies": {
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/agents/generateAgents.ts"],
4
- "sourcesContent": ["/**\n * Copyright Microsoft Corporation. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport fs from 'fs';\nimport path from 'path';\n\nimport { colors, yaml } from 'playwright-core/lib/utilsBundle';\nimport { mkdirIfNeeded } from 'playwright-core/lib/utils';\n\nimport { FullConfigInternal } from '../common/config';\nimport { defaultSeedFile, findSeedFile, seedFileContent, seedProject } from '../mcp/test/seed';\n\ninterface AgentHeader {\n name: string;\n description: string;\n model: string;\n color: string;\n tools: string[];\n}\n\ninterface Agent {\n header: AgentHeader;\n instructions: string;\n examples: string[];\n}\n\n/* eslint-disable no-console */\n\nclass AgentParser {\n static async loadAgents(): Promise<Agent[]> {\n const files = await fs.promises.readdir(__dirname);\n return Promise.all(files.filter(file => file.endsWith('.agent.md')).map(file => AgentParser.parseFile(path.join(__dirname, file))));\n }\n\n static async parseFile(filePath: string): Promise<Agent> {\n const source = await fs.promises.readFile(filePath, 'utf-8');\n const { header, content } = this.extractYamlAndContent(source);\n const { instructions, examples } = this.extractInstructionsAndExamples(content);\n return { header, instructions, examples };\n }\n\n static extractYamlAndContent(markdown: string): { header: AgentHeader; content: string } {\n const lines = markdown.split('\\n');\n\n if (lines[0] !== '---')\n throw new Error('Markdown file must start with YAML front matter (---)');\n\n let yamlEndIndex = -1;\n for (let i = 1; i < lines.length; i++) {\n if (lines[i] === '---') {\n yamlEndIndex = i;\n break;\n }\n }\n\n if (yamlEndIndex === -1)\n throw new Error('YAML front matter must be closed with ---');\n\n const yamlLines = lines.slice(1, yamlEndIndex);\n const yamlRaw = yamlLines.join('\\n');\n const contentLines = lines.slice(yamlEndIndex + 1);\n const content = contentLines.join('\\n');\n\n let header: AgentHeader;\n try {\n header = yaml.parse(yamlRaw) as AgentHeader;\n } catch (error: any) {\n throw new Error(`Failed to parse YAML header: ${error.message}`);\n }\n\n if (!header.name)\n throw new Error('YAML header must contain a \"name\" field');\n\n if (!header.description)\n throw new Error('YAML header must contain a \"description\" field');\n\n return { header, content };\n }\n\n static extractInstructionsAndExamples(content: string): { instructions: string; examples: string[] } {\n const examples: string[] = [];\n\n const instructions = content.split('<example>')[0].trim();\n const exampleRegex = /<example>([\\s\\S]*?)<\\/example>/g;\n let match: RegExpExecArray | null;\n\n while ((match = exampleRegex.exec(content)) !== null) {\n const example = match[1].trim();\n examples.push(example.replace(/[\\n]/g, ' ').replace(/ +/g, ' '));\n }\n\n return { instructions, examples };\n }\n}\n\nexport class ClaudeGenerator {\n static async init(config: FullConfigInternal, projectName: string, prompts: boolean) {\n await initRepo(config, projectName, {\n promptsFolder: prompts ? '.claude/prompts' : undefined,\n });\n\n const agents = await AgentParser.loadAgents();\n\n await fs.promises.mkdir('.claude/agents', { recursive: true });\n for (const agent of agents)\n await writeFile(`.claude/agents/${agent.header.name}.md`, ClaudeGenerator.agentSpec(agent), '\uD83E\uDD16', 'agent definition');\n\n await writeFile('.mcp.json', JSON.stringify({\n mcpServers: {\n 'playwright-test': {\n command: 'npx',\n args: ['playwright', 'run-test-mcp-server'],\n }\n }\n }, null, 2), '\uD83D\uDD27', 'mcp configuration');\n\n initRepoDone();\n }\n\n static agentSpec(agent: Agent): string {\n const claudeToolMap = new Map<string, string[]>([\n ['search', ['Glob', 'Grep', 'Read', 'LS']],\n ['edit', ['Edit', 'MultiEdit', 'Write']],\n ]);\n\n function asClaudeTool(tool: string): string {\n const [first, second] = tool.split('/');\n if (!second)\n return (claudeToolMap.get(first) || [first]).join(', ');\n return `mcp__${first}__${second}`;\n }\n\n const examples = agent.examples.length ? ` Examples: ${agent.examples.map(example => `<example>${example}</example>`).join('')}` : '';\n const lines: string[] = [];\n const header = {\n name: agent.header.name,\n description: agent.header.description + examples,\n tools: agent.header.tools.map(tool => asClaudeTool(tool)).join(', '),\n model: agent.header.model,\n color: agent.header.color,\n };\n lines.push(`---`);\n lines.push(yaml.stringify(header, { lineWidth: 100000 }) + `---`);\n lines.push('');\n lines.push(agent.instructions);\n return lines.join('\\n');\n }\n}\n\nexport class OpencodeGenerator {\n static async init(config: FullConfigInternal, projectName: string, prompts: boolean) {\n await initRepo(config, projectName, {\n defaultAgentName: 'Build',\n promptsFolder: prompts ? '.opencode/prompts' : undefined\n });\n\n const agents = await AgentParser.loadAgents();\n\n for (const agent of agents) {\n const prompt = [agent.instructions];\n prompt.push('');\n prompt.push(...agent.examples.map(example => `<example>${example}</example>`));\n await writeFile(`.opencode/prompts/${agent.header.name}.md`, prompt.join('\\n'), '\uD83E\uDD16', 'agent definition');\n }\n\n await writeFile('opencode.json', OpencodeGenerator.configuration(agents), '\uD83D\uDD27', 'opencode configuration');\n\n initRepoDone();\n }\n\n static configuration(agents: Agent[]): string {\n const opencodeToolMap = new Map<string, string[]>([\n ['search', ['ls', 'glob', 'grep', 'read']],\n ['edit', ['edit', 'write']],\n ]);\n\n const asOpencodeTool = (tools: Record<string, boolean>, tool: string) => {\n const [first, second] = tool.split('/');\n if (!second) {\n for (const tool of opencodeToolMap.get(first) || [first])\n tools[tool] = true;\n } else {\n tools[`${first}*${second}`] = true;\n }\n };\n\n const result: Record<string, any> = {};\n result['$schema'] = 'https://opencode.ai/config.json';\n result['mcp'] = {};\n result['tools'] = {\n 'playwright*': false,\n };\n result['agent'] = {};\n for (const agent of agents) {\n const tools: Record<string, boolean> = {};\n result['agent'][agent.header.name] = {\n description: agent.header.description,\n mode: 'subagent',\n prompt: `{file:.opencode/prompts/${agent.header.name}.md}`,\n tools,\n };\n for (const tool of agent.header.tools)\n asOpencodeTool(tools, tool);\n }\n\n result['mcp']['playwright-test'] = {\n type: 'local',\n command: ['npx', 'playwright', 'run-test-mcp-server'],\n enabled: true,\n };\n\n return JSON.stringify(result, null, 2);\n }\n}\nexport class CopilotGenerator {\n static async init(config: FullConfigInternal, projectName: string, prompts: boolean) {\n\n await initRepo(config, projectName, {\n defaultAgentName: 'agent',\n promptsFolder: prompts ? '.github/prompts' : undefined,\n promptSuffix: 'prompt'\n });\n\n const agents = await AgentParser.loadAgents();\n\n await fs.promises.mkdir('.github/agents', { recursive: true });\n for (const agent of agents)\n await writeFile(`.github/agents/${agent.header.name}.agent.md`, CopilotGenerator.agentSpec(agent), '\uD83E\uDD16', 'agent definition');\n\n await deleteFile(`.github/chatmodes/ \uD83C\uDFAD planner.chatmode.md`, 'legacy planner chatmode');\n await deleteFile(`.github/chatmodes/\uD83C\uDFAD generator.chatmode.md`, 'legacy generator chatmode');\n await deleteFile(`.github/chatmodes/\uD83C\uDFAD healer.chatmode.md`, 'legacy healer chatmode');\n\n await VSCodeGenerator.appendToMCPJson();\n const cwdFolder = path.basename(process.cwd());\n\n const mcpConfig = {\n 'mcpServers': {\n 'playwright-test': {\n 'type': 'stdio',\n 'command': 'npx',\n 'args': [\n `--prefix=/home/runner/work/${cwdFolder}/${cwdFolder}`,\n 'playwright',\n 'run-test-mcp-server',\n '--headless',\n `--config=/home/runner/work/${cwdFolder}/${cwdFolder}`\n ],\n 'tools': ['*']\n }\n }\n };\n\n if (!fs.existsSync('.github/copilot-setup-steps.yml')) {\n const yaml = fs.readFileSync(path.join(__dirname, 'copilot-setup-steps.yml'), 'utf-8');\n await writeFile('.github/workflows/copilot-setup-steps.yml', yaml, '\uD83D\uDD27', 'GitHub Copilot setup steps');\n }\n\n console.log('');\n console.log('');\n console.log(' \uD83D\uDD27 TODO: GitHub > Settings > Copilot > Coding agent > MCP configuration');\n console.log('------------------------------------------------------------------');\n console.log(JSON.stringify(mcpConfig, null, 2));\n console.log('------------------------------------------------------------------');\n\n initRepoDone();\n }\n\n static agentSpec(agent: Agent): string {\n const examples = agent.examples.length ? ` Examples: ${agent.examples.map(example => `<example>${example}</example>`).join('')}` : '';\n const lines: string[] = [];\n const header = {\n name: agent.header.name,\n description: agent.header.description + examples,\n tools: agent.header.tools,\n model: 'Claude Sonnet 4',\n };\n lines.push(`---`);\n lines.push(yaml.stringify(header) + `---`);\n lines.push('');\n lines.push(agent.instructions);\n lines.push('');\n return lines.join('\\n');\n }\n}\n\nexport class VSCodeGenerator {\n static async init(config: FullConfigInternal, projectName: string) {\n await initRepo(config, projectName, {\n promptsFolder: undefined\n });\n const agents = await AgentParser.loadAgents();\n\n const nameMap = new Map<string, string>([\n ['playwright-test-planner', ' \uD83C\uDFAD planner'],\n ['playwright-test-generator', '\uD83C\uDFAD generator'],\n ['playwright-test-healer', '\uD83C\uDFAD healer'],\n ]);\n\n await fs.promises.mkdir('.github/chatmodes', { recursive: true });\n for (const agent of agents)\n await writeFile(`.github/chatmodes/${nameMap.get(agent.header.name)}.chatmode.md`, VSCodeGenerator.agentSpec(agent), '\uD83E\uDD16', 'chatmode definition');\n\n await VSCodeGenerator.appendToMCPJson();\n\n initRepoDone();\n }\n\n static async appendToMCPJson() {\n await fs.promises.mkdir('.vscode', { recursive: true });\n\n const mcpJsonPath = '.vscode/mcp.json';\n let mcpJson: any = {\n servers: {},\n inputs: []\n };\n try {\n mcpJson = JSON.parse(fs.readFileSync(mcpJsonPath, 'utf8'));\n } catch {\n }\n\n if (!mcpJson.servers)\n mcpJson.servers = {};\n\n mcpJson.servers['playwright-test'] = {\n type: 'stdio',\n command: 'npx',\n args: ['playwright', 'run-test-mcp-server'],\n };\n await writeFile(mcpJsonPath, JSON.stringify(mcpJson, null, 2), '\uD83D\uDD27', 'mcp configuration');\n }\n\n static agentSpec(agent: Agent): string {\n const vscodeToolMap = new Map<string, string[]>([\n ['search', ['search/listDirectory', 'search/fileSearch', 'search/textSearch']],\n ['read', ['search/readFile']],\n ['edit', ['edit/editFiles']],\n ['write', ['edit/createFile', 'edit/createDirectory']],\n ]);\n const vscodeToolsOrder = ['edit/createFile', 'edit/createDirectory', 'edit/editFiles', 'search/fileSearch', 'search/textSearch', 'search/listDirectory', 'search/readFile'];\n const vscodeMcpName = 'playwright-test';\n\n function asVscodeTool(tool: string): string | string[] {\n const [first, second] = tool.split('/');\n if (second)\n return `${vscodeMcpName}/${second}`;\n return vscodeToolMap.get(first) || first;\n }\n const tools = agent.header.tools.map(asVscodeTool).flat().sort((a, b) => {\n // VSCode insists on the specific tools order when editing agent config.\n const indexA = vscodeToolsOrder.indexOf(a);\n const indexB = vscodeToolsOrder.indexOf(b);\n if (indexA === -1 && indexB === -1)\n return a.localeCompare(b);\n if (indexA === -1)\n return 1;\n if (indexB === -1)\n return -1;\n return indexA - indexB;\n }).map(tool => `'${tool}'`).join(', ');\n\n const lines: string[] = [];\n lines.push(`---`);\n lines.push(`description: ${agent.header.description}.`);\n lines.push(`tools: [${tools}]`);\n lines.push(`---`);\n lines.push('');\n lines.push(agent.instructions);\n for (const example of agent.examples)\n lines.push(`<example>${example}</example>`);\n\n lines.push('');\n return lines.join('\\n');\n }\n}\n\nasync function writeFile(filePath: string, content: string, icon: string, description: string) {\n console.log(` ${icon} ${path.relative(process.cwd(), filePath)} ${colors.dim('- ' + description)}`);\n await mkdirIfNeeded(filePath);\n await fs.promises.writeFile(filePath, content, 'utf-8');\n}\n\nasync function deleteFile(filePath: string, description: string) {\n try {\n if (!fs.existsSync(filePath))\n return;\n } catch {\n return;\n }\n\n console.log(` \u2702\uFE0F ${path.relative(process.cwd(), filePath)} ${colors.dim('- ' + description)}`);\n await fs.promises.unlink(filePath);\n}\n\ntype RepoParams = {\n promptsFolder?: string;\n promptSuffix?: string;\n defaultAgentName?: string;\n};\n\nasync function initRepo(config: FullConfigInternal, projectName: string, options: RepoParams) {\n const project = seedProject(config, projectName);\n console.log(` \uD83C\uDFAD Using project \"${project.project.name}\" as a primary project`);\n\n if (!fs.existsSync('specs')) {\n await fs.promises.mkdir('specs');\n await writeFile(path.join('specs', 'README.md'), `# Specs\n\nThis is a directory for test plans.\n`, '\uD83D\uDCDD', 'directory for test plans');\n }\n\n let seedFile = await findSeedFile(project);\n if (!seedFile) {\n seedFile = defaultSeedFile(project);\n await writeFile(seedFile, seedFileContent, '\uD83C\uDF31', 'default environment seed file');\n }\n\n if (options.promptsFolder) {\n await fs.promises.mkdir(options.promptsFolder, { recursive: true });\n\n for (const promptFile of await fs.promises.readdir(__dirname)) {\n if (!promptFile.endsWith('.prompt.md'))\n continue;\n const shortName = promptFile.replace('.prompt.md', '');\n const fileName = options.promptSuffix ? `${shortName}.${options.promptSuffix}.md` : `${shortName}.md`;\n const content = await loadPrompt(promptFile, {\n defaultAgentName: 'default',\n ...options,\n seedFile: path.relative(process.cwd(), seedFile)\n });\n await writeFile(path.join(options.promptsFolder, fileName), content, '\uD83D\uDCDD', 'prompt template');\n }\n }\n}\n\nfunction initRepoDone() {\n console.log(' \u2705 Done.');\n}\n\nasync function loadPrompt(file: string, params: Record<string, string>) {\n const content = await fs.promises.readFile(path.join(__dirname, file), 'utf-8');\n return Object.entries(params).reduce((acc, [key, value]) => {\n return acc.replace(new RegExp(`\\\\\\${${key}}`, 'g'), value);\n }, content);\n}\n"],
5
- "mappings": "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",
6
- "names": ["fs", "path", "tool", "yaml"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/common/config.ts"],
4
- "sourcesContent": ["/**\n * Copyright Microsoft Corporation. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport fs from 'fs';\nimport os from 'os';\nimport path from 'path';\n\nimport { getPackageJsonPath, mergeObjects } from '../util';\n\nimport type { Config, Fixtures, Metadata, Project, ReporterDescription } from '../../types/test';\nimport type { TestRunnerPluginRegistration } from '../plugins';\nimport type { TestCaseFilter } from '../util';\nimport type { ConfigCLIOverrides } from './ipc';\nimport type { Location } from '../../types/testReporter';\nimport type { FullConfig, FullProject } from '../../types/testReporter';\n\nexport type ConfigLocation = {\n resolvedConfigFile?: string;\n configDir: string;\n};\n\nexport type FixturesWithLocation = {\n fixtures: Fixtures;\n location: Location;\n};\n\nexport const defaultTimeout = 30000;\n\nexport class FullConfigInternal {\n readonly config: FullConfig;\n readonly configDir: string;\n readonly configCLIOverrides: ConfigCLIOverrides;\n readonly webServers: NonNullable<FullConfig['webServer']>[];\n readonly plugins: TestRunnerPluginRegistration[];\n readonly projects: FullProjectInternal[] = [];\n readonly singleTSConfigPath?: string;\n readonly captureGitInfo: Config['captureGitInfo'];\n readonly failOnFlakyTests: boolean;\n cliArgs: string[] = [];\n cliGrep: string | undefined;\n cliGrepInvert: string | undefined;\n cliOnlyChanged: string | undefined;\n cliProjectFilter?: string[];\n cliListOnly = false;\n cliPassWithNoTests?: boolean;\n cliLastFailed?: boolean;\n cliTestList?: string;\n cliTestListInvert?: string;\n preOnlyTestFilters: TestCaseFilter[] = [];\n postShardTestFilters: TestCaseFilter[] = [];\n defineConfigWasUsed = false;\n\n globalSetups: string[] = [];\n globalTeardowns: string[] = [];\n\n constructor(location: ConfigLocation, userConfig: Config, configCLIOverrides: ConfigCLIOverrides, metadata?: Metadata) {\n if (configCLIOverrides.projects && userConfig.projects)\n throw new Error(`Cannot use --browser option when configuration file defines projects. Specify browserName in the projects instead.`);\n\n const { resolvedConfigFile, configDir } = location;\n const packageJsonPath = getPackageJsonPath(configDir);\n const packageJsonDir = packageJsonPath ? path.dirname(packageJsonPath) : process.cwd();\n\n this.configDir = configDir;\n this.configCLIOverrides = configCLIOverrides;\n const privateConfiguration = (userConfig as any)['@playwright/test'];\n this.plugins = (privateConfiguration?.plugins || []).map((p: any) => ({ factory: p }));\n this.singleTSConfigPath = pathResolve(configDir, userConfig.tsconfig);\n this.captureGitInfo = userConfig.captureGitInfo;\n this.failOnFlakyTests = takeFirst(configCLIOverrides.failOnFlakyTests, userConfig.failOnFlakyTests, false);\n\n this.globalSetups = (Array.isArray(userConfig.globalSetup) ? userConfig.globalSetup : [userConfig.globalSetup]).map(s => resolveScript(s, configDir)).filter(script => script !== undefined);\n this.globalTeardowns = (Array.isArray(userConfig.globalTeardown) ? userConfig.globalTeardown : [userConfig.globalTeardown]).map(s => resolveScript(s, configDir)).filter(script => script !== undefined);\n\n // Make sure we reuse same metadata instance between FullConfigInternal instances,\n // so that plugins such as gitCommitInfoPlugin can populate metadata once.\n userConfig.metadata = userConfig.metadata || {};\n\n const globalTags = Array.isArray(userConfig.tag) ? userConfig.tag : (userConfig.tag ? [userConfig.tag] : []);\n for (const tag of globalTags) {\n if (tag[0] !== '@')\n throw new Error(`Tag must start with \"@\" symbol, got \"${tag}\" instead.`);\n }\n\n this.config = {\n configFile: resolvedConfigFile,\n rootDir: pathResolve(configDir, userConfig.testDir) || configDir,\n forbidOnly: takeFirst(configCLIOverrides.forbidOnly, userConfig.forbidOnly, false),\n fullyParallel: takeFirst(configCLIOverrides.fullyParallel, userConfig.fullyParallel, false),\n globalSetup: this.globalSetups[0] ?? null,\n globalTeardown: this.globalTeardowns[0] ?? null,\n globalTimeout: takeFirst(configCLIOverrides.debug ? 0 : undefined, configCLIOverrides.globalTimeout, userConfig.globalTimeout, 0),\n grep: takeFirst(userConfig.grep, defaultGrep),\n grepInvert: takeFirst(userConfig.grepInvert, null),\n maxFailures: takeFirst(configCLIOverrides.debug ? 1 : undefined, configCLIOverrides.maxFailures, userConfig.maxFailures, 0),\n metadata: metadata ?? userConfig.metadata,\n preserveOutput: takeFirst(userConfig.preserveOutput, 'always'),\n reporter: takeFirst(configCLIOverrides.reporter, resolveReporters(userConfig.reporter, configDir), [[defaultReporter]]),\n reportSlowTests: takeFirst(userConfig.reportSlowTests, { max: 5, threshold: 300_000 /* 5 minutes */ }),\n quiet: takeFirst(configCLIOverrides.quiet, userConfig.quiet, false),\n projects: [],\n shard: takeFirst(configCLIOverrides.shard, userConfig.shard, null),\n tags: globalTags,\n updateSnapshots: takeFirst(configCLIOverrides.updateSnapshots, userConfig.updateSnapshots, 'missing'),\n updateSourceMethod: takeFirst(configCLIOverrides.updateSourceMethod, userConfig.updateSourceMethod, 'patch'),\n version: require('../../package.json').version,\n workers: resolveWorkers(takeFirst(configCLIOverrides.debug ? 1 : undefined, configCLIOverrides.workers, userConfig.workers, '50%')),\n webServer: null,\n };\n for (const key in userConfig) {\n if (key.startsWith('@'))\n (this.config as any)[key] = (userConfig as any)[key];\n }\n\n (this.config as any)[configInternalSymbol] = this;\n\n const webServers = takeFirst(userConfig.webServer, null);\n if (Array.isArray(webServers)) { // multiple web server mode\n // Due to previous choices, this value shows up to the user in globalSetup as part of FullConfig. Arrays are not supported by the old type.\n this.config.webServer = null;\n this.webServers = webServers;\n } else if (webServers) { // legacy singleton mode\n this.config.webServer = webServers;\n this.webServers = [webServers];\n } else {\n this.webServers = [];\n }\n\n // When no projects are defined, do not use config.workers as a hard limit for project.workers.\n const projectConfigs = configCLIOverrides.projects || userConfig.projects || [{ ...userConfig, workers: undefined }];\n this.projects = projectConfigs.map(p => new FullProjectInternal(configDir, userConfig, this, p, this.configCLIOverrides, packageJsonDir));\n resolveProjectDependencies(this.projects);\n this._assignUniqueProjectIds(this.projects);\n this.config.projects = this.projects.map(p => p.project);\n }\n\n private _assignUniqueProjectIds(projects: FullProjectInternal[]) {\n const usedNames = new Set();\n for (const p of projects) {\n const name = p.project.name || '';\n for (let i = 0; i < projects.length; ++i) {\n const candidate = name + (i ? i : '');\n if (usedNames.has(candidate))\n continue;\n p.id = candidate;\n (p.project as any).__projectId = p.id;\n usedNames.add(candidate);\n break;\n }\n }\n }\n}\n\nexport class FullProjectInternal {\n readonly project: FullProject;\n readonly fullConfig: FullConfigInternal;\n readonly fullyParallel: boolean;\n readonly expect: Project['expect'];\n readonly respectGitIgnore: boolean;\n readonly snapshotPathTemplate: string | undefined;\n readonly ignoreSnapshots: boolean;\n readonly workers: number | undefined;\n id = '';\n deps: FullProjectInternal[] = [];\n teardown: FullProjectInternal | undefined;\n\n constructor(configDir: string, config: Config, fullConfig: FullConfigInternal, projectConfig: Project, configCLIOverrides: ConfigCLIOverrides, packageJsonDir: string) {\n this.fullConfig = fullConfig;\n const testDir = takeFirst(pathResolve(configDir, projectConfig.testDir), pathResolve(configDir, config.testDir), fullConfig.configDir);\n this.snapshotPathTemplate = takeFirst(projectConfig.snapshotPathTemplate, config.snapshotPathTemplate);\n\n this.project = {\n grep: takeFirst(projectConfig.grep, config.grep, defaultGrep),\n grepInvert: takeFirst(projectConfig.grepInvert, config.grepInvert, null),\n outputDir: takeFirst(configCLIOverrides.outputDir, pathResolve(configDir, projectConfig.outputDir), pathResolve(configDir, config.outputDir), path.join(packageJsonDir, 'test-results')),\n // Note: we either apply the cli override for repeatEach or not, depending on whether the\n // project is top-level vs dependency. See collectProjectsAndTestFiles in loadUtils.\n repeatEach: takeFirst(projectConfig.repeatEach, config.repeatEach, 1),\n retries: takeFirst(configCLIOverrides.retries, projectConfig.retries, config.retries, 0),\n metadata: takeFirst(projectConfig.metadata, config.metadata, {}),\n name: takeFirst(projectConfig.name, config.name, ''),\n testDir,\n snapshotDir: takeFirst(pathResolve(configDir, projectConfig.snapshotDir), pathResolve(configDir, config.snapshotDir), testDir),\n testIgnore: takeFirst(projectConfig.testIgnore, config.testIgnore, []),\n testMatch: takeFirst(projectConfig.testMatch, config.testMatch, '**/*.@(spec|test).?(c|m)[jt]s?(x)'),\n timeout: takeFirst(configCLIOverrides.debug ? 0 : undefined, configCLIOverrides.timeout, projectConfig.timeout, config.timeout, defaultTimeout),\n use: mergeObjects(config.use, projectConfig.use, configCLIOverrides.use),\n dependencies: projectConfig.dependencies || [],\n teardown: projectConfig.teardown,\n };\n this.fullyParallel = takeFirst(configCLIOverrides.fullyParallel, projectConfig.fullyParallel, config.fullyParallel, undefined);\n this.expect = takeFirst(projectConfig.expect, config.expect, {});\n if (this.expect.toHaveScreenshot?.stylePath) {\n const stylePaths = Array.isArray(this.expect.toHaveScreenshot.stylePath) ? this.expect.toHaveScreenshot.stylePath : [this.expect.toHaveScreenshot.stylePath];\n this.expect.toHaveScreenshot.stylePath = stylePaths.map(stylePath => path.resolve(configDir, stylePath));\n }\n this.respectGitIgnore = takeFirst(projectConfig.respectGitIgnore, config.respectGitIgnore, !projectConfig.testDir && !config.testDir);\n this.ignoreSnapshots = takeFirst(configCLIOverrides.ignoreSnapshots, projectConfig.ignoreSnapshots, config.ignoreSnapshots, false);\n this.workers = projectConfig.workers ? resolveWorkers(projectConfig.workers) : undefined;\n if (configCLIOverrides.debug && this.workers)\n this.workers = 1;\n }\n}\n\nexport function takeFirst<T>(...args: (T | undefined)[]): T {\n for (const arg of args) {\n if (arg !== undefined)\n return arg;\n }\n return undefined as any as T;\n}\n\nfunction pathResolve(baseDir: string, relative: string | undefined): string | undefined {\n if (!relative)\n return undefined;\n return path.resolve(baseDir, relative);\n}\n\nfunction resolveReporters(reporters: Config['reporter'], rootDir: string): ReporterDescription[] | undefined {\n return toReporters(reporters as any)?.map(([id, arg]) => {\n if (builtInReporters.includes(id as any))\n return [id, arg];\n return [require.resolve(id, { paths: [rootDir] }), arg];\n });\n}\n\nfunction resolveWorkers(workers: string | number): number {\n if (typeof workers === 'string') {\n if (workers.endsWith('%')) {\n const cpus = os.cpus().length;\n return Math.max(1, Math.floor(cpus * (parseInt(workers, 10) / 100)));\n }\n const parsedWorkers = parseInt(workers, 10);\n if (isNaN(parsedWorkers))\n throw new Error(`Workers ${workers} must be a number or percentage.`);\n return parsedWorkers;\n }\n return workers;\n}\n\nfunction resolveProjectDependencies(projects: FullProjectInternal[]) {\n const teardownSet = new Set<FullProjectInternal>();\n for (const project of projects) {\n for (const dependencyName of project.project.dependencies) {\n const dependencies = projects.filter(p => p.project.name === dependencyName);\n if (!dependencies.length)\n throw new Error(`Project '${project.project.name}' depends on unknown project '${dependencyName}'`);\n if (dependencies.length > 1)\n throw new Error(`Project dependencies should have unique names, reading ${dependencyName}`);\n project.deps.push(...dependencies);\n }\n if (project.project.teardown) {\n const teardowns = projects.filter(p => p.project.name === project.project.teardown);\n if (!teardowns.length)\n throw new Error(`Project '${project.project.name}' has unknown teardown project '${project.project.teardown}'`);\n if (teardowns.length > 1)\n throw new Error(`Project teardowns should have unique names, reading ${project.project.teardown}`);\n const teardown = teardowns[0];\n project.teardown = teardown;\n teardownSet.add(teardown);\n }\n }\n for (const teardown of teardownSet) {\n if (teardown.deps.length)\n throw new Error(`Teardown project ${teardown.project.name} must not have dependencies`);\n }\n for (const project of projects) {\n for (const dep of project.deps) {\n if (teardownSet.has(dep))\n throw new Error(`Project ${project.project.name} must not depend on a teardown project ${dep.project.name}`);\n }\n }\n}\n\nexport function toReporters(reporters: BuiltInReporter | ReporterDescription[] | undefined): ReporterDescription[] | undefined {\n if (!reporters)\n return;\n if (typeof reporters === 'string')\n return [[reporters]];\n return reporters;\n}\n\nexport const builtInReporters = ['list', 'line', 'dot', 'json', 'junit', 'null', 'github', 'html', 'blob'] as const;\nexport type BuiltInReporter = typeof builtInReporters[number];\n\nexport type ContextReuseMode = 'none' | 'when-possible';\n\nfunction resolveScript(id: string | undefined, rootDir: string): string | undefined {\n if (!id)\n return undefined;\n const localPath = path.resolve(rootDir, id);\n if (fs.existsSync(localPath))\n return localPath;\n return require.resolve(id, { paths: [rootDir] });\n}\n\nexport const defaultGrep = /.*/;\nexport const defaultReporter = process.env.CI ? 'dot' : 'list';\n\nconst configInternalSymbol = Symbol('configInternalSymbol');\n\nexport function getProjectId(project: FullProject): string {\n return (project as any).__projectId!;\n}\n"],
5
- "mappings": "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",
6
- "names": ["path", "os", "fs"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/common/configLoader.ts"],
4
- "sourcesContent": ["/**\n * Copyright Microsoft Corporation. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport fs from 'fs';\nimport path from 'path';\n\nimport { isRegExp } from 'playwright-core/lib/utils';\n\nimport { requireOrImport, setSingleTSConfig, setTransformConfig } from '../transform/transform';\nimport { errorWithFile, fileIsModule } from '../util';\nimport { FullConfigInternal } from './config';\nimport { configureESMLoader, configureESMLoaderTransformConfig, registerESMLoader } from './esmLoaderHost';\nimport { addToCompilationCache } from '../transform/compilationCache';\n\nimport type { ConfigLocation } from './config';\nimport type { ConfigCLIOverrides, SerializedConfig } from './ipc';\nimport type { Config, Project } from '../../types/test';\n\nconst kDefineConfigWasUsed = Symbol('defineConfigWasUsed');\nexport const defineConfig = (...configs: any[]) => {\n let result = configs[0];\n for (let i = 1; i < configs.length; ++i) {\n const config = configs[i];\n const prevProjects = result.projects;\n result = {\n ...result,\n ...config,\n expect: {\n ...result.expect,\n ...config.expect,\n },\n use: {\n ...result.use,\n ...config.use,\n },\n build: {\n ...result.build,\n ...config.build,\n },\n webServer: [\n ...(Array.isArray(result.webServer) ? result.webServer : (result.webServer ? [result.webServer] : [])),\n ...(Array.isArray(config.webServer) ? config.webServer : (config.webServer ? [config.webServer] : [])),\n ]\n };\n\n if (!result.projects && !config.projects)\n continue;\n\n const projectOverrides = new Map<string, any>();\n for (const project of config.projects || [])\n projectOverrides.set(project.name, project);\n\n const projects = [];\n for (const project of prevProjects || []) {\n const projectOverride = projectOverrides.get(project.name);\n if (projectOverride) {\n projects.push({\n ...project,\n ...projectOverride,\n use: {\n ...project.use,\n ...projectOverride.use,\n }\n });\n projectOverrides.delete(project.name);\n } else {\n projects.push(project);\n }\n }\n projects.push(...projectOverrides.values());\n result.projects = projects;\n }\n result[kDefineConfigWasUsed] = true;\n return result;\n};\n\nexport async function deserializeConfig(data: SerializedConfig): Promise<FullConfigInternal> {\n if (data.compilationCache)\n addToCompilationCache(data.compilationCache);\n return await loadConfig(data.location, data.configCLIOverrides, undefined, data.metadata ? JSON.parse(data.metadata) : undefined);\n}\n\nasync function loadUserConfig(location: ConfigLocation): Promise<Config> {\n let object = location.resolvedConfigFile ? await requireOrImport(location.resolvedConfigFile) : {};\n if (object && typeof object === 'object' && ('default' in object))\n object = object['default'];\n return object as Config;\n}\n\nexport async function loadConfig(location: ConfigLocation, overrides?: ConfigCLIOverrides, ignoreProjectDependencies = false, metadata?: Config['metadata']): Promise<FullConfigInternal> {\n // 0. Setup ESM loader if needed.\n if (!registerESMLoader()) {\n // In Node.js < 18, complain if the config file is ESM. Historically, we would restart\n // the process with --loader, but now we require newer Node.js.\n if (location.resolvedConfigFile && fileIsModule(location.resolvedConfigFile))\n throw errorWithFile(location.resolvedConfigFile, `Playwright requires Node.js 18.19 or higher to load esm modules. Please update your version of Node.js.`);\n }\n\n // 1. Setup tsconfig; configure ESM loader with tsconfig and compilation cache.\n setSingleTSConfig(overrides?.tsconfig);\n await configureESMLoader();\n\n // 2. Load and validate playwright config.\n const userConfig = await loadUserConfig(location);\n validateConfig(location.resolvedConfigFile || '<default config>', userConfig);\n const fullConfig = new FullConfigInternal(location, userConfig, overrides || {}, metadata);\n fullConfig.defineConfigWasUsed = !!(userConfig as any)[kDefineConfigWasUsed];\n if (ignoreProjectDependencies) {\n for (const project of fullConfig.projects) {\n project.deps = [];\n project.teardown = undefined;\n }\n }\n\n // 3. Load transform options from the playwright config.\n const babelPlugins = (userConfig as any)['@playwright/test']?.babelPlugins || [];\n const external = userConfig.build?.external || [];\n setTransformConfig({ babelPlugins, external });\n if (!overrides?.tsconfig)\n setSingleTSConfig(fullConfig?.singleTSConfigPath);\n\n // 4. Send transform options to ESM loader.\n await configureESMLoaderTransformConfig();\n\n return fullConfig;\n}\n\nfunction validateConfig(file: string, config: Config) {\n if (typeof config !== 'object' || !config)\n throw errorWithFile(file, `Configuration file must export a single object`);\n\n validateProject(file, config, 'config');\n\n if ('forbidOnly' in config && config.forbidOnly !== undefined) {\n if (typeof config.forbidOnly !== 'boolean')\n throw errorWithFile(file, `config.forbidOnly must be a boolean`);\n }\n\n if ('globalSetup' in config && config.globalSetup !== undefined) {\n if (Array.isArray(config.globalSetup)) {\n config.globalSetup.forEach((item, index) => {\n if (typeof item !== 'string')\n throw errorWithFile(file, `config.globalSetup[${index}] must be a string`);\n });\n } else if (typeof config.globalSetup !== 'string') {\n throw errorWithFile(file, `config.globalSetup must be a string`);\n }\n }\n\n if ('globalTeardown' in config && config.globalTeardown !== undefined) {\n if (Array.isArray(config.globalTeardown)) {\n config.globalTeardown.forEach((item, index) => {\n if (typeof item !== 'string')\n throw errorWithFile(file, `config.globalTeardown[${index}] must be a string`);\n });\n } else if (typeof config.globalTeardown !== 'string') {\n throw errorWithFile(file, `config.globalTeardown must be a string`);\n }\n }\n\n if ('globalTimeout' in config && config.globalTimeout !== undefined) {\n if (typeof config.globalTimeout !== 'number' || config.globalTimeout < 0)\n throw errorWithFile(file, `config.globalTimeout must be a non-negative number`);\n }\n\n if ('grep' in config && config.grep !== undefined) {\n if (Array.isArray(config.grep)) {\n config.grep.forEach((item, index) => {\n if (!isRegExp(item))\n throw errorWithFile(file, `config.grep[${index}] must be a RegExp`);\n });\n } else if (!isRegExp(config.grep)) {\n throw errorWithFile(file, `config.grep must be a RegExp`);\n }\n }\n\n if ('grepInvert' in config && config.grepInvert !== undefined) {\n if (Array.isArray(config.grepInvert)) {\n config.grepInvert.forEach((item, index) => {\n if (!isRegExp(item))\n throw errorWithFile(file, `config.grepInvert[${index}] must be a RegExp`);\n });\n } else if (!isRegExp(config.grepInvert)) {\n throw errorWithFile(file, `config.grepInvert must be a RegExp`);\n }\n }\n\n if ('maxFailures' in config && config.maxFailures !== undefined) {\n if (typeof config.maxFailures !== 'number' || config.maxFailures < 0)\n throw errorWithFile(file, `config.maxFailures must be a non-negative number`);\n }\n\n if ('preserveOutput' in config && config.preserveOutput !== undefined) {\n if (typeof config.preserveOutput !== 'string' || !['always', 'never', 'failures-only'].includes(config.preserveOutput))\n throw errorWithFile(file, `config.preserveOutput must be one of \"always\", \"never\" or \"failures-only\"`);\n }\n\n if ('projects' in config && config.projects !== undefined) {\n if (!Array.isArray(config.projects))\n throw errorWithFile(file, `config.projects must be an array`);\n config.projects.forEach((project, index) => {\n validateProject(file, project, `config.projects[${index}]`);\n });\n }\n\n if ('quiet' in config && config.quiet !== undefined) {\n if (typeof config.quiet !== 'boolean')\n throw errorWithFile(file, `config.quiet must be a boolean`);\n }\n\n if ('reporter' in config && config.reporter !== undefined) {\n if (Array.isArray(config.reporter)) {\n config.reporter.forEach((item, index) => {\n if (!Array.isArray(item) || item.length <= 0 || item.length > 2 || typeof item[0] !== 'string')\n throw errorWithFile(file, `config.reporter[${index}] must be a tuple [name, optionalArgument]`);\n });\n } else if (typeof config.reporter !== 'string') {\n throw errorWithFile(file, `config.reporter must be a string`);\n }\n }\n\n if ('reportSlowTests' in config && config.reportSlowTests !== undefined && config.reportSlowTests !== null) {\n if (!config.reportSlowTests || typeof config.reportSlowTests !== 'object')\n throw errorWithFile(file, `config.reportSlowTests must be an object`);\n if (!('max' in config.reportSlowTests) || typeof config.reportSlowTests.max !== 'number' || config.reportSlowTests.max < 0)\n throw errorWithFile(file, `config.reportSlowTests.max must be a non-negative number`);\n if (!('threshold' in config.reportSlowTests) || typeof config.reportSlowTests.threshold !== 'number' || config.reportSlowTests.threshold < 0)\n throw errorWithFile(file, `config.reportSlowTests.threshold must be a non-negative number`);\n }\n\n if ('shard' in config && config.shard !== undefined && config.shard !== null) {\n if (!config.shard || typeof config.shard !== 'object')\n throw errorWithFile(file, `config.shard must be an object`);\n if (!('total' in config.shard) || typeof config.shard.total !== 'number' || config.shard.total < 1)\n throw errorWithFile(file, `config.shard.total must be a positive number`);\n if (!('current' in config.shard) || typeof config.shard.current !== 'number' || config.shard.current < 1 || config.shard.current > config.shard.total)\n throw errorWithFile(file, `config.shard.current must be a positive number, not greater than config.shard.total`);\n }\n\n if ('updateSnapshots' in config && config.updateSnapshots !== undefined) {\n if (typeof config.updateSnapshots !== 'string' || !['all', 'changed', 'missing', 'none'].includes(config.updateSnapshots))\n throw errorWithFile(file, `config.updateSnapshots must be one of \"all\", \"changed\", \"missing\" or \"none\"`);\n }\n\n if ('tsconfig' in config && config.tsconfig !== undefined) {\n if (typeof config.tsconfig !== 'string')\n throw errorWithFile(file, `config.tsconfig must be a string`);\n if (!fs.existsSync(path.resolve(file, '..', config.tsconfig)))\n throw errorWithFile(file, `config.tsconfig does not exist`);\n }\n}\n\nfunction validateProject(file: string, project: Project, title: string) {\n if (typeof project !== 'object' || !project)\n throw errorWithFile(file, `${title} must be an object`);\n\n if ('name' in project && project.name !== undefined) {\n if (typeof project.name !== 'string')\n throw errorWithFile(file, `${title}.name must be a string`);\n }\n\n if ('outputDir' in project && project.outputDir !== undefined) {\n if (typeof project.outputDir !== 'string')\n throw errorWithFile(file, `${title}.outputDir must be a string`);\n }\n\n if ('repeatEach' in project && project.repeatEach !== undefined) {\n if (typeof project.repeatEach !== 'number' || project.repeatEach < 0)\n throw errorWithFile(file, `${title}.repeatEach must be a non-negative number`);\n }\n\n if ('retries' in project && project.retries !== undefined) {\n if (typeof project.retries !== 'number' || project.retries < 0)\n throw errorWithFile(file, `${title}.retries must be a non-negative number`);\n }\n\n if ('testDir' in project && project.testDir !== undefined) {\n if (typeof project.testDir !== 'string')\n throw errorWithFile(file, `${title}.testDir must be a string`);\n }\n\n for (const prop of ['testIgnore', 'testMatch'] as const) {\n if (prop in project && project[prop] !== undefined) {\n const value = project[prop];\n if (Array.isArray(value)) {\n value.forEach((item, index) => {\n if (typeof item !== 'string' && !isRegExp(item))\n throw errorWithFile(file, `${title}.${prop}[${index}] must be a string or a RegExp`);\n });\n } else if (typeof value !== 'string' && !isRegExp(value)) {\n throw errorWithFile(file, `${title}.${prop} must be a string or a RegExp`);\n }\n }\n }\n\n if ('timeout' in project && project.timeout !== undefined) {\n if (typeof project.timeout !== 'number' || project.timeout < 0)\n throw errorWithFile(file, `${title}.timeout must be a non-negative number`);\n }\n\n if ('use' in project && project.use !== undefined) {\n if (!project.use || typeof project.use !== 'object')\n throw errorWithFile(file, `${title}.use must be an object`);\n }\n\n if ('ignoreSnapshots' in project && project.ignoreSnapshots !== undefined) {\n if (typeof project.ignoreSnapshots !== 'boolean')\n throw errorWithFile(file, `${title}.ignoreSnapshots must be a boolean`);\n }\n\n if ('workers' in project && project.workers !== undefined) {\n if (typeof project.workers === 'number' && project.workers <= 0)\n throw errorWithFile(file, `${title}.workers must be a positive number`);\n else if (typeof project.workers === 'string' && !project.workers.endsWith('%'))\n throw errorWithFile(file, `${title}.workers must be a number or percentage`);\n }\n}\n\nexport function resolveConfigLocation(configFile: string | undefined): ConfigLocation {\n const configFileOrDirectory = configFile ? path.resolve(process.cwd(), configFile) : process.cwd();\n const resolvedConfigFile = resolveConfigFile(configFileOrDirectory);\n return {\n resolvedConfigFile,\n configDir: resolvedConfigFile ? path.dirname(resolvedConfigFile) : configFileOrDirectory,\n };\n}\n\nfunction resolveConfigFile(configFileOrDirectory: string): string | undefined {\n const resolveConfig = (configFile: string) => {\n if (fs.existsSync(configFile))\n return configFile;\n };\n\n const resolveConfigFileFromDirectory = (directory: string) => {\n for (const ext of ['.ts', '.js', '.mts', '.mjs', '.cts', '.cjs']) {\n const configFile = resolveConfig(path.resolve(directory, 'playwright.config' + ext));\n if (configFile)\n return configFile;\n }\n };\n\n if (!fs.existsSync(configFileOrDirectory))\n throw new Error(`${configFileOrDirectory} does not exist`);\n if (fs.statSync(configFileOrDirectory).isDirectory()) {\n // When passed a directory, look for a config file inside.\n const configFile = resolveConfigFileFromDirectory(configFileOrDirectory);\n if (configFile)\n return configFile;\n // If there is no config, assume this as a root testing directory.\n return undefined;\n }\n // When passed a file, it must be a config file.\n return configFileOrDirectory!;\n}\n\nexport async function loadConfigFromFile(configFile: string | undefined, overrides?: ConfigCLIOverrides, ignoreDeps?: boolean): Promise<FullConfigInternal> {\n return await loadConfig(resolveConfigLocation(configFile), overrides, ignoreDeps);\n}\n\nexport async function loadEmptyConfigForMergeReports() {\n // Merge reports is \"different\" for no good reason. It should not pick up local config from the cwd.\n return await loadConfig({ configDir: process.cwd() });\n}\n"],
5
- "mappings": "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",
6
- "names": ["fs", "path"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/common/esmLoaderHost.ts"],
4
- "sourcesContent": ["/**\n * Copyright (c) Microsoft Corporation.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport url from 'url';\n\nimport { addToCompilationCache, serializeCompilationCache } from '../transform/compilationCache';\nimport { PortTransport } from '../transform/portTransport';\nimport { singleTSConfig, transformConfig } from '../transform/transform';\n\nlet loaderChannel: PortTransport | undefined;\n\nexport function registerESMLoader() {\n // Opt-out switch.\n if (process.env.PW_DISABLE_TS_ESM)\n return true;\n\n if (loaderChannel)\n return true;\n\n const register = require('node:module').register;\n if (!register)\n return false;\n\n const { port1, port2 } = new MessageChannel();\n // register will wait until the loader is initialized.\n register(url.pathToFileURL(require.resolve('../transform/esmLoader')), {\n data: { port: port2 },\n transferList: [port2],\n });\n loaderChannel = createPortTransport(port1);\n return true;\n}\n\nfunction createPortTransport(port: MessagePort) {\n return new PortTransport(port, async (method, params) => {\n if (method === 'pushToCompilationCache')\n addToCompilationCache(params.cache);\n });\n}\n\nexport async function startCollectingFileDeps() {\n if (!loaderChannel)\n return;\n await loaderChannel.send('startCollectingFileDeps', {});\n}\n\nexport async function stopCollectingFileDeps(file: string) {\n if (!loaderChannel)\n return;\n await loaderChannel.send('stopCollectingFileDeps', { file });\n}\n\nexport async function incorporateCompilationCache() {\n if (!loaderChannel)\n return;\n // This is needed to gather dependency information from the esm loader\n // that is populated from the resolve hook. We do not need to push\n // this information proactively during load, but gather it at the end.\n const result = await loaderChannel.send('getCompilationCache', {});\n addToCompilationCache(result.cache);\n}\n\nexport async function configureESMLoader() {\n if (!loaderChannel)\n return;\n await loaderChannel.send('setSingleTSConfig', { tsconfig: singleTSConfig() });\n await loaderChannel.send('addToCompilationCache', { cache: serializeCompilationCache() });\n}\n\nexport async function configureESMLoaderTransformConfig() {\n if (!loaderChannel)\n return;\n await loaderChannel.send('setSingleTSConfig', { tsconfig: singleTSConfig() });\n await loaderChannel.send('setTransformConfig', { config: transformConfig() });\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBA,iBAAgB;AAEhB,8BAAiE;AACjE,2BAA8B;AAC9B,uBAAgD;AAEhD,IAAI;AAEG,SAAS,oBAAoB;AAElC,MAAI,QAAQ,IAAI;AACd,WAAO;AAET,MAAI;AACF,WAAO;AAET,QAAM,WAAW,QAAQ,aAAa,EAAE;AACxC,MAAI,CAAC;AACH,WAAO;AAET,QAAM,EAAE,OAAO,MAAM,IAAI,IAAI,eAAe;AAE5C,WAAS,WAAAA,QAAI,cAAc,gBAAgB,wBAAwB,CAAC,GAAG;AAAA,IACrE,MAAM,EAAE,MAAM,MAAM;AAAA,IACpB,cAAc,CAAC,KAAK;AAAA,EACtB,CAAC;AACD,kBAAgB,oBAAoB,KAAK;AACzC,SAAO;AACT;AAEA,SAAS,oBAAoB,MAAmB;AAC9C,SAAO,IAAI,mCAAc,MAAM,OAAO,QAAQ,WAAW;AACvD,QAAI,WAAW;AACb,yDAAsB,OAAO,KAAK;AAAA,EACtC,CAAC;AACH;AAEA,eAAsB,0BAA0B;AAC9C,MAAI,CAAC;AACH;AACF,QAAM,cAAc,KAAK,2BAA2B,CAAC,CAAC;AACxD;AAEA,eAAsB,uBAAuB,MAAc;AACzD,MAAI,CAAC;AACH;AACF,QAAM,cAAc,KAAK,0BAA0B,EAAE,KAAK,CAAC;AAC7D;AAEA,eAAsB,8BAA8B;AAClD,MAAI,CAAC;AACH;AAIF,QAAM,SAAS,MAAM,cAAc,KAAK,uBAAuB,CAAC,CAAC;AACjE,qDAAsB,OAAO,KAAK;AACpC;AAEA,eAAsB,qBAAqB;AACzC,MAAI,CAAC;AACH;AACF,QAAM,cAAc,KAAK,qBAAqB,EAAE,cAAU,iCAAe,EAAE,CAAC;AAC5E,QAAM,cAAc,KAAK,yBAAyB,EAAE,WAAO,mDAA0B,EAAE,CAAC;AAC1F;AAEA,eAAsB,oCAAoC;AACxD,MAAI,CAAC;AACH;AACF,QAAM,cAAc,KAAK,qBAAqB,EAAE,cAAU,iCAAe,EAAE,CAAC;AAC5E,QAAM,cAAc,KAAK,sBAAsB,EAAE,YAAQ,kCAAgB,EAAE,CAAC;AAC9E;",
6
- "names": ["url"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/common/expectBundle.ts"],
4
- "sourcesContent": ["/**\n * Copyright (c) Microsoft Corporation.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const expect: typeof import('../../bundles/expect/third_party/index').expect = require('./expectBundleImpl').expect;\nexport const mock: typeof import('../../bundles/expect/node_modules/jest-mock') = require('./expectBundleImpl').mock;\nexport const asymmetricMatchers = require('./expectBundleImpl').asymmetricMatchers;\nexport const matcherUtils = require('./expectBundleImpl').matcherUtils;\nexport const EXPECTED_COLOR: typeof import('../../bundles/expect/node_modules/jest-matcher-utils/build').EXPECTED_COLOR = require('./expectBundleImpl').EXPECTED_COLOR;\nexport const INVERTED_COLOR: typeof import('../../bundles/expect/node_modules/jest-matcher-utils/build').INVERTED_COLOR = require('./expectBundleImpl').INVERTED_COLOR;\nexport const RECEIVED_COLOR: typeof import('../../bundles/expect/node_modules/jest-matcher-utils/build').RECEIVED_COLOR = require('./expectBundleImpl').RECEIVED_COLOR;\nexport const DIM_COLOR: typeof import('../../bundles/expect/node_modules/jest-matcher-utils/build').DIM_COLOR = require('./expectBundleImpl').DIM_COLOR;\nexport const printReceived: typeof import('../../bundles/expect/node_modules/jest-matcher-utils/build').printReceived = require('./expectBundleImpl').printReceived;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBO,MAAM,SAAyE,QAAQ,oBAAoB,EAAE;AAC7G,MAAM,OAAqE,QAAQ,oBAAoB,EAAE;AACzG,MAAM,qBAAqB,QAAQ,oBAAoB,EAAE;AACzD,MAAM,eAAe,QAAQ,oBAAoB,EAAE;AACnD,MAAM,iBAA6G,QAAQ,oBAAoB,EAAE;AACjJ,MAAM,iBAA6G,QAAQ,oBAAoB,EAAE;AACjJ,MAAM,iBAA6G,QAAQ,oBAAoB,EAAE;AACjJ,MAAM,YAAmG,QAAQ,oBAAoB,EAAE;AACvI,MAAM,gBAA2G,QAAQ,oBAAoB,EAAE;",
6
- "names": []
7
- }