@checkly/playwright-core 1.42.17 → 1.47.20-alpha

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 (234) hide show
  1. package/ThirdPartyNotices.txt +144 -109
  2. package/browsers.json +15 -25
  3. package/lib/androidServerImpl.js +1 -1
  4. package/lib/browserServerImpl.js +1 -1
  5. package/lib/cli/driver.js +1 -3
  6. package/lib/cli/program.js +5 -10
  7. package/lib/client/android.js +1 -1
  8. package/lib/client/api.js +7 -0
  9. package/lib/client/browserContext.js +37 -5
  10. package/lib/client/browserType.js +19 -11
  11. package/lib/client/channelOwner.js +19 -16
  12. package/lib/client/clientInstrumentation.js +17 -7
  13. package/lib/client/clock.js +68 -0
  14. package/lib/client/connection.js +9 -6
  15. package/lib/client/electron.js +7 -5
  16. package/lib/client/elementHandle.js +44 -14
  17. package/lib/client/eventEmitter.js +314 -0
  18. package/lib/client/fetch.js +81 -28
  19. package/lib/client/frame.js +2 -4
  20. package/lib/client/jsHandle.js +7 -1
  21. package/lib/client/locator.js +9 -0
  22. package/lib/client/network.js +12 -9
  23. package/lib/client/page.js +45 -23
  24. package/lib/client/playwright.js +3 -0
  25. package/lib/client/tracing.js +7 -4
  26. package/lib/common/socksProxy.js +2 -2
  27. package/lib/generated/clockSource.js +7 -0
  28. package/lib/generated/injectedScriptSource.js +1 -1
  29. package/lib/generated/recorderSource.js +1 -1
  30. package/lib/generated/utilityScriptSource.js +1 -1
  31. package/lib/protocol/serializers.js +12 -11
  32. package/lib/protocol/validator.js +137 -55
  33. package/lib/server/bidi/bidiBrowser.js +296 -0
  34. package/lib/server/bidi/bidiConnection.js +206 -0
  35. package/lib/server/bidi/bidiExecutionContext.js +162 -0
  36. package/lib/server/bidi/bidiFirefox.js +110 -0
  37. package/lib/server/bidi/bidiInput.js +174 -0
  38. package/lib/server/bidi/bidiNetworkManager.js +304 -0
  39. package/lib/server/bidi/bidiPage.js +456 -0
  40. package/lib/server/bidi/third_party/bidiDeserializer.js +93 -0
  41. package/lib/server/bidi/third_party/bidiKeyboard.js +238 -0
  42. package/lib/server/bidi/third_party/bidiProtocol.js +139 -0
  43. package/lib/server/bidi/third_party/bidiSerializer.js +144 -0
  44. package/lib/server/browser.js +9 -1
  45. package/lib/server/browserContext.js +97 -22
  46. package/lib/server/browserType.js +27 -20
  47. package/lib/server/chromium/chromium.js +30 -15
  48. package/lib/server/chromium/chromiumSwitches.js +6 -3
  49. package/lib/server/chromium/crBrowser.js +11 -17
  50. package/lib/server/chromium/crConnection.js +2 -2
  51. package/lib/server/chromium/crDragDrop.js +28 -29
  52. package/lib/server/chromium/crNetworkManager.js +130 -84
  53. package/lib/server/chromium/crPage.js +34 -79
  54. package/lib/server/chromium/crProtocolHelper.js +3 -1
  55. package/lib/server/chromium/crServiceWorker.js +20 -23
  56. package/lib/server/chromium/videoRecorder.js +1 -1
  57. package/lib/server/clock.js +125 -0
  58. package/lib/server/codegen/csharp.js +299 -0
  59. package/lib/server/codegen/java.js +235 -0
  60. package/lib/server/codegen/javascript.js +223 -0
  61. package/lib/server/codegen/jsonl.js +47 -0
  62. package/lib/server/codegen/language.js +76 -0
  63. package/lib/server/codegen/languages.js +30 -0
  64. package/lib/server/codegen/python.js +265 -0
  65. package/lib/server/codegen/types.js +5 -0
  66. package/lib/server/debugController.js +3 -5
  67. package/lib/server/deviceDescriptors.js +9 -4
  68. package/lib/server/deviceDescriptorsSource.json +239 -119
  69. package/lib/server/dispatchers/androidDispatcher.js +1 -1
  70. package/lib/server/dispatchers/browserContextDispatcher.js +51 -7
  71. package/lib/server/dispatchers/dispatcher.js +36 -40
  72. package/lib/server/dispatchers/frameDispatcher.js +1 -2
  73. package/lib/server/dispatchers/jsHandleDispatcher.js +1 -1
  74. package/lib/server/dispatchers/jsonPipeDispatcher.js +4 -6
  75. package/lib/server/dispatchers/localUtilsDispatcher.js +19 -5
  76. package/lib/server/dispatchers/networkDispatchers.js +2 -2
  77. package/lib/server/dispatchers/pageDispatcher.js +5 -2
  78. package/lib/server/dispatchers/playwrightDispatcher.js +1 -0
  79. package/lib/server/dispatchers/writableStreamDispatcher.js +8 -5
  80. package/lib/server/dom.js +90 -53
  81. package/lib/server/electron/electron.js +21 -4
  82. package/lib/server/fetch.js +74 -25
  83. package/lib/server/fileUploadUtils.js +7 -3
  84. package/lib/server/firefox/ffBrowser.js +36 -25
  85. package/lib/server/firefox/ffConnection.js +2 -2
  86. package/lib/server/firefox/ffNetworkManager.js +6 -4
  87. package/lib/server/firefox/ffPage.js +22 -24
  88. package/lib/server/firefox/firefox.js +25 -6
  89. package/lib/server/frameSelectors.js +2 -2
  90. package/lib/server/frames.js +205 -159
  91. package/lib/server/har/harTracer.js +4 -12
  92. package/lib/server/helper.js +3 -3
  93. package/lib/server/index.js +18 -0
  94. package/lib/server/input.js +18 -8
  95. package/lib/server/instrumentation.js +0 -4
  96. package/lib/server/isomorphic/utilityScriptSerializers.js +19 -5
  97. package/lib/server/javascript.js +3 -2
  98. package/lib/server/launchApp.js +3 -2
  99. package/lib/server/network.js +14 -4
  100. package/lib/server/page.js +75 -46
  101. package/lib/server/playwright.js +5 -2
  102. package/lib/server/recorder/codeGenerator.js +2 -1
  103. package/lib/server/recorder/contextRecorder.js +316 -0
  104. package/lib/server/recorder/csharp.js +2 -1
  105. package/lib/server/recorder/java.js +2 -1
  106. package/lib/server/recorder/javascript.js +2 -1
  107. package/lib/server/recorder/jsonl.js +2 -1
  108. package/lib/server/recorder/language.js +2 -1
  109. package/lib/server/recorder/python.js +2 -1
  110. package/lib/server/recorder/recorderApp.js +14 -5
  111. package/lib/server/recorder/recorderCollection.js +127 -0
  112. package/lib/server/recorder/recorderRunner.js +177 -0
  113. package/lib/server/recorder/recorderUtils.js +23 -0
  114. package/lib/server/recorder/throttledFile.js +46 -0
  115. package/lib/server/recorder/utils.js +2 -1
  116. package/lib/server/recorder.js +42 -418
  117. package/lib/server/registry/index.js +99 -100
  118. package/lib/server/registry/nativeDeps.js +107 -0
  119. package/lib/server/screenshotter.js +6 -12
  120. package/lib/server/socksClientCertificatesInterceptor.js +328 -0
  121. package/lib/server/trace/recorder/snapshotter.js +4 -1
  122. package/lib/server/trace/recorder/tracing.js +27 -96
  123. package/lib/server/trace/viewer/traceViewer.js +54 -67
  124. package/lib/server/transport.js +1 -1
  125. package/lib/server/webkit/webkit.js +5 -5
  126. package/lib/server/webkit/wkBrowser.js +14 -14
  127. package/lib/server/webkit/wkConnection.js +3 -3
  128. package/lib/server/webkit/wkInterceptableRequest.js +8 -4
  129. package/lib/server/webkit/wkPage.js +52 -34
  130. package/lib/server/webkit/wkProvisionalPage.js +36 -1
  131. package/lib/utils/crypto.js +141 -0
  132. package/lib/utils/debugLogger.js +2 -0
  133. package/lib/utils/env.js +4 -2
  134. package/lib/utils/expectUtils.js +33 -0
  135. package/lib/utils/fileUtils.js +140 -1
  136. package/lib/utils/glob.js +2 -1
  137. package/lib/utils/happy-eyeballs.js +29 -2
  138. package/lib/utils/hostPlatform.js +13 -4
  139. package/lib/utils/httpServer.js +54 -13
  140. package/lib/utils/index.js +53 -31
  141. package/lib/utils/isomorphic/cssTokenizer.js +1 -1
  142. package/lib/utils/isomorphic/locatorParser.js +1 -1
  143. package/lib/utils/isomorphic/mimeType.js +29 -0
  144. package/lib/utils/isomorphic/stringUtils.js +28 -1
  145. package/lib/utils/isomorphic/urlMatch.js +120 -0
  146. package/lib/utils/mimeType.js +2 -1
  147. package/lib/utils/network.js +7 -35
  148. package/lib/utils/stackTrace.js +2 -4
  149. package/lib/utils/timeoutRunner.js +11 -76
  150. package/lib/utils/zones.js +23 -60
  151. package/lib/utilsBundle.js +2 -1
  152. package/lib/utilsBundleImpl/index.js +33 -31
  153. package/lib/vite/htmlReport/index.html +12 -12
  154. package/lib/vite/recorder/assets/codeMirrorModule-C-fQ5QZD.js +24 -0
  155. package/lib/vite/recorder/assets/{codicon-zGuYmc9o.ttf → codicon-DCmgc-ay.ttf} +0 -0
  156. package/lib/vite/recorder/assets/index-B-MT5gKo.css +1 -0
  157. package/lib/vite/recorder/assets/index-D-5S5PPN.js +47 -0
  158. package/lib/vite/recorder/index.html +2 -2
  159. package/lib/vite/traceViewer/assets/codeMirrorModule-5yiV-3wl.js +16831 -0
  160. package/lib/vite/traceViewer/assets/codeMirrorModule-B7Z3vq11.js +24 -0
  161. package/lib/vite/traceViewer/assets/codeMirrorModule-C6p3E9Zg.js +24 -0
  162. package/lib/vite/traceViewer/assets/codeMirrorModule-CqYUz5ms.js +24 -0
  163. package/lib/vite/traceViewer/assets/codeMirrorModule-Dx6AXgMV.js +16838 -0
  164. package/lib/vite/traceViewer/assets/codeMirrorModule-T_sdMrbM.js +24 -0
  165. package/lib/vite/traceViewer/assets/codeMirrorModule-V7N6ppkd.js +15585 -0
  166. package/lib/vite/traceViewer/assets/testServerConnection-D-tXL3sj.js +224 -0
  167. package/lib/vite/traceViewer/assets/testServerConnection-DeE2kSzz.js +1 -0
  168. package/lib/vite/traceViewer/assets/workbench-Bjkiwcr1.js +19119 -0
  169. package/lib/vite/traceViewer/assets/workbench-C43LWZEX.js +72 -0
  170. package/lib/vite/traceViewer/assets/workbench-C5OQh9VX.js +19119 -0
  171. package/lib/vite/traceViewer/assets/workbench-DrQjKdyE.js +72 -0
  172. package/lib/vite/traceViewer/assets/workbench-caTaZnzx.js +72 -0
  173. package/lib/vite/traceViewer/assets/workbench-u2lRPMOT.js +72 -0
  174. package/lib/vite/traceViewer/assets/wsPort-EUvw-dwH.js +18540 -0
  175. package/lib/vite/traceViewer/assets/xtermModule-CZ7sDYXB.js +6529 -0
  176. package/lib/vite/traceViewer/assets/xtermModule-_6TC5FYT.js +6529 -0
  177. package/lib/vite/traceViewer/codeMirrorModule.Cy8X9Wtw.css +344 -0
  178. package/lib/vite/traceViewer/codeMirrorModule.svF_VrcJ.css +344 -0
  179. package/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
  180. package/lib/vite/traceViewer/embedded.BQq6Psnz.js +104 -0
  181. package/lib/vite/traceViewer/embedded.BVDVQOzc.js +2 -0
  182. package/lib/vite/traceViewer/embedded.Bn8Ptzv6.js +2 -0
  183. package/lib/vite/traceViewer/embedded.CvhnUgIi.js +2 -0
  184. package/lib/vite/traceViewer/embedded.D27cnKiB.js +104 -0
  185. package/lib/vite/traceViewer/embedded.DPqrDeET.js +2 -0
  186. package/lib/vite/traceViewer/embedded.DjZq4InJ.css +68 -0
  187. package/lib/vite/traceViewer/embedded.html +16 -0
  188. package/lib/vite/traceViewer/embedded.w7WN2u1R.css +1 -0
  189. package/lib/vite/traceViewer/index.5mge2rY_.css +124 -0
  190. package/lib/vite/traceViewer/index.6KJ-JQ0L.js +180 -0
  191. package/lib/vite/traceViewer/index.B8dgQwuN.js +2 -0
  192. package/lib/vite/traceViewer/index.BGj8jY3H.js +2 -0
  193. package/lib/vite/traceViewer/index.C0EgJ4oW.js +195 -0
  194. package/lib/vite/traceViewer/index.CUpI-BFe.js +195 -0
  195. package/lib/vite/traceViewer/{index.-g_5lMbJ.css → index.CrbWWHbf.css} +1 -1
  196. package/lib/vite/traceViewer/index.QanXxRUb.css +131 -0
  197. package/lib/vite/traceViewer/index._cX8k4co.js +2 -0
  198. package/lib/vite/traceViewer/index.html +5 -4
  199. package/lib/vite/traceViewer/index.pMAN88y-.js +2 -0
  200. package/lib/vite/traceViewer/snapshot.html +1 -1
  201. package/lib/vite/traceViewer/sw.bundle.js +3 -4
  202. package/lib/vite/traceViewer/uiMode.D-tg1Oci.js +1730 -0
  203. package/lib/vite/traceViewer/uiMode.D3cNFP6u.css +1 -0
  204. package/lib/vite/traceViewer/uiMode.DKjMBMlc.js +1730 -0
  205. package/lib/vite/traceViewer/uiMode.DVWUEIHq.css +1424 -0
  206. package/lib/vite/traceViewer/uiMode.DVrL7a1K.js +10 -0
  207. package/lib/vite/traceViewer/uiMode.Dg9oJCQU.js +10 -0
  208. package/lib/vite/traceViewer/uiMode.DwZAzstF.js +10 -0
  209. package/lib/vite/traceViewer/uiMode.html +5 -4
  210. package/lib/vite/traceViewer/uiMode.iq7CyYy7.js +1490 -0
  211. package/lib/vite/traceViewer/uiMode.jY2s-9ps.js +10 -0
  212. package/lib/vite/traceViewer/uiMode.xvJHbkzl.css +1324 -0
  213. package/lib/vite/traceViewer/workbench.B3X2QtYa.css +3702 -0
  214. package/lib/vite/traceViewer/workbench.DyTpxWVb.css +1 -0
  215. package/lib/vite/traceViewer/wsPort.p5jUwABW.css +3450 -0
  216. package/lib/vite/traceViewer/xtermModule.4oRVGWQ-.css +209 -0
  217. package/lib/vite/traceViewer/xtermModule.OKEVRlkP.css +209 -0
  218. package/package.json +2 -2
  219. package/types/protocol.d.ts +960 -78
  220. package/types/structs.d.ts +1 -1
  221. package/types/types.d.ts +3083 -2448
  222. package/lib/vite/recorder/assets/codeMirrorModule-I9ks4y7D.js +0 -24
  223. package/lib/vite/recorder/assets/index-ljsTwXtJ.css +0 -1
  224. package/lib/vite/recorder/assets/index-yg8ypzl6.js +0 -47
  225. package/lib/vite/traceViewer/assets/codeMirrorModule-0bpaqixv.js +0 -24
  226. package/lib/vite/traceViewer/assets/wsPort-_JBDEilC.js +0 -69
  227. package/lib/vite/traceViewer/index.u51inEcm.js +0 -2
  228. package/lib/vite/traceViewer/uiMode.Fb0bNA4H.js +0 -10
  229. package/lib/vite/traceViewer/uiMode.pWy0Re7G.css +0 -1
  230. package/lib/vite/traceViewer/wsPort.zR1WIy9-.css +0 -1
  231. /package/lib/vite/recorder/assets/{codeMirrorModule-Hs9-1ZG4.css → codeMirrorModule-ez37Vkbh.css} +0 -0
  232. /package/lib/vite/traceViewer/assets/{xtermModule-Yt6xwiJ_.js → xtermModule-BeNbaIVa.js} +0 -0
  233. /package/lib/vite/traceViewer/{codeMirrorModule.Hs9-1ZG4.css → codeMirrorModule.ez37Vkbh.css} +0 -0
  234. /package/lib/vite/traceViewer/{xtermModule.0lwXJFHT.css → xtermModule.DSXBckUd.css} +0 -0
