@checkly/playwright-core 1.41.26 → 1.42.11

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 (180) hide show
  1. package/ThirdPartyNotices.txt +3 -3
  2. package/bin/reinstall_chrome_beta_win.ps1 +2 -1
  3. package/bin/reinstall_chrome_stable_win.ps1 +2 -1
  4. package/bin/reinstall_msedge_beta_win.ps1 +2 -1
  5. package/bin/reinstall_msedge_dev_win.ps1 +2 -1
  6. package/bin/reinstall_msedge_stable_win.ps1 +2 -1
  7. package/browsers.json +14 -15
  8. package/cli.js +2 -1
  9. package/lib/checkly/fetch.js +28 -1
  10. package/lib/cli/cli.js +2 -1
  11. package/lib/cli/driver.js +9 -1
  12. package/lib/cli/program.js +12 -4
  13. package/lib/client/browserContext.js +1 -1
  14. package/lib/client/channelOwner.js +1 -1
  15. package/lib/client/clientHelper.js +5 -1
  16. package/lib/client/connection.js +1 -1
  17. package/lib/client/consoleMessage.js +1 -1
  18. package/lib/client/electron.js +3 -0
  19. package/lib/client/events.js +1 -0
  20. package/lib/client/frame.js +2 -1
  21. package/lib/client/harRouter.js +7 -1
  22. package/lib/client/page.js +25 -6
  23. package/lib/common/debugLogger.js +3 -1
  24. package/lib/common/socksProxy.js +1 -1
  25. package/lib/generated/consoleApiSource.js +1 -1
  26. package/lib/generated/injectedScriptSource.js +1 -1
  27. package/lib/generated/recorderSource.js +1 -1
  28. package/lib/outofprocess.js +1 -1
  29. package/lib/protocol/validator.js +60 -30
  30. package/lib/remote/playwrightConnection.js +1 -1
  31. package/lib/remote/playwrightServer.js +72 -166
  32. package/lib/server/android/android.js +1 -1
  33. package/lib/server/browserType.js +2 -2
  34. package/lib/server/chromium/chromium.js +5 -4
  35. package/lib/server/chromium/crConnection.js +1 -1
  36. package/lib/server/chromium/crNetworkManager.js +1 -3
  37. package/lib/server/chromium/crPage.js +45 -2
  38. package/lib/server/chromium/crPdf.js +8 -2
  39. package/lib/server/console.js +1 -3
  40. package/lib/server/debugController.js +0 -3
  41. package/lib/server/deviceDescriptorsSource.json +50 -50
  42. package/lib/server/dispatchers/browserContextDispatcher.js +3 -2
  43. package/lib/server/dispatchers/dispatcher.js +9 -10
  44. package/lib/server/dispatchers/electronDispatcher.js +13 -0
  45. package/lib/server/dispatchers/frameDispatcher.js +0 -6
  46. package/lib/server/dispatchers/networkDispatchers.js +1 -0
  47. package/lib/server/dispatchers/pageDispatcher.js +14 -10
  48. package/lib/server/dom.js +130 -167
  49. package/lib/server/electron/electron.js +38 -12
  50. package/lib/server/electron/loader.js +4 -2
  51. package/lib/server/fetch.js +1 -0
  52. package/lib/server/firefox/ffAccessibility.js +2 -1
  53. package/lib/server/firefox/ffConnection.js +1 -1
  54. package/lib/server/firefox/ffPage.js +1 -1
  55. package/lib/server/frames.js +39 -20
  56. package/lib/server/helper.js +1 -1
  57. package/lib/server/page.js +49 -5
  58. package/lib/server/pipeTransport.js +1 -1
  59. package/lib/server/playwright.js +1 -1
  60. package/lib/server/progress.js +3 -11
  61. package/lib/server/recorder/csharp.js +1 -1
  62. package/lib/server/recorder/java.js +36 -4
  63. package/lib/server/recorder.js +2 -2
  64. package/lib/server/registry/browserFetcher.js +1 -1
  65. package/lib/server/registry/dependencies.js +5 -4
  66. package/lib/server/registry/index.js +48 -30
  67. package/lib/server/registry/nativeDeps.js +0 -94
  68. package/lib/server/trace/recorder/snapshotter.js +1 -1
  69. package/lib/server/trace/recorder/tracing.js +5 -2
  70. package/lib/server/trace/viewer/traceViewer.js +1 -1
  71. package/lib/server/transport.js +4 -2
  72. package/lib/server/webkit/wkConnection.js +1 -1
  73. package/lib/server/webkit/wkPage.js +2 -2
  74. package/lib/utils/comparators.js +4 -4
  75. package/lib/utils/fileUtils.js +4 -0
  76. package/lib/utils/hostPlatform.js +1 -1
  77. package/lib/utils/index.js +33 -0
  78. package/lib/utils/isomorphic/locatorParser.js +6 -4
  79. package/lib/utils/isomorphic/stringUtils.js +5 -0
  80. package/lib/utils/network.js +32 -0
  81. package/lib/utils/processLauncher.js +7 -0
  82. package/lib/utils/rtti.js +7 -4
  83. package/lib/utils/wsServer.js +5 -3
  84. package/lib/utilsBundleImpl/index.js +4 -4
  85. package/lib/vite/htmlReport/index.html +11 -11
  86. package/lib/vite/{traceViewer/assets/codeMirrorModule-GJA8DRmd.js → recorder/assets/codeMirrorModule-W69B4LBB.js} +1 -1
  87. package/lib/vite/recorder/assets/{index-yg8ypzl6.js → index-Ly3PcVUb.js} +2 -2
  88. package/lib/vite/recorder/index.html +1 -1
  89. package/lib/vite/traceViewer/assets/{codeMirrorModule-2ImvVqMb.js → codeMirrorModule-BK3t1EEu.js} +1 -1
  90. package/lib/vite/traceViewer/assets/codeMirrorModule-cc2329e4.js +15593 -0
  91. package/lib/vite/traceViewer/assets/codeMirrorModule-d725feea.js +15586 -0
  92. package/lib/vite/traceViewer/assets/{codeMirrorModule-fqJB1XDu.js → codeMirrorModule-e5a15eec.js} +1 -1
  93. package/lib/vite/traceViewer/assets/codeMirrorModule-kT-uS7F4.js +15592 -0
  94. package/lib/vite/traceViewer/assets/codeMirrorModule-rcsC5no8.js +15592 -0
  95. package/lib/vite/traceViewer/assets/codeMirrorModule-yboVpgC0.js +15592 -0
  96. package/lib/vite/traceViewer/assets/codeMirrorModule-ytMY1awF.js +15585 -0
  97. package/lib/vite/traceViewer/assets/wsPort-54626118.js +18361 -0
  98. package/lib/vite/traceViewer/assets/{wsPort-uVqol1LI.js → wsPort-964mA9MZ.js} +18 -18
  99. package/lib/vite/traceViewer/assets/wsPort-CAXygIGt.js +18540 -0
  100. package/lib/vite/traceViewer/assets/wsPort-a88a6a12.js +18361 -0
  101. package/lib/vite/traceViewer/assets/{wsPort-722747dc.js → wsPort-cb764cde.js} +1 -1
  102. package/lib/vite/traceViewer/assets/wsPort-lTlmZhJd.js +18564 -0
  103. package/lib/vite/traceViewer/assets/wsPort-xpIMLVfx.js +18540 -0
  104. package/lib/vite/traceViewer/assets/wsPort-yM58htfg.js +18360 -0
  105. package/lib/vite/traceViewer/assets/xtermModule-60687b6b.js +6410 -0
  106. package/lib/vite/traceViewer/assets/xtermModule-_6TC5FYT.js +6529 -0
  107. package/lib/vite/traceViewer/codeMirrorModule.eb494ea9.css +344 -0
  108. package/lib/vite/traceViewer/codeMirrorModule.svF_VrcJ.css +344 -0
  109. package/lib/vite/traceViewer/{index.0d08c336.js → index.4a8ee36e.js} +1 -1
  110. package/lib/vite/traceViewer/index.55e65778.js +181 -0
  111. package/lib/vite/traceViewer/index.5mge2rY_.css +124 -0
  112. package/lib/vite/traceViewer/index.5nqVcfiC.js +180 -0
  113. package/lib/vite/traceViewer/index.742fd3e5.js +181 -0
  114. package/lib/vite/traceViewer/index.76e9f312.css +124 -0
  115. package/lib/vite/traceViewer/{index.LR1HufLs.js → index.cbtHmFgM.js} +1 -1
  116. package/lib/vite/traceViewer/index.html +3 -3
  117. package/lib/vite/traceViewer/index.ici1bqta.js +180 -0
  118. package/lib/vite/traceViewer/index.mxOcKqpu.js +180 -0
  119. package/lib/vite/traceViewer/index.zXVxM5ps.js +180 -0
  120. package/lib/vite/traceViewer/sw.bundle.js +4 -4
  121. package/lib/vite/traceViewer/uiMode.216233d5.js +1484 -0
  122. package/lib/vite/traceViewer/uiMode.2c31018f.css +1324 -0
  123. package/lib/vite/traceViewer/{uiMode.c1ebfc43.js → uiMode.468b0309.js} +1 -1
  124. package/lib/vite/traceViewer/uiMode.67C8Ij-c.js +1490 -0
  125. package/lib/vite/traceViewer/uiMode.F_k6a2aC.js +1488 -0
  126. package/lib/vite/traceViewer/uiMode.NjZAwD_B.js +1485 -0
  127. package/lib/vite/traceViewer/uiMode.YQRCZjm8.js +1485 -0
  128. package/lib/vite/traceViewer/uiMode.b2068d00.js +1484 -0
  129. package/lib/vite/traceViewer/uiMode.e-PLonGl.js +1490 -0
  130. package/lib/vite/traceViewer/{uiMode.PlLkrJDI.js → uiMode.fcU_T5Nf.js} +1 -1
  131. package/lib/vite/traceViewer/uiMode.html +3 -3
  132. package/lib/vite/traceViewer/uiMode.xvJHbkzl.css +1324 -0
  133. package/lib/vite/traceViewer/uiMode.ybQP_6Xr.js +10 -0
  134. package/lib/vite/traceViewer/wsPort.997c92cf.css +3513 -0
  135. package/lib/vite/traceViewer/wsPort.Oa05jfrO.css +3513 -0
  136. package/lib/vite/traceViewer/wsPort.p5jUwABW.css +3450 -0
  137. package/lib/vite/traceViewer/xtermModule.125f4259.css +191 -0
  138. package/lib/vite/traceViewer/xtermModule.OKEVRlkP.css +209 -0
  139. package/package.json +6 -5
  140. package/types/protocol.d.ts +367 -53
  141. package/types/types.d.ts +220 -50
  142. package/LICENSE +0 -202
  143. package/NOTICE +0 -5
  144. package/lib/vite/recorder/assets/codeMirrorModule-I9ks4y7D.js +0 -24
  145. package/lib/vite/traceViewer/assets/codeMirrorModule-2mdjgmqe.js +0 -24
  146. package/lib/vite/traceViewer/assets/codeMirrorModule-56536a77.js +0 -24
  147. package/lib/vite/traceViewer/assets/codeMirrorModule-A2_PGeGB.js +0 -24
  148. package/lib/vite/traceViewer/assets/codeMirrorModule-GluP1cQ1.js +0 -24
  149. package/lib/vite/traceViewer/assets/codeMirrorModule-aUzO-LID.js +0 -24
  150. package/lib/vite/traceViewer/assets/codeMirrorModule-b361a51f.js +0 -24
  151. package/lib/vite/traceViewer/assets/codeMirrorModule-f333a775.js +0 -24
  152. package/lib/vite/traceViewer/assets/codeMirrorModule-y3M3aAqy.js +0 -24
  153. package/lib/vite/traceViewer/assets/wsPort-762c6840.js +0 -64
  154. package/lib/vite/traceViewer/assets/wsPort-93o0i57c.js +0 -69
  155. package/lib/vite/traceViewer/assets/wsPort-L8WBvZfK.js +0 -69
  156. package/lib/vite/traceViewer/assets/wsPort-Rvwd4WC-.js +0 -69
  157. package/lib/vite/traceViewer/assets/wsPort-db501ca9.js +0 -64
  158. package/lib/vite/traceViewer/assets/wsPort-dlD7vDkY.js +0 -69
  159. package/lib/vite/traceViewer/assets/wsPort-qI0zJPR7.js +0 -69
  160. package/lib/vite/traceViewer/assets/wsPort-qOE2NWrO.js +0 -69
  161. package/lib/vite/traceViewer/assets/wsPort-sh0wpjYp.js +0 -69
  162. package/lib/vite/traceViewer/index.4X7zDysg.js +0 -2
  163. package/lib/vite/traceViewer/index.4xhUWj1f.js +0 -2
  164. package/lib/vite/traceViewer/index.HkJgzlGy.js +0 -2
  165. package/lib/vite/traceViewer/index.Ox-CymYJ.js +0 -2
  166. package/lib/vite/traceViewer/index.d05939c9.js +0 -2
  167. package/lib/vite/traceViewer/index.ed9a3c58.js +0 -2
  168. package/lib/vite/traceViewer/index.kRjx5sAJ.js +0 -2
  169. package/lib/vite/traceViewer/index.krETyIB_.js +0 -2
  170. package/lib/vite/traceViewer/index.o6j3Cv4u.js +0 -2
  171. package/lib/vite/traceViewer/uiMode.1Wcp_Kto.js +0 -10
  172. package/lib/vite/traceViewer/uiMode.3ff70f7d.js +0 -4
  173. package/lib/vite/traceViewer/uiMode.8e0454c4.js +0 -4
  174. package/lib/vite/traceViewer/uiMode.GTNzARcV.js +0 -10
  175. package/lib/vite/traceViewer/uiMode.Rcwfn0db.js +0 -10
  176. package/lib/vite/traceViewer/uiMode.YGPXSUMv.js +0 -10
  177. package/lib/vite/traceViewer/uiMode.YYFJGvtV.js +0 -10
  178. package/lib/vite/traceViewer/uiMode.qpn6w4df.js +0 -10
  179. package/lib/vite/traceViewer/uiMode.zV-7Lf9v.js +0 -10
  180. package/lib/vite/traceViewer/wsPort.kSgQKQ0y.css +0 -1
