@smoothdeploy/playwright 1.58.4 → 1.60.0-beta-1780662356000

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/ThirdPartyNotices.txt +8 -5036
  2. package/lib/agents/agentParser.js +2 -2
  3. package/lib/agents/generateAgents.js +21 -22
  4. package/lib/agents/playwright-test-healer.agent.md +1 -0
  5. package/lib/agents/playwright-test-planner.agent.md +2 -1
  6. package/lib/cli/reportActions.js +78 -0
  7. package/lib/cli/testActions.js +211 -0
  8. package/lib/common/index.js +2898 -0
  9. package/lib/common/index.js.txt +35 -0
  10. package/lib/errorContext.js +130 -0
  11. package/lib/index.js +258 -206
  12. package/lib/{isomorphic/testServerConnection.js → isomorphic.js} +70 -35
  13. package/lib/isomorphic.js.txt +9 -0
  14. package/lib/loader/loaderProcessEntry.js +34 -0
  15. package/lib/loader/loaderProcessEntry.js.txt +9 -0
  16. package/lib/matchers/expect.js +12988 -249
  17. package/lib/matchers/expect.js.LICENSE +693 -0
  18. package/lib/matchers/expect.js.txt +72 -0
  19. package/lib/mcp/test/browserBackend.js +49 -22
  20. package/lib/mcp/test/generatorTools.js +16 -16
  21. package/lib/mcp/test/plannerTools.js +25 -20
  22. package/lib/mcp/test/seed.js +7 -7
  23. package/lib/mcp/test/testBackend.js +30 -30
  24. package/lib/mcp/test/testContext.js +50 -33
  25. package/lib/mcp/test/testTools.js +15 -25
  26. package/lib/{internalsForTest.js → package.js} +13 -8
  27. package/lib/program.js +63 -263
  28. package/lib/runner/index.js +8339 -0
  29. package/lib/runner/index.js.txt +60 -0
  30. package/lib/transform/babelBundle.js +71002 -18
  31. package/lib/transform/babelBundle.js.LICENSE +2359 -0
  32. package/lib/transform/babelBundle.js.txt +325 -0
  33. package/lib/transform/esmLoader.js +5884 -30
  34. package/lib/transform/esmLoader.js.LICENSE +335 -0
  35. package/lib/transform/esmLoader.js.txt +55 -0
  36. package/lib/util.js +37 -34
  37. package/lib/worker/workerProcessEntry.js +3251 -0
  38. package/lib/worker/workerProcessEntry.js.txt +24 -0
  39. package/package.json +5 -16
  40. package/test.mjs +1 -0
  41. package/types/test.d.ts +172 -12
  42. package/types/testReporter.d.ts +7 -5
  43. package/lib/common/config.js +0 -282
  44. package/lib/common/configLoader.js +0 -344
  45. package/lib/common/esmLoaderHost.js +0 -104
  46. package/lib/common/expectBundle.js +0 -28
  47. package/lib/common/expectBundleImpl.js +0 -407
  48. package/lib/common/fixtures.js +0 -302
  49. package/lib/common/ipc.js +0 -60
  50. package/lib/common/poolBuilder.js +0 -85
  51. package/lib/common/process.js +0 -132
  52. package/lib/common/suiteUtils.js +0 -140
  53. package/lib/common/test.js +0 -321
  54. package/lib/common/testLoader.js +0 -101
  55. package/lib/common/testType.js +0 -298
  56. package/lib/common/validators.js +0 -68
  57. package/lib/fsWatcher.js +0 -67
  58. package/lib/isomorphic/events.js +0 -77
  59. package/lib/isomorphic/folders.js +0 -30
  60. package/lib/isomorphic/stringInternPool.js +0 -69
  61. package/lib/isomorphic/teleReceiver.js +0 -521
  62. package/lib/isomorphic/teleSuiteUpdater.js +0 -157
  63. package/lib/isomorphic/testServerInterface.js +0 -16
  64. package/lib/isomorphic/testTree.js +0 -329
  65. package/lib/isomorphic/types.d.js +0 -16
  66. package/lib/loader/loaderMain.js +0 -59
  67. package/lib/matchers/matcherHint.js +0 -44
  68. package/lib/matchers/matchers.js +0 -383
  69. package/lib/matchers/toBeTruthy.js +0 -75
  70. package/lib/matchers/toEqual.js +0 -100
  71. package/lib/matchers/toHaveURL.js +0 -101
  72. package/lib/matchers/toMatchAriaSnapshot.js +0 -159
  73. package/lib/matchers/toMatchSnapshot.js +0 -342
  74. package/lib/matchers/toMatchText.js +0 -99
  75. package/lib/mcp/browser/browserContextFactory.js +0 -329
  76. package/lib/mcp/browser/browserServerBackend.js +0 -84
  77. package/lib/mcp/browser/config.js +0 -421
  78. package/lib/mcp/browser/context.js +0 -244
  79. package/lib/mcp/browser/response.js +0 -278
  80. package/lib/mcp/browser/sessionLog.js +0 -75
  81. package/lib/mcp/browser/tab.js +0 -343
  82. package/lib/mcp/browser/tools/common.js +0 -65
  83. package/lib/mcp/browser/tools/console.js +0 -46
  84. package/lib/mcp/browser/tools/dialogs.js +0 -60
  85. package/lib/mcp/browser/tools/evaluate.js +0 -61
  86. package/lib/mcp/browser/tools/files.js +0 -58
  87. package/lib/mcp/browser/tools/form.js +0 -63
  88. package/lib/mcp/browser/tools/install.js +0 -72
  89. package/lib/mcp/browser/tools/keyboard.js +0 -107
  90. package/lib/mcp/browser/tools/mouse.js +0 -107
  91. package/lib/mcp/browser/tools/navigate.js +0 -71
  92. package/lib/mcp/browser/tools/network.js +0 -63
  93. package/lib/mcp/browser/tools/open.js +0 -57
  94. package/lib/mcp/browser/tools/pdf.js +0 -49
  95. package/lib/mcp/browser/tools/runCode.js +0 -78
  96. package/lib/mcp/browser/tools/screenshot.js +0 -93
  97. package/lib/mcp/browser/tools/snapshot.js +0 -173
  98. package/lib/mcp/browser/tools/tabs.js +0 -67
  99. package/lib/mcp/browser/tools/tool.js +0 -47
  100. package/lib/mcp/browser/tools/tracing.js +0 -74
  101. package/lib/mcp/browser/tools/utils.js +0 -94
  102. package/lib/mcp/browser/tools/verify.js +0 -143
  103. package/lib/mcp/browser/tools/wait.js +0 -63
  104. package/lib/mcp/browser/tools.js +0 -84
  105. package/lib/mcp/browser/watchdog.js +0 -44
  106. package/lib/mcp/config.d.js +0 -16
  107. package/lib/mcp/extension/cdpRelay.js +0 -351
  108. package/lib/mcp/extension/extensionContextFactory.js +0 -76
  109. package/lib/mcp/extension/protocol.js +0 -28
  110. package/lib/mcp/index.js +0 -61
  111. package/lib/mcp/log.js +0 -35
  112. package/lib/mcp/program.js +0 -111
  113. package/lib/mcp/sdk/exports.js +0 -28
  114. package/lib/mcp/sdk/http.js +0 -152
  115. package/lib/mcp/sdk/inProcessTransport.js +0 -71
  116. package/lib/mcp/sdk/server.js +0 -223
  117. package/lib/mcp/sdk/tool.js +0 -47
  118. package/lib/mcp/terminal/cli.js +0 -296
  119. package/lib/mcp/terminal/command.js +0 -56
  120. package/lib/mcp/terminal/commands.js +0 -333
  121. package/lib/mcp/terminal/daemon.js +0 -129
  122. package/lib/mcp/terminal/help.json +0 -32
  123. package/lib/mcp/terminal/helpGenerator.js +0 -88
  124. package/lib/mcp/terminal/socketConnection.js +0 -80
  125. package/lib/plugins/gitCommitInfoPlugin.js +0 -198
  126. package/lib/plugins/index.js +0 -28
  127. package/lib/plugins/webServerPlugin.js +0 -237
  128. package/lib/reporters/base.js +0 -634
  129. package/lib/reporters/blob.js +0 -138
  130. package/lib/reporters/dot.js +0 -99
  131. package/lib/reporters/empty.js +0 -32
  132. package/lib/reporters/github.js +0 -128
  133. package/lib/reporters/html.js +0 -633
  134. package/lib/reporters/internalReporter.js +0 -138
  135. package/lib/reporters/json.js +0 -254
  136. package/lib/reporters/junit.js +0 -232
  137. package/lib/reporters/line.js +0 -131
  138. package/lib/reporters/list.js +0 -253
  139. package/lib/reporters/listModeReporter.js +0 -69
  140. package/lib/reporters/markdown.js +0 -144
  141. package/lib/reporters/merge.js +0 -558
  142. package/lib/reporters/multiplexer.js +0 -112
  143. package/lib/reporters/reporterV2.js +0 -102
  144. package/lib/reporters/smoothdeploy.js +0 -333
  145. package/lib/reporters/teleEmitter.js +0 -317
  146. package/lib/reporters/versions/blobV1.js +0 -16
  147. package/lib/runner/dispatcher.js +0 -531
  148. package/lib/runner/failureTracker.js +0 -72
  149. package/lib/runner/lastRun.js +0 -77
  150. package/lib/runner/loadUtils.js +0 -334
  151. package/lib/runner/loaderHost.js +0 -89
  152. package/lib/runner/processHost.js +0 -180
  153. package/lib/runner/projectUtils.js +0 -241
  154. package/lib/runner/rebase.js +0 -189
  155. package/lib/runner/reporters.js +0 -140
  156. package/lib/runner/sigIntWatcher.js +0 -96
  157. package/lib/runner/storage.js +0 -91
  158. package/lib/runner/taskRunner.js +0 -127
  159. package/lib/runner/tasks.js +0 -410
  160. package/lib/runner/testGroups.js +0 -125
  161. package/lib/runner/testRunner.js +0 -398
  162. package/lib/runner/testServer.js +0 -269
  163. package/lib/runner/uiModeReporter.js +0 -30
  164. package/lib/runner/vcs.js +0 -72
  165. package/lib/runner/watchMode.js +0 -396
  166. package/lib/runner/workerHost.js +0 -104
  167. package/lib/third_party/pirates.js +0 -62
  168. package/lib/third_party/tsconfig-loader.js +0 -103
  169. package/lib/transform/babelBundleImpl.js +0 -461
  170. package/lib/transform/compilationCache.js +0 -274
  171. package/lib/transform/md.js +0 -221
  172. package/lib/transform/portTransport.js +0 -67
  173. package/lib/transform/transform.js +0 -303
  174. package/lib/utilsBundle.js +0 -50
  175. package/lib/utilsBundleImpl.js +0 -103
  176. package/lib/worker/fixtureRunner.js +0 -262
  177. package/lib/worker/testInfo.js +0 -536
  178. package/lib/worker/testTracing.js +0 -345
  179. package/lib/worker/timeoutManager.js +0 -174
  180. package/lib/worker/util.js +0 -31
  181. package/lib/worker/workerMain.js +0 -530
  182. /package/lib/{common/globals.js → globals.js} +0 -0