@@ -47,6 +47,17 @@ Object.keys(_debug).forEach(function (key) {
47
47
  }
48
48
  });
49
49
  });
50
+ var _debugLogger = require("./debugLogger");
51
+ Object.keys(_debugLogger).forEach(function (key) {
52
+ if (key === "default" || key === "__esModule") return;
53
+ if (key in exports && exports[key] === _debugLogger[key]) return;
54
+ Object.defineProperty(exports, key, {
55
+ enumerable: true,
56
+ get: function () {
57
+ return _debugLogger[key];
58
+ }
59
+ });
60
+ });
50
61
  var _env = require("./env");
51
62
  Object.keys(_env).forEach(function (key) {
52
63
  if (key === "default" || key === "__esModule") return;
@@ -69,25 +80,25 @@ Object.keys(_eventsHelper).forEach(function (key) {
69
80
  }
70
81
  });
71
82
  });
72
- var _fileUtils = require("./fileUtils");
73
- Object.keys(_fileUtils).forEach(function (key) {
83
+ var _expectUtils = require("./expectUtils");
84
+ Object.keys(_expectUtils).forEach(function (key) {
74
85
  if (key === "default" || key === "__esModule") return;
75
- if (key in exports && exports[key] === _fileUtils[key]) return;
86
+ if (key in exports && exports[key] === _expectUtils[key]) return;
76
87
  Object.defineProperty(exports, key, {
77
88
  enumerable: true,
78
89
  get: function () {
79
- return _fileUtils[key];
90
+ return _expectUtils[key];
80
91
  }
81
92
  });
82
93
  });
83
- var _glob = require("./glob");
84
- Object.keys(_glob).forEach(function (key) {
94
+ var _fileUtils = require("./fileUtils");
95
+ Object.keys(_fileUtils).forEach(function (key) {
85
96
  if (key === "default" || key === "__esModule") return;
86
- if (key in exports && exports[key] === _glob[key]) return;
97
+ if (key in exports && exports[key] === _fileUtils[key]) return;
87
98
  Object.defineProperty(exports, key, {
88
99
  enumerable: true,
89
100
  get: function () {
90
- return _glob[key];
101
+ return _fileUtils[key];
91
102
  }
92
103
  });
93
104
  });
@@ -135,7 +146,18 @@ Object.keys(_manualPromise).forEach(function (key) {
135
146
  }
136
147
  });
137
148
  });
138
- var _mimeType = require("./mimeType");
149
+ var _locatorGenerators = require("./isomorphic/locatorGenerators");
150
+ Object.keys(_locatorGenerators).forEach(function (key) {
151
+ if (key === "default" || key === "__esModule") return;
152
+ if (key in exports && exports[key] === _locatorGenerators[key]) return;
153
+ Object.defineProperty(exports, key, {
154
+ enumerable: true,
155
+ get: function () {
156
+ return _locatorGenerators[key];
157
+ }
158
+ });
159
+ });
160
+ var _mimeType = require("./isomorphic/mimeType");
139
161
  Object.keys(_mimeType).forEach(function (key) {
140
162
  if (key === "default" || key === "__esModule") return;
141
163
  if (key in exports && exports[key] === _mimeType[key]) return;
@@ -146,6 +168,28 @@ Object.keys(_mimeType).forEach(function (key) {
146
168
  }
147
169
  });
148
170
  });
171
+ var _stringUtils = require("./isomorphic/stringUtils");
172
+ Object.keys(_stringUtils).forEach(function (key) {
173
+ if (key === "default" || key === "__esModule") return;
174
+ if (key in exports && exports[key] === _stringUtils[key]) return;
175
+ Object.defineProperty(exports, key, {
176
+ enumerable: true,
177
+ get: function () {
178
+ return _stringUtils[key];
179
+ }
180
+ });
181
+ });
182
+ var _urlMatch = require("./isomorphic/urlMatch");
183
+ Object.keys(_urlMatch).forEach(function (key) {
184
+ if (key === "default" || key === "__esModule") return;
185
+ if (key in exports && exports[key] === _urlMatch[key]) return;
186
+ Object.defineProperty(exports, key, {
187
+ enumerable: true,
188
+ get: function () {
189
+ return _urlMatch[key];
190
+ }
191
+ });
192
+ });
149
193
  var _multimap = require("./multimap");
150
194
  Object.keys(_multimap).forEach(function (key) {
151
195
  if (key === "default" || key === "__esModule") return;
@@ -321,26 +365,4 @@ Object.keys(_zones).forEach(function (key) {
321
365
  return _zones[key];
322
366
  }
323
367
  });
324
- });
325
- var _locatorGenerators = require("./isomorphic/locatorGenerators");
326
- Object.keys(_locatorGenerators).forEach(function (key) {
327
- if (key === "default" || key === "__esModule") return;
328
- if (key in exports && exports[key] === _locatorGenerators[key]) return;
329
- Object.defineProperty(exports, key, {
330
- enumerable: true,
331
- get: function () {
332
- return _locatorGenerators[key];
333
- }
334
- });
335
- });
336
- var _stringUtils = require("./isomorphic/stringUtils");
337
- Object.keys(_stringUtils).forEach(function (key) {
338
- if (key === "default" || key === "__esModule") return;
339
- if (key in exports && exports[key] === _stringUtils[key]) return;
340
- Object.defineProperty(exports, key, {
341
- enumerable: true,
342
- get: function () {
343
- return _stringUtils[key];
344
- }
345
- });
346
368
  });
