1
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"use strict";
2
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
var __create = Object.create;
3
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
var __defProp = Object.defineProperty;
4
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
var __getOwnPropNames = Object.getOwnPropertyNames;
6
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
var __getProtoOf = Object.getPrototypeOf;
7
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
var __hasOwnProp = Object.prototype.hasOwnProperty;
8
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
var __export = (target, all) => {
9
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
for (var name in all)
10
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
__defProp(target, name, { get: all[name], enumerable: true });
11
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
};
12
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
var __copyProps = (to, from, except, desc) => {
13
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (from && typeof from === "object" || typeof from === "function") {
14
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
for (let key of __getOwnPropNames(from))
15
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (!__hasOwnProp.call(to, key) && key !== except)
16
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
18
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
return to;
19
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
};
20
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
// If the importer is in node compatibility mode or this is not an ESM
22
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
// file that has been converted to a CommonJS file using a Babel-
23
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
// compatible transform (i.e. "__esModule" has not been set), then set
24
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
// "default" to the CommonJS "module.exports" for node compatibility.
25
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
mod
27
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
));
28
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
var index_exports = {};
30
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
__export(index_exports, {
31
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
_baseTest: () => _baseTest,
32
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
defineConfig: () => import_configLoader.defineConfig,
33
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
expect: () => import_expect.expect,
34
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
mergeExpects: () => import_expect2.mergeExpects,
35
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
mergeTests: () => import_testType2.mergeTests,
36
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
test: () => test
37
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
});
38
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
module.exports = __toCommonJS(index_exports);
39
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
var import_fs = __toESM(require("fs"));
40
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
var import_path = __toESM(require("path"));
41
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
var playwrightLibrary = __toESM(require("playwright-core"));
42
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
var import_utils = require("playwright-core/lib/utils");
43
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
var import_globals = require("./common/globals");
44
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
var import_testType = require("./common/testType");
45
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
var import_browserBackend = require("./mcp/test/browserBackend");
46
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
var import_expect = require("./matchers/expect");
47
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
var import_configLoader = require("./common/configLoader");
48
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
var import_testType2 = require("./common/testType");
49
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
var import_expect2 = require("./matchers/expect");
50
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const _baseTest = import_testType.rootTestType.test;
51
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
(0, import_utils.setBoxedStackPrefixes)([import_path.default.dirname(require.resolve("../package.json"))]);
52
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (process["__pw_initiator__"]) {
53
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const originalStackTraceLimit = Error.stackTraceLimit;
54
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Error.stackTraceLimit = 200;
55
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
try {
56
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
throw new Error("Requiring @playwright/test second time, \nFirst:\n" + process["__pw_initiator__"] + "\n\nSecond: ");
57
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
} finally {
58
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Error.stackTraceLimit = originalStackTraceLimit;
59
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
60
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
} else {
61
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
process["__pw_initiator__"] = new Error().stack;
62
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
63
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const playwrightFixtures = {
64
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
defaultBrowserType: ["chromium", { scope: "worker", option: true, box: true }],
65
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
browserName: [({ defaultBrowserType }, use) => use(defaultBrowserType), { scope: "worker", option: true, box: true }],
66
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
playwright: [async ({}, use) => {
67
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await use(require("playwright-core"));
68
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}, { scope: "worker", box: true }],
69
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
headless: [({ launchOptions }, use) => use(launchOptions.headless ?? true), { scope: "worker", option: true, box: true }],
70
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
channel: [({ launchOptions }, use) => use(launchOptions.channel), { scope: "worker", option: true, box: true }],
71
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
launchOptions: [{}, { scope: "worker", option: true, box: true }],
72
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
connectOptions: [async ({ _optionConnectOptions }, use) => {
73
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await use(connectOptionsFromEnv() || _optionConnectOptions);
74
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}, { scope: "worker", option: true, box: true }],
75
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
screenshot: ["off", { scope: "worker", option: true, box: true }],
76
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
video: ["off", { scope: "worker", option: true, box: true }],
77
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
trace: ["off", { scope: "worker", option: true, box: true }],
78
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
_browserOptions: [async ({ playwright, headless, channel, launchOptions }, use) => {
79
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const options = {
80
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
handleSIGINT: false,
81
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
...launchOptions,
82
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
tracesDir: tracing().tracesDir()
83
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
};
84
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (headless !== void 0)
85
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
options.headless = headless;
86
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (channel !== void 0)
87
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
options.channel = channel;
88
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
playwright._defaultLaunchOptions = options;
89
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await use(options);
90
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
playwright._defaultLaunchOptions = void 0;
91
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}, { scope: "worker", auto: true, box: true }],
92
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
browser: [async ({ playwright, browserName, _browserOptions, connectOptions }, use) => {
93
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (!["chromium", "firefox", "webkit"].includes(browserName))
94
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
throw new Error(`Unexpected browserName "${browserName}", must be one of "chromium", "firefox" or "webkit"`);
95
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (connectOptions) {
96
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const browser2 = await playwright[browserName].connect({
97
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
...connectOptions,
98
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
exposeNetwork: connectOptions.exposeNetwork ?? connectOptions._exposeNetwork,
99
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
headers: {
100
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
// HTTP headers are ASCII only (not UTF-8).
101
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"x-playwright-launch-options": (0, import_utils.jsonStringifyForceASCII)(_browserOptions),
102
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
...connectOptions.headers
103
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
104
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
});
105
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await use(browser2);
106
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await browser2.close({ reason: "Test ended." });
107
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
return;
108
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
109
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const browser = await playwright[browserName].launch();
110
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await use(browser);
111
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await browser.close({ reason: "Test ended." });
112
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}, { scope: "worker", timeout: 0 }],
113
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
acceptDownloads: [({ contextOptions }, use) => use(contextOptions.acceptDownloads ?? true), { option: true, box: true }],
114
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
bypassCSP: [({ contextOptions }, use) => use(contextOptions.bypassCSP ?? false), { option: true, box: true }],
115
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
colorScheme: [({ contextOptions }, use) => use(contextOptions.colorScheme === void 0 ? "light" : contextOptions.colorScheme), { option: true, box: true }],
116
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
deviceScaleFactor: [({ contextOptions }, use) => use(contextOptions.deviceScaleFactor), { option: true, box: true }],
117
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
extraHTTPHeaders: [({ contextOptions }, use) => use(contextOptions.extraHTTPHeaders), { option: true, box: true }],
118
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
geolocation: [({ contextOptions }, use) => use(contextOptions.geolocation), { option: true, box: true }],
119
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
hasTouch: [({ contextOptions }, use) => use(contextOptions.hasTouch ?? false), { option: true, box: true }],
120
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
httpCredentials: [({ contextOptions }, use) => use(contextOptions.httpCredentials), { option: true, box: true }],
121
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
ignoreHTTPSErrors: [({ contextOptions }, use) => use(contextOptions.ignoreHTTPSErrors ?? false), { option: true, box: true }],
122
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
isMobile: [({ contextOptions }, use) => use(contextOptions.isMobile ?? false), { option: true, box: true }],
123
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
javaScriptEnabled: [({ contextOptions }, use) => use(contextOptions.javaScriptEnabled ?? true), { option: true, box: true }],
124
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
locale: [({ contextOptions }, use) => use(contextOptions.locale ?? "en-US"), { option: true, box: true }],
125
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
offline: [({ contextOptions }, use) => use(contextOptions.offline ?? false), { option: true, box: true }],
126
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
permissions: [({ contextOptions }, use) => use(contextOptions.permissions), { option: true, box: true }],
127
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
proxy: [({ contextOptions }, use) => use(contextOptions.proxy), { option: true, box: true }],
128
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
storageState: [({ contextOptions }, use) => use(contextOptions.storageState), { option: true, box: true }],
129
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
clientCertificates: [({ contextOptions }, use) => use(contextOptions.clientCertificates), { option: true, box: true }],
130
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
timezoneId: [({ contextOptions }, use) => use(contextOptions.timezoneId), { option: true, box: true }],
131
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
userAgent: [({ contextOptions }, use) => use(contextOptions.userAgent), { option: true, box: true }],
132
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
viewport: [({ contextOptions }, use) => use(contextOptions.viewport === void 0 ? { width: 1280, height: 720 } : contextOptions.viewport), { option: true, box: true }],
133
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
actionTimeout: [0, { option: true, box: true }],
134
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
testIdAttribute: ["data-testid", { option: true, box: true }],
135
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
navigationTimeout: [0, { option: true, box: true }],
136
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
baseURL: [async ({}, use) => {
137
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await use(process.env.PLAYWRIGHT_TEST_BASE_URL);
138
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}, { option: true, box: true }],
139
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
serviceWorkers: [({ contextOptions }, use) => use(contextOptions.serviceWorkers ?? "allow"), { option: true, box: true }],
140
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
contextOptions: [{}, { option: true, box: true }],
141
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
agentOptions: [void 0, { option: true, box: true }],
142
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
_combinedContextOptions: [async ({
143
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
acceptDownloads,
144
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
bypassCSP,
145
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
clientCertificates,
146
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
colorScheme,
147
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
deviceScaleFactor,
148
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
extraHTTPHeaders,
149
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
hasTouch,
150
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
geolocation,
151
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
httpCredentials,
152
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
ignoreHTTPSErrors,
153
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
isMobile,
154
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
javaScriptEnabled,
155
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
locale,
156
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
offline,
157
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
permissions,
158
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
proxy,
159
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
storageState,
160
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
viewport,
161
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
timezoneId,
162
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
userAgent,
163
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
baseURL,
164
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
contextOptions,
165
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
serviceWorkers
166
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}, use, testInfo) => {
167
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const options = {};
168
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (acceptDownloads !== void 0)
169
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
options.acceptDownloads = acceptDownloads;
170
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (bypassCSP !== void 0)
171
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
options.bypassCSP = bypassCSP;
172
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (colorScheme !== void 0)
173
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
options.colorScheme = colorScheme;
174
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (deviceScaleFactor !== void 0)
175
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
options.deviceScaleFactor = deviceScaleFactor;
176
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (extraHTTPHeaders !== void 0)
177
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
options.extraHTTPHeaders = extraHTTPHeaders;
178
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (geolocation !== void 0)
179
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
options.geolocation = geolocation;
180
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (hasTouch !== void 0)
181
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
options.hasTouch = hasTouch;
182
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (httpCredentials !== void 0)
183
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
options.httpCredentials = httpCredentials;
184
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (ignoreHTTPSErrors !== void 0)
185
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
options.ignoreHTTPSErrors = ignoreHTTPSErrors;
186
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (isMobile !== void 0)
187
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
options.isMobile = isMobile;
188
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (javaScriptEnabled !== void 0)
189
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
options.javaScriptEnabled = javaScriptEnabled;
190
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (locale !== void 0)
191
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
options.locale = locale;
192
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (offline !== void 0)
193
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
options.offline = offline;
194
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (permissions !== void 0)
195
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
options.permissions = permissions;
196
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (proxy !== void 0)
197
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
options.proxy = proxy;
198
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (storageState !== void 0)
199
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
options.storageState = storageState;
200
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (clientCertificates?.length)
201
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
options.clientCertificates = resolveClientCerticates(clientCertificates);
202
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (timezoneId !== void 0)
203
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
options.timezoneId = timezoneId;
204
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (userAgent !== void 0)
205
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
options.userAgent = userAgent;
206
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (viewport !== void 0)
207
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
options.viewport = viewport;
208
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (baseURL !== void 0)
209
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
options.baseURL = baseURL;
210
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (serviceWorkers !== void 0)
211
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
options.serviceWorkers = serviceWorkers;
212
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await use({
213
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
...contextOptions,
214
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
...options
215
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
});
216
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}, { box: true }],
217
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
_setupContextOptions: [async ({ playwright, actionTimeout, navigationTimeout, testIdAttribute }, use, testInfo) => {
218
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (testIdAttribute)
219
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
playwrightLibrary.selectors.setTestIdAttribute(testIdAttribute);
220
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
testInfo.snapshotSuffix = process.platform;
221
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if ((0, import_utils.debugMode)() === "inspector")
222
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
testInfo._setDebugMode();
223
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
playwright._defaultContextTimeout = actionTimeout || 0;
224
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
playwright._defaultContextNavigationTimeout = navigationTimeout || 0;
225
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await use();
226
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
playwright._defaultContextTimeout = void 0;
227
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
playwright._defaultContextNavigationTimeout = void 0;
228
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}, { auto: "all-hooks-included", title: "context configuration", box: true }],
229
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
_setupArtifacts: [async ({ playwright, screenshot, _combinedContextOptions }, use, testInfo) => {
230
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
testInfo.setTimeout(testInfo.project.timeout);
231
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const artifactsRecorder = new ArtifactsRecorder(playwright, tracing().artifactsDir(), screenshot);
232
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await artifactsRecorder.willStartTest(testInfo);
233
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const tracingGroupSteps = [];
234
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const csiListener = {
235
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
onApiCallBegin: (data, channel) => {
236
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const testInfo2 = (0, import_globals.currentTestInfo)();
237
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (!testInfo2 || data.apiName.includes("setTestIdAttribute") || data.apiName === "tracing.groupEnd")
238
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
return;
239
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const zone = (0, import_utils.currentZone)().data("stepZone");
240
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const isExpectCall = data.apiName === "locator._expect" || data.apiName === "frame._expect" || data.apiName === "page._expectScreenshot";
241
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (zone && zone.category === "expect" && isExpectCall) {
242
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (zone.apiName)
243
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
data.apiName = zone.apiName;
244
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (zone.shortTitle || zone.title)
245
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
data.title = zone.shortTitle ?? zone.title;
246
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
data.stepId = zone.stepId;
247
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
return;
248
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
249
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const step = testInfo2._addStep({
250
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
location: data.frames[0],
251
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
category: "pw:api",
252
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
title: renderTitle(channel.type, channel.method, channel.params, data.title),
253
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
apiName: data.apiName,
254
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
params: channel.params,
255
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
group: (0, import_utils.getActionGroup)({ type: channel.type, method: channel.method })
256
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}, tracingGroupSteps[tracingGroupSteps.length - 1]);
257
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
data.userData = step;
258
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
data.stepId = step.stepId;
259
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (data.apiName === "tracing.group")
260
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
tracingGroupSteps.push(step);
261
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
},
262
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
onApiCallEnd: (data) => {
263
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (data.apiName === "tracing.group")
264
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
return;
265
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (data.apiName === "tracing.groupEnd") {
266
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const step2 = tracingGroupSteps.pop();
267
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
step2?.complete({ error: data.error });
268
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
return;
269
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
270
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const step = data.userData;
271
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
step?.complete({ error: data.error });
272
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
},
273
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
onWillPause: ({ keepTestTimeout }) => {
274
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (!keepTestTimeout)
275
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
(0, import_globals.currentTestInfo)()?._setDebugMode();
276
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
},
277
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
runBeforeCreateBrowserContext: async (options) => {
278
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
for (const [key, value] of Object.entries(_combinedContextOptions)) {
279
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (!(key in options))
280
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
options[key] = value;
281
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
282
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
},
283
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
runBeforeCreateRequestContext: async (options) => {
284
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
for (const [key, value] of Object.entries(_combinedContextOptions)) {
285
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (!(key in options))
286
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
options[key] = value;
287
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
288
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
},
289
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
runAfterCreateBrowserContext: async (context) => {
290
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await artifactsRecorder.didCreateBrowserContext(context);
291
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const testInfo2 = (0, import_globals.currentTestInfo)();
292
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (testInfo2)
293
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
attachConnectedHeaderIfNeeded(testInfo2, context.browser());
294
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
},
295
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
runAfterCreateRequestContext: async (context) => {
296
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await artifactsRecorder.didCreateRequestContext(context);
297
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
},
298
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
runBeforeCloseBrowserContext: async (context) => {
299
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await artifactsRecorder.willCloseBrowserContext(context);
300
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
},
301
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
runBeforeCloseRequestContext: async (context) => {
302
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await artifactsRecorder.willCloseRequestContext(context);
303
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
304
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
};
305
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const clientInstrumentation = playwright._instrumentation;
306
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
clientInstrumentation.addListener(csiListener);
307
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await use();
308
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
clientInstrumentation.removeListener(csiListener);
309
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await artifactsRecorder.didFinishTest();
310
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}, { auto: "all-hooks-included", title: "trace recording", box: true, timeout: 0 }],
311
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
_contextFactory: [async ({
312
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
browser,
313
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
video,
314
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
_reuseContext,
315
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
_combinedContextOptions
316
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
/** mitigate dep-via-auto lack of traceability */
317
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}, use, testInfo) => {
318
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const testInfoImpl = testInfo;
319
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const videoMode = normalizeVideoMode(video);
320
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const captureVideo = shouldCaptureVideo(videoMode, testInfo) && !_reuseContext;
321
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const contexts = /* @__PURE__ */ new Map();
322
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
let counter = 0;
323
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await use(async (options) => {
324
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const hook = testInfoImpl._currentHookType();
325
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (hook === "beforeAll" || hook === "afterAll") {
326
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
throw new Error([
327
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
`"context" and "page" fixtures are not supported in "${hook}" since they are created on a per-test basis.`,
328
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
`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.`,
329
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
`If you would like to configure your page before each test, do that in beforeEach hook instead.`
330
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
].join("\n"));
331
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
332
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const videoOptions = captureVideo ? {
333
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
recordVideo: {
334
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
dir: tracing().artifactsDir(),
335
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
size: typeof video === "string" ? void 0 : video.size
336
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
337
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
} : {};
338
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const context = await browser.newContext({ ...videoOptions, ...options });
339
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (process.env.PW_CLOCK === "frozen") {
340
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await context._wrapApiCall(async () => {
341
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await context.clock.install({ time: 0 });
342
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await context.clock.pauseAt(1e3);
343
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}, { internal: true });
344
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
} else if (process.env.PW_CLOCK === "realtime") {
345
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await context._wrapApiCall(async () => {
346
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await context.clock.install({ time: 0 });
347
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}, { internal: true });
348
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
349
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
let closed = false;
350
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const close = async () => {
351
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (closed)
352
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
return;
353
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
closed = true;
354
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const closeReason = testInfo.status === "timedOut" ? "Test timeout of " + testInfo.timeout + "ms exceeded." : "Test ended.";
355
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await context.close({ reason: closeReason });
356
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const testFailed = testInfo.status !== testInfo.expectedStatus;
357
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const preserveVideo = captureVideo && (videoMode === "on" || testFailed && videoMode === "retain-on-failure" || videoMode === "on-first-retry" && testInfo.retry === 1);
358
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (preserveVideo) {
359
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const { pagesWithVideo: pagesForVideo } = contexts.get(context);
360
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const videos = pagesForVideo.map((p) => p.video()).filter((video2) => !!video2);
361
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await Promise.all(videos.map(async (v) => {
362
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
try {
363
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const savedPath = testInfo.outputPath(`video${counter ? "-" + counter : ""}.webm`);
364
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
++counter;
365
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await v.saveAs(savedPath);
366
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
testInfo.attachments.push({ name: "video", path: savedPath, contentType: "video/webm" });
367
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
} catch (e) {
368
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
369
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}));
370
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
371
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
};
372
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const contextData = { close, pagesWithVideo: [] };
373
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (captureVideo)
374
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
context.on("page", (page) => contextData.pagesWithVideo.push(page));
375
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
contexts.set(context, contextData);
376
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
return { context, close };
377
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
});
378
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await Promise.all([...contexts.values()].map((data) => data.close()));
379
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}, { scope: "test", title: "context", box: true }],
380
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
_optionContextReuseMode: ["none", { scope: "worker", option: true, box: true }],
381
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
_optionConnectOptions: [void 0, { scope: "worker", option: true, box: true }],
382
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
_reuseContext: [async ({ video, _optionContextReuseMode }, use) => {
383
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
let mode = _optionContextReuseMode;
384
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (process.env.PW_TEST_REUSE_CONTEXT)
385
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
mode = "when-possible";
386
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const reuse = mode === "when-possible" && normalizeVideoMode(video) === "off";
387
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await use(reuse);
388
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}, { scope: "worker", title: "context", box: true }],
389
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
context: async ({ browser, _reuseContext, _contextFactory }, use, testInfo) => {
390
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const browserImpl = browser;
391
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
attachConnectedHeaderIfNeeded(testInfo, browserImpl);
392
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (!_reuseContext) {
393
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const { context: context2, close } = await _contextFactory();
394
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
testInfo._onCustomMessageCallback = (0, import_browserBackend.createCustomMessageHandler)(testInfo, context2);
395
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await use(context2);
396
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await close();
397
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
return;
398
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
399
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const context = await browserImpl._wrapApiCall(() => browserImpl._newContextForReuse(), { internal: true });
400
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
testInfo._onCustomMessageCallback = (0, import_browserBackend.createCustomMessageHandler)(testInfo, context);
401
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await use(context);
402
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const closeReason = testInfo.status === "timedOut" ? "Test timeout of " + testInfo.timeout + "ms exceeded." : "Test ended.";
403
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await browserImpl._wrapApiCall(() => browserImpl._disconnectFromReusedContext(closeReason), { internal: true });
404
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
},
405
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
page: async ({ context, _reuseContext }, use) => {
406
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (!_reuseContext) {
407
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await use(await context.newPage());
408
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
return;
409
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
410
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
let [page] = context.pages();
411
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (!page)
412
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
page = await context.newPage();
413
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await use(page);
414
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
},
415
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
agent: async ({ page, agentOptions }, use, testInfo) => {
416
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const testInfoImpl = testInfo;
417
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const cachePathTemplate = agentOptions?.cachePathTemplate ?? "{testDir}/{testFilePath}-cache.json";
418
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const resolvedCacheFile = testInfoImpl._applyPathTemplate(cachePathTemplate, "", ".json");
419
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const cacheFile = testInfoImpl.config.runAgents === "all" ? void 0 : await testInfoImpl._cloneStorage(resolvedCacheFile);
420
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const cacheOutFile = import_path.default.join(testInfoImpl.artifactsDir(), "agent-cache-" + (0, import_utils.createGuid)() + ".json");
421
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const provider = agentOptions?.provider && testInfo.config.runAgents !== "none" ? agentOptions.provider : void 0;
422
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (provider)
423
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
testInfo.setTimeout(0);
424
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const cache = {
425
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
cacheFile,
426
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
cacheOutFile
427
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
};
428
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const agent = await page.agent({
429
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
provider,
430
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
cache,
431
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
limits: agentOptions?.limits,
432
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
secrets: agentOptions?.secrets,
433
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
systemPrompt: agentOptions?.systemPrompt,
434
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
expect: {
435
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
timeout: testInfoImpl._projectInternal.expect?.timeout
436
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
437
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
});
438
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await use(agent);
439
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const usage = await agent.usage();
440
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (usage.turns > 0)
441
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await testInfoImpl.attach("agent-usage", { contentType: "application/json", body: Buffer.from(JSON.stringify(usage, null, 2)) });
442
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (!resolvedCacheFile || !cacheOutFile)
443
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
return;
444
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (testInfo.status !== "passed")
445
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
return;
446
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await testInfoImpl._upstreamStorage(resolvedCacheFile, cacheOutFile);
447
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
},
448
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
request: async ({ playwright }, use) => {
449
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const request = await playwright.request.newContext();
450
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await use(request);
451
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const hook = test.info()._currentHookType();
452
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (hook === "beforeAll") {
453
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await request.dispose({ reason: [
454
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
`Fixture { request } from beforeAll cannot be reused in a test.`,
455
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
` - Recommended fix: use a separate { request } in the test.`,
456
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
` - Alternatively, manually create APIRequestContext in beforeAll and dispose it in afterAll.`,
457
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
`See https://playwright.dev/docs/api-testing#sending-api-requests-from-ui-tests for more details.`
458
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
].join("\n") });
459
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
} else {
460
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await request.dispose();
461
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
462
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
463
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
};
464
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
function normalizeVideoMode(video) {
465
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (!video)
466
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
return "off";
467
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
let videoMode = typeof video === "string" ? video : video.mode;
468
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (videoMode === "retry-with-video")
469
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
videoMode = "on-first-retry";
470
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
return videoMode;
471
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
472
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
function shouldCaptureVideo(videoMode, testInfo) {
473
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
return videoMode === "on" || videoMode === "retain-on-failure" || videoMode === "on-first-retry" && testInfo.retry === 1;
474
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
475
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
function normalizeScreenshotMode(screenshot) {
476
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (!screenshot)
477
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
return "off";
478
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
return typeof screenshot === "string" ? screenshot : screenshot.mode;
479
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
480
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
function attachConnectedHeaderIfNeeded(testInfo, browser) {
481
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const connectHeaders = browser?._connection.headers;
482
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (!connectHeaders)
483
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
return;
484
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
for (const header of connectHeaders) {
485
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (header.name !== "x-playwright-attachment")
486
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
continue;
487
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const [name, value] = header.value.split("=");
488
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (!name || !value)
489
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
continue;
490
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (testInfo.attachments.some((attachment) => attachment.name === name))
491
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
continue;
492
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
testInfo.attachments.push({ name, contentType: "text/plain", body: Buffer.from(value) });
493
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
494
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
495
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
function resolveFileToConfig(file) {
496
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const config = test.info().config.configFile;
497
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (!config || !file)
498
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
return file;
499
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (import_path.default.isAbsolute(file))
500
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
return file;
501
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
return import_path.default.resolve(import_path.default.dirname(config), file);
502
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
503
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
function resolveClientCerticates(clientCertificates) {
504
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
for (const cert of clientCertificates) {
505
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
cert.certPath = resolveFileToConfig(cert.certPath);
506
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
cert.keyPath = resolveFileToConfig(cert.keyPath);
507
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
cert.pfxPath = resolveFileToConfig(cert.pfxPath);
508
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
509
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
return clientCertificates;
510
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
511
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const kTracingStarted = Symbol("kTracingStarted");
512
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
function connectOptionsFromEnv() {
513
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const wsEndpoint = process.env.PW_TEST_CONNECT_WS_ENDPOINT;
514
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (!wsEndpoint)
515
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
return void 0;
516
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const headers = process.env.PW_TEST_CONNECT_HEADERS ? JSON.parse(process.env.PW_TEST_CONNECT_HEADERS) : void 0;
517
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
return {
518
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
wsEndpoint,
519
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
headers,
520
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
exposeNetwork: process.env.PW_TEST_CONNECT_EXPOSE_NETWORK
521
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
};
522
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
523
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
class SnapshotRecorder {
524
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
constructor(_artifactsRecorder, _mode, _name, _contentType, _extension, _doSnapshot) {
525
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
this._artifactsRecorder = _artifactsRecorder;
526
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
this._mode = _mode;
527
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
this._name = _name;
528
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
this._contentType = _contentType;
529
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
this._extension = _extension;
530
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
this._doSnapshot = _doSnapshot;
531
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
this._ordinal = 0;
532
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
this._temporary = [];
533
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
534
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
fixOrdinal() {
535
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
this._ordinal = this.testInfo.attachments.filter((a) => a.name === this._name).length;
536
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
537
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
shouldCaptureUponFinish() {
538
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
return this._mode === "on" || this._mode === "only-on-failure" && this.testInfo._isFailure() || this._mode === "on-first-failure" && this.testInfo._isFailure() && this.testInfo.retry === 0;
539
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
540
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
async maybeCapture() {
541
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (!this.shouldCaptureUponFinish())
542
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
return;
543
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await Promise.all(this._artifactsRecorder._playwright._allPages().map((page) => this._snapshotPage(page, false)));
544
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
545
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
async persistTemporary() {
546
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (this.shouldCaptureUponFinish()) {
547
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await Promise.all(this._temporary.map(async (file) => {
548
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
try {
549
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const path2 = this._createAttachmentPath();
550
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await import_fs.default.promises.rename(file, path2);
551
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
this._attach(path2);
552
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
} catch {
553
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
554
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}));
555
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
556
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
557
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
async captureTemporary(context) {
558
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (this._mode === "on" || this._mode === "only-on-failure" || this._mode === "on-first-failure" && this.testInfo.retry === 0)
559
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await Promise.all(context.pages().map((page) => this._snapshotPage(page, true)));
560
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
561
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
_attach(screenshotPath) {
562
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
this.testInfo.attachments.push({ name: this._name, path: screenshotPath, contentType: this._contentType });
563
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
564
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
_createAttachmentPath() {
565
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const testFailed = this.testInfo._isFailure();
566
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const index = this._ordinal + 1;
567
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
++this._ordinal;
568
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const path2 = this.testInfo.outputPath(`test-${testFailed ? "failed" : "finished"}-${index}${this._extension}`);
569
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
return path2;
570
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
571
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
_createTemporaryArtifact(...name) {
572
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const file = import_path.default.join(this._artifactsRecorder._artifactsDir, ...name);
573
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
return file;
574
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
575
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
async _snapshotPage(page, temporary) {
576
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (page[this.testInfo._uniqueSymbol])
577
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
return;
578
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
page[this.testInfo._uniqueSymbol] = true;
579
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
try {
580
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const path2 = temporary ? this._createTemporaryArtifact((0, import_utils.createGuid)() + this._extension) : this._createAttachmentPath();
581
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await this._doSnapshot(page, path2);
582
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (temporary)
583
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
this._temporary.push(path2);
584
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
else
585
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
this._attach(path2);
586
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
} catch {
587
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
588
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
589
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
get testInfo() {
590
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
return this._artifactsRecorder._testInfo;
591
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
592
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
593
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
class ArtifactsRecorder {
594
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
constructor(playwright, artifactsDir, screenshot) {
595
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
this._playwright = playwright;
596
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
this._artifactsDir = artifactsDir;
597
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const screenshotOptions = typeof screenshot === "string" ? void 0 : screenshot;
598
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
this._startedCollectingArtifacts = Symbol("startedCollectingArtifacts");
599
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
this._screenshotRecorder = new SnapshotRecorder(this, normalizeScreenshotMode(screenshot), "screenshot", "image/png", ".png", async (page, path2) => {
600
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await page._wrapApiCall(async () => {
601
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await page.screenshot({ ...screenshotOptions, timeout: 5e3, path: path2, caret: "initial" });
602
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}, { internal: true });
603
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
});
604
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
605
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
async willStartTest(testInfo) {
606
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
this._testInfo = testInfo;
607
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
testInfo._onDidFinishTestFunctionCallback = () => this.didFinishTestFunction();
608
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
this._screenshotRecorder.fixOrdinal();
609
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await Promise.all(this._playwright._allContexts().map((context) => this.didCreateBrowserContext(context)));
610
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const existingApiRequests = Array.from(this._playwright.request._contexts);
611
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await Promise.all(existingApiRequests.map((c) => this.didCreateRequestContext(c)));
612
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
613
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
async didCreateBrowserContext(context) {
614
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await this._startTraceChunkOnContextCreation(context, context.tracing);
615
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
616
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
async willCloseBrowserContext(context) {
617
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await this._stopTracing(context, context.tracing);
618
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await this._screenshotRecorder.captureTemporary(context);
619
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await this._takePageSnapshot(context);
620
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
621
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
async _takePageSnapshot(context) {
622
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (process.env.PLAYWRIGHT_NO_COPY_PROMPT)
623
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
return;
624
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (this._testInfo.errors.length === 0)
625
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
return;
626
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (this._pageSnapshot)
627
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
return;
628
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const page = context.pages()[0];
629
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (!page)
630
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
return;
631
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
try {
632
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await page._wrapApiCall(async () => {
633
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
this._pageSnapshot = (await page._snapshotForAI({ timeout: 5e3 })).full;
634
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}, { internal: true });
635
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
} catch {
636
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
637
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
638
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
async didCreateRequestContext(context) {
639
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await this._startTraceChunkOnContextCreation(context, context._tracing);
640
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
641
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
async willCloseRequestContext(context) {
642
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await this._stopTracing(context, context._tracing);
643
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
644
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
async didFinishTestFunction() {
645
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await this._screenshotRecorder.maybeCapture();
646
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
647
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
async didFinishTest() {
648
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await this.didFinishTestFunction();
649
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const leftoverContexts = this._playwright._allContexts();
650
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const leftoverApiRequests = Array.from(this._playwright.request._contexts);
651
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await Promise.all(leftoverContexts.map(async (context2) => {
652
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await this._stopTracing(context2, context2.tracing);
653
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}).concat(leftoverApiRequests.map(async (context2) => {
654
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await this._stopTracing(context2, context2._tracing);
655
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
})));
656
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await this._screenshotRecorder.persistTemporary();
657
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const context = leftoverContexts[0];
658
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (context)
659
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await this._takePageSnapshot(context);
660
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (this._pageSnapshot && this._testInfo.errors.length > 0 && !this._testInfo.attachments.some((a) => a.name === "error-context")) {
661
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const lines = [
662
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"# Page snapshot",
663
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"",
664
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"```yaml",
665
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
this._pageSnapshot,
666
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"```"
667
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
];
668
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const filePath = this._testInfo.outputPath("error-context.md");
669
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await import_fs.default.promises.writeFile(filePath, lines.join("\n"), "utf8");
670
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
this._testInfo._attach({
671
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
name: "error-context",
672
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
contentType: "text/markdown",
673
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
path: filePath
674
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}, void 0);
675
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
676
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
677
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
async _startTraceChunkOnContextCreation(channelOwner, tracing2) {
678
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await channelOwner._wrapApiCall(async () => {
679
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const options = this._testInfo._tracing.traceOptions();
680
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (options) {
681
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const title = this._testInfo._tracing.traceTitle();
682
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const name = this._testInfo._tracing.generateNextTraceRecordingName();
683
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (!tracing2[kTracingStarted]) {
684
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await tracing2.start({ ...options, title, name });
685
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
tracing2[kTracingStarted] = true;
686
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
} else {
687
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await tracing2.startChunk({ title, name });
688
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
689
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
} else {
690
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (tracing2[kTracingStarted]) {
691
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
tracing2[kTracingStarted] = false;
692
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await tracing2.stop();
693
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
694
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
695
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}, { internal: true });
696
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
697
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
async _stopTracing(channelOwner, tracing2) {
698
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await channelOwner._wrapApiCall(async () => {
699
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (tracing2[this._startedCollectingArtifacts])
700
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
return;
701
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
tracing2[this._startedCollectingArtifacts] = true;
702
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (this._testInfo._tracing.traceOptions() && tracing2[kTracingStarted])
703
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
await tracing2.stopChunk({ path: this._testInfo._tracing.maybeGenerateNextTraceRecordingPath() });
704
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}, { internal: true });
705
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
706
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
707
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
function renderTitle(type, method, params, title) {
708
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const prefix = (0, import_utils.renderTitleForCall)({ title, type, method, params });
709
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
let selector;
710
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
if (params?.["selector"] && typeof params.selector === "string")
711
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
selector = (0, import_utils.asLocatorDescription)("javascript", params.selector);
712
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
return prefix + (selector ? ` ${selector}` : "");
713
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
714
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
function tracing() {
715
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
return test.info()._tracing;
716
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
717
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
const test = _baseTest.extend(playwrightFixtures);
718
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
// Annotate the CommonJS export names for ESM import in node:
719
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
0 && (module.exports = {
720
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
_baseTest,
721
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
defineConfig,
722
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
expect,
723
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
mergeExpects,
724
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
mergeTests,
725
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
test
726
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
});
727
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!