patchright-core 1.50.0 → 1.51.0

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 (249) hide show
  1. package/ThirdPartyNotices.txt +381 -55
  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/generated/pollingRecorderSource.js +1 -1
  46. package/lib/inProcessFactory.js +6 -3
  47. package/lib/outofprocess.js +12 -8
  48. package/lib/protocol/validator.js +64 -13
  49. package/lib/protocol/validatorPrimitives.js +1 -2
  50. package/lib/remote/playwrightConnection.js +18 -10
  51. package/lib/remote/playwrightServer.js +20 -7
  52. package/lib/server/android/android.js +17 -14
  53. package/lib/server/android/backendAdb.js +14 -14
  54. package/lib/server/artifact.js +3 -3
  55. package/lib/server/bidi/bidiBrowser.js +2 -2
  56. package/lib/server/bidi/bidiChromium.js +4 -3
  57. package/lib/server/bidi/bidiConnection.js +1 -1
  58. package/lib/server/bidi/bidiExecutionContext.js +70 -40
  59. package/lib/server/bidi/bidiFirefox.js +4 -3
  60. package/lib/server/bidi/bidiInput.js +5 -8
  61. package/lib/server/bidi/bidiNetworkManager.js +3 -3
  62. package/lib/server/bidi/bidiOverCdp.js +2 -2
  63. package/lib/server/bidi/bidiPage.js +30 -46
  64. package/lib/server/bidi/third_party/firefoxPrefs.js +19 -3
  65. package/lib/server/browser.js +2 -2
  66. package/lib/server/browserContext.js +37 -40
  67. package/lib/server/browserType.js +18 -17
  68. package/lib/{utils/sequence.js → server/callLog.js} +18 -3
  69. package/lib/server/chromium/chromium.js +14 -14
  70. package/lib/server/chromium/chromiumSwitches.js +32 -1
  71. package/lib/server/chromium/crBrowser.js +15 -14
  72. package/lib/server/chromium/crConnection.js +2 -2
  73. package/lib/server/chromium/crCoverage.js +1 -1
  74. package/lib/server/chromium/crDevTools.js +1 -1
  75. package/lib/server/chromium/crDragDrop.js +1 -1
  76. package/lib/server/chromium/crExecutionContext.js +25 -17
  77. package/lib/server/chromium/crInput.js +2 -2
  78. package/lib/server/chromium/crNetworkManager.js +73 -26
  79. package/lib/server/chromium/crPage.js +22 -23
  80. package/lib/server/chromium/crPdf.js +1 -1
  81. package/lib/server/chromium/crProtocolHelper.js +3 -3
  82. package/lib/server/chromium/crServiceWorker.js +2 -2
  83. package/lib/server/chromium/videoRecorder.js +2 -2
  84. package/lib/server/clock.js +1 -1
  85. package/lib/server/codegen/javascript.js +1 -1
  86. package/lib/server/codegen/languages.js +2 -2
  87. package/lib/server/debugController.js +3 -3
  88. package/lib/server/deviceDescriptors.js +1 -1
  89. package/lib/server/deviceDescriptorsSource.json +131 -131
  90. package/lib/server/dispatchers/androidDispatcher.js +1 -1
  91. package/lib/server/dispatchers/artifactDispatcher.js +3 -3
  92. package/lib/server/dispatchers/browserContextDispatcher.js +19 -19
  93. package/lib/server/dispatchers/browserTypeDispatcher.js +1 -1
  94. package/lib/server/dispatchers/cdpSessionDispatcher.js +1 -1
  95. package/lib/server/dispatchers/dispatcher.js +27 -25
  96. package/lib/server/dispatchers/electronDispatcher.js +3 -3
  97. package/lib/server/dispatchers/elementHandlerDispatcher.js +7 -2
  98. package/lib/server/dispatchers/frameDispatcher.js +4 -4
  99. package/lib/server/dispatchers/jsHandleDispatcher.js +2 -2
  100. package/lib/server/dispatchers/jsonPipeDispatcher.js +2 -2
  101. package/lib/server/dispatchers/localUtilsDispatcher.js +25 -298
  102. package/lib/server/dispatchers/networkDispatchers.js +3 -3
  103. package/lib/server/dispatchers/pageDispatcher.js +11 -9
  104. package/lib/server/dispatchers/playwrightDispatcher.js +5 -5
  105. package/lib/server/dispatchers/streamDispatcher.js +4 -3
  106. package/lib/server/dispatchers/webSocketRouteDispatcher.js +8 -7
  107. package/lib/server/dispatchers/writableStreamDispatcher.js +5 -6
  108. package/lib/server/dom.js +18 -12
  109. package/lib/server/download.js +1 -1
  110. package/lib/server/electron/electron.js +17 -16
  111. package/lib/server/errors.js +1 -1
  112. package/lib/server/fetch.js +50 -45
  113. package/lib/server/fileUploadUtils.js +7 -4
  114. package/lib/server/firefox/ffBrowser.js +11 -3
  115. package/lib/server/firefox/ffConnection.js +1 -1
  116. package/lib/server/firefox/ffExecutionContext.js +25 -17
  117. package/lib/server/firefox/ffNetworkManager.js +2 -2
  118. package/lib/server/firefox/ffPage.js +15 -21
  119. package/lib/server/firefox/firefox.js +7 -9
  120. package/lib/server/frameSelectors.js +1 -1
  121. package/lib/server/frames.js +366 -209
  122. package/lib/server/har/harRecorder.js +4 -4
  123. package/lib/server/har/harTracer.js +7 -8
  124. package/lib/server/harBackend.js +157 -0
  125. package/lib/server/helper.js +2 -2
  126. package/lib/server/index.js +1 -8
  127. package/lib/server/input.js +1 -1
  128. package/lib/server/instrumentation.js +2 -2
  129. package/lib/server/isomorphic/utilityScriptSerializers.js +3 -0
  130. package/lib/server/javascript.js +46 -33
  131. package/lib/server/launchApp.js +2 -2
  132. package/lib/server/localUtils.js +203 -0
  133. package/lib/server/network.js +3 -3
  134. package/lib/server/page.js +41 -22
  135. package/lib/server/pipeTransport.js +1 -1
  136. package/lib/server/playwright.js +5 -5
  137. package/lib/server/progress.js +1 -1
  138. package/lib/server/protocolError.js +1 -1
  139. package/lib/server/recorder/contextRecorder.js +3 -3
  140. package/lib/server/recorder/recorderApp.js +18 -12
  141. package/lib/server/recorder/recorderCollection.js +4 -4
  142. package/lib/server/recorder/throttledFile.js +3 -4
  143. package/lib/server/recorder.js +7 -5
  144. package/lib/server/registry/browserFetcher.js +9 -7
  145. package/lib/server/registry/dependencies.js +15 -15
  146. package/lib/server/registry/index.js +38 -44
  147. package/lib/server/registry/oopDownloadBrowserMain.js +3 -3
  148. package/lib/server/screenshotter.js +1 -1
  149. package/lib/server/selectors.js +3 -3
  150. package/lib/server/socksClientCertificatesInterceptor.js +9 -9
  151. package/lib/server/socksInterceptor.js +8 -5
  152. package/lib/server/storageScript.js +160 -0
  153. package/lib/{common → server}/timeoutSettings.js +6 -5
  154. package/lib/server/trace/recorder/snapshotter.js +9 -8
  155. package/lib/server/trace/recorder/tracing.js +40 -31
  156. package/lib/server/trace/test/inMemorySnapshotter.js +4 -4
  157. package/lib/server/trace/viewer/traceViewer.js +13 -5
  158. package/lib/server/transport.js +2 -2
  159. package/lib/{utils → server/utils}/comparators.js +4 -4
  160. package/lib/{utils → server/utils}/crypto.js +4 -4
  161. package/lib/{utils → server/utils}/debug.js +4 -12
  162. package/lib/{utils → server/utils}/debugLogger.js +2 -2
  163. package/lib/{utils → server/utils}/env.js +4 -0
  164. package/lib/{utils → server/utils}/expectUtils.js +1 -1
  165. package/lib/{utils → server/utils}/fileUtils.js +4 -5
  166. package/lib/{utils/happy-eyeballs.js → server/utils/happyEyeballs.js} +22 -24
  167. package/lib/{utils → server/utils}/hostPlatform.js +1 -1
  168. package/lib/{utils → server/utils}/httpServer.js +8 -12
  169. package/lib/{utils → server/utils}/linuxUtils.js +3 -23
  170. package/lib/{utils → server/utils}/network.js +5 -5
  171. package/lib/server/utils/nodePlatform.js +140 -0
  172. package/lib/{protocol/transport.js → server/utils/pipeTransport.js} +2 -2
  173. package/lib/{utils → server/utils}/processLauncher.js +5 -5
  174. package/lib/{utils → server/utils}/profiler.js +5 -6
  175. package/lib/{common → server/utils}/socksProxy.js +10 -9
  176. package/lib/{utils → server/utils}/userAgent.js +2 -16
  177. package/lib/{utils → server/utils}/wsServer.js +3 -3
  178. package/lib/{utils → server/utils}/zipFile.js +1 -1
  179. package/lib/{utils → server/utils}/zones.js +9 -24
  180. package/lib/server/webkit/webkit.js +4 -4
  181. package/lib/server/webkit/wkBrowser.js +4 -4
  182. package/lib/server/webkit/wkConnection.js +1 -1
  183. package/lib/server/webkit/wkExecutionContext.js +25 -17
  184. package/lib/server/webkit/wkInput.js +2 -2
  185. package/lib/server/webkit/wkInterceptableRequest.js +2 -2
  186. package/lib/server/webkit/wkPage.js +41 -40
  187. package/lib/server/webkit/wkProvisionalPage.js +1 -1
  188. package/lib/server/webkit/wkWorkers.js +2 -2
  189. package/lib/utils/isomorphic/ariaSnapshot.js +2 -1
  190. package/lib/utils/isomorphic/assert.js +25 -0
  191. package/lib/utils/isomorphic/colors.js +65 -0
  192. package/lib/utils/isomorphic/cssParser.js +1 -1
  193. package/lib/utils/isomorphic/locatorGenerators.js +13 -1
  194. package/lib/utils/isomorphic/locatorParser.js +2 -2
  195. package/lib/utils/{manualPromise.js → isomorphic/manualPromise.js} +3 -5
  196. package/lib/utils/isomorphic/mimeType.js +11 -3
  197. package/lib/utils/{multimap.js → isomorphic/multimap.js} +1 -3
  198. package/lib/utils/{rtti.js → isomorphic/rtti.js} +2 -5
  199. package/lib/utils/isomorphic/stackTrace.js +169 -0
  200. package/lib/utils/isomorphic/stringUtils.js +1 -1
  201. package/lib/utils/{time.js → isomorphic/time.js} +1 -13
  202. package/lib/utils/{timeoutRunner.js → isomorphic/timeoutRunner.js} +4 -4
  203. package/lib/utils/isomorphic/traceUtils.js +23 -0
  204. package/lib/{utils/index.js → utils.js} +200 -121
  205. package/lib/utilsBundle.js +1 -25
  206. package/lib/utilsBundleImpl/index.js +119 -121
  207. package/lib/vite/htmlReport/index.html +20 -20
  208. package/lib/vite/recorder/assets/codeMirrorModule-B9YMkrwa.js +24 -0
  209. package/lib/vite/recorder/assets/index-ELPgmkwA.js +184 -0
  210. package/lib/vite/recorder/index.html +2 -2
  211. package/lib/vite/traceViewer/assets/codeMirrorModule-DpJ-EmBQ.js +24 -0
  212. package/lib/vite/traceViewer/assets/defaultSettingsView-DTenqiGw.js +259 -0
  213. package/lib/vite/traceViewer/assets/{xtermModule-BeNbaIVa.js → xtermModule-BoAIEibi.js} +7 -7
  214. package/lib/vite/traceViewer/defaultSettingsView.5fN5lw10.css +1 -0
  215. package/lib/vite/traceViewer/index.CUq7VgrV.js +2 -0
  216. package/lib/vite/traceViewer/index.html +4 -4
  217. package/lib/vite/traceViewer/sw.bundle.js +3 -3
  218. package/lib/vite/traceViewer/uiMode.CHJSAD7F.js +5 -0
  219. package/lib/vite/traceViewer/uiMode.html +4 -4
  220. package/lib/zipBundleImpl.js +4 -4
  221. package/package.json +7 -7
  222. package/types/protocol.d.ts +123 -99
  223. package/types/types.d.ts +110 -38
  224. package/lib/utils/stackTrace.js +0 -134
  225. package/lib/utils/traceUtils.js +0 -44
  226. package/lib/vite/recorder/assets/codeMirrorModule-3Qn3tPnZ.js +0 -24
  227. package/lib/vite/recorder/assets/index-Bek6JFv8.js +0 -184
  228. package/lib/vite/traceViewer/assets/codeMirrorModule-aLkSUGpW.js +0 -24
  229. package/lib/vite/traceViewer/assets/defaultSettingsView-CxUo6zd3.js +0 -243
  230. package/lib/vite/traceViewer/defaultSettingsView.DtIkrKWn.css +0 -1
  231. package/lib/vite/traceViewer/index.Bhu5cv5R.js +0 -2
  232. package/lib/vite/traceViewer/uiMode.BBy7FOVd.js +0 -5
  233. /package/lib/{utils → server/utils}/ascii.js +0 -0
  234. /package/lib/{utils → server/utils}/eventsHelper.js +0 -0
  235. /package/lib/{image_tools → server/utils/image_tools}/colorUtils.js +0 -0
  236. /package/lib/{image_tools → server/utils/image_tools}/compare.js +0 -0
  237. /package/lib/{image_tools → server/utils/image_tools}/imageChannel.js +0 -0
  238. /package/lib/{image_tools → server/utils/image_tools}/stats.js +0 -0
  239. /package/lib/{utils → server/utils}/spawnAsync.js +0 -0
  240. /package/lib/{utils → server/utils}/task.js +0 -0
  241. /package/lib/utils/{headers.js → isomorphic/headers.js} +0 -0
  242. /package/lib/utils/{semaphore.js → isomorphic/semaphore.js} +0 -0
  243. /package/lib/{common → utils/isomorphic}/types.js +0 -0
  244. /package/lib/vite/recorder/assets/{codeMirrorModule-ez37Vkbh.css → codeMirrorModule-C3UTv-Ge.css} +0 -0
  245. /package/lib/vite/recorder/assets/{index-CAQewHss.css → index-eHBmevrY.css} +0 -0
  246. /package/lib/vite/traceViewer/{codeMirrorModule.ez37Vkbh.css → codeMirrorModule.C3UTv-Ge.css} +0 -0
  247. /package/lib/vite/traceViewer/{index.CrbWWHbf.css → index.CFOW-Ezb.css} +0 -0
  248. /package/lib/vite/traceViewer/{uiMode.Be_ME-Go.css → uiMode.BatfzHMG.css} +0 -0
  249. /package/lib/vite/traceViewer/{xtermModule.DSXBckUd.css → xtermModule.Beg8tuEN.css} +0 -0
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 = {}) {