@@ -387,7 +387,7 @@ function tokenize(str1) {
387
387
  throw new Error('Internal error');
388
388
  };
389
389
  const consumeEscape = function () {
390
- // Assume the the current character is the \
390
+ // Assume the current character is the \
391
391
  // and the next code point is not a newline.
392
392
  consume();
393
393
  if (hexdigit(code)) {
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.locatorOrSelectorAsSelector = locatorOrSelectorAsSelector;
7
- var _stringUtils = require("../../utils/isomorphic/stringUtils");
7
+ var _stringUtils = require("./stringUtils");
8
8
  var _locatorGenerators = require("./locatorGenerators");
9
9
  var _selectorParser = require("./selectorParser");
10
10
  /**
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.isJsonMimeType = isJsonMimeType;
7
+ exports.isTextualMimeType = isTextualMimeType;
8
+ /**
9
+ * Copyright (c) Microsoft Corporation.
10
+ *
11
+ * Licensed under the Apache License, Version 2.0 (the "License");
12
+ * you may not use this file except in compliance with the License.
13
+ * You may obtain a copy of the License at
14
+ *
15
+ * http://www.apache.org/licenses/LICENSE-2.0
16
+ *
17
+ * Unless required by applicable law or agreed to in writing, software
18
+ * distributed under the License is distributed on an "AS IS" BASIS,
19
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20
+ * See the License for the specific language governing permissions and
21
+ * limitations under the License.
22
+ */
23
+
24
+ function isJsonMimeType(mimeType) {
25
+ return !!mimeType.match(/^(application\/json|application\/.*?\+json|text\/(x-)?json)(;\s*charset=.*)?$/);
26
+ }
27
+ function isTextualMimeType(mimeType) {
28
+ return !!mimeType.match(/^(text\/.*?|application\/(json|(x-)?javascript|xml.*?|ecmascript|graphql|x-www-form-urlencoded)|image\/svg(\+xml)?|application\/.*?(\+json|\+xml))(;\s*charset=.*)?$/);
29
+ }
@@ -3,9 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.cacheNormalizedWhitespaces = cacheNormalizedWhitespaces;
6
7
  exports.cssEscape = cssEscape;
7
8
  exports.escapeForAttributeSelector = escapeForAttributeSelector;
8
9
  exports.escapeForTextSelector = escapeForTextSelector;
10
+ exports.escapeHTML = escapeHTML;
11
+ exports.escapeHTMLAttribute = escapeHTMLAttribute;
9
12
  exports.escapeRegExp = escapeRegExp;
10
13
  exports.escapeWithQuotes = escapeWithQuotes;
11
14
  exports.isString = isString;
@@ -68,8 +71,19 @@ function cssEscapeOne(s, i) {
68
71
  if (c >= 0x0080 || c === 0x002d || c === 0x005f || c >= 0x0030 && c <= 0x0039 || c >= 0x0041 && c <= 0x005a || c >= 0x0061 && c <= 0x007a) return s.charAt(i);
69
72
  return '\\' + s.charAt(i);
70
73
  }
74
+ let normalizedWhitespaceCache;
75
+ function cacheNormalizedWhitespaces() {
76
+ normalizedWhitespaceCache = new Map();
77
+ }
71
78
  function normalizeWhiteSpace(text) {
72
- return text.replace(/\u200b/g, '').trim().replace(/\s+/g, ' ');
79
+ var _normalizedWhitespace;
80
+ let result = (_normalizedWhitespace = normalizedWhitespaceCache) === null || _normalizedWhitespace === void 0 ? void 0 : _normalizedWhitespace.get(text);
81
+ if (result === undefined) {
82
+ var _normalizedWhitespace2;
83
+ result = text.replace(/\u200b/g, '').trim().replace(/\s+/g, ' ');
84
+ (_normalizedWhitespace2 = normalizedWhitespaceCache) === null || _normalizedWhitespace2 === void 0 || _normalizedWhitespace2.set(text, result);
85
+ }
86
+ return result;
73
87
  }
74
88
  function normalizeEscapedRegexQuotes(source) {
75
89
  // This function reverses the effect of escapeRegexForSelector below.
@@ -109,4 +123,17 @@ function trimStringWithEllipsis(input, cap) {
109
123
  function escapeRegExp(s) {
110
124
  // From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping
111
125
  return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
126
+ }
127
+ const escaped = {
128
+ '&': '&amp;',
129
+ '<': '&lt;',
130
+ '>': '&gt;',
131
+ '"': '&quot;',
132
+ '\'': '&#39;'
133
+ };
134
+ function escapeHTMLAttribute(s) {
135
+ return s.replace(/[&<>"']/ug, char => escaped[char]);
136
+ }
137
+ function escapeHTML(s) {
138
+ return s.replace(/[&<]/ug, char => escaped[char]);
112
139
  }
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.constructURLBasedOnBaseURL = constructURLBasedOnBaseURL;
7
+ exports.globToRegex = globToRegex;
8
+ exports.urlMatches = urlMatches;
9
+ exports.urlMatchesEqual = urlMatchesEqual;
10
+ var _stringUtils = require("./stringUtils");
11
+ /**
12
+ * Copyright (c) Microsoft Corporation.
13
+ *
14
+ * Licensed under the Apache License, Version 2.0 (the "License");
15
+ * you may not use this file except in compliance with the License.
16
+ * You may obtain a copy of the License at
17
+ *
18
+ * http://www.apache.org/licenses/LICENSE-2.0
19
+ *
20
+ * Unless required by applicable law or agreed to in writing, software
21
+ * distributed under the License is distributed on an "AS IS" BASIS,
22
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
23
+ * See the License for the specific language governing permissions and
24
+ * limitations under the License.
25
+ */
26
+
27
+ // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_expressions#escaping
28
+ const escapedChars = new Set(['$', '^', '+', '.', '*', '(', ')', '|', '\\', '?', '{', '}', '[', ']']);
29
+ function globToRegex(glob) {
30
+ const tokens = ['^'];
31
+ let inGroup = false;
32
+ for (let i = 0; i < glob.length; ++i) {
33
+ const c = glob[i];
34
+ if (c === '\\' && i + 1 < glob.length) {
35
+ const char = glob[++i];
36
+ tokens.push(escapedChars.has(char) ? '\\' + char : char);
37
+ continue;
38
+ }
39
+ if (c === '*') {
40
+ const beforeDeep = glob[i - 1];
41
+ let starCount = 1;
42
+ while (glob[i + 1] === '*') {
43
+ starCount++;
44
+ i++;
45
+ }
46
+ const afterDeep = glob[i + 1];
47
+ const isDeep = starCount > 1 && (beforeDeep === '/' || beforeDeep === undefined) && (afterDeep === '/' || afterDeep === undefined);
48
+ if (isDeep) {
49
+ tokens.push('((?:[^/]*(?:\/|$))*)');
50
+ i++;
51
+ } else {
52
+ tokens.push('([^/]*)');
53
+ }
54
+ continue;
55
+ }
56
+ switch (c) {
57
+ case '?':
58
+ tokens.push('.');
59
+ break;
60
+ case '[':
61
+ tokens.push('[');
62
+ break;
63
+ case ']':
64
+ tokens.push(']');
65
+ break;
66
+ case '{':
67
+ inGroup = true;
68
+ tokens.push('(');
69
+ break;
70
+ case '}':
71
+ inGroup = false;
72
+ tokens.push(')');
73
+ break;
74
+ case ',':
75
+ if (inGroup) {
76
+ tokens.push('|');
77
+ break;
78
+ }
79
+ tokens.push('\\' + c);
80
+ break;
81
+ default:
82
+ tokens.push(escapedChars.has(c) ? '\\' + c : c);
83
+ }
84
+ }
85
+ tokens.push('$');
86
+ return new RegExp(tokens.join(''));
87
+ }
88
+ function isRegExp(obj) {
89
+ return obj instanceof RegExp || Object.prototype.toString.call(obj) === '[object RegExp]';
90
+ }
91
+ function urlMatchesEqual(match1, match2) {
92
+ if (isRegExp(match1) && isRegExp(match2)) return match1.source === match2.source && match1.flags === match2.flags;
93
+ return match1 === match2;
94
+ }
95
+ function urlMatches(baseURL, urlString, match) {
96
+ if (match === undefined || match === '') return true;
97
+ if ((0, _stringUtils.isString)(match) && !match.startsWith('*')) match = constructURLBasedOnBaseURL(baseURL, match);
98
+ if ((0, _stringUtils.isString)(match)) match = globToRegex(match);
99
+ if (isRegExp(match)) return match.test(urlString);
100
+ if (typeof match === 'string' && match === urlString) return true;
101
+ const url = parsedURL(urlString);
102
+ if (!url) return false;
103
+ if (typeof match === 'string') return url.pathname === match;
104
+ if (typeof match !== 'function') throw new Error('url parameter should be string, RegExp or function');
105
+ return match(url);
106
+ }
107
+ function parsedURL(url) {
108
+ try {
109
+ return new URL(url);
110
+ } catch (e) {
111
+ return null;
112
+ }
113
+ }
114
+ function constructURLBasedOnBaseURL(baseURL, givenURL) {
115
+ try {
116
+ return new URL(givenURL, baseURL).toString();
117
+ } catch (e) {
118
+ return givenURL;
119
+ }
120
+ }
@@ -26,4 +26,5 @@ function isJsonMimeType(mimeType) {
26
26
  }
27
27
  function isTextualMimeType(mimeType) {
28
28
  return !!mimeType.match(/^(text\/.*?|application\/(json|(x-)?javascript|xml.*?|ecmascript|graphql|x-www-form-urlencoded)|image\/svg(\+xml)?|application\/.*?(\+json|\+xml))(;\s*charset=.*)?$/);
29
- }
29
+ }
30
+ //# sourceMappingURL=mimeType.js.map
@@ -4,20 +4,17 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.NET_DEFAULT_TIMEOUT = void 0;
7
- exports.constructURLBasedOnBaseURL = constructURLBasedOnBaseURL;
7
+ exports.createHttp2Server = createHttp2Server;
8
8
  exports.createHttpServer = createHttpServer;
9
9
  exports.createHttpsServer = createHttpsServer;
10
10
  exports.fetchData = fetchData;
11
11
  exports.httpRequest = httpRequest;
12
12
  exports.isURLAvailable = isURLAvailable;
13
- exports.urlMatches = urlMatches;
14
- exports.urlMatchesEqual = urlMatchesEqual;
15
13
  var _http = _interopRequireDefault(require("http"));
16
14
  var _https = _interopRequireDefault(require("https"));
15
+ var _http2 = _interopRequireDefault(require("http2"));
17
16
  var _utilsBundle = require("../utilsBundle");
18
17
  var _url = _interopRequireDefault(require("url"));
19
- var _rtti = require("./rtti");
20
- var _glob = require("./glob");
21
18
  var _happyEyeballs = require("./happy-eyeballs");
22
19
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
20
  /**
@@ -102,36 +99,6 @@ function fetchData(params, onError) {
102
99
  }, reject);
103
100
  });
104
101
  }
105
- function urlMatchesEqual(match1, match2) {
106
- if ((0, _rtti.isRegExp)(match1) && (0, _rtti.isRegExp)(match2)) return match1.source === match2.source && match1.flags === match2.flags;
107
- return match1 === match2;
108
- }
109
- function urlMatches(baseURL, urlString, match) {
110
- if (match === undefined || match === '') return true;
111
- if ((0, _rtti.isString)(match) && !match.startsWith('*')) match = constructURLBasedOnBaseURL(baseURL, match);
112
- if ((0, _rtti.isString)(match)) match = (0, _glob.globToRegex)(match);
113
- if ((0, _rtti.isRegExp)(match)) return match.test(urlString);
114
- if (typeof match === 'string' && match === urlString) return true;
115
- const url = parsedURL(urlString);
116
- if (!url) return false;
117
- if (typeof match === 'string') return url.pathname === match;
118
- if (typeof match !== 'function') throw new Error('url parameter should be string, RegExp or function');
119
- return match(url);
120
- }
121
- function parsedURL(url) {
122
- try {
123
- return new URL(url);
124
- } catch (e) {
125
- return null;
126
- }
127
- }
128
- function constructURLBasedOnBaseURL(baseURL, givenURL) {
129
- try {
130
- return new URL(givenURL, baseURL).toString();
131
- } catch (e) {
132
- return givenURL;
133
- }
134
- }
135
102
  function createHttpServer(...args) {
136
103
  const server = _http.default.createServer(...args);
137
104
  decorateServer(server);
@@ -142,6 +109,11 @@ function createHttpsServer(...args) {
142
109
  decorateServer(server);
143
110
  return server;
144
111
  }
112
+ function createHttp2Server(...args) {
113
+ const server = _http2.default.createSecureServer(...args);
114
+ decorateServer(server);
115
+ return server;
116
+ }
145
117
  async function isURLAvailable(url, ignoreHTTPSErrors, onLog, onStdErr) {
146
118
  let statusCode = await httpStatusCode(url, ignoreHTTPSErrors, onLog, onStdErr);
147
119
  if (statusCode === 404 && url.pathname === '/') {
@@ -40,7 +40,6 @@ function rewriteErrorMessage(e, newMessage) {
40
40
  return e;
41
41
  }
42
42
  const CORE_DIR = _path.default.resolve(__dirname, '..', '..');
43
- const COVERAGE_PATH = _path.default.join(CORE_DIR, '..', '..', 'tests', 'config', 'coverage.js');
44
43
  const internalStackPrefixes = [CORE_DIR];
45
44
  const addInternalStackPrefix = prefix => internalStackPrefixes.push(prefix);
46
45
  exports.addInternalStackPrefix = addInternalStackPrefix;
@@ -52,13 +51,12 @@ function captureRawStack() {
52
51
  Error.stackTraceLimit = stackTraceLimit;
53
52
  return stack.split('\n');
54
53
  }
55
- function captureLibraryStackTrace(rawStack) {
56
- const stack = rawStack || captureRawStack();
54
+ function captureLibraryStackTrace() {
55
+ const stack = captureRawStack();
57
56
  const isTesting = (0, _.isUnderTest)();
58
57
  let parsedFrames = stack.map(line => {
59
58
  const frame = (0, _utilsBundle.parseStackTraceLine)(line);
60
59
  if (!frame || !frame.file) return null;
61
- if (!process.env.PWDEBUGIMPL && isTesting && frame.file.includes(COVERAGE_PATH)) return null;
62
60
  const isPlaywrightLibrary = frame.file.startsWith(CORE_DIR);
63
61
  const parsed = {
64
62
  frame,
@@ -3,10 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.TimeoutRunnerError = exports.TimeoutRunner = exports.MaxTime = void 0;
7
6
  exports.pollAgainstDeadline = pollAgainstDeadline;
8
7
  exports.raceAgainstDeadline = raceAgainstDeadline;
9
- var _manualPromise = require("./manualPromise");
10
8
  var _ = require("./");
11
9
  /**
12
10
  * Copyright (c) Microsoft Corporation.
@@ -24,85 +22,22 @@ var _ = require("./");
24
22
  * limitations under the License.
25
23
  */
26
24
 
27
- class TimeoutRunnerError extends Error {}
28
- exports.TimeoutRunnerError = TimeoutRunnerError;
29
- const MaxTime = exports.MaxTime = 2147483647; // 2^31-1
30
-
31
- class TimeoutRunner {
32
- constructor(timeout) {
33
- this._running = void 0;
34
- this._timeout = void 0;
35
- this._elapsed = void 0;
36
- this._deadline = MaxTime;
37
- this._timeout = timeout;
38
- this._elapsed = 0;
39
- }
40
- async run(cb) {
41
- const running = this._running = {
42
- lastElapsedSync: (0, _.monotonicTime)(),
43
- timer: undefined,
44
- timeoutPromise: new _manualPromise.ManualPromise()
45
- };
46
- try {
47
- const resultPromise = Promise.race([cb(), running.timeoutPromise]);
48
- this._updateTimeout(running, this._timeout);
49
- return await resultPromise;
50
- } finally {
51
- this._updateTimeout(running, 0);
52
- if (this._running === running) this._running = undefined;
53
- }
54
- }
55
- interrupt() {
56
- if (this._running) this._updateTimeout(this._running, -1);
57
- }
58
- elapsed() {
59
- this._syncElapsedAndStart();
60
- return this._elapsed;
61
- }
62
- deadline() {
63
- return this._deadline;
64
- }
65
- updateTimeout(timeout, elapsed) {
66
- this._timeout = timeout;
67
- if (elapsed !== undefined) {
68
- this._syncElapsedAndStart();
69
- this._elapsed = elapsed;
70
- }
71
- if (this._running) this._updateTimeout(this._running, timeout);
72
- }
73
- _syncElapsedAndStart() {
74
- if (this._running) {
75
- const now = (0, _.monotonicTime)();
76
- this._elapsed += now - this._running.lastElapsedSync;
77
- this._running.lastElapsedSync = now;
78
- }
79
- }
80
- _updateTimeout(running, timeout) {
81
- if (running.timer) {
82
- clearTimeout(running.timer);
83
- running.timer = undefined;
84
- }
85
- this._syncElapsedAndStart();
86
- this._deadline = timeout ? (0, _.monotonicTime)() + timeout : MaxTime;
87
- if (timeout === 0) return;
88
- timeout = timeout - this._elapsed;
89
- if (timeout <= 0) running.timeoutPromise.reject(new TimeoutRunnerError());else running.timer = setTimeout(() => running.timeoutPromise.reject(new TimeoutRunnerError()), timeout);
90
- }
91
- }
92
- exports.TimeoutRunner = TimeoutRunner;
93
25
  async function raceAgainstDeadline(cb, deadline) {
94
- const runner = new TimeoutRunner((deadline || MaxTime) - (0, _.monotonicTime)());
95
- try {
26
+ let timer;
27
+ return Promise.race([cb().then(result => {
96
28
  return {
97
- result: await runner.run(cb),
29
+ result,
98
30
  timedOut: false
99
31
  };
100
- } catch (e) {
101
- if (e instanceof TimeoutRunnerError) return {
32
+ }), new Promise(resolve => {
33
+ const kMaxDeadline = 2147483647; // 2^31-1
34
+ const timeout = (deadline || kMaxDeadline) - (0, _.monotonicTime)();
35
+ timer = setTimeout(() => resolve({
102
36
  timedOut: true
103
- };
104
- throw e;
105
- }
37
+ }), timeout);
38
+ })]).finally(() => {
39
+ clearTimeout(timer);
40
+ });
106
41
  }
107
42
  async function pollAgainstDeadline(callback, deadline, pollIntervals = [100, 250, 500, 1000]) {
108
43
  var _pollIntervals$pop;
@@ -3,9 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.runWithFinally = runWithFinally;
7
6
  exports.zones = void 0;
8
- var _stackTrace = require("./stackTrace");
7
+ var _async_hooks = require("async_hooks");
9
8
  /**
10
9
  * Copyright (c) Microsoft Corporation.
11
10
  *
@@ -24,76 +23,40 @@ var _stackTrace = require("./stackTrace");
24
23
 
25
24
  class ZoneManager {
26
25
  constructor() {
27
- this.lastZoneId = 0;
28
- this._zones = new Map();
26
+ this._asyncLocalStorage = new _async_hooks.AsyncLocalStorage();
29
27
  }
30
28
  run(type, data, func) {
31
- return new Zone(this, ++this.lastZoneId, type, data).run(func);
29
+ const previous = this._asyncLocalStorage.getStore();
30
+ const zone = new Zone(previous, type, data);
31
+ return this._asyncLocalStorage.run(zone, func);
32
32
  }
33
- zoneData(type, rawStack) {
34
- for (const line of rawStack) {
35
- for (const zoneId of zoneIds(line)) {
36
- const zone = this._zones.get(zoneId);
37
- if (zone && zone.type === type) return zone.data;
38
- }
33
+ zoneData(type) {
34
+ for (let zone = this._asyncLocalStorage.getStore(); zone; zone = zone.previous) {
35
+ if (zone.type === type) return zone.data;
39
36
  }
40
- return null;
37
+ return undefined;
41
38
  }
42
- preserve(callback) {
43
- const rawStack = (0, _stackTrace.captureRawStack)();
44
- const refs = [];
45
- for (const line of rawStack) refs.push(...zoneIds(line));
46
- Object.defineProperty(callback, 'name', {
47
- value: `__PWZONE__[${refs.join(',')}]-refs`
48
- });
49
- return callback();
39
+ exitZones(func) {
40
+ return this._asyncLocalStorage.run(undefined, func);
41
+ }
42
+ printZones() {
43
+ const zones = [];
44
+ for (let zone = this._asyncLocalStorage.getStore(); zone; zone = zone.previous) {
45
+ let str = zone.type;
46
+ if (zone.type === 'apiZone') str += `(${zone.data.apiName})`;
47
+ zones.push(str);
48
+ }
49
+ console.log('zones: ', zones.join(' -> '));
50
50
  }
51
- }
52
- function zoneIds(line) {
53
- const index = line.indexOf('__PWZONE__[');
54
- if (index === -1) return [];
55
- return line.substring(index + '__PWZONE__['.length, line.indexOf(']', index)).split(',').map(s => +s);
56
51
  }
57
52
  class Zone {
58
- constructor(manager, id, type, data) {
59
- this._manager = void 0;
60
- this.id = void 0;
53
+ constructor(previous, type, data) {
61
54
  this.type = void 0;
62
55
  this.data = void 0;
63
- this.wallTime = void 0;
64
- this._manager = manager;
65
- this.id = id;
56
+ this.previous = void 0;
66
57
  this.type = type;
67
58
  this.data = data;
68
- this.wallTime = Date.now();
69
- }
70
- run(func) {
71
- this._manager._zones.set(this.id, this);
72
- Object.defineProperty(func, 'name', {
73
- value: `__PWZONE__[${this.id}]-${this.type}`
74
- });
75
- return runWithFinally(() => func(this.data), () => {
76
- this._manager._zones.delete(this.id);
77
- });
78
- }
79
- }
80
- function runWithFinally(func, finallyFunc) {
81
- try {
82
- const result = func();
83
- if (result instanceof Promise) {
84
- return result.then(r => {
85
- finallyFunc();
86
- return r;
87
- }).catch(e => {
88
- finallyFunc();
89
- throw e;
90
- });
91
- }
92
- finallyFunc();
93
- return result;
94
- } catch (e) {
95
- finallyFunc();
96
- throw e;
59
+ this.previous = previous;
97
60
  }
98
61
  }
99
62
  const zones = exports.zones = new ZoneManager();