@@ -23,7 +23,7 @@ This project incorporates components from the projects listed below. The origina
23
23
  - get-stream@5.2.0 (https://github.com/sindresorhus/get-stream)
24
24
  - graceful-fs@4.2.10 (https://github.com/isaacs/node-graceful-fs)
25
25
  - https-proxy-agent@5.0.0 (https://github.com/TooTallNate/node-https-proxy-agent)
26
- - ip@2.0.0 (https://github.com/indutny/node-ip)
26
+ - ip@2.0.1 (https://github.com/indutny/node-ip)
27
27
  - is-docker@2.2.1 (https://github.com/sindresorhus/is-docker)
28
28
  - is-wsl@2.2.0 (https://github.com/sindresorhus/is-wsl)
29
29
  - jpeg-js@0.4.4 (https://github.com/eugeneware/jpeg-js)
@@ -740,7 +740,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
740
740
  =========================================
741
741
  END OF https-proxy-agent@5.0.0 AND INFORMATION
742
742
 
743
- %% ip@2.0.0 NOTICES AND INFORMATION BEGIN HERE
743
+ %% ip@2.0.1 NOTICES AND INFORMATION BEGIN HERE
744
744
  =========================================
745
745
  # IP
746
746
  [![](https://badge.fury.io/js/ip.svg)](https://www.npmjs.com/package/ip)
@@ -833,7 +833,7 @@ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
833
833
  OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
834
834
  USE OR OTHER DEALINGS IN THE SOFTWARE.
835
835
  =========================================
836
- END OF ip@2.0.0 AND INFORMATION
836
+ END OF ip@2.0.1 AND INFORMATION
837
837
 
838
838
  %% is-docker@2.2.1 NOTICES AND INFORMATION BEGIN HERE
839
839
  =========================================
@@ -18,6 +18,7 @@ if (Test-Path "${env:ProgramFiles(x86)}$suffix") {
18
18
  } elseif (Test-Path "${env:ProgramFiles}$suffix") {
19
19
  (Get-Item "${env:ProgramFiles}$suffix").VersionInfo
20
20
  } else {
21
- Write-Host "ERROR: failed to install Google Chrome Beta"
21
+ Write-Host "ERROR: Failed to install Google Chrome Beta."
22
+ Write-Host "ERROR: This could be due to insufficient privileges, in which case re-running as Administrator may help."
22
23
  exit 1
23
24
  }
@@ -18,6 +18,7 @@ if (Test-Path "${env:ProgramFiles(x86)}$suffix") {
18
18
  } elseif (Test-Path "${env:ProgramFiles}$suffix") {
19
19
  (Get-Item "${env:ProgramFiles}$suffix").VersionInfo
20
20
  } else {
21
- Write-Host "ERROR: failed to install Google Chrome"
21
+ Write-Host "ERROR: Failed to install Google Chrome."
22
+ Write-Host "ERROR: This could be due to insufficient privileges, in which case re-running as Administrator may help."
22
23
  exit 1
23
24
  }
@@ -17,6 +17,7 @@ if (Test-Path "${env:ProgramFiles(x86)}$suffix") {
17
17
  } elseif (Test-Path "${env:ProgramFiles}$suffix") {
18
18
  (Get-Item "${env:ProgramFiles}$suffix").VersionInfo
19
19
  } else {
20
- Write-Host "ERROR: failed to install Microsoft Edge"
20
+ Write-Host "ERROR: Failed to install Microsoft Edge Beta."
21
+ Write-Host "ERROR: This could be due to insufficient privileges, in which case re-running as Administrator may help."
21
22
  exit 1
22
23
  }
@@ -17,6 +17,7 @@ if (Test-Path "${env:ProgramFiles(x86)}$suffix") {
17
17
  } elseif (Test-Path "${env:ProgramFiles}$suffix") {
18
18
  (Get-Item "${env:ProgramFiles}$suffix").VersionInfo
19
19
  } else {
20
- Write-Host "ERROR: failed to install Microsoft Edge"
20
+ Write-Host "ERROR: Failed to install Microsoft Edge Dev."
21
+ Write-Host "ERROR: This could be due to insufficient privileges, in which case re-running as Administrator may help."
21
22
  exit 1
22
23
  }
@@ -18,6 +18,7 @@ if (Test-Path "${env:ProgramFiles(x86)}$suffix") {
18
18
  } elseif (Test-Path "${env:ProgramFiles}$suffix") {
19
19
  (Get-Item "${env:ProgramFiles}$suffix").VersionInfo
20
20
  } else {
21
- Write-Host "ERROR: failed to install Microsoft Edge"
21
+ Write-Host "ERROR: Failed to install Microsoft Edge."
22
+ Write-Host "ERROR: This could be due to insufficient privileges, in which case re-running as Administrator may help."
22
23
  exit 1
23
24
  }
package/browsers.json CHANGED
@@ -3,50 +3,49 @@
3
3
  "browsers": [
4
4
  {
5
5
  "name": "chromium",
6
- "revision": "1097",
6
+ "revision": "1105",
7
7
  "installByDefault": true,
8
- "browserVersion": "121.0.6167.57"
8
+ "browserVersion": "123.0.6312.4"
9
9
  },
10
10
  {
11
11
  "name": "chromium-with-symbols",
12
- "revision": "1097",
12
+ "revision": "1105",
13
13
  "installByDefault": false,
14
- "browserVersion": "121.0.6167.57"
14
+ "browserVersion": "123.0.6312.4"
15
15
  },
16
16
  {
17
17
  "name": "chromium-tip-of-tree",
18
- "revision": "1184",
18
+ "revision": "1195",
19
19
  "installByDefault": false,
20
- "browserVersion": "122.0.6240.0"
20
+ "browserVersion": "123.0.6312.0"
21
21
  },
22
22
  {
23
23
  "name": "firefox",
24
- "revision": "1438",
24
+ "revision": "1440",
25
25
  "installByDefault": true,
26
- "browserVersion": "121.0"
26
+ "browserVersion": "123.0"
27
27
  },
28
28
  {
29
29
  "name": "firefox-asan",
30
- "revision": "1438",
30
+ "revision": "1440",
31
31
  "installByDefault": false,
32
- "browserVersion": "121.0"
32
+ "browserVersion": "123.0"
33
33
  },
34
34
  {
35
35
  "name": "firefox-beta",
36
- "revision": "1437",
36
+ "revision": "1440",
37
37
  "installByDefault": false,
38
- "browserVersion": "121.0b8"
38
+ "browserVersion": "124.0b3"
39
39
  },
40
40
  {
41
41
  "name": "webkit",
42
- "revision": "1967",
42
+ "revision": "1983",
43
43
  "installByDefault": true,
44
44
  "revisionOverrides": {
45
45
  "mac10.14": "1446",
46
46
  "mac10.15": "1616",
47
47
  "mac11": "1816",
48
- "mac11-arm64": "1816",
49
- "ubuntu18.04-x64": "1728"
48
+ "mac11-arm64": "1816"
50
49
  },
51
50
  "browserVersion": "17.4"
52
51
  },
package/cli.js CHANGED
@@ -14,4 +14,5 @@
14
14
  * See the License for the specific language governing permissions and
15
15
  * limitations under the License.
16
16
  */
17
- module.exports = require('playwright-core/lib/cli/cli');
17
+ const { program } = require('./lib/cli/programWithTestStub');
18
+ program.parse(process.argv);
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.setSWatcherCurrentStepData = exports.parseQueryParameters = exports.initializeTimings = exports.getTimings = exports.getRequestHeaders = exports.getClientCertificates = exports.getBody = exports.addRequestListeners = void 0;
6
+ exports.setSWatcherCurrentStepData = exports.parseQueryParameters = exports.initializeTimings = exports.getTimings = exports.getRequestHeaders = exports.getRequestBody = exports.getClientCertificates = exports.getBody = exports.addRequestListeners = void 0;
7
7
  /**
8
8
  * Get client custom certificates.
9
9
  *
@@ -37,6 +37,33 @@ const getRequestHeaders = headers => {
37
37
  });
38
38
  };
39
39
  exports.getRequestHeaders = getRequestHeaders;
40
+ const getRequestBody = (postData, multipartData, options) => {
41
+ const requestBody = {};
42
+ if (postData) {
43
+ requestBody.data = getBody(postData);
44
+ } else if (multipartData && multipartData.length > 0) {
45
+ requestBody.multipart = multipartData.map(field => {
46
+ var _field$file, _field$file2, _field$file3;
47
+ const multiPartBuffer = getBody(((_field$file = field.file) === null || _field$file === void 0 ? void 0 : _field$file.buffer) || Buffer.from(''));
48
+ return {
49
+ name: field.name,
50
+ value: field.value,
51
+ file: {
52
+ name: (_field$file2 = field.file) === null || _field$file2 === void 0 ? void 0 : _field$file2.name,
53
+ mimeType: (_field$file3 = field.file) === null || _field$file3 === void 0 ? void 0 : _field$file3.mimeType,
54
+ buffer: multiPartBuffer
55
+ }
56
+ };
57
+ });
58
+ }
59
+ for (const [key, value] of Object.entries(options)) {
60
+ if (key !== 'headers' && key !== 'method') {
61
+ requestBody[key] = value;
62
+ }
63
+ }
64
+ return requestBody;
65
+ };
66
+ exports.getRequestBody = getRequestBody;
40
67
  const parseQueryParameters = url => {
41
68
  const searchParams = new URL(url).searchParams;
42
69
  const parameters = [];
package/lib/cli/cli.js CHANGED
@@ -58,4 +58,5 @@ function addExternalPlaywrightTestCommands() {
58
58
  }
59
59
  }
60
60
  if (!process.env.PW_LANG_NAME) addExternalPlaywrightTestCommands();
61
- _program.default.parse(process.argv);
61
+ _program.default.parse(process.argv);
62
+ //# sourceMappingURL=cli.js.map
package/lib/cli/driver.js CHANGED
@@ -50,7 +50,15 @@ function runDriver() {
50
50
  });
51
51
  const transport = new _transport.PipeTransport(process.stdout, process.stdin);
52
52
  transport.onmessage = message => dispatcherConnection.dispatch(JSON.parse(message));
53
- dispatcherConnection.onmessage = message => transport.send(JSON.stringify(message));
53
+ // Certain Language Binding JSON parsers (e.g. .NET) do not like strings with lone surrogates.
54
+ const isJavaScriptLanguageBinding = !process.env.PW_LANG_NAME || process.env.PW_LANG_NAME === 'javascript';
55
+ const replacer = !isJavaScriptLanguageBinding && String.prototype.toWellFormed ? (key, value) => {
56
+ if (typeof value === 'string')
57
+ // @ts-expect-error
58
+ return value.toWellFormed();
59
+ return value;
60
+ } : undefined;
61
+ dispatcherConnection.onmessage = message => transport.send(JSON.stringify(message, replacer));
54
62
  transport.onclose = () => {
55
63
  // Drop any messages during shutdown on the floor.
56
64
  dispatcherConnection.onmessage = () => {};
@@ -3,7 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = void 0;
6
+ Object.defineProperty(exports, "program", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _utilsBundle.program;
10
+ }
11
+ });
7
12
  var _fs = _interopRequireDefault(require("fs"));
8
13
  var _os = _interopRequireDefault(require("os"));
9
14
  var _path = _interopRequireDefault(require("path"));
@@ -51,7 +56,7 @@ Examples:
51
56
 
52
57
  $ open
53
58
  $ open -b webkit https://example.com`);
54
- commandWithOpenOptions('codegen [url]', 'open page and generate code for user actions', [['-o, --output <file name>', 'saves the generated script to a file'], ['--target <language>', `language to generate, one of javascript, playwright-test, python, python-async, python-pytest, csharp, csharp-mstest, csharp-nunit, java`, codegenId()], ['--save-trace <filename>', 'record a trace for the session and save it to a file'], ['--test-id-attribute <attributeName>', 'use the specified attribute to generate data test ID selectors']]).action(function (url, options) {
59
+ commandWithOpenOptions('codegen [url]', 'open page and generate code for user actions', [['-o, --output <file name>', 'saves the generated script to a file'], ['--target <language>', `language to generate, one of javascript, playwright-test, python, python-async, python-pytest, csharp, csharp-mstest, csharp-nunit, java, java-junit`, codegenId()], ['--save-trace <filename>', 'record a trace for the session and save it to a file'], ['--test-id-attribute <attributeName>', 'use the specified attribute to generate data test ID selectors']]).action(function (url, options) {
55
60
  codegen(options, url).catch(logErrorAndExit);
56
61
  }).addHelpText('afterAll', `
57
62
  Examples:
@@ -111,6 +116,10 @@ _utilsBundle.program.command('install [browser...]').description('ensure browser
111
116
  } else {
112
117
  const forceReinstall = hasNoArguments ? false : !!options.force;
113
118
  await _server.registry.install(executables, forceReinstall);
119
+ await _server.registry.validateHostRequirementsForExecutablesIfNeeded(executables, process.env.PW_LANG_NAME || 'javascript').catch(e => {
120
+ e.name = 'Playwright Host validation warning';
121
+ console.error(e);
122
+ });
114
123
  }
115
124
  } catch (e) {
116
125
  console.log(`Failed to install browsers\n${e}`);
@@ -570,5 +579,4 @@ function buildBasePlaywrightCLICommand(cliTargetLang) {
570
579
  return `${packageManagerCommand} playwright`;
571
580
  }
572
581
  }
573
- }
574
- var _default = exports.default = _utilsBundle.program;
582
+ }
@@ -504,6 +504,6 @@ async function prepareBrowserContextParams(options) {
504
504
  }
505
505
  function toAcceptDownloadsProtocol(acceptDownloads) {
506
506
  if (acceptDownloads === undefined) return undefined;
507
- if (acceptDownloads === true) return 'accept';
507
+ if (acceptDownloads) return 'accept';
508
508
  return 'deny';
509
509
  }
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.ChannelOwner = void 0;
7
7
  var _events = require("events");
8
8
  var _validator = require("../protocol/validator");
9
- var _debugLogger = require("../common/debugLogger");
9
+ var _debugLogger = require("../utils/debugLogger");
10
10
  var _stackTrace = require("../utils/stackTrace");
11
11
  var _utils = require("../utils");
12
12
  var _zones = require("../utils/zones");
@@ -3,6 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.addSourceUrlToScript = addSourceUrlToScript;
6
7
  exports.envObjectToArray = envObjectToArray;
7
8
  exports.evaluationScript = evaluationScript;
8
9
  var _fs = _interopRequireDefault(require("fs"));
@@ -46,8 +47,11 @@ async function evaluationScript(fun, arg, addSourceUrl = true) {
46
47
  if (fun.content !== undefined) return fun.content;
47
48
  if (fun.path !== undefined) {
48
49
  let source = await _fs.default.promises.readFile(fun.path, 'utf8');
49
- if (addSourceUrl) source += '\n//# sourceURL=' + fun.path.replace(/\n/g, '');
50
+ if (addSourceUrl) source = addSourceUrlToScript(source, fun.path);
50
51
  return source;
51
52
  }
52
53
  throw new Error('Either path or content property must be present');
54
+ }
55
+ function addSourceUrlToScript(source, path) {
56
+ return `${source}\n//# sourceURL=${path.replace(/\n/g, '')}`;
53
57
  }
@@ -21,7 +21,7 @@ var _playwright = require("./playwright");
21
21
  var _electron = require("./electron");
22
22
  var _stream = require("./stream");
23
23
  var _writableStream = require("./writableStream");
24
- var _debugLogger = require("../common/debugLogger");
24
+ var _debugLogger = require("../utils/debugLogger");
25
25
  var _selectors = require("./selectors");
26
26
  var _android = require("./android");
27
27
  var _artifact = require("./artifact");
@@ -30,7 +30,7 @@ class ConsoleMessage {
30
30
  constructor(event) {
31
31
  this._page = void 0;
32
32
  this._event = void 0;
33
- this._page = event.page ? _page.Page.from(event.page) : null;
33
+ this._page = 'page' in event && event.page ? _page.Page.from(event.page) : null;
34
34
  this._event = event;
35
35
  }
36
36
  page() {
@@ -10,6 +10,7 @@ var _channelOwner = require("./channelOwner");
10
10
  var _clientHelper = require("./clientHelper");
11
11
  var _events = require("./events");
12
12
  var _jsHandle = require("./jsHandle");
13
+ var _consoleMessage = require("./consoleMessage");
13
14
  var _waiter = require("./waiter");
14
15
  var _errors = require("./errors");
15
16
  let _Symbol$asyncDispose;
@@ -65,6 +66,8 @@ class ElectronApplication extends _channelOwner.ChannelOwner {
65
66
  this._isClosed = true;
66
67
  this.emit(_events.Events.ElectronApplication.Close);
67
68
  });
69
+ this._channel.on('console', event => this.emit(_events.Events.ElectronApplication.Console, new _consoleMessage.ConsoleMessage(event)));
70
+ this._setEventToSubscriptionMapping(new Map([[_events.Events.ElectronApplication.Console, 'console']]));
68
71
  }
69
72
  process() {
70
73
  return this._toImpl().process();
@@ -88,6 +88,7 @@ const Events = exports.Events = {
88
88
  },
89
89
  ElectronApplication: {
90
90
  Close: 'close',
91
+ Console: 'console',
91
92
  Window: 'window'
92
93
  }
93
94
  };
@@ -18,6 +18,7 @@ var _waiter = require("./waiter");
18
18
  var _events2 = require("./events");
19
19
  var _types = require("./types");
20
20
  var _network2 = require("../utils/network");
21
+ var _clientHelper = require("./clientHelper");
21
22
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
22
23
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
23
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -270,7 +271,7 @@ class Frame extends _channelOwner.ChannelOwner {
270
271
  };
271
272
  if (copy.path) {
272
273
  copy.content = (await _fs.default.promises.readFile(copy.path)).toString();
273
- copy.content += '//# sourceURL=' + copy.path.replace(/\n/g, '');
274
+ copy.content = (0, _clientHelper.addSourceUrlToScript)(copy.content, copy.path);
274
275
  }
275
276
  return _elementHandle.ElementHandle.from((await this._channel.addScriptTag({
276
277
  ...copy
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.HarRouter = void 0;
7
- var _debugLogger = require("../common/debugLogger");
7
+ var _debugLogger = require("../utils/debugLogger");
8
8
  let _Symbol$asyncDispose;
9
9
  /**
10
10
  * Copyright (c) Microsoft Corporation.
@@ -59,6 +59,12 @@ class HarRouter {
59
59
  return;
60
60
  }
61
61
  if (response.action === 'fulfill') {
62
+ // If the response status is -1, the request was canceled or stalled, so we just stall it here.
63
+ // See https://github.com/microsoft/playwright/issues/29311.
64
+ // TODO: it'd be better to abort such requests, but then we likely need to respect the timing,
65
+ // because the request might have been stalled for a long time until the very end of the
66
+ // test when HAR was recorded but we'd abort it immediately.
67
+ if (response.status === -1) return;
62
68
  await route.fulfill({
63
69
  status: response.status,
64
70
  headers: Object.fromEntries(response.headers.map(h => [h.name, h.value])),
@@ -79,6 +79,7 @@ class Page extends _channelOwner.ChannelOwner {
79
79
  this._closeReason = void 0;
80
80
  this._closeWasCalled = false;
81
81
  this._harRouters = [];
82
+ this._locatorHandlers = new Map();
82
83
  this._browserContext = parent;
83
84
  this._timeoutSettings = new _timeoutSettings.TimeoutSettings(this._browserContext._timeoutSettings);
84
85
  this.accessibility = new _accessibility.Accessibility(this._channel);
@@ -115,6 +116,9 @@ class Page extends _channelOwner.ChannelOwner {
115
116
  this._channel.on('frameDetached', ({
116
117
  frame
117
118
  }) => this._onFrameDetached(_frame.Frame.from(frame)));
119
+ this._channel.on('locatorHandlerTriggered', ({
120
+ uid
121
+ }) => this._onLocatorHandlerTriggered(uid));
118
122
  this._channel.on('route', ({
119
123
  route
120
124
  }) => this._onRoute(_network2.Route.from(route)));
@@ -304,6 +308,25 @@ class Page extends _channelOwner.ChannelOwner {
304
308
  waitUntil
305
309
  })).response);
306
310
  }
311
+ async addLocatorHandler(locator, handler) {
312
+ if (locator._frame !== this._mainFrame) throw new Error(`Locator must belong to the main frame of this page`);
313
+ const {
314
+ uid
315
+ } = await this._channel.registerLocatorHandler({
316
+ selector: locator._selector
317
+ });
318
+ this._locatorHandlers.set(uid, handler);
319
+ }
320
+ async _onLocatorHandlerTriggered(uid) {
321
+ try {
322
+ const handler = this._locatorHandlers.get(uid);
323
+ await (handler === null || handler === void 0 ? void 0 : handler());
324
+ } finally {
325
+ this._wrapApiCall(() => this._channel.resolveLocatorHandlerNoReply({
326
+ uid
327
+ }), true).catch(() => {});
328
+ }
329
+ }
307
330
  async waitForLoadState(state, options) {
308
331
  return await this._mainFrame.waitForLoadState(state, options);
309
332
  }
@@ -462,8 +485,7 @@ class Page extends _channelOwner.ChannelOwner {
462
485
  return result.binary;
463
486
  }
464
487
  async _expectScreenshot(options) {
465
- var _options$screenshotOp, _options$screenshotOp2;
466
- const mask = (_options$screenshotOp = options.screenshotOptions) !== null && _options$screenshotOp !== void 0 && _options$screenshotOp.mask ? (_options$screenshotOp2 = options.screenshotOptions) === null || _options$screenshotOp2 === void 0 ? void 0 : _options$screenshotOp2.mask.map(locator => ({
488
+ const mask = options !== null && options !== void 0 && options.mask ? options === null || options === void 0 ? void 0 : options.mask.map(locator => ({
467
489
  frame: locator._frame._channel,
468
490
  selector: locator._selector
469
491
  })) : undefined;
@@ -475,10 +497,7 @@ class Page extends _channelOwner.ChannelOwner {
475
497
  ...options,
476
498
  isNot: !!options.isNot,
477
499
  locator,
478
- screenshotOptions: {
479
- ...options.screenshotOptions,
480
- mask
481
- }
500
+ mask
482
501
  });
483
502
  }
484
503
  async title() {
@@ -46,6 +46,7 @@ const debugLoggerColorMap = {
46
46
  // green
47
47
  'server:metadata': 33 // blue
48
48
  };
49
+
49
50
  class DebugLogger {
50
51
  constructor() {
51
52
  this._debuggers = new Map();
@@ -86,4 +87,5 @@ class RecentLogsCollector {
86
87
  return this._logs;
87
88
  }
88
89
  }
89
- exports.RecentLogsCollector = RecentLogsCollector;
90
+ exports.RecentLogsCollector = RecentLogsCollector;
91
+ //# sourceMappingURL=debugLogger.js.map
@@ -7,7 +7,7 @@ exports.SocksProxyHandler = exports.SocksProxy = void 0;
7
7
  exports.parsePattern = parsePattern;
8
8
  var _events = _interopRequireDefault(require("events"));
9
9
  var _net = _interopRequireDefault(require("net"));
10
- var _debugLogger = require("./debugLogger");
10
+ var _debugLogger = require("../utils/debugLogger");
11
11
  var _happyEyeballs = require("../utils/happy-eyeballs");
12
12
  var _utils = require("../utils");
13
13
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }