@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
@@ -0,0 +1,24 @@
1
+ # packages/playwright/lib/worker/workerProcessEntry.js
2
+ # total: 123.4 KB
3
+
4
+ ## Inlined (12)
5
+ 4.7 KB packages/playwright/src/util.ts
6
+ 8.6 KB packages/playwright/src/worker/fixtureRunner.ts
7
+ 20.8 KB packages/playwright/src/worker/testInfo.ts
8
+ 11.6 KB packages/playwright/src/worker/testTracing.ts
9
+ 5.4 KB packages/playwright/src/worker/timeoutManager.ts
10
+ 0.3 KB packages/playwright/src/worker/util.ts
11
+ 21.0 KB packages/playwright/src/worker/workerMain.ts
12
+ 0.1 KB packages/playwright/src/worker/workerProcessEntry.ts
13
+ 6.0 KB packages/utils/third_party/yauzl/buffer-crc32.js
14
+ 9.3 KB packages/utils/third_party/yauzl/fd-slicer.js
15
+ 32.2 KB packages/utils/third_party/yauzl/index.js
16
+ 1.4 KB packages/utils/third_party/yauzl/pend.js
17
+
18
+ ## External (6)
19
+ ../common
20
+ ../globals
21
+ ../matchers/expect
22
+ playwright-core/lib/coreBundle
23
+ playwright-core/lib/utilsBundle
24
+ playwright-core/package.json
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smoothdeploy/playwright",
3
- "version": "1.58.4",
3
+ "version": "1.60.0-beta-1780662356000",
4
4
  "description": "A high-level API to automate web browsers",
5
5
  "repository": {
6
6
  "type": "git",
@@ -19,30 +19,19 @@
19
19
  "default": "./index.js"
20
20
  },
21
21
  "./package.json": "./package.json",
22
- "./lib/common/configLoader": "./lib/common/configLoader.js",
22
+ "./lib/common": "./lib/common/index.js",
23
23
  "./lib/fsWatcher": "./lib/fsWatcher.js",
24
24
  "./lib/mcp/index": "./lib/mcp/index.js",
25
- "./lib/mcp/browser/tools": "./lib/mcp/browser/tools.js",
26
- "./lib/mcp/program": "./lib/mcp/program.js",
27
- "./lib/mcp/sdk/bundle": "./lib/mcp/sdk/bundle.js",
28
- "./lib/mcp/sdk/exports": "./lib/mcp/sdk/exports.js",
29
25
  "./lib/program": "./lib/program.js",
30
- "./lib/reporters/base": "./lib/reporters/base.js",
31
- "./lib/reporters/list": "./lib/reporters/list.js",
26
+ "./lib/runner": "./lib/runner/index.js",
27
+ "./lib/isomorphic": "./lib/isomorphic/index.js",
32
28
  "./lib/transform/babelBundle": "./lib/transform/babelBundle.js",
33
- "./lib/transform/compilationCache": "./lib/transform/compilationCache.js",
34
- "./lib/transform/esmLoader": "./lib/transform/esmLoader.js",
35
- "./lib/transform/transform": "./lib/transform/transform.js",
36
- "./lib/internalsForTest": "./lib/internalsForTest.js",
37
- "./lib/plugins": "./lib/plugins/index.js",
38
- "./lib/runner/testRunner": "./lib/runner/testRunner.js",
39
29
  "./jsx-runtime": {
40
30
  "import": "./jsx-runtime.mjs",
41
31
  "require": "./jsx-runtime.js",
42
32
  "default": "./jsx-runtime.js"
43
33
  },
44
34
  "./lib/util": "./lib/util.js",
45
- "./lib/utilsBundle": "./lib/utilsBundle.js",
46
35
  "./types/test": {
47
36
  "types": "./types/test.d.ts"
48
37
  },
@@ -64,7 +53,7 @@
64
53
  },
65
54
  "license": "Apache-2.0",
66
55
  "dependencies": {
67
- "playwright-core": "npm:@smoothdeploy/playwright-core@1.58.4"
56
+ "playwright-core": "npm:@smoothdeploy/playwright-core@1.60.0-beta-1780662356000"
68
57
  },
69
58
  "optionalDependencies": {
70
59
  "fsevents": "2.3.2"
package/test.mjs CHANGED
@@ -26,6 +26,7 @@ export const request = playwright.request;
26
26
  export const _electron = playwright._electron;
27
27
  export const _android = playwright._android;
28
28
  export const _baseTest = playwright._baseTest;
29
+ export const _utilityTest = playwright._utilityTest;
29
30
  export const test = playwright.test;
30
31
  export const expect = playwright.expect;
31
32
  export const defineConfig = playwright.defineConfig;
package/types/test.d.ts CHANGED
@@ -20,7 +20,7 @@ export * from 'playwright-core';
20
20
 
21
21
  export type BlobReporterOptions = { outputDir?: string, fileName?: string };
22
22
  export type ListReporterOptions = { printSteps?: boolean };
23
- export type JUnitReporterOptions = { outputFile?: string, stripANSIControlSequences?: boolean, includeProjectInTestName?: boolean };
23
+ export type JUnitReporterOptions = { outputFile?: string, stripANSIControlSequences?: boolean, includeProjectInTestName?: boolean, includeRetries?: boolean };
24
24
  export type JsonReporterOptions = { outputFile?: string };
25
25
  export type HtmlReporterOptions = {
26
26
  outputFolder?: string;
@@ -31,6 +31,7 @@ export type HtmlReporterOptions = {
31
31
  title?: string;
32
32
  noSnippets?: boolean;
33
33
  noCopyPrompt?: boolean;
34
+ doNotInlineAssets?: boolean;
34
35
  };
35
36
 
36
37
  export type ReporterDescription = Readonly<
@@ -250,6 +251,13 @@ interface TestProject<TestArgs = {}, WorkerArgs = {}> {
250
251
  * for details.
251
252
  */
252
253
  pathTemplate?: string;
254
+
255
+ /**
256
+ * Controls how children of the snapshot root are matched against the actual accessibility tree. This is equivalent to
257
+ * adding a `/children` property at the top of every aria snapshot template. Individual snapshots can override this by
258
+ * including an explicit `/children` property.
259
+ */
260
+ children?: "contain"|"equal"|"deep-equal";
253
261
  };
254
262
 
255
263
  /**
@@ -521,6 +529,8 @@ interface TestProject<TestArgs = {}, WorkerArgs = {}> {
521
529
  * config)
522
530
  * - `{testFileDir}` - Directories in relative path from `testDir` to **test file**.
523
531
  * - Value: `page`
532
+ * - `{testFileBaseName}` - Test file name without the last extension.
533
+ * - Value: `page-click.spec`
524
534
  * - `{testFileName}` - Test file name with extension.
525
535
  * - Value: `page-click.spec.ts`
526
536
  * - `{testFilePath}` - Relative path from `testDir` to **test file**.
@@ -764,6 +774,11 @@ export interface FullProject<TestArgs = {}, WorkerArgs = {}> {
764
774
  */
765
775
  grepInvert: null|RegExp|Array<RegExp>;
766
776
 
777
+ /**
778
+ * See [testProject.ignoreSnapshots](https://playwright.dev/docs/api/class-testproject#test-project-ignore-snapshots).
779
+ */
780
+ ignoreSnapshots: boolean;
781
+
767
782
  /**
768
783
  * See [testProject.metadata](https://playwright.dev/docs/api/class-testproject#test-project-metadata).
769
784
  */
@@ -1176,6 +1191,13 @@ interface TestConfig<TestArgs = {}, WorkerArgs = {}> {
1176
1191
  * for details.
1177
1192
  */
1178
1193
  pathTemplate?: string;
1194
+
1195
+ /**
1196
+ * Controls how children of the snapshot root are matched against the actual accessibility tree. This is equivalent to
1197
+ * adding a `/children` property at the top of every aria snapshot template. Individual snapshots can override this by
1198
+ * including an explicit `/children` property.
1199
+ */
1200
+ children?: "contain"|"equal"|"deep-equal";
1179
1201
  };
1180
1202
 
1181
1203
  /**
@@ -1750,6 +1772,8 @@ interface TestConfig<TestArgs = {}, WorkerArgs = {}> {
1750
1772
  * config)
1751
1773
  * - `{testFileDir}` - Directories in relative path from `testDir` to **test file**.
1752
1774
  * - Value: `page`
1775
+ * - `{testFileBaseName}` - Test file name without the last extension.
1776
+ * - Value: `page-click.spec`
1753
1777
  * - `{testFileName}` - Test file name with extension.
1754
1778
  * - Value: `page-click.spec.ts`
1755
1779
  * - `{testFilePath}` - Relative path from `testDir` to **test file**.
@@ -5511,6 +5535,29 @@ export interface TestType<TestArgs extends {}, WorkerArgs extends {}> {
5511
5535
  only(title: string, details: TestDetails, body: TestBody<TestArgs & WorkerArgs>): void;
5512
5536
  }
5513
5537
 
5538
+ /**
5539
+ * Aborts the currently running test by throwing an error. The test is immediately marked as failed and execution
5540
+ * stops. This is useful from inside a fixture or a route handler when you have detected an unrecoverable misuse and
5541
+ * want to fail the test right away.
5542
+ *
5543
+ * **Usage**
5544
+ *
5545
+ * ```js
5546
+ * import { test, expect } from '@playwright/test';
5547
+ *
5548
+ * test('does not publish to shared page', async ({ page }) => {
5549
+ * await page.route('**\/publish', route => {
5550
+ * test.abort('Tests must not publish to the shared page. Use the `clone` option.');
5551
+ * return route.abort();
5552
+ * });
5553
+ * // ...
5554
+ * });
5555
+ * ```
5556
+ *
5557
+ * @param message Optional message describing the reason for the abort. It will be included in the failure error.
5558
+ */
5559
+ abort(message?: string): never;
5560
+
5514
5561
  /**
5515
5562
  * Marks a test as "slow". Slow test will be given triple the default timeout.
5516
5563
  *
@@ -6905,6 +6952,7 @@ export interface PlaywrightWorkerOptions {
6905
6952
  * - `'retain-on-failure'`: Record trace for each test. When test run passes, remove the recorded trace.
6906
6953
  * - `'retain-on-first-failure'`: Record trace for the first run of each test, but not for retries. When test run
6907
6954
  * passes, remove the recorded trace.
6955
+ * - `'retain-on-failure-and-retries'`: Record trace for each test run. Retains all traces when an attempt fails.
6908
6956
  *
6909
6957
  * For more control, pass an object that specifies `mode` and trace features to enable.
6910
6958
  *
@@ -6936,6 +6984,10 @@ export interface PlaywrightWorkerOptions {
6936
6984
  * down to fit into 800x800. If `viewport` is not configured explicitly the video size defaults to 800x450. Actual
6937
6985
  * picture of each page will be scaled down if necessary to fit the specified size.
6938
6986
  *
6987
+ * To annotate actions in the video, pass `show` with `action` and/or `test` sub-options. The `action` option controls
6988
+ * visual highlights on interacted elements with an optional `delay` in milliseconds (defaults to `500`). The `test`
6989
+ * option controls which test information is displayed as a status overlay.
6990
+ *
6939
6991
  * **Usage**
6940
6992
  *
6941
6993
  * ```js
@@ -6951,13 +7003,12 @@ export interface PlaywrightWorkerOptions {
6951
7003
  *
6952
7004
  * Learn more about [recording video](https://playwright.dev/docs/test-use-options#recording-options).
6953
7005
  */
6954
- video: VideoMode | /** deprecated */ 'retry-with-video' | { mode: VideoMode, size?: ViewportSize };
7006
+ video: VideoMode | /** deprecated */ 'retry-with-video' | { mode: VideoMode, size?: ViewportSize, show?: { actions?: { duration?: number, position?: 'top-left' | 'top' | 'top-right' | 'bottom-left' | 'bottom' | 'bottom-right', fontSize?: number }, test?: { level?: 'file' | 'title' | 'step', position?: 'top-left' | 'top' | 'top-right' | 'bottom-left' | 'bottom' | 'bottom-right', fontSize?: number } } };
6955
7007
  }
6956
7008
 
6957
7009
  export type ScreenshotMode = 'off' | 'on' | 'only-on-failure' | 'on-first-failure';
6958
- export type TraceMode = 'off' | 'on' | 'retain-on-failure' | 'on-first-retry' | 'on-all-retries' | 'retain-on-first-failure';
7010
+ export type TraceMode = 'off' | 'on' | 'retain-on-failure' | 'on-first-retry' | 'on-all-retries' | 'retain-on-first-failure' | 'retain-on-failure-and-retries';
6959
7011
  export type VideoMode = 'off' | 'on' | 'retain-on-failure' | 'on-first-retry';
6960
-
6961
7012
  /**
6962
7013
  * Playwright Test provides many options to configure test environment,
6963
7014
  * [Browser](https://playwright.dev/docs/api/class-browser),
@@ -7716,6 +7767,9 @@ type CustomProperties<T> = ExcludeProps<T, PlaywrightTestOptions & PlaywrightWor
7716
7767
  export type PlaywrightTestProject<TestArgs = {}, WorkerArgs = {}> = Project<PlaywrightTestOptions & CustomProperties<TestArgs>, PlaywrightWorkerOptions & CustomProperties<WorkerArgs>>;
7717
7768
  export type PlaywrightTestConfig<TestArgs = {}, WorkerArgs = {}> = Config<PlaywrightTestOptions & CustomProperties<TestArgs>, PlaywrightWorkerOptions & CustomProperties<WorkerArgs>>;
7718
7769
 
7770
+ // Use the global URLPattern type if available (Node.js 22+, modern browsers),
7771
+ // otherwise fall back to `never` so it disappears from union types.
7772
+ type URLPattern = typeof globalThis extends { URLPattern: new (...args: any) => infer T } ? T : never;
7719
7773
  type AsymmetricMatcher = Record<string, any>;
7720
7774
 
7721
7775
  interface AsymmetricMatchers {
@@ -7903,7 +7957,11 @@ interface AsymmetricMatchers {
7903
7957
  */
7904
7958
  interface GenericAssertions<R> {
7905
7959
  /**
7906
- * Makes the assertion check for the opposite condition. For example, the following code passes:
7960
+ * Makes the assertion check for the opposite condition.
7961
+ *
7962
+ * **Usage**
7963
+ *
7964
+ * For example, the following code passes:
7907
7965
  *
7908
7966
  * ```js
7909
7967
  * const value = 1;
@@ -7912,6 +7970,34 @@ interface GenericAssertions<R> {
7912
7970
  *
7913
7971
  */
7914
7972
  not: GenericAssertions<R>;
7973
+ /**
7974
+ * Use `resolves` to unwrap the value of a fulfilled promise so any other matcher can be chained. If the promise is
7975
+ * rejected the assertion fails.
7976
+ *
7977
+ * For example, this code tests that the promise resolves and that the resulting value is `'lemon'`:
7978
+ *
7979
+ * ```js
7980
+ * test('resolves to lemon', async () => {
7981
+ * await expect(Promise.resolve('lemon')).resolves.toBe('lemon');
7982
+ * });
7983
+ * ```
7984
+ *
7985
+ */
7986
+ resolves: GenericAssertions<R>;
7987
+ /**
7988
+ * Use `.rejects` to unwrap the reason of a rejected promise so any other matcher can be chained. If the promise is
7989
+ * fulfilled the assertion fails.
7990
+ *
7991
+ * For example, this code tests that the promise rejects with reason `'octopus'`:
7992
+ *
7993
+ * ```js
7994
+ * test('rejects to octopus', async () => {
7995
+ * await expect(Promise.reject(new Error('octopus'))).rejects.toThrow('octopus');
7996
+ * });
7997
+ * ```
7998
+ *
7999
+ */
8000
+ rejects: GenericAssertions<R>;
7915
8001
  /**
7916
8002
  * Compares value with
7917
8003
  * [`expected`](https://playwright.dev/docs/api/class-genericassertions#generic-assertions-to-be-option-expected) by
@@ -8565,8 +8651,11 @@ interface APIResponseAssertions {
8565
8651
  toBeOK(): Promise<void>;
8566
8652
 
8567
8653
  /**
8568
- * Makes the assertion check for the opposite condition. For example, this code tests that the response status is not
8569
- * successful:
8654
+ * Makes the assertion check for the opposite condition.
8655
+ *
8656
+ * **Usage**
8657
+ *
8658
+ * For example, this code tests that the response status is not successful:
8570
8659
  *
8571
8660
  * ```js
8572
8661
  * await expect(response).not.toBeOK();
@@ -9161,6 +9250,11 @@ interface LocatorAssertions {
9161
9250
  * @param options
9162
9251
  */
9163
9252
  toHaveCSS(name: string, value: string|RegExp, options?: {
9253
+ /**
9254
+ * Pseudo-element to read computed styles from.
9255
+ */
9256
+ pseudo?: "before"|"after";
9257
+
9164
9258
  /**
9165
9259
  * Time to retry the assertion for in milliseconds. Defaults to `timeout` in `TestConfig.expect`.
9166
9260
  */
@@ -9597,8 +9691,11 @@ interface LocatorAssertions {
9597
9691
  }): Promise<void>;
9598
9692
 
9599
9693
  /**
9600
- * Makes the assertion check for the opposite condition. For example, this code tests that the Locator doesn't contain
9601
- * text `"error"`:
9694
+ * Makes the assertion check for the opposite condition.
9695
+ *
9696
+ * **Usage**
9697
+ *
9698
+ * For example, this code tests that the Locator doesn't contain text `"error"`:
9602
9699
  *
9603
9700
  * ```js
9604
9701
  * await expect(locator).not.toContainText('error');
@@ -9686,6 +9783,9 @@ interface PageAssertions {
9686
9783
  * // Check for the page URL to contain 'doc', followed by an optional 's', followed by '/'
9687
9784
  * await expect(page).toHaveURL(/docs?\//);
9688
9785
  *
9786
+ * // Check for the page URL to match the URL pattern
9787
+ * await expect(page).toHaveURL(new URLPattern({ pathname: '/docs/*' }));
9788
+ *
9689
9789
  * // Check for the predicate to be satisfied
9690
9790
  * // For example: verify query strings
9691
9791
  * await expect(page).toHaveURL(url => {
@@ -9701,7 +9801,7 @@ interface PageAssertions {
9701
9801
  * against the current browser URL.
9702
9802
  * @param options
9703
9803
  */
9704
- toHaveURL(url: string|RegExp|((url: URL) => boolean), options?: {
9804
+ toHaveURL(url: string|RegExp|URLPattern|((url: URL) => boolean), options?: {
9705
9805
  /**
9706
9806
  * Whether to perform case-insensitive match.
9707
9807
  * [`ignoreCase`](https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-url-option-ignore-case)
@@ -9717,8 +9817,62 @@ interface PageAssertions {
9717
9817
  }): Promise<void>;
9718
9818
 
9719
9819
  /**
9720
- * Makes the assertion check for the opposite condition. For example, this code tests that the page URL doesn't
9721
- * contain `"error"`:
9820
+ * Asserts that the page body matches the given [accessibility snapshot](https://playwright.dev/docs/aria-snapshots).
9821
+ *
9822
+ * **Usage**
9823
+ *
9824
+ * ```js
9825
+ * await page.goto('https://demo.playwright.dev/todomvc/');
9826
+ * await expect(page).toMatchAriaSnapshot(`
9827
+ * - heading "todos"
9828
+ * - textbox "What needs to be done?"
9829
+ * `);
9830
+ * ```
9831
+ *
9832
+ * @param expected
9833
+ * @param options
9834
+ */
9835
+ toMatchAriaSnapshot(expected: string, options?: {
9836
+ /**
9837
+ * Time to retry the assertion for in milliseconds. Defaults to `timeout` in `TestConfig.expect`.
9838
+ */
9839
+ timeout?: number;
9840
+ }): Promise<void>;
9841
+
9842
+ /**
9843
+ * Asserts that the page body matches the given [accessibility snapshot](https://playwright.dev/docs/aria-snapshots).
9844
+ *
9845
+ * Snapshot is stored in a separate `.aria.yml` file in a location configured by
9846
+ * `expect.toMatchAriaSnapshot.pathTemplate` and/or `snapshotPathTemplate` properties in the configuration file.
9847
+ *
9848
+ * **Usage**
9849
+ *
9850
+ * ```js
9851
+ * await expect(page).toMatchAriaSnapshot();
9852
+ * await expect(page).toMatchAriaSnapshot({ name: 'home.aria.yml' });
9853
+ * ```
9854
+ *
9855
+ * @param options
9856
+ */
9857
+ toMatchAriaSnapshot(options?: {
9858
+ /**
9859
+ * Name of the snapshot to store in the snapshot folder corresponding to this test. Generates sequential names if not
9860
+ * specified.
9861
+ */
9862
+ name?: string;
9863
+
9864
+ /**
9865
+ * Time to retry the assertion for in milliseconds. Defaults to `timeout` in `TestConfig.expect`.
9866
+ */
9867
+ timeout?: number;
9868
+ }): Promise<void>;
9869
+
9870
+ /**
9871
+ * Makes the assertion check for the opposite condition.
9872
+ *
9873
+ * **Usage**
9874
+ *
9875
+ * For example, this code tests that the page URL doesn't contain `"error"`:
9722
9876
  *
9723
9877
  * ```js
9724
9878
  * await expect(page).not.toHaveURL('error');
@@ -9880,6 +10034,12 @@ export interface TestInfoError {
9880
10034
  */
9881
10035
  cause?: TestInfoError;
9882
10036
 
10037
+ /**
10038
+ * Additional context for the error, such as the aria snapshot of the receiver at the time of an `expect(...)` matcher
10039
+ * failure.
10040
+ */
10041
+ errorContext?: string;
10042
+
9883
10043
  /**
9884
10044
  * Error message. Set when [Error] (or its subclass) has been thrown.
9885
10045
  */
@@ -15,8 +15,8 @@
15
15
  * limitations under the License.
16
16
  */
17
17
 
18
- import type { TestStatus, Metadata, PlaywrightTestOptions, PlaywrightWorkerOptions, ReporterDescription, FullConfig, FullProject, Location } from './test';
19
- export type { FullConfig, FullProject, TestStatus, Location } from './test';
18
+ import type { TestStatus, Metadata, PlaywrightTestOptions, PlaywrightWorkerOptions, ReporterDescription, FullConfig, FullProject, Location, WorkerInfo } from './test';
19
+ export type { FullConfig, FullProject, TestStatus, Location, WorkerInfo } from './test';
20
20
 
21
21
  /**
22
22
  * Result of the full test run.
@@ -119,8 +119,8 @@ export interface FullResult {
119
119
  * [reporter.onStdOut(chunk, test, result)](https://playwright.dev/docs/api/class-reporter#reporter-on-std-out) and
120
120
  * [reporter.onStdErr(chunk, test, result)](https://playwright.dev/docs/api/class-reporter#reporter-on-std-err) are
121
121
  * called when standard output is produced in the worker process, possibly during a test execution, and
122
- * [reporter.onError(error)](https://playwright.dev/docs/api/class-reporter#reporter-on-error) is called when
123
- * something went wrong outside of the test execution.
122
+ * [reporter.onError(error[, workerInfo])](https://playwright.dev/docs/api/class-reporter#reporter-on-error) is called
123
+ * when something went wrong outside of the test execution.
124
124
  *
125
125
  * If your custom reporter does not print anything to the terminal, implement
126
126
  * [reporter.printsToStdio()](https://playwright.dev/docs/api/class-reporter#reporter-prints-to-stdio) and return
@@ -169,8 +169,10 @@ export interface Reporter {
169
169
  /**
170
170
  * Called on some global error, for example unhandled exception in the worker process.
171
171
  * @param error The error.
172
+ * @param workerInfo Contains information about the worker that produced this error. `undefined` for errors that are not associated with
173
+ * a specific worker.
172
174
  */
173
- onError?(error: TestError): void;
175
+ onError?(error: TestError, workerInfo?: WorkerInfo): void;
174
176
 
175
177
  /**
176
178
  * Called immediately before test runner exists. At this point all the reporters have received the