patchright-core 1.50.1 → 1.51.1

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 (242) hide show
  1. package/ThirdPartyNotices.txt +1 -43
  2. package/browsers.json +22 -10
  3. package/index.js +0 -1
  4. package/lib/androidServerImpl.js +4 -4
  5. package/lib/browserServerImpl.js +18 -9
  6. package/lib/cli/driver.js +6 -6
  7. package/lib/cli/program.js +9 -9
  8. package/lib/cli/programWithTestStub.js +2 -1
  9. package/lib/client/android.js +37 -58
  10. package/lib/client/artifact.js +4 -7
  11. package/lib/client/browser.js +10 -15
  12. package/lib/client/browserContext.js +77 -73
  13. package/lib/client/browserType.js +30 -64
  14. package/lib/client/channelOwner.js +23 -20
  15. package/lib/client/clientHelper.js +5 -7
  16. package/lib/client/clientStackTrace.js +65 -0
  17. package/lib/client/connection.js +46 -39
  18. package/lib/client/consoleMessage.js +4 -7
  19. package/lib/client/electron.js +10 -10
  20. package/lib/client/elementHandle.js +32 -33
  21. package/lib/client/errors.js +2 -2
  22. package/lib/client/eventEmitter.js +5 -8
  23. package/lib/client/fetch.js +60 -61
  24. package/lib/client/fileUtils.js +31 -0
  25. package/lib/client/frame.js +30 -29
  26. package/lib/client/harRouter.js +7 -9
  27. package/lib/client/jsHandle.js +3 -4
  28. package/lib/client/localUtils.js +24 -0
  29. package/lib/client/locator.js +37 -18
  30. package/lib/client/network.js +40 -40
  31. package/lib/client/page.js +59 -55
  32. package/lib/client/platform.js +71 -0
  33. package/lib/client/playwright.js +21 -1
  34. package/lib/client/selectors.js +8 -2
  35. package/lib/client/stream.js +2 -21
  36. package/lib/client/timeoutSettings.js +65 -0
  37. package/lib/client/tracing.js +10 -7
  38. package/lib/client/video.js +2 -2
  39. package/lib/client/waiter.js +5 -6
  40. package/lib/client/webSocket.js +106 -0
  41. package/lib/client/worker.js +12 -10
  42. package/lib/client/writableStream.js +2 -21
  43. package/lib/generated/consoleApiSource.js +1 -1
  44. package/lib/generated/injectedScriptSource.js +1 -1
  45. package/lib/inProcessFactory.js +6 -3
  46. package/lib/outofprocess.js +12 -8
  47. package/lib/protocol/validator.js +64 -13
  48. package/lib/protocol/validatorPrimitives.js +1 -2
  49. package/lib/remote/playwrightConnection.js +18 -10
  50. package/lib/remote/playwrightServer.js +20 -7
  51. package/lib/server/android/android.js +17 -14
  52. package/lib/server/android/backendAdb.js +14 -14
  53. package/lib/server/artifact.js +3 -3
  54. package/lib/server/bidi/bidiBrowser.js +2 -2
  55. package/lib/server/bidi/bidiChromium.js +4 -3
  56. package/lib/server/bidi/bidiConnection.js +1 -1
  57. package/lib/server/bidi/bidiExecutionContext.js +70 -40
  58. package/lib/server/bidi/bidiFirefox.js +4 -3
  59. package/lib/server/bidi/bidiInput.js +5 -8
  60. package/lib/server/bidi/bidiNetworkManager.js +3 -3
  61. package/lib/server/bidi/bidiOverCdp.js +2 -2
  62. package/lib/server/bidi/bidiPage.js +30 -46
  63. package/lib/server/bidi/third_party/firefoxPrefs.js +19 -3
  64. package/lib/server/browser.js +2 -2
  65. package/lib/server/browserContext.js +37 -40
  66. package/lib/server/browserType.js +18 -17
  67. package/lib/{utils/sequence.js → server/callLog.js} +18 -3
  68. package/lib/server/chromium/chromium.js +14 -14
  69. package/lib/server/chromium/chromiumSwitches.js +32 -1
  70. package/lib/server/chromium/crBrowser.js +15 -14
  71. package/lib/server/chromium/crConnection.js +2 -2
  72. package/lib/server/chromium/crCoverage.js +1 -1
  73. package/lib/server/chromium/crDevTools.js +1 -1
  74. package/lib/server/chromium/crDragDrop.js +1 -1
  75. package/lib/server/chromium/crExecutionContext.js +25 -17
  76. package/lib/server/chromium/crInput.js +2 -2
  77. package/lib/server/chromium/crNetworkManager.js +73 -26
  78. package/lib/server/chromium/crPage.js +22 -23
  79. package/lib/server/chromium/crPdf.js +1 -1
  80. package/lib/server/chromium/crProtocolHelper.js +3 -3
  81. package/lib/server/chromium/crServiceWorker.js +2 -2
  82. package/lib/server/chromium/videoRecorder.js +2 -2
  83. package/lib/server/clock.js +1 -1
  84. package/lib/server/codegen/javascript.js +1 -1
  85. package/lib/server/codegen/languages.js +2 -2
  86. package/lib/server/debugController.js +3 -3
  87. package/lib/server/deviceDescriptors.js +1 -1
  88. package/lib/server/deviceDescriptorsSource.json +131 -131
  89. package/lib/server/dispatchers/androidDispatcher.js +1 -1
  90. package/lib/server/dispatchers/artifactDispatcher.js +3 -3
  91. package/lib/server/dispatchers/browserContextDispatcher.js +19 -19
  92. package/lib/server/dispatchers/browserTypeDispatcher.js +1 -1
  93. package/lib/server/dispatchers/cdpSessionDispatcher.js +1 -1
  94. package/lib/server/dispatchers/dispatcher.js +27 -25
  95. package/lib/server/dispatchers/electronDispatcher.js +3 -3
  96. package/lib/server/dispatchers/elementHandlerDispatcher.js +7 -2
  97. package/lib/server/dispatchers/frameDispatcher.js +4 -4
  98. package/lib/server/dispatchers/jsHandleDispatcher.js +2 -2
  99. package/lib/server/dispatchers/jsonPipeDispatcher.js +2 -2
  100. package/lib/server/dispatchers/localUtilsDispatcher.js +25 -298
  101. package/lib/server/dispatchers/networkDispatchers.js +3 -3
  102. package/lib/server/dispatchers/pageDispatcher.js +11 -9
  103. package/lib/server/dispatchers/playwrightDispatcher.js +5 -5
  104. package/lib/server/dispatchers/streamDispatcher.js +4 -3
  105. package/lib/server/dispatchers/webSocketRouteDispatcher.js +8 -7
  106. package/lib/server/dispatchers/writableStreamDispatcher.js +5 -6
  107. package/lib/server/dom.js +18 -12
  108. package/lib/server/download.js +1 -1
  109. package/lib/server/electron/electron.js +17 -16
  110. package/lib/server/errors.js +1 -1
  111. package/lib/server/fetch.js +36 -25
  112. package/lib/server/fileUploadUtils.js +7 -4
  113. package/lib/server/firefox/ffBrowser.js +8 -2
  114. package/lib/server/firefox/ffConnection.js +1 -1
  115. package/lib/server/firefox/ffExecutionContext.js +25 -17
  116. package/lib/server/firefox/ffNetworkManager.js +2 -2
  117. package/lib/server/firefox/ffPage.js +15 -21
  118. package/lib/server/firefox/firefox.js +7 -9
  119. package/lib/server/frameSelectors.js +1 -1
  120. package/lib/server/frames.js +366 -209
  121. package/lib/server/har/harRecorder.js +4 -4
  122. package/lib/server/har/harTracer.js +7 -8
  123. package/lib/server/harBackend.js +157 -0
  124. package/lib/server/helper.js +2 -2
  125. package/lib/server/index.js +1 -8
  126. package/lib/server/input.js +1 -1
  127. package/lib/server/instrumentation.js +2 -2
  128. package/lib/server/isomorphic/utilityScriptSerializers.js +3 -0
  129. package/lib/server/javascript.js +46 -33
  130. package/lib/server/launchApp.js +2 -2
  131. package/lib/server/localUtils.js +203 -0
  132. package/lib/server/network.js +3 -3
  133. package/lib/server/page.js +41 -22
  134. package/lib/server/pipeTransport.js +1 -1
  135. package/lib/server/playwright.js +5 -5
  136. package/lib/server/progress.js +1 -1
  137. package/lib/server/protocolError.js +1 -1
  138. package/lib/server/recorder/contextRecorder.js +3 -3
  139. package/lib/server/recorder/recorderApp.js +18 -12
  140. package/lib/server/recorder/recorderCollection.js +3 -3
  141. package/lib/server/recorder/throttledFile.js +3 -4
  142. package/lib/server/recorder.js +7 -5
  143. package/lib/server/registry/browserFetcher.js +9 -7
  144. package/lib/server/registry/dependencies.js +15 -15
  145. package/lib/server/registry/index.js +38 -44
  146. package/lib/server/registry/oopDownloadBrowserMain.js +3 -3
  147. package/lib/server/screenshotter.js +1 -1
  148. package/lib/server/selectors.js +3 -3
  149. package/lib/server/socksClientCertificatesInterceptor.js +8 -8
  150. package/lib/server/socksInterceptor.js +8 -5
  151. package/lib/server/storageScript.js +160 -0
  152. package/lib/{common → server}/timeoutSettings.js +6 -5
  153. package/lib/server/trace/recorder/snapshotter.js +9 -8
  154. package/lib/server/trace/recorder/tracing.js +40 -31
  155. package/lib/server/trace/test/inMemorySnapshotter.js +4 -4
  156. package/lib/server/trace/viewer/traceViewer.js +13 -5
  157. package/lib/server/transport.js +2 -2
  158. package/lib/{utils → server/utils}/comparators.js +4 -4
  159. package/lib/{utils → server/utils}/crypto.js +4 -4
  160. package/lib/{utils → server/utils}/debug.js +4 -12
  161. package/lib/{utils → server/utils}/debugLogger.js +2 -2
  162. package/lib/{utils → server/utils}/env.js +4 -0
  163. package/lib/{utils → server/utils}/expectUtils.js +1 -1
  164. package/lib/{utils → server/utils}/fileUtils.js +4 -5
  165. package/lib/{utils/happy-eyeballs.js → server/utils/happyEyeballs.js} +22 -24
  166. package/lib/{utils → server/utils}/hostPlatform.js +1 -1
  167. package/lib/{utils → server/utils}/httpServer.js +8 -8
  168. package/lib/{utils → server/utils}/linuxUtils.js +3 -23
  169. package/lib/{utils → server/utils}/network.js +4 -4
  170. package/lib/server/utils/nodePlatform.js +140 -0
  171. package/lib/{protocol/transport.js → server/utils/pipeTransport.js} +2 -2
  172. package/lib/{utils → server/utils}/processLauncher.js +5 -5
  173. package/lib/{utils → server/utils}/profiler.js +5 -6
  174. package/lib/{common → server/utils}/socksProxy.js +10 -9
  175. package/lib/{utils → server/utils}/userAgent.js +2 -16
  176. package/lib/{utils → server/utils}/wsServer.js +3 -3
  177. package/lib/{utils → server/utils}/zipFile.js +1 -1
  178. package/lib/{utils → server/utils}/zones.js +9 -24
  179. package/lib/server/webkit/webkit.js +4 -4
  180. package/lib/server/webkit/wkBrowser.js +4 -4
  181. package/lib/server/webkit/wkConnection.js +1 -1
  182. package/lib/server/webkit/wkExecutionContext.js +25 -17
  183. package/lib/server/webkit/wkInput.js +2 -2
  184. package/lib/server/webkit/wkInterceptableRequest.js +2 -2
  185. package/lib/server/webkit/wkPage.js +41 -40
  186. package/lib/server/webkit/wkProvisionalPage.js +1 -1
  187. package/lib/server/webkit/wkWorkers.js +2 -2
  188. package/lib/utils/isomorphic/ariaSnapshot.js +2 -1
  189. package/lib/utils/isomorphic/assert.js +25 -0
  190. package/lib/utils/isomorphic/colors.js +65 -0
  191. package/lib/utils/isomorphic/cssParser.js +1 -1
  192. package/lib/utils/isomorphic/locatorGenerators.js +13 -1
  193. package/lib/utils/isomorphic/locatorParser.js +2 -2
  194. package/lib/utils/{manualPromise.js → isomorphic/manualPromise.js} +3 -5
  195. package/lib/utils/isomorphic/mimeType.js +11 -3
  196. package/lib/utils/{multimap.js → isomorphic/multimap.js} +1 -3
  197. package/lib/utils/{rtti.js → isomorphic/rtti.js} +2 -5
  198. package/lib/utils/isomorphic/stackTrace.js +169 -0
  199. package/lib/utils/isomorphic/stringUtils.js +1 -1
  200. package/lib/utils/{time.js → isomorphic/time.js} +1 -13
  201. package/lib/utils/{timeoutRunner.js → isomorphic/timeoutRunner.js} +4 -4
  202. package/lib/utils/isomorphic/traceUtils.js +23 -0
  203. package/lib/{utils/index.js → utils.js} +200 -121
  204. package/lib/utilsBundle.js +1 -25
  205. package/lib/utilsBundleImpl/index.js +114 -116
  206. package/lib/vite/htmlReport/index.html +20 -20
  207. package/lib/vite/recorder/assets/codeMirrorModule-B9YMkrwa.js +24 -0
  208. package/lib/vite/recorder/assets/index-ELPgmkwA.js +184 -0
  209. package/lib/vite/recorder/index.html +1 -1
  210. package/lib/vite/traceViewer/assets/codeMirrorModule-DpJ-EmBQ.js +24 -0
  211. package/lib/vite/traceViewer/assets/defaultSettingsView-DTenqiGw.js +259 -0
  212. package/lib/vite/traceViewer/assets/{xtermModule-c-SNdYZy.js → xtermModule-BoAIEibi.js} +7 -7
  213. package/lib/vite/traceViewer/defaultSettingsView.5fN5lw10.css +1 -0
  214. package/lib/vite/traceViewer/index.CUq7VgrV.js +2 -0
  215. package/lib/vite/traceViewer/index.html +3 -3
  216. package/lib/vite/traceViewer/sw.bundle.js +3 -3
  217. package/lib/vite/traceViewer/uiMode.CHJSAD7F.js +5 -0
  218. package/lib/vite/traceViewer/uiMode.html +3 -3
  219. package/lib/zipBundleImpl.js +4 -4
  220. package/package.json +7 -7
  221. package/types/protocol.d.ts +123 -99
  222. package/types/types.d.ts +91 -37
  223. package/lib/utils/stackTrace.js +0 -134
  224. package/lib/utils/traceUtils.js +0 -44
  225. package/lib/vite/recorder/assets/codeMirrorModule-CNAqJrkA.js +0 -24
  226. package/lib/vite/recorder/assets/index-DGS0JLxS.js +0 -184
  227. package/lib/vite/traceViewer/assets/codeMirrorModule-D55P_UuL.js +0 -24
  228. package/lib/vite/traceViewer/assets/defaultSettingsView-B-uNoFsX.js +0 -243
  229. package/lib/vite/traceViewer/defaultSettingsView.2xeEXCXv.css +0 -1
  230. package/lib/vite/traceViewer/index.BfvuujqP.js +0 -2
  231. package/lib/vite/traceViewer/uiMode.CStJu6jo.js +0 -5
  232. /package/lib/{utils → server/utils}/ascii.js +0 -0
  233. /package/lib/{utils → server/utils}/eventsHelper.js +0 -0
  234. /package/lib/{image_tools → server/utils/image_tools}/colorUtils.js +0 -0
  235. /package/lib/{image_tools → server/utils/image_tools}/compare.js +0 -0
  236. /package/lib/{image_tools → server/utils/image_tools}/imageChannel.js +0 -0
  237. /package/lib/{image_tools → server/utils/image_tools}/stats.js +0 -0
  238. /package/lib/{utils → server/utils}/spawnAsync.js +0 -0
  239. /package/lib/{utils → server/utils}/task.js +0 -0
  240. /package/lib/utils/{headers.js → isomorphic/headers.js} +0 -0
  241. /package/lib/utils/{semaphore.js → isomorphic/semaphore.js} +0 -0
  242. /package/lib/{common → utils/isomorphic}/types.js +0 -0