@@ -1,298 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var testType_exports = {};
20
- __export(testType_exports, {
21
- TestTypeImpl: () => TestTypeImpl,
22
- mergeTests: () => mergeTests,
23
- rootTestType: () => rootTestType
24
- });
25
- module.exports = __toCommonJS(testType_exports);
26
- var import_playwright_core = require("playwright-core");
27
- var import_utils = require("playwright-core/lib/utils");
28
- var import_globals = require("./globals");
29
- var import_test = require("./test");
30
- var import_expect = require("../matchers/expect");
31
- var import_transform = require("../transform/transform");
32
- var import_validators = require("./validators");
33
- const testTypeSymbol = Symbol("testType");
34
- class TestTypeImpl {
35
- constructor(fixtures) {
36
- this.fixtures = fixtures;
37
- const test = (0, import_transform.wrapFunctionWithLocation)(this._createTest.bind(this, "default"));
38
- test[testTypeSymbol] = this;
39
- test.expect = import_expect.expect;
40
- test.only = (0, import_transform.wrapFunctionWithLocation)(this._createTest.bind(this, "only"));
41
- test.describe = (0, import_transform.wrapFunctionWithLocation)(this._describe.bind(this, "default"));
42
- test.describe.only = (0, import_transform.wrapFunctionWithLocation)(this._describe.bind(this, "only"));
43
- test.describe.configure = (0, import_transform.wrapFunctionWithLocation)(this._configure.bind(this));
44
- test.describe.fixme = (0, import_transform.wrapFunctionWithLocation)(this._describe.bind(this, "fixme"));
45
- test.describe.parallel = (0, import_transform.wrapFunctionWithLocation)(this._describe.bind(this, "parallel"));
46
- test.describe.parallel.only = (0, import_transform.wrapFunctionWithLocation)(this._describe.bind(this, "parallel.only"));
47
- test.describe.serial = (0, import_transform.wrapFunctionWithLocation)(this._describe.bind(this, "serial"));
48
- test.describe.serial.only = (0, import_transform.wrapFunctionWithLocation)(this._describe.bind(this, "serial.only"));
49
- test.describe.skip = (0, import_transform.wrapFunctionWithLocation)(this._describe.bind(this, "skip"));
50
- test.beforeEach = (0, import_transform.wrapFunctionWithLocation)(this._hook.bind(this, "beforeEach"));
51
- test.afterEach = (0, import_transform.wrapFunctionWithLocation)(this._hook.bind(this, "afterEach"));
52
- test.beforeAll = (0, import_transform.wrapFunctionWithLocation)(this._hook.bind(this, "beforeAll"));
53
- test.afterAll = (0, import_transform.wrapFunctionWithLocation)(this._hook.bind(this, "afterAll"));
54
- test.skip = (0, import_transform.wrapFunctionWithLocation)(this._modifier.bind(this, "skip"));
55
- test.fixme = (0, import_transform.wrapFunctionWithLocation)(this._modifier.bind(this, "fixme"));
56
- test.fail = (0, import_transform.wrapFunctionWithLocation)(this._modifier.bind(this, "fail"));
57
- test.fail.only = (0, import_transform.wrapFunctionWithLocation)(this._createTest.bind(this, "fail.only"));
58
- test.slow = (0, import_transform.wrapFunctionWithLocation)(this._modifier.bind(this, "slow"));
59
- test.setTimeout = (0, import_transform.wrapFunctionWithLocation)(this._setTimeout.bind(this));
60
- test.step = this._step.bind(this, "pass");
61
- test.step.skip = this._step.bind(this, "skip");
62
- test.use = (0, import_transform.wrapFunctionWithLocation)(this._use.bind(this));
63
- test.extend = (0, import_transform.wrapFunctionWithLocation)(this._extend.bind(this));
64
- test.info = () => {
65
- const result = (0, import_globals.currentTestInfo)();
66
- if (!result)
67
- throw new Error("test.info() can only be called while test is running");
68
- return result;
69
- };
70
- this.test = test;
71
- }
72
- _currentSuite(location, title) {
73
- const suite = (0, import_globals.currentlyLoadingFileSuite)();
74
- if (!suite) {
75
- throw new Error([
76
- `Playwright Test did not expect ${title} to be called here.`,
77
- `Most common reasons include:`,
78
- `- You are calling ${title} in a configuration file.`,
79
- `- You are calling ${title} in a file that is imported by the configuration file.`,
80
- `- You have two different versions of @playwright/test. This usually happens`,
81
- ` when one of the dependencies in your package.json depends on @playwright/test.`
82
- ].join("\n"));
83
- }
84
- return suite;
85
- }
86
- _createTest(type, location, title, fnOrDetails, fn) {
87
- throwIfRunningInsideJest();
88
- const suite = this._currentSuite(location, "test()");
89
- if (!suite)
90
- return;
91
- let details;
92
- let body;
93
- if (typeof fnOrDetails === "function") {
94
- body = fnOrDetails;
95
- details = {};
96
- } else {
97
- body = fn;
98
- details = fnOrDetails;
99
- }
100
- const validatedDetails = (0, import_validators.validateTestDetails)(details, location);
101
- const test = new import_test.TestCase(title, body, this, location);
102
- test._requireFile = suite._requireFile;
103
- test.annotations.push(...validatedDetails.annotations);
104
- test._tags.push(...validatedDetails.tags);
105
- suite._addTest(test);
106
- if (type === "only" || type === "fail.only")
107
- test._only = true;
108
- if (type === "skip" || type === "fixme" || type === "fail")
109
- test.annotations.push({ type, location });
110
- else if (type === "fail.only")
111
- test.annotations.push({ type: "fail", location });
112
- }
113
- _describe(type, location, titleOrFn, fnOrDetails, fn) {
114
- throwIfRunningInsideJest();
115
- const suite = this._currentSuite(location, "test.describe()");
116
- if (!suite)
117
- return;
118
- let title;
119
- let body;
120
- let details;
121
- if (typeof titleOrFn === "function") {
122
- title = "";
123
- details = {};
124
- body = titleOrFn;
125
- } else if (typeof fnOrDetails === "function") {
126
- title = titleOrFn;
127
- details = {};
128
- body = fnOrDetails;
129
- } else {
130
- title = titleOrFn;
131
- details = fnOrDetails;
132
- body = fn;
133
- }
134
- const validatedDetails = (0, import_validators.validateTestDetails)(details, location);
135
- const child = new import_test.Suite(title, "describe");
136
- child._requireFile = suite._requireFile;
137
- child.location = location;
138
- child._staticAnnotations.push(...validatedDetails.annotations);
139
- child._tags.push(...validatedDetails.tags);
140
- suite._addSuite(child);
141
- if (type === "only" || type === "serial.only" || type === "parallel.only")
142
- child._only = true;
143
- if (type === "serial" || type === "serial.only")
144
- child._parallelMode = "serial";
145
- if (type === "parallel" || type === "parallel.only")
146
- child._parallelMode = "parallel";
147
- if (type === "skip" || type === "fixme")
148
- child._staticAnnotations.push({ type, location });
149
- for (let parent = suite; parent; parent = parent.parent) {
150
- if (parent._parallelMode === "serial" && child._parallelMode === "parallel")
151
- throw new Error("describe.parallel cannot be nested inside describe.serial");
152
- if (parent._parallelMode === "default" && child._parallelMode === "parallel")
153
- throw new Error("describe.parallel cannot be nested inside describe with default mode");
154
- }
155
- (0, import_globals.setCurrentlyLoadingFileSuite)(child);
156
- body();
157
- (0, import_globals.setCurrentlyLoadingFileSuite)(suite);
158
- }
159
- _hook(name, location, title, fn) {
160
- const suite = this._currentSuite(location, `test.${name}()`);
161
- if (!suite)
162
- return;
163
- if (typeof title === "function") {
164
- fn = title;
165
- title = `${name} hook`;
166
- }
167
- suite._hooks.push({ type: name, fn, title, location });
168
- }
169
- _configure(location, options) {
170
- throwIfRunningInsideJest();
171
- const suite = this._currentSuite(location, `test.describe.configure()`);
172
- if (!suite)
173
- return;
174
- if (options.timeout !== void 0)
175
- suite._timeout = options.timeout;
176
- if (options.retries !== void 0)
177
- suite._retries = options.retries;
178
- if (options.mode !== void 0) {
179
- if (suite._parallelMode !== "none")
180
- throw new Error(`"${suite._parallelMode}" mode is already assigned for the enclosing scope.`);
181
- suite._parallelMode = options.mode;
182
- for (let parent = suite.parent; parent; parent = parent.parent) {
183
- if (parent._parallelMode === "serial" && suite._parallelMode === "parallel")
184
- throw new Error("describe with parallel mode cannot be nested inside describe with serial mode");
185
- if (parent._parallelMode === "default" && suite._parallelMode === "parallel")
186
- throw new Error("describe with parallel mode cannot be nested inside describe with default mode");
187
- }
188
- }
189
- }
190
- _modifier(type, location, ...modifierArgs) {
191
- const suite = (0, import_globals.currentlyLoadingFileSuite)();
192
- if (suite) {
193
- if (typeof modifierArgs[0] === "string" && typeof modifierArgs[1] === "function" && (type === "skip" || type === "fixme" || type === "fail")) {
194
- this._createTest(type, location, modifierArgs[0], modifierArgs[1]);
195
- return;
196
- }
197
- if (typeof modifierArgs[0] === "string" && typeof modifierArgs[1] === "object" && typeof modifierArgs[2] === "function" && (type === "skip" || type === "fixme" || type === "fail")) {
198
- this._createTest(type, location, modifierArgs[0], modifierArgs[1], modifierArgs[2]);
199
- return;
200
- }
201
- if (typeof modifierArgs[0] === "function") {
202
- suite._modifiers.push({ type, fn: modifierArgs[0], location, description: modifierArgs[1] });
203
- } else {
204
- if (modifierArgs.length >= 1 && !modifierArgs[0])
205
- return;
206
- const description = modifierArgs[1];
207
- suite._staticAnnotations.push({ type, description, location });
208
- }
209
- return;
210
- }
211
- const testInfo = (0, import_globals.currentTestInfo)();
212
- if (!testInfo)
213
- throw new Error(`test.${type}() can only be called inside test, describe block or fixture`);
214
- if (typeof modifierArgs[0] === "function")
215
- throw new Error(`test.${type}() with a function can only be called inside describe block`);
216
- testInfo._modifier(type, location, modifierArgs);
217
- }
218
- _setTimeout(location, timeout) {
219
- const suite = (0, import_globals.currentlyLoadingFileSuite)();
220
- if (suite) {
221
- suite._timeout = timeout;
222
- return;
223
- }
224
- const testInfo = (0, import_globals.currentTestInfo)();
225
- if (!testInfo)
226
- throw new Error(`test.setTimeout() can only be called from a test`);
227
- testInfo.setTimeout(timeout);
228
- }
229
- _use(location, fixtures) {
230
- const suite = this._currentSuite(location, `test.use()`);
231
- if (!suite)
232
- return;
233
- suite._use.push({ fixtures, location });
234
- }
235
- async _step(expectation, title, body, options = {}) {
236
- const testInfo = (0, import_globals.currentTestInfo)();
237
- if (!testInfo)
238
- throw new Error(`test.step() can only be called from a test`);
239
- const step = testInfo._addStep({ category: "test.step", title, location: options.location, box: options.box });
240
- return await (0, import_utils.currentZone)().with("stepZone", step).run(async () => {
241
- try {
242
- let result = void 0;
243
- result = await (0, import_utils.raceAgainstDeadline)(async () => {
244
- try {
245
- return await step.info._runStepBody(expectation === "skip", body, step.location);
246
- } catch (e) {
247
- if (result?.timedOut)
248
- testInfo._failWithError(e);
249
- throw e;
250
- }
251
- }, options.timeout ? (0, import_utils.monotonicTime)() + options.timeout : 0);
252
- if (result.timedOut)
253
- throw new import_playwright_core.errors.TimeoutError(`Step timeout of ${options.timeout}ms exceeded.`);
254
- step.complete({});
255
- return result.result;
256
- } catch (error) {
257
- step.complete({ error });
258
- throw error;
259
- }
260
- });
261
- }
262
- _extend(location, fixtures) {
263
- if (fixtures[testTypeSymbol])
264
- throw new Error(`test.extend() accepts fixtures object, not a test object.
265
- Did you mean to call mergeTests()?`);
266
- const fixturesWithLocation = { fixtures, location };
267
- return new TestTypeImpl([...this.fixtures, fixturesWithLocation]).test;
268
- }
269
- }
270
- function throwIfRunningInsideJest() {
271
- if (process.env.JEST_WORKER_ID) {
272
- const packageManagerCommand = (0, import_utils.getPackageManagerExecCommand)();
273
- throw new Error(
274
- `Playwright Test needs to be invoked via '${packageManagerCommand} playwright test' and excluded from Jest test runs.
275
- Creating one directory for Playwright tests and one for Jest is the recommended way of doing it.
276
- See https://playwright.dev/docs/intro for more information about Playwright Test.`
277
- );
278
- }
279
- }
280
- const rootTestType = new TestTypeImpl([]);
281
- function mergeTests(...tests) {
282
- let result = rootTestType;
283
- for (const t of tests) {
284
- const testTypeImpl = t[testTypeSymbol];
285
- if (!testTypeImpl)
286
- throw new Error(`mergeTests() accepts "test" functions as parameters.
287
- Did you mean to call test.extend() with fixtures instead?`);
288
- const newFixtures = testTypeImpl.fixtures.filter((theirs) => !result.fixtures.find((ours) => ours.fixtures === theirs.fixtures));
289
- result = new TestTypeImpl([...result.fixtures, ...newFixtures]);
290
- }
291
- return result.test;
292
- }
293
- // Annotate the CommonJS export names for ESM import in node:
294
- 0 && (module.exports = {
295
- TestTypeImpl,
296
- mergeTests,
297
- rootTestType
298
- });
@@ -1,68 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var validators_exports = {};
20
- __export(validators_exports, {
21
- validateTestAnnotation: () => validateTestAnnotation,
22
- validateTestDetails: () => validateTestDetails
23
- });
24
- module.exports = __toCommonJS(validators_exports);
25
- var import_mcpBundle = require("playwright-core/lib/mcpBundle");
26
- const testAnnotationSchema = import_mcpBundle.z.object({
27
- type: import_mcpBundle.z.string(),
28
- description: import_mcpBundle.z.string().optional()
29
- });
30
- const testDetailsSchema = import_mcpBundle.z.object({
31
- tag: import_mcpBundle.z.union([
32
- import_mcpBundle.z.string().optional(),
33
- import_mcpBundle.z.array(import_mcpBundle.z.string())
34
- ]).transform((val) => Array.isArray(val) ? val : val !== void 0 ? [val] : []).refine((val) => val.every((v) => v.startsWith("@")), {
35
- message: "Tag must start with '@'"
36
- }),
37
- annotation: import_mcpBundle.z.union([
38
- testAnnotationSchema,
39
- import_mcpBundle.z.array(testAnnotationSchema).optional()
40
- ]).transform((val) => Array.isArray(val) ? val : val !== void 0 ? [val] : [])
41
- });
42
- function validateTestAnnotation(annotation) {
43
- try {
44
- return testAnnotationSchema.parse(annotation);
45
- } catch (error) {
46
- throwZodError(error);
47
- }
48
- }
49
- function validateTestDetails(details, location) {
50
- try {
51
- const parsedDetails = testDetailsSchema.parse(details);
52
- return {
53
- annotations: parsedDetails.annotation.map((a) => ({ ...a, location })),
54
- tags: parsedDetails.tag,
55
- location
56
- };
57
- } catch (error) {
58
- throwZodError(error);
59
- }
60
- }
61
- function throwZodError(error) {
62
- throw new Error(error.issues.map((i) => i.message).join("\n"));
63
- }
64
- // Annotate the CommonJS export names for ESM import in node:
65
- 0 && (module.exports = {
66
- validateTestAnnotation,
67
- validateTestDetails
68
- });
package/lib/fsWatcher.js DELETED
@@ -1,67 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var fsWatcher_exports = {};
20
- __export(fsWatcher_exports, {
21
- Watcher: () => Watcher
22
- });
23
- module.exports = __toCommonJS(fsWatcher_exports);
24
- var import_utilsBundle = require("./utilsBundle");
25
- class Watcher {
26
- constructor(onChange) {
27
- this._watchedPaths = [];
28
- this._ignoredFolders = [];
29
- this._collector = [];
30
- this._onChange = onChange;
31
- }
32
- async update(watchedPaths, ignoredFolders, reportPending) {
33
- if (JSON.stringify([this._watchedPaths, this._ignoredFolders]) === JSON.stringify([watchedPaths, ignoredFolders]))
34
- return;
35
- if (reportPending)
36
- this._reportEventsIfAny();
37
- this._watchedPaths = watchedPaths;
38
- this._ignoredFolders = ignoredFolders;
39
- void this._fsWatcher?.close();
40
- this._fsWatcher = void 0;
41
- this._collector.length = 0;
42
- clearTimeout(this._throttleTimer);
43
- this._throttleTimer = void 0;
44
- if (!this._watchedPaths.length)
45
- return;
46
- const ignored = [...this._ignoredFolders, "**/node_modules/**"];
47
- this._fsWatcher = import_utilsBundle.chokidar.watch(watchedPaths, { ignoreInitial: true, ignored }).on("all", async (event, file) => {
48
- if (this._throttleTimer)
49
- clearTimeout(this._throttleTimer);
50
- this._collector.push({ event, file });
51
- this._throttleTimer = setTimeout(() => this._reportEventsIfAny(), 250);
52
- });
53
- await new Promise((resolve, reject) => this._fsWatcher.once("ready", resolve).once("error", reject));
54
- }
55
- async close() {
56
- await this._fsWatcher?.close();
57
- }
58
- _reportEventsIfAny() {
59
- if (this._collector.length)
60
- this._onChange(this._collector.slice());
61
- this._collector.length = 0;
62
- }
63
- }
64
- // Annotate the CommonJS export names for ESM import in node:
65
- 0 && (module.exports = {
66
- Watcher
67
- });
@@ -1,77 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var events_exports = {};
20
- __export(events_exports, {
21
- Disposable: () => Disposable,
22
- EventEmitter: () => EventEmitter
23
- });
24
- module.exports = __toCommonJS(events_exports);
25
- var Disposable;
26
- ((Disposable2) => {
27
- function disposeAll(disposables) {
28
- for (const disposable of disposables.splice(0))
29
- disposable.dispose();
30
- }
31
- Disposable2.disposeAll = disposeAll;
32
- })(Disposable || (Disposable = {}));
33
- class EventEmitter {
34
- constructor() {
35
- this._listeners = /* @__PURE__ */ new Set();
36
- this.event = (listener, disposables) => {
37
- this._listeners.add(listener);
38
- let disposed = false;
39
- const self = this;
40
- const result = {
41
- dispose() {
42
- if (!disposed) {
43
- disposed = true;
44
- self._listeners.delete(listener);
45
- }
46
- }
47
- };
48
- if (disposables)
49
- disposables.push(result);
50
- return result;
51
- };
52
- }
53
- fire(event) {
54
- const dispatch = !this._deliveryQueue;
55
- if (!this._deliveryQueue)
56
- this._deliveryQueue = [];
57
- for (const listener of this._listeners)
58
- this._deliveryQueue.push({ listener, event });
59
- if (!dispatch)
60
- return;
61
- for (let index = 0; index < this._deliveryQueue.length; index++) {
62
- const { listener, event: event2 } = this._deliveryQueue[index];
63
- listener.call(null, event2);
64
- }
65
- this._deliveryQueue = void 0;
66
- }
67
- dispose() {
68
- this._listeners.clear();
69
- if (this._deliveryQueue)
70
- this._deliveryQueue = [];
71
- }
72
- }
73
- // Annotate the CommonJS export names for ESM import in node:
74
- 0 && (module.exports = {
75
- Disposable,
76
- EventEmitter
77
- });
@@ -1,30 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var folders_exports = {};
20
- __export(folders_exports, {
21
- artifactsFolderName: () => artifactsFolderName
22
- });
23
- module.exports = __toCommonJS(folders_exports);
24
- function artifactsFolderName(workerIndex) {
25
- return `.playwright-artifacts-${workerIndex}`;
26
- }
27
- // Annotate the CommonJS export names for ESM import in node:
28
- 0 && (module.exports = {
29
- artifactsFolderName
30
- });
@@ -1,69 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var stringInternPool_exports = {};
20
- __export(stringInternPool_exports, {
21
- JsonStringInternalizer: () => JsonStringInternalizer,
22
- StringInternPool: () => StringInternPool
23
- });
24
- module.exports = __toCommonJS(stringInternPool_exports);
25
- class StringInternPool {
26
- constructor() {
27
- this._stringCache = /* @__PURE__ */ new Map();
28
- }
29
- internString(s) {
30
- let result = this._stringCache.get(s);
31
- if (!result) {
32
- this._stringCache.set(s, s);
33
- result = s;
34
- }
35
- return result;
36
- }
37
- }
38
- class JsonStringInternalizer {
39
- constructor(pool) {
40
- this._pool = pool;
41
- }
42
- traverse(value) {
43
- if (typeof value !== "object")
44
- return;
45
- if (Array.isArray(value)) {
46
- for (let i = 0; i < value.length; i++) {
47
- if (typeof value[i] === "string")
48
- value[i] = this.intern(value[i]);
49
- else
50
- this.traverse(value[i]);
51
- }
52
- } else {
53
- for (const name in value) {
54
- if (typeof value[name] === "string")
55
- value[name] = this.intern(value[name]);
56
- else
57
- this.traverse(value[name]);
58
- }
59
- }
60
- }
61
- intern(value) {
62
- return this._pool.internString(value);
63
- }
64
- }
65
- // Annotate the CommonJS export names for ESM import in node:
66
- 0 && (module.exports = {
67
- JsonStringInternalizer,
68
- StringInternPool
69
- });