@stablyai/internal-playwright 0.1.0
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.
- package/LICENSE +202 -0
- package/NOTICE +5 -0
- package/README.md +168 -0
- package/ThirdPartyNotices.txt +6277 -0
- package/cli.js +19 -0
- package/index.d.ts +17 -0
- package/index.js +17 -0
- package/index.mjs +18 -0
- package/jsx-runtime.js +42 -0
- package/jsx-runtime.mjs +21 -0
- package/lib/agents/generateAgents.js +265 -0
- package/lib/agents/generator.md +102 -0
- package/lib/agents/healer.md +78 -0
- package/lib/agents/planner.md +135 -0
- package/lib/cli.js +274 -0
- package/lib/common/config.js +274 -0
- package/lib/common/config.js.map +7 -0
- package/lib/common/configLoader.js +377 -0
- package/lib/common/configLoader.js.map +7 -0
- package/lib/common/esmLoaderHost.js +102 -0
- package/lib/common/esmLoaderHost.js.map +7 -0
- package/lib/common/expectBundle.js +52 -0
- package/lib/common/expectBundle.js.map +7 -0
- package/lib/common/expectBundleImpl.js +389 -0
- package/lib/common/expectBundleImpl.js.map +7 -0
- package/lib/common/fixtures.js +302 -0
- package/lib/common/fixtures.js.map +7 -0
- package/lib/common/globals.js +58 -0
- package/lib/common/globals.js.map +7 -0
- package/lib/common/ipc.js +60 -0
- package/lib/common/ipc.js.map +7 -0
- package/lib/common/poolBuilder.js +85 -0
- package/lib/common/poolBuilder.js.map +7 -0
- package/lib/common/process.js +104 -0
- package/lib/common/process.js.map +7 -0
- package/lib/common/suiteUtils.js +140 -0
- package/lib/common/suiteUtils.js.map +7 -0
- package/lib/common/test.js +321 -0
- package/lib/common/test.js.map +7 -0
- package/lib/common/testLoader.js +100 -0
- package/lib/common/testLoader.js.map +7 -0
- package/lib/common/testType.js +310 -0
- package/lib/common/testType.js.map +7 -0
- package/lib/fsWatcher.js +67 -0
- package/lib/fsWatcher.js.map +7 -0
- package/lib/index.js +696 -0
- package/lib/index.js.map +7 -0
- package/lib/internalsForTest.js +42 -0
- package/lib/internalsForTest.js.map +7 -0
- package/lib/isomorphic/events.js +77 -0
- package/lib/isomorphic/events.js.map +7 -0
- package/lib/isomorphic/folders.js +30 -0
- package/lib/isomorphic/folders.js.map +7 -0
- package/lib/isomorphic/stringInternPool.js +69 -0
- package/lib/isomorphic/stringInternPool.js.map +7 -0
- package/lib/isomorphic/teleReceiver.js +507 -0
- package/lib/isomorphic/teleReceiver.js.map +7 -0
- package/lib/isomorphic/teleSuiteUpdater.js +137 -0
- package/lib/isomorphic/teleSuiteUpdater.js.map +7 -0
- package/lib/isomorphic/testServerConnection.js +211 -0
- package/lib/isomorphic/testServerConnection.js.map +7 -0
- package/lib/isomorphic/testServerInterface.js +16 -0
- package/lib/isomorphic/testServerInterface.js.map +7 -0
- package/lib/isomorphic/testTree.js +334 -0
- package/lib/isomorphic/testTree.js.map +7 -0
- package/lib/isomorphic/types.d.js +16 -0
- package/lib/isomorphic/types.d.js.map +7 -0
- package/lib/loader/loaderMain.js +59 -0
- package/lib/loader/loaderMain.js.map +7 -0
- package/lib/matchers/expect.js +325 -0
- package/lib/matchers/expect.js.map +7 -0
- package/lib/matchers/matcherHint.js +87 -0
- package/lib/matchers/matcherHint.js.map +7 -0
- package/lib/matchers/matchers.js +366 -0
- package/lib/matchers/matchers.js.map +7 -0
- package/lib/matchers/toBeTruthy.js +73 -0
- package/lib/matchers/toBeTruthy.js.map +7 -0
- package/lib/matchers/toEqual.js +99 -0
- package/lib/matchers/toEqual.js.map +7 -0
- package/lib/matchers/toHaveURL.js +102 -0
- package/lib/matchers/toHaveURL.js.map +7 -0
- package/lib/matchers/toMatchAriaSnapshot.js +159 -0
- package/lib/matchers/toMatchAriaSnapshot.js.map +7 -0
- package/lib/matchers/toMatchSnapshot.js +359 -0
- package/lib/matchers/toMatchSnapshot.js.map +7 -0
- package/lib/matchers/toMatchText.js +99 -0
- package/lib/matchers/toMatchText.js.map +7 -0
- package/lib/mcp/browser/actions.d.js +16 -0
- package/lib/mcp/browser/backend.js +93 -0
- package/lib/mcp/browser/backend.js.map +7 -0
- package/lib/mcp/browser/browserContextFactory.js +296 -0
- package/lib/mcp/browser/browserServerBackend.js +76 -0
- package/lib/mcp/browser/codegen.js +66 -0
- package/lib/mcp/browser/config.js +385 -0
- package/lib/mcp/browser/context.js +287 -0
- package/lib/mcp/browser/response.js +228 -0
- package/lib/mcp/browser/sessionLog.js +160 -0
- package/lib/mcp/browser/tab.js +277 -0
- package/lib/mcp/browser/tool.js +30 -0
- package/lib/mcp/browser/tool.js.map +7 -0
- package/lib/mcp/browser/tools/common.js +63 -0
- package/lib/mcp/browser/tools/console.js +44 -0
- package/lib/mcp/browser/tools/dialogs.js +60 -0
- package/lib/mcp/browser/tools/evaluate.js +70 -0
- package/lib/mcp/browser/tools/files.js +58 -0
- package/lib/mcp/browser/tools/form.js +74 -0
- package/lib/mcp/browser/tools/install.js +69 -0
- package/lib/mcp/browser/tools/keyboard.js +85 -0
- package/lib/mcp/browser/tools/mouse.js +107 -0
- package/lib/mcp/browser/tools/navigate.js +62 -0
- package/lib/mcp/browser/tools/network.js +54 -0
- package/lib/mcp/browser/tools/pdf.js +59 -0
- package/lib/mcp/browser/tools/screenshot.js +88 -0
- package/lib/mcp/browser/tools/snapshot.js +182 -0
- package/lib/mcp/browser/tools/tabs.js +67 -0
- package/lib/mcp/browser/tools/tool.js +49 -0
- package/lib/mcp/browser/tools/tracing.js +74 -0
- package/lib/mcp/browser/tools/utils.js +100 -0
- package/lib/mcp/browser/tools/verify.js +154 -0
- package/lib/mcp/browser/tools/wait.js +63 -0
- package/lib/mcp/browser/tools.js +80 -0
- package/lib/mcp/browser/tools.js.map +7 -0
- package/lib/mcp/browser/watchdog.js +44 -0
- package/lib/mcp/config.d.js +16 -0
- package/lib/mcp/extension/cdpRelay.js +351 -0
- package/lib/mcp/extension/extensionContextFactory.js +75 -0
- package/lib/mcp/extension/protocol.js +28 -0
- package/lib/mcp/index.js +61 -0
- package/lib/mcp/log.js +35 -0
- package/lib/mcp/program.js +96 -0
- package/lib/mcp/sdk/bundle.js +81 -0
- package/lib/mcp/sdk/bundle.js.map +7 -0
- package/lib/mcp/sdk/call.js +49 -0
- package/lib/mcp/sdk/call.js.map +7 -0
- package/lib/mcp/sdk/exports.js +32 -0
- package/lib/mcp/sdk/exports.js.map +7 -0
- package/lib/mcp/sdk/http.js +187 -0
- package/lib/mcp/sdk/http.js.map +7 -0
- package/lib/mcp/sdk/inProcessTransport.js +71 -0
- package/lib/mcp/sdk/inProcessTransport.js.map +7 -0
- package/lib/mcp/sdk/mdb.js +206 -0
- package/lib/mcp/sdk/mdb.js.map +7 -0
- package/lib/mcp/sdk/proxyBackend.js +128 -0
- package/lib/mcp/sdk/proxyBackend.js.map +7 -0
- package/lib/mcp/sdk/server.js +189 -0
- package/lib/mcp/sdk/server.js.map +7 -0
- package/lib/mcp/sdk/tool.js +51 -0
- package/lib/mcp/sdk/tool.js.map +7 -0
- package/lib/mcp/test/backend.js +67 -0
- package/lib/mcp/test/backend.js.map +7 -0
- package/lib/mcp/test/browserBackend.js +98 -0
- package/lib/mcp/test/context.js +48 -0
- package/lib/mcp/test/context.js.map +7 -0
- package/lib/mcp/test/generatorTools.js +122 -0
- package/lib/mcp/test/plannerTools.js +46 -0
- package/lib/mcp/test/seed.js +72 -0
- package/lib/mcp/test/streams.js +39 -0
- package/lib/mcp/test/streams.js.map +7 -0
- package/lib/mcp/test/testBackend.js +97 -0
- package/lib/mcp/test/testContext.js +176 -0
- package/lib/mcp/test/testTool.js +30 -0
- package/lib/mcp/test/testTools.js +115 -0
- package/lib/mcp/test/tool.js +30 -0
- package/lib/mcp/test/tool.js.map +7 -0
- package/lib/mcp/test/tools.js +150 -0
- package/lib/mcp/test/tools.js.map +7 -0
- package/lib/mcp/vscode/host.js +187 -0
- package/lib/mcp/vscode/main.js +77 -0
- package/lib/mcpBundleImpl.js +41 -0
- package/lib/mcpBundleImpl.js.map +7 -0
- package/lib/plugins/gitCommitInfoPlugin.js +198 -0
- package/lib/plugins/gitCommitInfoPlugin.js.map +7 -0
- package/lib/plugins/index.js +28 -0
- package/lib/plugins/index.js.map +7 -0
- package/lib/plugins/webServerPlugin.js +209 -0
- package/lib/plugins/webServerPlugin.js.map +7 -0
- package/lib/program.js +412 -0
- package/lib/program.js.map +7 -0
- package/lib/reporters/base.js +609 -0
- package/lib/reporters/base.js.map +7 -0
- package/lib/reporters/blob.js +135 -0
- package/lib/reporters/blob.js.map +7 -0
- package/lib/reporters/dot.js +82 -0
- package/lib/reporters/dot.js.map +7 -0
- package/lib/reporters/empty.js +32 -0
- package/lib/reporters/empty.js.map +7 -0
- package/lib/reporters/github.js +128 -0
- package/lib/reporters/github.js.map +7 -0
- package/lib/reporters/html.js +644 -0
- package/lib/reporters/html.js.map +7 -0
- package/lib/reporters/internalReporter.js +130 -0
- package/lib/reporters/internalReporter.js.map +7 -0
- package/lib/reporters/json.js +254 -0
- package/lib/reporters/json.js.map +7 -0
- package/lib/reporters/junit.js +230 -0
- package/lib/reporters/junit.js.map +7 -0
- package/lib/reporters/line.js +113 -0
- package/lib/reporters/line.js.map +7 -0
- package/lib/reporters/list.js +235 -0
- package/lib/reporters/list.js.map +7 -0
- package/lib/reporters/listModeReporter.js +69 -0
- package/lib/reporters/listModeReporter.js.map +7 -0
- package/lib/reporters/markdown.js +144 -0
- package/lib/reporters/markdown.js.map +7 -0
- package/lib/reporters/merge.js +535 -0
- package/lib/reporters/merge.js.map +7 -0
- package/lib/reporters/multiplexer.js +104 -0
- package/lib/reporters/multiplexer.js.map +7 -0
- package/lib/reporters/reporterV2.js +102 -0
- package/lib/reporters/reporterV2.js.map +7 -0
- package/lib/reporters/teleEmitter.js +297 -0
- package/lib/reporters/teleEmitter.js.map +7 -0
- package/lib/reporters/versions/blobV1.js +16 -0
- package/lib/reporters/versions/blobV1.js.map +7 -0
- package/lib/runner/dispatcher.js +491 -0
- package/lib/runner/dispatcher.js.map +7 -0
- package/lib/runner/failureTracker.js +72 -0
- package/lib/runner/failureTracker.js.map +7 -0
- package/lib/runner/lastRun.js +77 -0
- package/lib/runner/lastRun.js.map +7 -0
- package/lib/runner/loadUtils.js +333 -0
- package/lib/runner/loadUtils.js.map +7 -0
- package/lib/runner/loaderHost.js +89 -0
- package/lib/runner/loaderHost.js.map +7 -0
- package/lib/runner/processHost.js +161 -0
- package/lib/runner/processHost.js.map +7 -0
- package/lib/runner/projectUtils.js +241 -0
- package/lib/runner/projectUtils.js.map +7 -0
- package/lib/runner/rebase.js +189 -0
- package/lib/runner/rebase.js.map +7 -0
- package/lib/runner/reporters.js +137 -0
- package/lib/runner/reporters.js.map +7 -0
- package/lib/runner/runner.js +173 -0
- package/lib/runner/sigIntWatcher.js +96 -0
- package/lib/runner/sigIntWatcher.js.map +7 -0
- package/lib/runner/taskRunner.js +127 -0
- package/lib/runner/taskRunner.js.map +7 -0
- package/lib/runner/tasks.js +410 -0
- package/lib/runner/tasks.js.map +7 -0
- package/lib/runner/testGroups.js +117 -0
- package/lib/runner/testGroups.js.map +7 -0
- package/lib/runner/testRunner.js +390 -0
- package/lib/runner/testRunner.js.map +7 -0
- package/lib/runner/testServer.js +264 -0
- package/lib/runner/testServer.js.map +7 -0
- package/lib/runner/uiMode.js +271 -0
- package/lib/runner/uiModeReporter.js +30 -0
- package/lib/runner/uiModeReporter.js.map +7 -0
- package/lib/runner/vcs.js +72 -0
- package/lib/runner/vcs.js.map +7 -0
- package/lib/runner/watchMode.js +395 -0
- package/lib/runner/watchMode.js.map +7 -0
- package/lib/runner/workerHost.js +95 -0
- package/lib/runner/workerHost.js.map +7 -0
- package/lib/store.js +98 -0
- package/lib/third_party/pirates.js +62 -0
- package/lib/third_party/pirates.js.map +7 -0
- package/lib/third_party/tsconfig-loader.js +103 -0
- package/lib/third_party/tsconfig-loader.js.map +7 -0
- package/lib/transform/babelBundle.js +43 -0
- package/lib/transform/babelBundle.js.map +7 -0
- package/lib/transform/babelBundleImpl.js +461 -0
- package/lib/transform/babelBundleImpl.js.map +7 -0
- package/lib/transform/compilationCache.js +272 -0
- package/lib/transform/compilationCache.js.map +7 -0
- package/lib/transform/esmLoader.js +104 -0
- package/lib/transform/esmLoader.js.map +7 -0
- package/lib/transform/esmUtils.js +32 -0
- package/lib/transform/portTransport.js +67 -0
- package/lib/transform/portTransport.js.map +7 -0
- package/lib/transform/transform.js +293 -0
- package/lib/transform/transform.js.map +7 -0
- package/lib/util.js +403 -0
- package/lib/util.js.map +7 -0
- package/lib/utilsBundle.js +43 -0
- package/lib/utilsBundle.js.map +7 -0
- package/lib/utilsBundleImpl.js +100 -0
- package/lib/utilsBundleImpl.js.map +7 -0
- package/lib/worker/fixtureRunner.js +258 -0
- package/lib/worker/fixtureRunner.js.map +7 -0
- package/lib/worker/stepContext.js +34 -0
- package/lib/worker/testInfo.js +508 -0
- package/lib/worker/testInfo.js.map +7 -0
- package/lib/worker/testTracing.js +344 -0
- package/lib/worker/testTracing.js.map +7 -0
- package/lib/worker/timeoutManager.js +174 -0
- package/lib/worker/timeoutManager.js.map +7 -0
- package/lib/worker/util.js +31 -0
- package/lib/worker/util.js.map +7 -0
- package/lib/worker/workerMain.js +520 -0
- package/lib/worker/workerMain.js.map +7 -0
- package/package.json +74 -0
- package/test.d.ts +18 -0
- package/test.js +24 -0
- package/test.mjs +33 -0
- package/types/test.d.ts +10217 -0
- package/types/testReporter.d.ts +816 -0
package/lib/index.js.map
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
{
|
2
|
+
"version": 3,
|
3
|
+
"sources": ["../src/index.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 fs from 'fs';\nimport path from 'path';\n\nimport * as playwrightLibrary from 'playwright-core';\nimport { setBoxedStackPrefixes, createGuid, currentZone, debugMode, jsonStringifyForceASCII, asLocatorDescription, renderTitleForCall, getActionGroup } from 'playwright-core/lib/utils';\n\nimport { currentTestInfo } from './common/globals';\nimport { rootTestType } from './common/testType';\nimport { runBrowserBackendOnError } from './mcp/browser/backend';\nimport { codeFrameColumns } from './transform/babelBundle';\nimport { stripAnsiEscapes } from './util';\n\nimport type { Fixtures, PlaywrightTestArgs, PlaywrightTestOptions, PlaywrightWorkerArgs, PlaywrightWorkerOptions, ScreenshotMode, TestInfo, TestType, VideoMode, Location } from '../types/test';\nimport type { ContextReuseMode } from './common/config';\nimport type { TestInfoImpl, TestStepInternal } from './worker/testInfo';\nimport type { ClientInstrumentationListener } from '../../playwright-core/src/client/clientInstrumentation';\nimport type { Playwright as PlaywrightImpl } from '../../playwright-core/src/client/playwright';\nimport type { Browser as BrowserImpl } from '../../playwright-core/src/client/browser';\nimport type { BrowserContext as BrowserContextImpl } from '../../playwright-core/src/client/browserContext';\nimport type { APIRequestContext as APIRequestContextImpl } from '../../playwright-core/src/client/fetch';\nimport type { ChannelOwner } from '../../playwright-core/src/client/channelOwner';\nimport type { Page as PageImpl } from '../../playwright-core/src/client/page';\nimport type { Frame as FrameImpl } from '../../playwright-core/src/client/frame';\nimport type { BrowserContext, BrowserContextOptions, LaunchOptions, Page, Tracing } from 'playwright-core';\n\nexport { expect } from './matchers/expect';\nexport const _baseTest: TestType<{}, {}> = rootTestType.test;\n\nsetBoxedStackPrefixes([path.dirname(require.resolve('../package.json'))]);\n\nif ((process as any)['__pw_initiator__']) {\n const originalStackTraceLimit = Error.stackTraceLimit;\n Error.stackTraceLimit = 200;\n try {\n throw new Error('Requiring @playwright/test second time, \\nFirst:\\n' + (process as any)['__pw_initiator__'] + '\\n\\nSecond: ');\n } finally {\n Error.stackTraceLimit = originalStackTraceLimit;\n }\n} else {\n (process as any)['__pw_initiator__'] = new Error().stack;\n}\n\ntype TestFixtures = PlaywrightTestArgs & PlaywrightTestOptions & {\n _combinedContextOptions: BrowserContextOptions,\n _setupContextOptions: void;\n _setupArtifacts: void;\n _contextFactory: (options?: BrowserContextOptions) => Promise<{ context: BrowserContext, close: () => Promise<void> }>;\n};\n\ntype WorkerFixtures = PlaywrightWorkerArgs & PlaywrightWorkerOptions & {\n playwright: PlaywrightImpl;\n _browserOptions: LaunchOptions;\n _optionContextReuseMode: ContextReuseMode,\n _optionConnectOptions: PlaywrightWorkerOptions['connectOptions'],\n _reuseContext: boolean,\n};\n\nconst playwrightFixtures: Fixtures<TestFixtures, WorkerFixtures> = ({\n defaultBrowserType: ['chromium', { scope: 'worker', option: true, box: true }],\n browserName: [({ defaultBrowserType }, use) => use(defaultBrowserType), { scope: 'worker', option: true, box: true }],\n playwright: [async ({}, use) => {\n await use(require('playwright-core'));\n }, { scope: 'worker', box: true }],\n headless: [({ launchOptions }, use) => use(launchOptions.headless ?? true), { scope: 'worker', option: true, box: true }],\n channel: [({ launchOptions }, use) => use(launchOptions.channel), { scope: 'worker', option: true, box: true }],\n launchOptions: [{}, { scope: 'worker', option: true, box: true }],\n connectOptions: [async ({ _optionConnectOptions }, use) => {\n await use(connectOptionsFromEnv() || _optionConnectOptions);\n }, { scope: 'worker', option: true, box: true }],\n screenshot: ['off', { scope: 'worker', option: true, box: true }],\n video: ['off', { scope: 'worker', option: true, box: true }],\n trace: ['off', { scope: 'worker', option: true, box: true }],\n\n _browserOptions: [async ({ playwright, headless, channel, launchOptions }, use) => {\n const options: LaunchOptions = {\n handleSIGINT: false,\n ...launchOptions,\n tracesDir: tracing().tracesDir(),\n };\n if (headless !== undefined)\n options.headless = headless;\n if (channel !== undefined)\n options.channel = channel;\n\n playwright._defaultLaunchOptions = options;\n await use(options);\n playwright._defaultLaunchOptions = undefined;\n }, { scope: 'worker', auto: true, box: true }],\n\n browser: [async ({ playwright, browserName, _browserOptions, connectOptions }, use, testInfo) => {\n if (!['chromium', 'firefox', 'webkit', '_bidiChromium', '_bidiFirefox'].includes(browserName))\n throw new Error(`Unexpected browserName \"${browserName}\", must be one of \"chromium\", \"firefox\" or \"webkit\"`);\n\n if (connectOptions) {\n const browser = await playwright[browserName].connect({\n ...connectOptions,\n exposeNetwork: connectOptions.exposeNetwork ?? (connectOptions as any)._exposeNetwork,\n headers: {\n // HTTP headers are ASCII only (not UTF-8).\n 'x-playwright-launch-options': jsonStringifyForceASCII(_browserOptions),\n ...connectOptions.headers,\n },\n });\n await use(browser);\n await browser.close({ reason: 'Test ended.' });\n return;\n }\n\n const browser = await playwright[browserName].launch();\n await use(browser);\n await browser.close({ reason: 'Test ended.' });\n }, { scope: 'worker', timeout: 0 }],\n\n acceptDownloads: [({ contextOptions }, use) => use(contextOptions.acceptDownloads ?? true), { option: true, box: true }],\n bypassCSP: [({ contextOptions }, use) => use(contextOptions.bypassCSP ?? false), { option: true, box: true }],\n colorScheme: [({ contextOptions }, use) => use(contextOptions.colorScheme === undefined ? 'light' : contextOptions.colorScheme), { option: true, box: true }],\n deviceScaleFactor: [({ contextOptions }, use) => use(contextOptions.deviceScaleFactor), { option: true, box: true }],\n extraHTTPHeaders: [({ contextOptions }, use) => use(contextOptions.extraHTTPHeaders), { option: true, box: true }],\n geolocation: [({ contextOptions }, use) => use(contextOptions.geolocation), { option: true, box: true }],\n hasTouch: [({ contextOptions }, use) => use(contextOptions.hasTouch ?? false), { option: true, box: true }],\n httpCredentials: [({ contextOptions }, use) => use(contextOptions.httpCredentials), { option: true, box: true }],\n ignoreHTTPSErrors: [({ contextOptions }, use) => use(contextOptions.ignoreHTTPSErrors ?? false), { option: true, box: true }],\n isMobile: [({ contextOptions }, use) => use(contextOptions.isMobile ?? false), { option: true, box: true }],\n javaScriptEnabled: [({ contextOptions }, use) => use(contextOptions.javaScriptEnabled ?? true), { option: true, box: true }],\n locale: [({ contextOptions }, use) => use(contextOptions.locale ?? 'en-US'), { option: true, box: true }],\n offline: [({ contextOptions }, use) => use(contextOptions.offline ?? false), { option: true, box: true }],\n permissions: [({ contextOptions }, use) => use(contextOptions.permissions), { option: true, box: true }],\n proxy: [({ contextOptions }, use) => use(contextOptions.proxy), { option: true, box: true }],\n storageState: [({ contextOptions }, use) => use(contextOptions.storageState), { option: true, box: true }],\n clientCertificates: [({ contextOptions }, use) => use(contextOptions.clientCertificates), { option: true, box: true }],\n timezoneId: [({ contextOptions }, use) => use(contextOptions.timezoneId), { option: true, box: true }],\n userAgent: [({ contextOptions }, use) => use(contextOptions.userAgent), { option: true, box: true }],\n viewport: [({ contextOptions }, use) => use(contextOptions.viewport === undefined ? { width: 1280, height: 720 } : contextOptions.viewport), { option: true, box: true }],\n actionTimeout: [0, { option: true, box: true }],\n testIdAttribute: ['data-testid', { option: true, box: true }],\n navigationTimeout: [0, { option: true, box: true }],\n baseURL: [async ({ }, use) => {\n await use(process.env.PLAYWRIGHT_TEST_BASE_URL);\n }, { option: true, box: true }],\n serviceWorkers: [({ contextOptions }, use) => use(contextOptions.serviceWorkers ?? 'allow'), { option: true, box: true }],\n contextOptions: [{}, { option: true, box: true }],\n\n _combinedContextOptions: [async ({\n acceptDownloads,\n bypassCSP,\n clientCertificates,\n colorScheme,\n deviceScaleFactor,\n extraHTTPHeaders,\n hasTouch,\n geolocation,\n httpCredentials,\n ignoreHTTPSErrors,\n isMobile,\n javaScriptEnabled,\n locale,\n offline,\n permissions,\n proxy,\n storageState,\n viewport,\n timezoneId,\n userAgent,\n baseURL,\n contextOptions,\n serviceWorkers,\n }, use) => {\n const options: BrowserContextOptions = {};\n if (acceptDownloads !== undefined)\n options.acceptDownloads = acceptDownloads;\n if (bypassCSP !== undefined)\n options.bypassCSP = bypassCSP;\n if (colorScheme !== undefined)\n options.colorScheme = colorScheme;\n if (deviceScaleFactor !== undefined)\n options.deviceScaleFactor = deviceScaleFactor;\n if (extraHTTPHeaders !== undefined)\n options.extraHTTPHeaders = extraHTTPHeaders;\n if (geolocation !== undefined)\n options.geolocation = geolocation;\n if (hasTouch !== undefined)\n options.hasTouch = hasTouch;\n if (httpCredentials !== undefined)\n options.httpCredentials = httpCredentials;\n if (ignoreHTTPSErrors !== undefined)\n options.ignoreHTTPSErrors = ignoreHTTPSErrors;\n if (isMobile !== undefined)\n options.isMobile = isMobile;\n if (javaScriptEnabled !== undefined)\n options.javaScriptEnabled = javaScriptEnabled;\n if (locale !== undefined)\n options.locale = locale;\n if (offline !== undefined)\n options.offline = offline;\n if (permissions !== undefined)\n options.permissions = permissions;\n if (proxy !== undefined)\n options.proxy = proxy;\n if (storageState !== undefined)\n options.storageState = storageState;\n if (clientCertificates?.length)\n options.clientCertificates = resolveClientCerticates(clientCertificates);\n if (timezoneId !== undefined)\n options.timezoneId = timezoneId;\n if (userAgent !== undefined)\n options.userAgent = userAgent;\n if (viewport !== undefined)\n options.viewport = viewport;\n if (baseURL !== undefined)\n options.baseURL = baseURL;\n if (serviceWorkers !== undefined)\n options.serviceWorkers = serviceWorkers;\n await use({\n ...contextOptions,\n ...options,\n });\n }, { box: true }],\n\n _setupContextOptions: [async ({ playwright, _combinedContextOptions, actionTimeout, navigationTimeout, testIdAttribute }, use, testInfo) => {\n if (testIdAttribute)\n playwrightLibrary.selectors.setTestIdAttribute(testIdAttribute);\n testInfo.snapshotSuffix = process.platform;\n if (debugMode() === 'inspector')\n (testInfo as TestInfoImpl)._setDebugMode();\n\n playwright._defaultContextOptions = _combinedContextOptions;\n playwright._defaultContextTimeout = process.env.PLAYWRIGHT_DEBUGGER_ENABLED ? 5000 : actionTimeout || 0;\n playwright._defaultContextNavigationTimeout = navigationTimeout || 0;\n await use();\n playwright._defaultContextOptions = undefined;\n playwright._defaultContextTimeout = undefined;\n playwright._defaultContextNavigationTimeout = undefined;\n }, { auto: 'all-hooks-included', title: 'context configuration', box: true } as any],\n\n _setupArtifacts: [async ({ playwright, screenshot }, use, testInfo) => {\n // This fixture has a separate zero-timeout slot to ensure that artifact collection\n // happens even after some fixtures or hooks time out.\n // Now that default test timeout is known, we can replace zero with an actual value.\n testInfo.setTimeout(testInfo.project.timeout);\n\n const artifactsRecorder = new ArtifactsRecorder(playwright, tracing().artifactsDir(), screenshot);\n await artifactsRecorder.willStartTest(testInfo as TestInfoImpl);\n\n const tracingGroupSteps: TestStepInternal[] = [];\n const csiListener: ClientInstrumentationListener = {\n onApiCallBegin: (data, channel) => {\n const testInfo = currentTestInfo();\n // Some special calls do not get into steps.\n if (!testInfo || data.apiName.includes('setTestIdAttribute') || data.apiName === 'tracing.groupEnd')\n return;\n const zone = currentZone().data<TestStepInternal>('stepZone');\n if (zone && zone.category === 'expect') {\n // Display the internal locator._expect call under the name of the enclosing expect call,\n // and connect it to the existing expect step.\n if (zone.apiName)\n data.apiName = zone.apiName;\n if (zone.title)\n data.title = zone.title;\n data.stepId = zone.stepId;\n return;\n }\n\n // In the general case, create a step for each api call and connect them through the stepId.\n const step = testInfo._addStep({\n location: data.frames[0],\n category: 'pw:api',\n title: renderTitle(channel.type, channel.method, channel.params, data.title),\n apiName: data.apiName,\n params: channel.params,\n group: getActionGroup({ type: channel.type, method: channel.method }),\n }, tracingGroupSteps[tracingGroupSteps.length - 1]);\n data.userData = step;\n data.stepId = step.stepId;\n if (data.apiName === 'tracing.group')\n tracingGroupSteps.push(step);\n },\n onApiCallRecovery: (data, error, channelOwner, recoveryHandlers) => {\n const step = data.userData;\n if (!step)\n return;\n const page = channelToPage(channelOwner);\n if (!page)\n return;\n recoveryHandlers.push(async () => {\n await runBrowserBackendOnError(page, () => {\n return stripAnsiEscapes(createErrorCodeframe(error.message, step.location));\n });\n });\n },\n onApiCallEnd: data => {\n\n // \"tracing.group\" step will end later, when \"tracing.groupEnd\" finishes.\n if (data.apiName === 'tracing.group')\n return;\n if (data.apiName === 'tracing.groupEnd') {\n const step = tracingGroupSteps.pop();\n step?.complete({ error: data.error });\n return;\n }\n const step = data.userData;\n step?.complete({ error: data.error });\n },\n onWillPause: ({ keepTestTimeout }) => {\n if (!keepTestTimeout)\n currentTestInfo()?._setDebugMode();\n },\n runAfterCreateBrowserContext: async (context: BrowserContextImpl) => {\n await artifactsRecorder?.didCreateBrowserContext(context);\n const testInfo = currentTestInfo();\n if (testInfo)\n attachConnectedHeaderIfNeeded(testInfo, context.browser());\n },\n runAfterCreateRequestContext: async (context: APIRequestContextImpl) => {\n await artifactsRecorder?.didCreateRequestContext(context);\n },\n runBeforeCloseBrowserContext: async (context: BrowserContextImpl) => {\n await artifactsRecorder?.willCloseBrowserContext(context);\n },\n runBeforeCloseRequestContext: async (context: APIRequestContextImpl) => {\n await artifactsRecorder?.willCloseRequestContext(context);\n },\n };\n\n const clientInstrumentation = playwright._instrumentation;\n clientInstrumentation.addListener(csiListener);\n\n await use();\n\n clientInstrumentation.removeListener(csiListener);\n await artifactsRecorder.didFinishTest();\n }, { auto: 'all-hooks-included', title: 'trace recording', box: true, timeout: 0 } as any],\n\n _contextFactory: [async ({ browser, video, _reuseContext, _combinedContextOptions /** mitigate dep-via-auto lack of traceability */ }, use, testInfo) => {\n const testInfoImpl = testInfo as TestInfoImpl;\n const videoMode = normalizeVideoMode(video);\n const captureVideo = shouldCaptureVideo(videoMode, testInfo) && !_reuseContext;\n const contexts = new Map<BrowserContext, { close: () => Promise<void>, pagesWithVideo: Page[] }>();\n let counter = 0;\n\n await use(async options => {\n const hook = testInfoImpl._currentHookType();\n if (hook === 'beforeAll' || hook === 'afterAll') {\n throw new Error([\n `\"context\" and \"page\" fixtures are not supported in \"${hook}\" since they are created on a per-test basis.`,\n `If you would like to reuse a single page between tests, create context manually with browser.newContext(). See https://aka.ms/playwright/reuse-page for details.`,\n `If you would like to configure your page before each test, do that in beforeEach hook instead.`,\n ].join('\\n'));\n }\n const videoOptions: BrowserContextOptions = captureVideo ? {\n recordVideo: {\n dir: tracing().artifactsDir(),\n size: typeof video === 'string' ? undefined : video.size,\n }\n } : {};\n const context = await browser.newContext({ ...videoOptions, ...options }) as BrowserContextImpl;\n\n if (process.env.PW_CLOCK === 'frozen') {\n await context._wrapApiCall(async () => {\n await context.clock.install({ time: 0 });\n await context.clock.pauseAt(1000);\n }, { internal: true });\n } else if (process.env.PW_CLOCK === 'realtime') {\n await context._wrapApiCall(async () => {\n await context.clock.install({ time: 0 });\n }, { internal: true });\n }\n\n let closed = false;\n const close = async () => {\n if (closed)\n return;\n closed = true;\n const closeReason = testInfo.status === 'timedOut' ? 'Test timeout of ' + testInfo.timeout + 'ms exceeded.' : 'Test ended.';\n await context.close({ reason: closeReason });\n const testFailed = testInfo.status !== testInfo.expectedStatus;\n const preserveVideo = captureVideo && (videoMode === 'on' || (testFailed && videoMode === 'retain-on-failure') || (videoMode === 'on-first-retry' && testInfo.retry === 1));\n if (preserveVideo) {\n const { pagesWithVideo: pagesForVideo } = contexts.get(context)!;\n const videos = pagesForVideo.map(p => p.video()).filter(video => !!video);\n await Promise.all(videos.map(async v => {\n try {\n const savedPath = testInfo.outputPath(`video${counter ? '-' + counter : ''}.webm`);\n ++counter;\n await v.saveAs(savedPath);\n testInfo.attachments.push({ name: 'video', path: savedPath, contentType: 'video/webm' });\n } catch (e) {\n // Silent catch empty videos.\n }\n }));\n }\n };\n\n const contextData = { close, pagesWithVideo: [] as Page[] };\n if (captureVideo)\n context.on('page', page => contextData.pagesWithVideo.push(page));\n contexts.set(context, contextData);\n return { context, close };\n });\n\n await Promise.all([...contexts.values()].map(data => data.close()));\n }, { scope: 'test', title: 'context', box: true }],\n\n _optionContextReuseMode: ['none', { scope: 'worker', option: true, box: true }],\n _optionConnectOptions: [undefined, { scope: 'worker', option: true, box: true }],\n\n _reuseContext: [async ({ video, _optionContextReuseMode }, use) => {\n let mode = _optionContextReuseMode;\n if (process.env.PW_TEST_REUSE_CONTEXT)\n mode = 'when-possible';\n const reuse = mode === 'when-possible' && normalizeVideoMode(video) === 'off';\n await use(reuse);\n }, { scope: 'worker', title: 'context', box: true }],\n\n context: async ({ browser, _reuseContext, _contextFactory }, use, testInfo) => {\n const browserImpl = browser as BrowserImpl;\n attachConnectedHeaderIfNeeded(testInfo, browserImpl);\n if (!_reuseContext) {\n const { context, close } = await _contextFactory();\n await use(context);\n await close();\n return;\n }\n\n const context = await browserImpl._wrapApiCall(() => browserImpl._newContextForReuse(), { internal: true });\n await use(context);\n const closeReason = testInfo.status === 'timedOut' ? 'Test timeout of ' + testInfo.timeout + 'ms exceeded.' : 'Test ended.';\n await browserImpl._wrapApiCall(() => browserImpl._disconnectFromReusedContext(closeReason), { internal: true });\n },\n\n page: async ({ context, _reuseContext }, use) => {\n if (!_reuseContext) {\n await use(await context.newPage());\n return;\n }\n\n // First time we are reusing the context, we should create the page.\n let [page] = context.pages();\n if (!page)\n page = await context.newPage();\n await use(page);\n },\n\n request: async ({ playwright }, use) => {\n const request = await playwright.request.newContext();\n await use(request);\n const hook = (test.info() as TestInfoImpl)._currentHookType();\n if (hook === 'beforeAll') {\n await request.dispose({ reason: [\n `Fixture { request } from beforeAll cannot be reused in a test.`,\n ` - Recommended fix: use a separate { request } in the test.`,\n ` - Alternatively, manually create APIRequestContext in beforeAll and dispose it in afterAll.`,\n `See https://playwright.dev/docs/api-testing#sending-api-requests-from-ui-tests for more details.`,\n ].join('\\n') });\n } else {\n await request.dispose();\n }\n },\n});\n\ntype ScreenshotOption = PlaywrightWorkerOptions['screenshot'] | undefined;\n\nfunction normalizeVideoMode(video: VideoMode | 'retry-with-video' | { mode: VideoMode } | undefined): VideoMode {\n if (!video)\n return 'off';\n let videoMode = typeof video === 'string' ? video : video.mode;\n if (videoMode === 'retry-with-video')\n videoMode = 'on-first-retry';\n return videoMode;\n}\n\nfunction shouldCaptureVideo(videoMode: VideoMode, testInfo: TestInfo) {\n return (videoMode === 'on' || videoMode === 'retain-on-failure' || (videoMode === 'on-first-retry' && testInfo.retry === 1));\n}\n\nfunction normalizeScreenshotMode(screenshot: ScreenshotOption): ScreenshotMode {\n if (!screenshot)\n return 'off';\n return typeof screenshot === 'string' ? screenshot : screenshot.mode;\n}\n\nfunction attachConnectedHeaderIfNeeded(testInfo: TestInfo, browser: BrowserImpl | null) {\n const connectHeaders: { name: string, value: string }[] | undefined = browser?._connection.headers;\n if (!connectHeaders)\n return;\n for (const header of connectHeaders) {\n if (header.name !== 'x-playwright-attachment')\n continue;\n const [name, value] = header.value.split('=');\n if (!name || !value)\n continue;\n if (testInfo.attachments.some(attachment => attachment.name === name))\n continue;\n testInfo.attachments.push({ name, contentType: 'text/plain', body: Buffer.from(value) });\n }\n}\n\nfunction resolveFileToConfig(file: string | undefined) {\n const config = test.info().config.configFile;\n if (!config || !file)\n return file;\n if (path.isAbsolute(file))\n return file;\n return path.resolve(path.dirname(config), file);\n}\n\ntype ClientCertificates = NonNullable<PlaywrightTestOptions['clientCertificates']>;\n\nfunction resolveClientCerticates(clientCertificates: ClientCertificates): ClientCertificates {\n for (const cert of clientCertificates) {\n cert.certPath = resolveFileToConfig(cert.certPath);\n cert.keyPath = resolveFileToConfig(cert.keyPath);\n cert.pfxPath = resolveFileToConfig(cert.pfxPath);\n }\n return clientCertificates;\n}\n\nconst kTracingStarted = Symbol('kTracingStarted');\n\nfunction connectOptionsFromEnv() {\n const wsEndpoint = process.env.PW_TEST_CONNECT_WS_ENDPOINT;\n if (!wsEndpoint)\n return undefined;\n const headers = process.env.PW_TEST_CONNECT_HEADERS ? JSON.parse(process.env.PW_TEST_CONNECT_HEADERS) : undefined;\n return {\n wsEndpoint,\n headers,\n exposeNetwork: process.env.PW_TEST_CONNECT_EXPOSE_NETWORK,\n };\n}\n\ntype SnapshotRecorderMode = 'on' | 'off' | 'only-on-failure' | 'on-first-failure';\n\nclass SnapshotRecorder {\n private _ordinal = 0;\n private _temporary: string[] = [];\n\n constructor(\n private _artifactsRecorder: ArtifactsRecorder,\n private _mode: SnapshotRecorderMode,\n private _name: string,\n private _contentType: string,\n private _extension: string,\n private _doSnapshot: (page: PageImpl, path: string) => Promise<void>) {\n }\n\n fixOrdinal() {\n // Since beforeAll(s), test and afterAll(s) reuse the same TestInfo, make sure we do not\n // overwrite previous screenshots.\n this._ordinal = this.testInfo.attachments.filter(a => a.name === this._name).length;\n }\n\n private shouldCaptureUponFinish() {\n return this._mode === 'on' ||\n (this._mode === 'only-on-failure' && this.testInfo._isFailure()) ||\n (this._mode === 'on-first-failure' && this.testInfo._isFailure() && this.testInfo.retry === 0);\n }\n\n async maybeCapture() {\n if (!this.shouldCaptureUponFinish())\n return;\n\n await Promise.all(this._artifactsRecorder._playwright._allPages().map(page => this._snapshotPage(page, false)));\n }\n\n async persistTemporary() {\n if (this.shouldCaptureUponFinish()) {\n await Promise.all(this._temporary.map(async file => {\n try {\n const path = this._createAttachmentPath();\n await fs.promises.rename(file, path);\n this._attach(path);\n } catch {\n }\n }));\n }\n }\n\n async captureTemporary(context: BrowserContextImpl) {\n if (this._mode === 'on' || this._mode === 'only-on-failure' || (this._mode === 'on-first-failure' && this.testInfo.retry === 0))\n await Promise.all(context.pages().map(page => this._snapshotPage(page, true)));\n }\n\n private _attach(screenshotPath: string) {\n this.testInfo.attachments.push({ name: this._name, path: screenshotPath, contentType: this._contentType });\n }\n\n private _createAttachmentPath() {\n const testFailed = this.testInfo._isFailure();\n const index = this._ordinal + 1;\n ++this._ordinal;\n const path = this.testInfo.outputPath(`test-${testFailed ? 'failed' : 'finished'}-${index}${this._extension}`);\n return path;\n }\n\n private _createTemporaryArtifact(...name: string[]) {\n const file = path.join(this._artifactsRecorder._artifactsDir, ...name);\n return file;\n }\n\n private async _snapshotPage(page: PageImpl, temporary: boolean) {\n // Make sure we do not snapshot the same page twice for a single TestInfo,\n // which is reused between beforeAll(s), test and afterAll(s).\n if ((page as any)[this.testInfo._uniqueSymbol])\n return;\n (page as any)[this.testInfo._uniqueSymbol] = true;\n try {\n const path = temporary ? this._createTemporaryArtifact(createGuid() + this._extension) : this._createAttachmentPath();\n await this._doSnapshot(page, path);\n if (temporary)\n this._temporary.push(path);\n else\n this._attach(path);\n } catch {\n // snapshot may fail, just ignore.\n }\n }\n\n private get testInfo(): TestInfoImpl {\n return this._artifactsRecorder._testInfo;\n }\n}\n\nclass ArtifactsRecorder {\n _testInfo!: TestInfoImpl;\n _playwright: PlaywrightImpl;\n _artifactsDir: string;\n private _startedCollectingArtifacts: symbol;\n\n private _screenshotRecorder: SnapshotRecorder;\n private _pageSnapshot: string | undefined;\n\n constructor(playwright: PlaywrightImpl, artifactsDir: string, screenshot: ScreenshotOption) {\n this._playwright = playwright;\n this._artifactsDir = artifactsDir;\n const screenshotOptions = typeof screenshot === 'string' ? undefined : screenshot;\n this._startedCollectingArtifacts = Symbol('startedCollectingArtifacts');\n\n this._screenshotRecorder = new SnapshotRecorder(this, normalizeScreenshotMode(screenshot), 'screenshot', 'image/png', '.png', async (page, path) => {\n await page._wrapApiCall(async () => {\n await page.screenshot({ ...screenshotOptions, timeout: 5000, path, caret: 'initial' });\n }, { internal: true });\n });\n }\n\n async willStartTest(testInfo: TestInfoImpl) {\n this._testInfo = testInfo;\n testInfo._onDidFinishTestFunction = () => this.didFinishTestFunction();\n\n this._screenshotRecorder.fixOrdinal();\n\n // Process existing contexts.\n await Promise.all(this._playwright._allContexts().map(context => this.didCreateBrowserContext(context)));\n const existingApiRequests = Array.from(this._playwright.request._contexts);\n await Promise.all(existingApiRequests.map(c => this.didCreateRequestContext(c)));\n }\n\n async didCreateBrowserContext(context: BrowserContextImpl) {\n await this._startTraceChunkOnContextCreation(context, context.tracing);\n }\n\n async willCloseBrowserContext(context: BrowserContextImpl) {\n await this._stopTracing(context, context.tracing);\n await this._screenshotRecorder.captureTemporary(context);\n await this._takePageSnapshot(context);\n }\n\n private async _takePageSnapshot(context: BrowserContextImpl) {\n if (process.env.PLAYWRIGHT_NO_COPY_PROMPT)\n return;\n if (this._testInfo.errors.length === 0)\n return;\n if (this._pageSnapshot)\n return;\n const page = context.pages()[0];\n if (!page)\n return;\n\n try {\n // TODO: maybe capture snapshot when the error is created, so it's from the right page and right time\n await page._wrapApiCall(async () => {\n this._pageSnapshot = await page._snapshotForAI({ timeout: 5000 });\n }, { internal: true });\n } catch {}\n }\n\n async didCreateRequestContext(context: APIRequestContextImpl) {\n await this._startTraceChunkOnContextCreation(context, context._tracing);\n }\n\n async willCloseRequestContext(context: APIRequestContextImpl) {\n await this._stopTracing(context, context._tracing);\n }\n\n async didFinishTestFunction() {\n await this._screenshotRecorder.maybeCapture();\n }\n\n async didFinishTest() {\n await this.didFinishTestFunction();\n\n const leftoverContexts = this._playwright._allContexts();\n const leftoverApiRequests = Array.from(this._playwright.request._contexts);\n\n // Collect traces/screenshots for remaining contexts.\n await Promise.all(leftoverContexts.map(async context => {\n await this._stopTracing(context, context.tracing);\n }).concat(leftoverApiRequests.map(async context => {\n await this._stopTracing(context, context._tracing);\n })));\n\n await this._screenshotRecorder.persistTemporary();\n\n const context = leftoverContexts[0];\n if (context)\n await this._takePageSnapshot(context);\n\n if (this._pageSnapshot && this._testInfo.errors.length > 0 && !this._testInfo.attachments.some(a => a.name === 'error-context')) {\n const lines = [\n '# Page snapshot',\n '',\n '```yaml',\n this._pageSnapshot,\n '```',\n ];\n const filePath = this._testInfo.outputPath('error-context.md');\n await fs.promises.writeFile(filePath, lines.join('\\n'), 'utf8');\n\n this._testInfo._attach({\n name: 'error-context',\n contentType: 'text/markdown',\n path: filePath,\n }, undefined);\n }\n }\n\n private async _startTraceChunkOnContextCreation(channelOwner: ChannelOwner, tracing: Tracing) {\n await channelOwner._wrapApiCall(async () => {\n const options = this._testInfo._tracing.traceOptions();\n if (options) {\n const title = this._testInfo._tracing.traceTitle();\n const name = this._testInfo._tracing.generateNextTraceRecordingName();\n if (!(tracing as any)[kTracingStarted]) {\n await tracing.start({ ...options, title, name });\n (tracing as any)[kTracingStarted] = true;\n } else {\n await tracing.startChunk({ title, name });\n }\n } else {\n if ((tracing as any)[kTracingStarted]) {\n (tracing as any)[kTracingStarted] = false;\n await tracing.stop();\n }\n }\n }, { internal: true });\n }\n\n private async _stopTracing(channelOwner: ChannelOwner, tracing: Tracing) {\n await channelOwner._wrapApiCall(async () => {\n if ((tracing as any)[this._startedCollectingArtifacts])\n return;\n (tracing as any)[this._startedCollectingArtifacts] = true;\n if (this._testInfo._tracing.traceOptions() && (tracing as any)[kTracingStarted])\n await tracing.stopChunk({ path: this._testInfo._tracing.maybeGenerateNextTraceRecordingPath() });\n }, { internal: true });\n }\n}\n\nfunction renderTitle(type: string, method: string, params: Record<string, string> | undefined, title?: string) {\n const prefix = renderTitleForCall({ title, type, method, params });\n let selector;\n if (params?.['selector'] && typeof params.selector === 'string')\n selector = asLocatorDescription('javascript', params.selector);\n return prefix + (selector ? ` ${selector}` : '');\n}\n\nfunction tracing() {\n return (test.info() as TestInfoImpl)._tracing;\n}\n\nexport const test = _baseTest.extend<TestFixtures, WorkerFixtures>(playwrightFixtures);\n\nexport { defineConfig } from './common/configLoader';\nexport { mergeTests } from './common/testType';\nexport { mergeExpects } from './matchers/expect';\n\nfunction channelToPage(channelOwner: ChannelOwner): Page | undefined {\n if (channelOwner._type === 'Page')\n return channelOwner as PageImpl;\n if (channelOwner._type === 'Frame')\n return (channelOwner as FrameImpl).page();\n return undefined;\n}\n\nfunction createErrorCodeframe(message: string, location: Location) {\n let source: string;\n try {\n source = fs.readFileSync(location.file, 'utf-8') + '\\n//';\n } catch (e) {\n return '';\n }\n\n return codeFrameColumns(\n source,\n {\n start: {\n line: location.line,\n column: location.column,\n },\n },\n {\n highlightCode: true,\n linesAbove: 5,\n linesBelow: 5,\n message: message.split('\\n')[0] || undefined,\n }\n );\n}\n"],
|
5
|
+
"mappings": "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",
|
6
|
+
"names": ["import_testType", "import_expect", "path", "browser", "testInfo", "step", "video", "context", "fs", "tracing"]
|
7
|
+
}
|
@@ -0,0 +1,42 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __create = Object.create;
|
3
|
+
var __defProp = Object.defineProperty;
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
8
|
+
var __export = (target, all) => {
|
9
|
+
for (var name in all)
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
11
|
+
};
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
14
|
+
for (let key of __getOwnPropNames(from))
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
17
|
+
}
|
18
|
+
return to;
|
19
|
+
};
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
26
|
+
mod
|
27
|
+
));
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
29
|
+
var internalsForTest_exports = {};
|
30
|
+
__export(internalsForTest_exports, {
|
31
|
+
fileDependencies: () => fileDependencies
|
32
|
+
});
|
33
|
+
module.exports = __toCommonJS(internalsForTest_exports);
|
34
|
+
var import_path = __toESM(require("path"));
|
35
|
+
var import_compilationCache = require("./transform/compilationCache");
|
36
|
+
function fileDependencies() {
|
37
|
+
return Object.fromEntries([...(0, import_compilationCache.fileDependenciesForTest)().entries()].map((entry) => [import_path.default.basename(entry[0]), [...entry[1]].map((f) => import_path.default.basename(f)).sort()]));
|
38
|
+
}
|
39
|
+
// Annotate the CommonJS export names for ESM import in node:
|
40
|
+
0 && (module.exports = {
|
41
|
+
fileDependencies
|
42
|
+
});
|
@@ -0,0 +1,7 @@
|
|
1
|
+
{
|
2
|
+
"version": 3,
|
3
|
+
"sources": ["../src/internalsForTest.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 path from 'path';\n\nimport { fileDependenciesForTest } from './transform/compilationCache';\n\nexport function fileDependencies() {\n return Object.fromEntries([...fileDependenciesForTest().entries()].map(entry => (\n [path.basename(entry[0]), [...entry[1]].map(f => path.basename(f)).sort()]\n )));\n}\n"],
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBA,kBAAiB;AAEjB,8BAAwC;AAEjC,SAAS,mBAAmB;AACjC,SAAO,OAAO,YAAY,CAAC,OAAG,iDAAwB,EAAE,QAAQ,CAAC,EAAE,IAAI,WACrE,CAAC,YAAAA,QAAK,SAAS,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,IAAI,OAAK,YAAAA,QAAK,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAC1E,CAAC;AACJ;",
|
6
|
+
"names": ["path"]
|
7
|
+
}
|
@@ -0,0 +1,77 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __defProp = Object.defineProperty;
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
6
|
+
var __export = (target, all) => {
|
7
|
+
for (var name in all)
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
9
|
+
};
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
12
|
+
for (let key of __getOwnPropNames(from))
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
15
|
+
}
|
16
|
+
return to;
|
17
|
+
};
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
19
|
+
var events_exports = {};
|
20
|
+
__export(events_exports, {
|
21
|
+
Disposable: () => Disposable,
|
22
|
+
EventEmitter: () => EventEmitter
|
23
|
+
});
|
24
|
+
module.exports = __toCommonJS(events_exports);
|
25
|
+
var Disposable;
|
26
|
+
((Disposable2) => {
|
27
|
+
function disposeAll(disposables) {
|
28
|
+
for (const disposable of disposables.splice(0))
|
29
|
+
disposable.dispose();
|
30
|
+
}
|
31
|
+
Disposable2.disposeAll = disposeAll;
|
32
|
+
})(Disposable || (Disposable = {}));
|
33
|
+
class EventEmitter {
|
34
|
+
constructor() {
|
35
|
+
this._listeners = /* @__PURE__ */ new Set();
|
36
|
+
this.event = (listener, disposables) => {
|
37
|
+
this._listeners.add(listener);
|
38
|
+
let disposed = false;
|
39
|
+
const self = this;
|
40
|
+
const result = {
|
41
|
+
dispose() {
|
42
|
+
if (!disposed) {
|
43
|
+
disposed = true;
|
44
|
+
self._listeners.delete(listener);
|
45
|
+
}
|
46
|
+
}
|
47
|
+
};
|
48
|
+
if (disposables)
|
49
|
+
disposables.push(result);
|
50
|
+
return result;
|
51
|
+
};
|
52
|
+
}
|
53
|
+
fire(event) {
|
54
|
+
const dispatch = !this._deliveryQueue;
|
55
|
+
if (!this._deliveryQueue)
|
56
|
+
this._deliveryQueue = [];
|
57
|
+
for (const listener of this._listeners)
|
58
|
+
this._deliveryQueue.push({ listener, event });
|
59
|
+
if (!dispatch)
|
60
|
+
return;
|
61
|
+
for (let index = 0; index < this._deliveryQueue.length; index++) {
|
62
|
+
const { listener, event: event2 } = this._deliveryQueue[index];
|
63
|
+
listener.call(null, event2);
|
64
|
+
}
|
65
|
+
this._deliveryQueue = void 0;
|
66
|
+
}
|
67
|
+
dispose() {
|
68
|
+
this._listeners.clear();
|
69
|
+
if (this._deliveryQueue)
|
70
|
+
this._deliveryQueue = [];
|
71
|
+
}
|
72
|
+
}
|
73
|
+
// Annotate the CommonJS export names for ESM import in node:
|
74
|
+
0 && (module.exports = {
|
75
|
+
Disposable,
|
76
|
+
EventEmitter
|
77
|
+
});
|
@@ -0,0 +1,7 @@
|
|
1
|
+
{
|
2
|
+
"version": 3,
|
3
|
+
"sources": ["../../src/isomorphic/events.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 namespace Disposable {\n export function disposeAll(disposables: Disposable[]): void {\n for (const disposable of disposables.splice(0))\n disposable.dispose();\n }\n}\n\nexport type Disposable = {\n dispose(): void;\n};\n\nexport interface Event<T> {\n (listener: (e: T) => any, disposables?: Disposable[]): Disposable;\n}\n\nexport class EventEmitter<T> {\n public event: Event<T>;\n\n private _deliveryQueue?: {listener: (e: T) => void, event: T}[];\n private _listeners = new Set<(e: T) => void>();\n\n constructor() {\n this.event = (listener: (e: T) => any, disposables?: Disposable[]) => {\n this._listeners.add(listener);\n let disposed = false;\n const self = this;\n const result: Disposable = {\n dispose() {\n if (!disposed) {\n disposed = true;\n self._listeners.delete(listener);\n }\n }\n };\n if (disposables)\n disposables.push(result);\n return result;\n };\n }\n\n fire(event: T): void {\n const dispatch = !this._deliveryQueue;\n if (!this._deliveryQueue)\n this._deliveryQueue = [];\n for (const listener of this._listeners)\n this._deliveryQueue.push({ listener, event });\n if (!dispatch)\n return;\n for (let index = 0; index < this._deliveryQueue.length; index++) {\n const { listener, event } = this._deliveryQueue[index];\n listener.call(null, event);\n }\n this._deliveryQueue = undefined;\n }\n\n dispose() {\n this._listeners.clear();\n if (this._deliveryQueue)\n this._deliveryQueue = [];\n }\n}\n"],
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBO,IAAU;AAAA,CAAV,CAAUA,gBAAV;AACE,WAAS,WAAW,aAAiC;AAC1D,eAAW,cAAc,YAAY,OAAO,CAAC;AAC3C,iBAAW,QAAQ;AAAA,EACvB;AAHO,EAAAA,YAAS;AAAA,GADD;AAeV,MAAM,aAAgB;AAAA,EAM3B,cAAc;AAFd,SAAQ,aAAa,oBAAI,IAAoB;AAG3C,SAAK,QAAQ,CAAC,UAAyB,gBAA+B;AACpE,WAAK,WAAW,IAAI,QAAQ;AAC5B,UAAI,WAAW;AACf,YAAM,OAAO;AACb,YAAM,SAAqB;AAAA,QACzB,UAAU;AACR,cAAI,CAAC,UAAU;AACb,uBAAW;AACX,iBAAK,WAAW,OAAO,QAAQ;AAAA,UACjC;AAAA,QACF;AAAA,MACF;AACA,UAAI;AACF,oBAAY,KAAK,MAAM;AACzB,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,KAAK,OAAgB;AACnB,UAAM,WAAW,CAAC,KAAK;AACvB,QAAI,CAAC,KAAK;AACR,WAAK,iBAAiB,CAAC;AACzB,eAAW,YAAY,KAAK;AAC1B,WAAK,eAAe,KAAK,EAAE,UAAU,MAAM,CAAC;AAC9C,QAAI,CAAC;AACH;AACF,aAAS,QAAQ,GAAG,QAAQ,KAAK,eAAe,QAAQ,SAAS;AAC/D,YAAM,EAAE,UAAU,OAAAC,OAAM,IAAI,KAAK,eAAe,KAAK;AACrD,eAAS,KAAK,MAAMA,MAAK;AAAA,IAC3B;AACA,SAAK,iBAAiB;AAAA,EACxB;AAAA,EAEA,UAAU;AACR,SAAK,WAAW,MAAM;AACtB,QAAI,KAAK;AACP,WAAK,iBAAiB,CAAC;AAAA,EAC3B;AACF;",
|
6
|
+
"names": ["Disposable", "event"]
|
7
|
+
}
|
@@ -0,0 +1,30 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __defProp = Object.defineProperty;
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
6
|
+
var __export = (target, all) => {
|
7
|
+
for (var name in all)
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
9
|
+
};
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
12
|
+
for (let key of __getOwnPropNames(from))
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
15
|
+
}
|
16
|
+
return to;
|
17
|
+
};
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
19
|
+
var folders_exports = {};
|
20
|
+
__export(folders_exports, {
|
21
|
+
artifactsFolderName: () => artifactsFolderName
|
22
|
+
});
|
23
|
+
module.exports = __toCommonJS(folders_exports);
|
24
|
+
function artifactsFolderName(workerIndex) {
|
25
|
+
return `.playwright-artifacts-${workerIndex}`;
|
26
|
+
}
|
27
|
+
// Annotate the CommonJS export names for ESM import in node:
|
28
|
+
0 && (module.exports = {
|
29
|
+
artifactsFolderName
|
30
|
+
});
|
@@ -0,0 +1,7 @@
|
|
1
|
+
{
|
2
|
+
"version": 3,
|
3
|
+
"sources": ["../../src/isomorphic/folders.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 function artifactsFolderName(workerIndex: number) {\n return `.playwright-artifacts-${workerIndex}`;\n}\n"],
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBO,SAAS,oBAAoB,aAAqB;AACvD,SAAO,yBAAyB,WAAW;AAC7C;",
|
6
|
+
"names": []
|
7
|
+
}
|
@@ -0,0 +1,69 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __defProp = Object.defineProperty;
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
6
|
+
var __export = (target, all) => {
|
7
|
+
for (var name in all)
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
9
|
+
};
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
12
|
+
for (let key of __getOwnPropNames(from))
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
15
|
+
}
|
16
|
+
return to;
|
17
|
+
};
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
19
|
+
var stringInternPool_exports = {};
|
20
|
+
__export(stringInternPool_exports, {
|
21
|
+
JsonStringInternalizer: () => JsonStringInternalizer,
|
22
|
+
StringInternPool: () => StringInternPool
|
23
|
+
});
|
24
|
+
module.exports = __toCommonJS(stringInternPool_exports);
|
25
|
+
class StringInternPool {
|
26
|
+
constructor() {
|
27
|
+
this._stringCache = /* @__PURE__ */ new Map();
|
28
|
+
}
|
29
|
+
internString(s) {
|
30
|
+
let result = this._stringCache.get(s);
|
31
|
+
if (!result) {
|
32
|
+
this._stringCache.set(s, s);
|
33
|
+
result = s;
|
34
|
+
}
|
35
|
+
return result;
|
36
|
+
}
|
37
|
+
}
|
38
|
+
class JsonStringInternalizer {
|
39
|
+
constructor(pool) {
|
40
|
+
this._pool = pool;
|
41
|
+
}
|
42
|
+
traverse(value) {
|
43
|
+
if (typeof value !== "object")
|
44
|
+
return;
|
45
|
+
if (Array.isArray(value)) {
|
46
|
+
for (let i = 0; i < value.length; i++) {
|
47
|
+
if (typeof value[i] === "string")
|
48
|
+
value[i] = this.intern(value[i]);
|
49
|
+
else
|
50
|
+
this.traverse(value[i]);
|
51
|
+
}
|
52
|
+
} else {
|
53
|
+
for (const name in value) {
|
54
|
+
if (typeof value[name] === "string")
|
55
|
+
value[name] = this.intern(value[name]);
|
56
|
+
else
|
57
|
+
this.traverse(value[name]);
|
58
|
+
}
|
59
|
+
}
|
60
|
+
}
|
61
|
+
intern(value) {
|
62
|
+
return this._pool.internString(value);
|
63
|
+
}
|
64
|
+
}
|
65
|
+
// Annotate the CommonJS export names for ESM import in node:
|
66
|
+
0 && (module.exports = {
|
67
|
+
JsonStringInternalizer,
|
68
|
+
StringInternPool
|
69
|
+
});
|
@@ -0,0 +1,7 @@
|
|
1
|
+
{
|
2
|
+
"version": 3,
|
3
|
+
"sources": ["../../src/isomorphic/stringInternPool.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 class StringInternPool {\n private _stringCache = new Map<string, string>();\n\n public internString(s: string): string {\n let result = this._stringCache.get(s);\n if (!result) {\n this._stringCache.set(s, s);\n result = s;\n }\n return result;\n }\n}\n\nexport class JsonStringInternalizer {\n private readonly _pool;\n\n constructor(pool: StringInternPool) {\n this._pool = pool;\n }\n\n traverse(value: any) {\n if (typeof value !== 'object')\n return;\n if (Array.isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n if (typeof value[i] === 'string')\n value[i] = this.intern(value[i]);\n else\n this.traverse(value[i]);\n }\n } else {\n for (const name in value) {\n if (typeof value[name] === 'string')\n value[name] = this.intern(value[name]);\n else\n this.traverse(value[name]);\n }\n }\n }\n\n private intern(value: string): string {\n return this._pool.internString(value);\n }\n}\n"],
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBO,MAAM,iBAAiB;AAAA,EAAvB;AACL,SAAQ,eAAe,oBAAI,IAAoB;AAAA;AAAA,EAExC,aAAa,GAAmB;AACrC,QAAI,SAAS,KAAK,aAAa,IAAI,CAAC;AACpC,QAAI,CAAC,QAAQ;AACX,WAAK,aAAa,IAAI,GAAG,CAAC;AAC1B,eAAS;AAAA,IACX;AACA,WAAO;AAAA,EACT;AACF;AAEO,MAAM,uBAAuB;AAAA,EAGlC,YAAY,MAAwB;AAClC,SAAK,QAAQ;AAAA,EACf;AAAA,EAEA,SAAS,OAAY;AACnB,QAAI,OAAO,UAAU;AACnB;AACF,QAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,YAAI,OAAO,MAAM,CAAC,MAAM;AACtB,gBAAM,CAAC,IAAI,KAAK,OAAO,MAAM,CAAC,CAAC;AAAA;AAE/B,eAAK,SAAS,MAAM,CAAC,CAAC;AAAA,MAC1B;AAAA,IACF,OAAO;AACL,iBAAW,QAAQ,OAAO;AACxB,YAAI,OAAO,MAAM,IAAI,MAAM;AACzB,gBAAM,IAAI,IAAI,KAAK,OAAO,MAAM,IAAI,CAAC;AAAA;AAErC,eAAK,SAAS,MAAM,IAAI,CAAC;AAAA,MAC7B;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,OAAO,OAAuB;AACpC,WAAO,KAAK,MAAM,aAAa,KAAK;AAAA,EACtC;AACF;",
|
6
|
+
"names": []
|
7
|
+
}
|