@@ -19,7 +19,6 @@ This project incorporates components from the projects listed below. The origina
19
19
  - diff@7.0.0 (https://github.com/kpdecker/jsdiff)
20
20
  - dotenv@16.4.5 (https://github.com/motdotla/dotenv)
21
21
  - end-of-stream@1.4.4 (https://github.com/mafintosh/end-of-stream)
22
- - escape-string-regexp@2.0.0 (https://github.com/sindresorhus/escape-string-regexp)
23
22
  - extract-zip@2.0.1 (https://github.com/maxogden/extract-zip)
24
23
  - fd-slicer@1.1.0 (https://github.com/andrewrk/node-fd-slicer)
25
24
  - get-stream@5.2.0 (https://github.com/sindresorhus/get-stream)
@@ -46,7 +45,6 @@ This project incorporates components from the projects listed below. The origina
46
45
  - socks-proxy-agent@6.1.1 (https://github.com/TooTallNate/node-socks-proxy-agent)
47
46
  - socks@2.8.3 (https://github.com/JoshGlazebrook/socks)
48
47
  - sprintf-js@1.1.3 (https://github.com/alexei/sprintf.js)
49
- - stack-utils@2.0.5 (https://github.com/tapjs/stack-utils)
50
48
  - wrappy@1.0.2 (https://github.com/npm/wrappy)
51
49
  - ws@8.17.1 (https://github.com/websockets/ws)
52
50
  - yaml@2.6.0 (https://github.com/eemeli/yaml)
@@ -563,20 +561,6 @@ THE SOFTWARE.
563
561
  =========================================
564
562
  END OF end-of-stream@1.4.4 AND INFORMATION
565
563
 
566
- %% escape-string-regexp@2.0.0 NOTICES AND INFORMATION BEGIN HERE
567
- =========================================
568
- MIT License
569
-
570
- Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
571
-
572
- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
573
-
574
- The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
575
-
576
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
577
- =========================================
578
- END OF escape-string-regexp@2.0.0 AND INFORMATION
579
-
580
564
  %% extract-zip@2.0.1 NOTICES AND INFORMATION BEGIN HERE
581
565
  =========================================
582
566
  Copyright (c) 2014 Max Ogden and other contributors
@@ -1454,32 +1438,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1454
1438
  =========================================
1455
1439
  END OF sprintf-js@1.1.3 AND INFORMATION
1456
1440
 
1457
- %% stack-utils@2.0.5 NOTICES AND INFORMATION BEGIN HERE
1458
- =========================================
1459
- The MIT License (MIT)
1460
-
1461
- Copyright (c) Isaac Z. Schlueter <i@izs.me>, James Talmage <james@talmage.io> (github.com/jamestalmage), and Contributors
1462
-
1463
- Permission is hereby granted, free of charge, to any person obtaining a copy
1464
- of this software and associated documentation files (the "Software"), to deal
1465
- in the Software without restriction, including without limitation the rights
1466
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
1467
- copies of the Software, and to permit persons to whom the Software is
1468
- furnished to do so, subject to the following conditions:
1469
-
1470
- The above copyright notice and this permission notice shall be included in
1471
- all copies or substantial portions of the Software.
1472
-
1473
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1474
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1475
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1476
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1477
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1478
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
1479
- THE SOFTWARE.
1480
- =========================================
1481
- END OF stack-utils@2.0.5 AND INFORMATION
1482
-
1483
1441
  %% wrappy@1.0.2 NOTICES AND INFORMATION BEGIN HERE
1484
1442
  =========================================
1485
1443
  The ISC License
@@ -1597,6 +1555,6 @@ END OF yazl@2.5.1 AND INFORMATION
1597
1555
 
1598
1556
  SUMMARY BEGIN HERE
1599
1557
  =========================================
1600
- Total Packages: 48
1558
+ Total Packages: 46
1601
1559
  =========================================
1602
1560
  END OF SUMMARY
package/browsers.json CHANGED
@@ -3,31 +3,43 @@
3
3
  "browsers": [
4
4
  {
5
5
  "name": "chromium",
6
- "revision": "1155",
6
+ "revision": "1161",
7
7
  "installByDefault": true,
8
- "browserVersion": "133.0.6943.16"
8
+ "browserVersion": "134.0.6998.35"
9
+ },
10
+ {
11
+ "name": "chromium-headless-shell",
12
+ "revision": "1161",
13
+ "installByDefault": true,
14
+ "browserVersion": "134.0.6998.35"
9
15
  },
10
16
  {
11
17
  "name": "chromium-tip-of-tree",
12
- "revision": "1293",
18
+ "revision": "1304",
19
+ "installByDefault": false,
20
+ "browserVersion": "135.0.7021.0"
21
+ },
22
+ {
23
+ "name": "chromium-tip-of-tree-headless-shell",
24
+ "revision": "1304",
13
25
  "installByDefault": false,
14
- "browserVersion": "133.0.6943.0"
26
+ "browserVersion": "135.0.7021.0"
15
27
  },
16
28
  {
17
29
  "name": "firefox",
18
- "revision": "1471",
30
+ "revision": "1475",
19
31
  "installByDefault": true,
20
- "browserVersion": "134.0"
32
+ "browserVersion": "135.0"
21
33
  },
22
34
  {
23
35
  "name": "firefox-beta",
24
- "revision": "1467",
36
+ "revision": "1471",
25
37
  "installByDefault": false,
26
- "browserVersion": "133.0b9"
38
+ "browserVersion": "136.0b4"
27
39
  },
28
40
  {
29
41
  "name": "webkit",
30
- "revision": "2123",
42
+ "revision": "2140",
31
43
  "installByDefault": true,
32
44
  "revisionOverrides": {
33
45
  "debian11-x64": "2105",
@@ -41,7 +53,7 @@
41
53
  "ubuntu20.04-x64": "2092",
42
54
  "ubuntu20.04-arm64": "2092"
43
55
  },
44
- "browserVersion": "18.2"
56
+ "browserVersion": "18.4"
45
57
  },
46
58
  {
47
59
  "name": "ffmpeg",
package/index.js CHANGED
@@ -19,7 +19,6 @@ const semver = currentNodeVersion.split('.');
19
19
  const [major] = [+semver[0]];
20
20
 
21
21
  if (major < minimumMajorNodeVersion) {
22
- // eslint-disable-next-line no-console
23
22
  console.error(
24
23
  'You are running Node.js ' +
25
24
  currentNodeVersion +
@@ -4,10 +4,10 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.AndroidServerLauncherImpl = void 0;
7
- var _utilsBundle = require("./utilsBundle");
8
- var _utils = require("./utils");
9
- var _playwright = require("./server/playwright");
10
7
  var _playwrightServer = require("./remote/playwrightServer");
8
+ var _playwright = require("./server/playwright");
9
+ var _crypto = require("./server/utils/crypto");
10
+ var _utilsBundle = require("./utilsBundle");
11
11
  /**
12
12
  * Copyright (c) Microsoft Corporation.
13
13
  *
@@ -43,7 +43,7 @@ class AndroidServerLauncherImpl {
43
43
  }
44
44
  if (devices.length > 1) throw new Error(`More than one device found. Please specify deviceSerialNumber`);
45
45
  const device = devices[0];
46
- const path = options.wsPath ? options.wsPath.startsWith('/') ? options.wsPath : `/${options.wsPath}` : `/${(0, _utils.createGuid)()}`;
46
+ const path = options.wsPath ? options.wsPath.startsWith('/') ? options.wsPath : `/${options.wsPath}` : `/${(0, _crypto.createGuid)()}`;
47
47
 
48
48
  // 2. Start the server
49
49
  const server = new _playwrightServer.PlaywrightServer({
@@ -4,15 +4,14 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.BrowserServerLauncherImpl = void 0;
7
- var _utilsBundle = require("./utilsBundle");
8
- var _clientHelper = require("./client/clientHelper");
9
- var _utils = require("./utils");
10
- var _instrumentation = require("./server/instrumentation");
11
- var _playwright = require("./server/playwright");
7
+ var _socksProxy = require("./server/utils/socksProxy");
12
8
  var _playwrightServer = require("./remote/playwrightServer");
13
9
  var _helper = require("./server/helper");
14
- var _stackTrace = require("./utils/stackTrace");
15
- var _socksProxy = require("./common/socksProxy");
10
+ var _instrumentation = require("./server/instrumentation");
11
+ var _playwright = require("./server/playwright");
12
+ var _crypto = require("./server/utils/crypto");
13
+ var _stackTrace = require("./utils/isomorphic/stackTrace");
14
+ var _utilsBundle = require("./utilsBundle");
16
15
  /**
17
16
  * Copyright (c) Microsoft Corporation.
18
17
  *
@@ -49,13 +48,13 @@ class BrowserServerLauncherImpl {
49
48
  ...options,
50
49
  ignoreDefaultArgs: Array.isArray(options.ignoreDefaultArgs) ? options.ignoreDefaultArgs : undefined,
51
50
  ignoreAllDefaultArgs: !!options.ignoreDefaultArgs && !Array.isArray(options.ignoreDefaultArgs),
52
- env: options.env ? (0, _clientHelper.envObjectToArray)(options.env) : undefined
51
+ env: options.env ? envObjectToArray(options.env) : undefined
53
52
  }, toProtocolLogger(options.logger)).catch(e => {
54
53
  const log = _helper.helper.formatBrowserLogs(metadata.log);
55
54
  (0, _stackTrace.rewriteErrorMessage)(e, `${e.message} Failed to launch browser.${log}`);
56
55
  throw e;
57
56
  });
58
- const path = options.wsPath ? options.wsPath.startsWith('/') ? options.wsPath : `/${options.wsPath}` : `/${(0, _utils.createGuid)()}`;
57
+ const path = options.wsPath ? options.wsPath.startsWith('/') ? options.wsPath : `/${options.wsPath}` : `/${(0, _crypto.createGuid)()}`;
59
58
 
60
59
  // 2. Start the server
61
60
  const server = new _playwrightServer.PlaywrightServer({
@@ -89,4 +88,14 @@ function toProtocolLogger(logger) {
89
88
  return logger ? (direction, message) => {
90
89
  if (logger.isEnabled('protocol', 'verbose')) logger.log('protocol', 'verbose', (direction === 'send' ? 'SEND ► ' : '◀ RECV ') + JSON.stringify(message), [], {});
91
90
  } : undefined;
91
+ }
92
+ function envObjectToArray(env) {
93
+ const result = [];
94
+ for (const name in env) {
95
+ if (!Object.is(env[name], undefined)) result.push({
96
+ name,
97
+ value: String(env[name])
98
+ });
99
+ }
100
+ return result;
92
101
  }
package/lib/cli/driver.js CHANGED
@@ -9,13 +9,13 @@ exports.runDriver = runDriver;
9
9
  exports.runServer = runServer;
10
10
  var _fs = _interopRequireDefault(require("fs"));
11
11
  var playwright = _interopRequireWildcard(require("../.."));
12
- var _server = require("../server");
13
- var _transport = require("../protocol/transport");
12
+ var _pipeTransport = require("../server/utils/pipeTransport");
14
13
  var _playwrightServer = require("../remote/playwrightServer");
15
- var _processLauncher = require("../utils/processLauncher");
14
+ var _server = require("../server");
15
+ var _processLauncher = require("../server/utils/processLauncher");
16
16
  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); }
17
- 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; }
18
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+ 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 && {}.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; }
18
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
19
19
  /**
20
20
  * Copyright (c) Microsoft Corporation.
21
21
  *
@@ -48,7 +48,7 @@ function runDriver() {
48
48
  });
49
49
  return new _server.PlaywrightDispatcher(rootScope, playwright);
50
50
  });
51
- const transport = new _transport.PipeTransport(process.stdout, process.stdin);
51
+ const transport = new _pipeTransport.PipeTransport(process.stdout, process.stdin);
52
52
  transport.onmessage = message => dispatcherConnection.dispatch(JSON.parse(message));
53
53
  // Certain Language Binding JSON parsers (e.g. .NET) do not like strings with lone surrogates.
54
54
  const isJavaScriptLanguageBinding = !process.env.PW_LANG_NAME || process.env.PW_LANG_NAME === 'javascript';
@@ -12,16 +12,16 @@ Object.defineProperty(exports, "program", {
12
12
  var _fs = _interopRequireDefault(require("fs"));
13
13
  var _os = _interopRequireDefault(require("os"));
14
14
  var _path = _interopRequireDefault(require("path"));
15
- var _utilsBundle = require("../utilsBundle");
16
- var _driver = require("./driver");
17
- var _traceViewer = require("../server/trace/viewer/traceViewer");
18
15
  var playwright = _interopRequireWildcard(require("../.."));
19
- var _utils = require("../utils");
16
+ var _driver = require("./driver");
20
17
  var _server = require("../server");
21
- var _errors = require("../client/errors");
18
+ var _utils = require("../utils");
19
+ var _traceViewer = require("../server/trace/viewer/traceViewer");
20
+ var _ascii = require("../server/utils/ascii");
21
+ var _utilsBundle = require("../utilsBundle");
22
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); }
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; }
24
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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 && {}.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; }
24
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
25
25
  /**
26
26
  * Copyright (c) Microsoft Corporation.
27
27
  *
@@ -97,7 +97,7 @@ _utilsBundle.program.command('install [browser...]').description('ensure browser
97
97
  // For '--no-shell' option, commander sets `shell: false` instead.
98
98
  if (options.shell === false) options.noShell = true;
99
99
  if ((0, _utils.isLikelyNpxGlobal)()) {
100
- console.error((0, _utils.wrapInASCIIBox)([`WARNING: It looks like you are running 'npx playwright install' without first`, `installing your project's dependencies.`, ``, `To avoid unexpected behavior, please install your dependencies first, and`, `then run Playwright's install command:`, ``, ` npm install`, ` npx playwright install`, ``, `If your project does not yet depend on Playwright, first install the`, `applicable npm package (most commonly @playwright/test), and`, `then run Playwright's install command to download the browsers:`, ``, ` npm install @playwright/test`, ` npx playwright install`, ``].join('\n'), 1));
100
+ console.error((0, _ascii.wrapInASCIIBox)([`WARNING: It looks like you are running 'npx playwright install' without first`, `installing your project's dependencies.`, ``, `To avoid unexpected behavior, please install your dependencies first, and`, `then run Playwright's install command:`, ``, ` npm install`, ` npx playwright install`, ``, `If your project does not yet depend on Playwright, first install the`, `applicable npm package (most commonly @playwright/test), and`, `then run Playwright's install command to download the browsers:`, ``, ` npm install @playwright/test`, ` npx playwright install`, ``].join('\n'), 1));
101
101
  }
102
102
  try {
103
103
  const hasNoArguments = !args.length;
@@ -408,7 +408,7 @@ async function openPage(context, url) {
408
408
  if (url) {
409
409
  if (_fs.default.existsSync(url)) url = 'file://' + _path.default.resolve(url);else if (!url.startsWith('http') && !url.startsWith('file://') && !url.startsWith('about:') && !url.startsWith('data:')) url = 'http://' + url;
410
410
  await page.goto(url).catch(error => {
411
- if (process.env.PWTEST_CLI_AUTO_EXIT_WHEN && (0, _errors.isTargetClosedError)(error)) {
411
+ if (process.env.PWTEST_CLI_AUTO_EXIT_WHEN) {
412
412
  // Tests with PWTEST_CLI_AUTO_EXIT_WHEN might close page too fast, resulting
413
413
  // in a stray navigation aborted error. We should ignore it.
414
414
  } else {
@@ -9,6 +9,7 @@ Object.defineProperty(exports, "program", {
9
9
  return _program.program;
10
10
  }
11
11
  });
12
+ var _processLauncher = require("../server/utils/processLauncher");
12
13
  var _utils = require("../utils");
13
14
  var _program = require("./program");
14
15
  /**
@@ -60,7 +61,7 @@ function addExternalPlaywrightTestCommands() {
60
61
  playwrightTest.description(`${description} Available in @playwright/test package.`);
61
62
  playwrightTest.action(async () => {
62
63
  printPlaywrightTestError(command);
63
- (0, _utils.gracefullyProcessExitDoNotHang)(1);
64
+ (0, _processLauncher.gracefullyProcessExitDoNotHang)(1);
64
65
  });
65
66
  }
66
67
  }
@@ -4,18 +4,17 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.AndroidWebView = exports.AndroidSocket = exports.AndroidInput = exports.AndroidDevice = exports.Android = void 0;
7
- var _fs = _interopRequireDefault(require("fs"));
8
- var _utils = require("../utils");
9
- var _events = require("./events");
7
+ var _eventEmitter = require("./eventEmitter");
10
8
  var _browserContext = require("./browserContext");
11
9
  var _channelOwner = require("./channelOwner");
12
- var _timeoutSettings = require("../common/timeoutSettings");
13
- var _waiter = require("./waiter");
14
- var _events2 = require("events");
15
- var _connection = require("./connection");
16
10
  var _errors = require("./errors");
17
- var _timeoutRunner = require("../utils/timeoutRunner");
18
- let _Symbol$asyncDispose;
11
+ var _events = require("./events");
12
+ var _waiter = require("./waiter");
13
+ var _timeoutSettings = require("./timeoutSettings");
14
+ var _rtti = require("../utils/isomorphic/rtti");
15
+ var _time = require("../utils/isomorphic/time");
16
+ var _timeoutRunner = require("../utils/isomorphic/timeoutRunner");
17
+ var _webSocket = require("./webSocket");
19
18
  /**
20
19
  * Copyright (c) Microsoft Corporation.
21
20
  *
@@ -31,7 +30,7 @@ let _Symbol$asyncDispose;
31
30
  * See the License for the specific language governing permissions and
32
31
  * limitations under the License.
33
32
  */
34
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
33
+
35
34
  class Android extends _channelOwner.ChannelOwner {
36
35
  static from(android) {
37
36
  return android._object;
@@ -40,13 +39,15 @@ class Android extends _channelOwner.ChannelOwner {
40
39
  super(parent, type, guid, initializer);
41
40
  this._timeoutSettings = void 0;
42
41
  this._serverLauncher = void 0;
43
- this._timeoutSettings = new _timeoutSettings.TimeoutSettings();
42
+ this._timeoutSettings = new _timeoutSettings.TimeoutSettings(this._platform);
44
43
  }
45
44
  setDefaultTimeout(timeout) {
46
45
  this._timeoutSettings.setDefaultTimeout(timeout);
47
- this._channel.setDefaultTimeoutNoReply({
48
- timeout
49
- });
46
+ this._wrapApiCall(async () => {
47
+ await this._channel.setDefaultTimeoutNoReply({
48
+ timeout
49
+ });
50
+ }, true).catch(() => {});
50
51
  }
51
52
  async devices(options = {}) {
52
53
  const {
@@ -60,68 +61,44 @@ class Android extends _channelOwner.ChannelOwner {
60
61
  }
61
62
  async connect(wsEndpoint, options = {}) {
62
63
  return await this._wrapApiCall(async () => {
63
- const deadline = options.timeout ? (0, _utils.monotonicTime)() + options.timeout : 0;
64
+ const deadline = options.timeout ? (0, _time.monotonicTime)() + options.timeout : 0;
64
65
  const headers = {
65
66
  'x-playwright-browser': 'android',
66
67
  ...options.headers
67
68
  };
68
- const localUtils = this._connection.localUtils();
69
69
  const connectParams = {
70
70
  wsEndpoint,
71
71
  headers,
72
72
  slowMo: options.slowMo,
73
73
  timeout: options.timeout
74
74
  };
75
- const {
76
- pipe
77
- } = await localUtils._channel.connect(connectParams);
78
- const closePipe = () => pipe.close().catch(() => {});
79
- const connection = new _connection.Connection(localUtils, this._instrumentation);
80
- connection.markAsRemote();
81
- connection.on('close', closePipe);
75
+ const connection = await (0, _webSocket.connectOverWebSocket)(this._connection, connectParams);
82
76
  let device;
83
- let closeError;
84
- const onPipeClosed = () => {
77
+ connection.on('close', () => {
85
78
  var _device;
86
79
  (_device = device) === null || _device === void 0 || _device._didClose();
87
- connection.close(closeError);
88
- };
89
- pipe.on('closed', onPipeClosed);
90
- connection.onmessage = message => pipe.send({
91
- message
92
- }).catch(onPipeClosed);
93
- pipe.on('message', ({
94
- message
95
- }) => {
96
- try {
97
- connection.dispatch(message);
98
- } catch (e) {
99
- closeError = String(e);
100
- closePipe();
101
- }
102
80
  });
103
81
  const result = await (0, _timeoutRunner.raceAgainstDeadline)(async () => {
104
82
  const playwright = await connection.initializePlaywright();
105
83
  if (!playwright._initializer.preConnectedAndroidDevice) {
106
- closePipe();
84
+ connection.close();
107
85
  throw new Error('Malformed endpoint. Did you use Android.launchServer method?');
108
86
  }
109
87
  device = AndroidDevice.from(playwright._initializer.preConnectedAndroidDevice);
110
88
  device._shouldCloseConnectionOnClose = true;
111
- device.on(_events.Events.AndroidDevice.Close, closePipe);
89
+ device.on(_events.Events.AndroidDevice.Close, () => connection.close());
112
90
  return device;
113
91
  }, deadline);
114
92
  if (!result.timedOut) {
115
93
  return result.result;
116
94
  } else {
117
- closePipe();
95
+ connection.close();
118
96
  throw new Error(`Timeout ${options.timeout}ms exceeded`);
119
97
  }
120
98
  });
121
99
  }
122
100
  }
123
101
  exports.Android = Android;
124
- _Symbol$asyncDispose = Symbol.asyncDispose;
125
102
  class AndroidDevice extends _channelOwner.ChannelOwner {
126
103
  static from(androidDevice) {
127
104
  return androidDevice._object;
@@ -133,7 +110,7 @@ class AndroidDevice extends _channelOwner.ChannelOwner {
133
110
  this._shouldCloseConnectionOnClose = false;
134
111
  this.input = void 0;
135
112
  this.input = new AndroidInput(this);
136
- this._timeoutSettings = new _timeoutSettings.TimeoutSettings(parent._timeoutSettings);
113
+ this._timeoutSettings = new _timeoutSettings.TimeoutSettings(this._platform, parent._timeoutSettings);
137
114
  this._channel.on('webViewAdded', ({
138
115
  webView
139
116
  }) => this._onWebViewAdded(webView));
@@ -154,9 +131,11 @@ class AndroidDevice extends _channelOwner.ChannelOwner {
154
131
  }
155
132
  setDefaultTimeout(timeout) {
156
133
  this._timeoutSettings.setDefaultTimeout(timeout);
157
- this._channel.setDefaultTimeoutNoReply({
158
- timeout
159
- });
134
+ this._wrapApiCall(async () => {
135
+ await this._channel.setDefaultTimeoutNoReply({
136
+ timeout
137
+ });
138
+ }, true).catch(() => {});
160
139
  }
161
140
  serial() {
162
141
  return this._initializer.serial;
@@ -262,10 +241,10 @@ class AndroidDevice extends _channelOwner.ChannelOwner {
262
241
  const {
263
242
  binary
264
243
  } = await this._channel.screenshot();
265
- if (options.path) await _fs.default.promises.writeFile(options.path, binary);
244
+ if (options.path) await this._platform.fs().promises.writeFile(options.path, binary);
266
245
  return binary;
267
246
  }
268
- async [_Symbol$asyncDispose]() {
247
+ async [Symbol.asyncDispose]() {
269
248
  await this.close();
270
249
  }
271
250
  async close() {
@@ -294,19 +273,19 @@ class AndroidDevice extends _channelOwner.ChannelOwner {
294
273
  }
295
274
  async installApk(file, options) {
296
275
  await this._channel.installApk({
297
- file: await loadFile(file),
276
+ file: await loadFile(this._platform, file),
298
277
  args: options && options.args
299
278
  });
300
279
  }
301
280
  async push(file, path, options) {
302
281
  await this._channel.push({
303
- file: await loadFile(file),
282
+ file: await loadFile(this._platform, file),
304
283
  path,
305
284
  mode: options ? options.mode : undefined
306
285
  });
307
286
  }
308
287
  async launchBrowser(options = {}) {
309
- const contextOptions = await (0, _browserContext.prepareBrowserContextParams)(options);
288
+ const contextOptions = await (0, _browserContext.prepareBrowserContextParams)(this._platform, options);
310
289
  const result = await this._channel.launchBrowser(contextOptions);
311
290
  const context = _browserContext.BrowserContext.from(result.context);
312
291
  context._setOptions(contextOptions, {});
@@ -350,8 +329,8 @@ class AndroidSocket extends _channelOwner.ChannelOwner {
350
329
  }
351
330
  }
352
331
  exports.AndroidSocket = AndroidSocket;
353
- async function loadFile(file) {
354
- if ((0, _utils.isString)(file)) return await _fs.default.promises.readFile(file);
332
+ async function loadFile(platform, file) {
333
+ if ((0, _rtti.isString)(file)) return await platform.fs().promises.readFile(file);
355
334
  return file;
356
335
  }
357
336
  class AndroidInput {
@@ -411,7 +390,7 @@ function toSelectorChannel(selector) {
411
390
  } = selector;
412
391
  const toRegex = value => {
413
392
  if (value === undefined) return undefined;
414
- if ((0, _utils.isRegExp)(value)) return value.source;
393
+ if ((0, _rtti.isRegExp)(value)) return value.source;
415
394
  return '^' + value.replace(/[|\\{}()[\]^$+*?.]/g, '\\$&').replace(/-/g, '\\x2d') + '$';
416
395
  };
417
396
  return {
@@ -439,9 +418,9 @@ function toSelectorChannel(selector) {
439
418
  selected
440
419
  };
441
420
  }
442
- class AndroidWebView extends _events2.EventEmitter {
421
+ class AndroidWebView extends _eventEmitter.EventEmitter {
443
422
  constructor(device, data) {
444
- super();
423
+ super(device._platform);
445
424
  this._device = void 0;
446
425
  this._data = void 0;
447
426
  this._pagePromise = void 0;
@@ -4,12 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.Artifact = void 0;
7
- var fs = _interopRequireWildcard(require("fs"));
8
- var _stream = require("./stream");
9
- var _fileUtils = require("../utils/fileUtils");
10
7
  var _channelOwner = require("./channelOwner");
11
- 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); }
12
- 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; }
8
+ var _stream = require("./stream");
9
+ var _fileUtils = require("./fileUtils");
13
10
  /**
14
11
  * Copyright (c) Microsoft Corporation.
15
12
  *
@@ -43,9 +40,9 @@ class Artifact extends _channelOwner.ChannelOwner {
43
40
  }
44
41
  const result = await this._channel.saveAsStream();
45
42
  const stream = _stream.Stream.from(result.stream);
46
- await (0, _fileUtils.mkdirIfNeeded)(path);
43
+ await (0, _fileUtils.mkdirIfNeeded)(this._platform, path);
47
44
  await new Promise((resolve, reject) => {
48
- stream.stream().pipe(fs.createWriteStream(path)).on('finish', resolve).on('error', reject);
45
+ stream.stream().pipe(this._platform.fs().createWriteStream(path)).on('finish', resolve).on('error', reject);
49
46
  });
50
47
  }
51
48
  async failure() {
@@ -4,15 +4,13 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.Browser = void 0;
7
- var _fs = _interopRequireDefault(require("fs"));
7
+ var _artifact = require("./artifact");
8
8
  var _browserContext = require("./browserContext");
9
+ var _cdpSession = require("./cdpSession");
9
10
  var _channelOwner = require("./channelOwner");
10
- var _events = require("./events");
11
11
  var _errors = require("./errors");
12
- var _cdpSession = require("./cdpSession");
13
- var _artifact = require("./artifact");
14
- var _utils = require("../utils");
15
- let _Symbol$asyncDispose;
12
+ var _events = require("./events");
13
+ var _fileUtils = require("./fileUtils");
16
14
  /**
17
15
  * Copyright (c) Microsoft Corporation.
18
16
  *
@@ -28,8 +26,7 @@ let _Symbol$asyncDispose;
28
26
  * See the License for the specific language governing permissions and
29
27
  * limitations under the License.
30
28
  */
31
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
32
- _Symbol$asyncDispose = Symbol.asyncDispose;
29
+
33
30
  class Browser extends _channelOwner.ChannelOwner {
34
31
  static from(browser) {
35
32
  return browser._object;
@@ -44,8 +41,6 @@ class Browser extends _channelOwner.ChannelOwner {
44
41
  this._options = {};
45
42
  this._name = void 0;
46
43
  this._path = void 0;
47
- // Used from @playwright/test fixtures.
48
- this._connectHeaders = void 0;
49
44
  this._closeReason = void 0;
50
45
  this._name = initializer.name;
51
46
  this._channel.on('close', () => this._didClose());
@@ -76,10 +71,10 @@ class Browser extends _channelOwner.ChannelOwner {
76
71
  }
77
72
  async _innerNewContext(options = {}, forReuse) {
78
73
  options = {
79
- ...this._browserType._defaultContextOptions,
74
+ ...this._browserType._playwright._defaultContextOptions,
80
75
  ...options
81
76
  };
82
- const contextOptions = await (0, _browserContext.prepareBrowserContextParams)(options);
77
+ const contextOptions = await (0, _browserContext.prepareBrowserContextParams)(this._platform, options);
83
78
  const response = forReuse ? await this._channel.newContextForReuse(contextOptions) : await this._channel.newContext(contextOptions);
84
79
  const context = _browserContext.BrowserContext.from(response.context);
85
80
  await this._browserType._didCreateContext(context, contextOptions, this._options, options.logger || this._logger);
@@ -118,13 +113,13 @@ class Browser extends _channelOwner.ChannelOwner {
118
113
  const buffer = await artifact.readIntoBuffer();
119
114
  await artifact.delete();
120
115
  if (this._path) {
121
- await (0, _utils.mkdirIfNeeded)(this._path);
122
- await _fs.default.promises.writeFile(this._path, buffer);
116
+ await (0, _fileUtils.mkdirIfNeeded)(this._platform, this._path);
117
+ await this._platform.fs().promises.writeFile(this._path, buffer);
123
118
  this._path = undefined;
124
119
  }
125
120
  return buffer;
126
121
  }
127
- async [_Symbol$asyncDispose]() {
122
+ async [Symbol.asyncDispose]() {
128
123
  await this.close();
129
124
  }
130
125
  async close(options = {}) {