@checkly/playwright-core 1.48.22 → 1.51.11-beta.2

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 (307) hide show
  1. package/ThirdPartyNotices.txt +60 -48
  2. package/bin/reinstall_chrome_beta_linux.sh +10 -8
  3. package/bin/reinstall_chrome_stable_linux.sh +10 -8
  4. package/bin/reinstall_msedge_beta_linux.sh +17 -9
  5. package/bin/reinstall_msedge_dev_linux.sh +17 -9
  6. package/bin/reinstall_msedge_stable_linux.sh +17 -9
  7. package/browsers.json +33 -12
  8. package/index.js +0 -1
  9. package/lib/androidServerImpl.js +5 -5
  10. package/lib/browserServerImpl.js +18 -9
  11. package/lib/checkly/secretsFilter.js +1 -1
  12. package/lib/cli/driver.js +6 -6
  13. package/lib/cli/program.js +38 -43
  14. package/lib/cli/programWithTestStub.js +2 -1
  15. package/lib/client/android.js +37 -58
  16. package/lib/client/artifact.js +4 -7
  17. package/lib/client/browser.js +10 -15
  18. package/lib/client/browserContext.js +69 -62
  19. package/lib/client/browserType.js +30 -64
  20. package/lib/client/channelOwner.js +53 -68
  21. package/lib/client/clientHelper.js +4 -6
  22. package/lib/client/clientInstrumentation.js +2 -0
  23. package/lib/client/clientStackTrace.js +65 -0
  24. package/lib/client/connection.js +48 -41
  25. package/lib/client/consoleMessage.js +4 -7
  26. package/lib/client/electron.js +10 -10
  27. package/lib/client/elementHandle.js +32 -33
  28. package/lib/client/errors.js +2 -2
  29. package/lib/client/eventEmitter.js +5 -8
  30. package/lib/client/fetch.js +61 -62
  31. package/lib/client/fileUtils.js +31 -0
  32. package/lib/client/frame.js +22 -23
  33. package/lib/client/harRouter.js +7 -9
  34. package/lib/client/jsHandle.js +3 -4
  35. package/lib/client/localUtils.js +24 -0
  36. package/lib/client/locator.js +27 -13
  37. package/lib/client/network.js +44 -37
  38. package/lib/client/page.js +50 -41
  39. package/lib/client/platform.js +71 -0
  40. package/lib/client/playwright.js +21 -1
  41. package/lib/client/selectors.js +8 -2
  42. package/lib/client/stream.js +2 -21
  43. package/lib/client/timeoutSettings.js +65 -0
  44. package/lib/client/tracing.js +29 -7
  45. package/lib/client/video.js +2 -2
  46. package/lib/client/waiter.js +19 -16
  47. package/lib/client/webSocket.js +106 -0
  48. package/lib/client/worker.js +4 -4
  49. package/lib/client/writableStream.js +2 -21
  50. package/lib/generated/consoleApiSource.js +1 -1
  51. package/lib/generated/injectedScriptSource.js +1 -1
  52. package/lib/generated/pollingRecorderSource.js +1 -1
  53. package/lib/generated/recorderSource.js +7 -0
  54. package/lib/generated/webSocketMockSource.js +1 -1
  55. package/lib/inProcessFactory.js +8 -3
  56. package/lib/outofprocess.js +12 -8
  57. package/lib/protocol/debug.js +1 -1
  58. package/lib/protocol/validator.js +77 -11
  59. package/lib/protocol/validatorPrimitives.js +1 -2
  60. package/lib/remote/playwrightConnection.js +21 -12
  61. package/lib/remote/playwrightServer.js +22 -8
  62. package/lib/server/android/android.js +17 -14
  63. package/lib/server/android/backendAdb.js +14 -14
  64. package/lib/server/artifact.js +3 -3
  65. package/lib/server/bidi/bidiBrowser.js +11 -8
  66. package/lib/server/bidi/bidiChromium.js +5 -4
  67. package/lib/server/bidi/bidiConnection.js +1 -3
  68. package/lib/server/bidi/bidiExecutionContext.js +71 -25
  69. package/lib/server/bidi/bidiFirefox.js +4 -3
  70. package/lib/server/bidi/bidiInput.js +11 -12
  71. package/lib/server/bidi/bidiNetworkManager.js +11 -12
  72. package/lib/server/bidi/bidiOverCdp.js +2 -2
  73. package/lib/server/bidi/bidiPage.js +39 -66
  74. package/lib/server/bidi/third_party/bidiKeyboard.js +9 -7
  75. package/lib/server/bidi/third_party/firefoxPrefs.js +19 -3
  76. package/lib/server/browser.js +2 -2
  77. package/lib/server/browserContext.js +60 -55
  78. package/lib/server/browserType.js +22 -18
  79. package/lib/server/callLog.js +79 -0
  80. package/lib/server/chromium/chromium.js +20 -16
  81. package/lib/server/chromium/chromiumSwitches.js +32 -9
  82. package/lib/server/chromium/crBrowser.js +25 -24
  83. package/lib/server/chromium/crConnection.js +2 -2
  84. package/lib/server/chromium/crCoverage.js +1 -1
  85. package/lib/server/chromium/crDevTools.js +1 -1
  86. package/lib/server/chromium/crDragDrop.js +1 -1
  87. package/lib/server/chromium/crExecutionContext.js +26 -35
  88. package/lib/server/chromium/crInput.js +17 -6
  89. package/lib/server/chromium/crNetworkManager.js +3 -3
  90. package/lib/server/chromium/crPage.js +43 -55
  91. package/lib/server/chromium/crPdf.js +1 -1
  92. package/lib/server/chromium/crProtocolHelper.js +3 -3
  93. package/lib/server/chromium/crServiceWorker.js +2 -2
  94. package/lib/server/chromium/videoRecorder.js +2 -2
  95. package/lib/server/clock.js +1 -1
  96. package/lib/server/codegen/csharp.js +21 -16
  97. package/lib/server/codegen/java.js +17 -9
  98. package/lib/server/codegen/javascript.js +37 -7
  99. package/lib/server/codegen/jsonl.js +1 -1
  100. package/lib/server/codegen/languages.js +2 -2
  101. package/lib/server/codegen/python.js +14 -17
  102. package/lib/server/debugController.js +23 -45
  103. package/lib/server/debugger.js +1 -1
  104. package/lib/server/deviceDescriptors.js +1 -1
  105. package/lib/server/deviceDescriptorsSource.json +131 -131
  106. package/lib/server/dispatchers/androidDispatcher.js +14 -3
  107. package/lib/server/dispatchers/artifactDispatcher.js +3 -3
  108. package/lib/server/dispatchers/browserContextDispatcher.js +21 -32
  109. package/lib/server/dispatchers/browserTypeDispatcher.js +1 -1
  110. package/lib/server/dispatchers/cdpSessionDispatcher.js +1 -1
  111. package/lib/server/dispatchers/debugControllerDispatcher.js +5 -3
  112. package/lib/server/dispatchers/dispatcher.js +27 -25
  113. package/lib/server/dispatchers/electronDispatcher.js +3 -3
  114. package/lib/server/dispatchers/elementHandlerDispatcher.js +7 -2
  115. package/lib/server/dispatchers/frameDispatcher.js +9 -3
  116. package/lib/server/dispatchers/jsonPipeDispatcher.js +2 -2
  117. package/lib/server/dispatchers/localUtilsDispatcher.js +25 -291
  118. package/lib/server/dispatchers/networkDispatchers.js +3 -3
  119. package/lib/server/dispatchers/pageDispatcher.js +10 -8
  120. package/lib/server/dispatchers/playwrightDispatcher.js +5 -5
  121. package/lib/server/dispatchers/streamDispatcher.js +4 -3
  122. package/lib/server/dispatchers/tracingDispatcher.js +10 -0
  123. package/lib/server/dispatchers/webSocketRouteDispatcher.js +18 -18
  124. package/lib/server/dispatchers/writableStreamDispatcher.js +5 -6
  125. package/lib/server/dom.js +102 -48
  126. package/lib/server/download.js +1 -1
  127. package/lib/server/electron/electron.js +17 -16
  128. package/lib/server/errors.js +1 -1
  129. package/lib/server/fetch.js +49 -33
  130. package/lib/server/fileUploadUtils.js +7 -4
  131. package/lib/server/firefox/ffBrowser.js +17 -9
  132. package/lib/server/firefox/ffConnection.js +1 -1
  133. package/lib/server/firefox/ffExecutionContext.js +25 -29
  134. package/lib/server/firefox/ffInput.js +15 -4
  135. package/lib/server/firefox/ffNetworkManager.js +3 -3
  136. package/lib/server/firefox/ffPage.js +29 -50
  137. package/lib/server/firefox/firefox.js +7 -9
  138. package/lib/server/frameSelectors.js +1 -1
  139. package/lib/server/frames.js +65 -55
  140. package/lib/server/har/harRecorder.js +4 -4
  141. package/lib/server/har/harTracer.js +8 -9
  142. package/lib/server/harBackend.js +157 -0
  143. package/lib/server/helper.js +2 -2
  144. package/lib/server/index.js +1 -14
  145. package/lib/server/input.js +3 -4
  146. package/lib/server/instrumentation.js +2 -2
  147. package/lib/server/isomorphic/utilityScriptSerializers.js +3 -0
  148. package/lib/server/javascript.js +26 -33
  149. package/lib/server/launchApp.js +7 -7
  150. package/lib/server/localUtils.js +203 -0
  151. package/lib/server/network.js +5 -5
  152. package/lib/server/page.js +76 -37
  153. package/lib/server/pipeTransport.js +1 -1
  154. package/lib/server/playwright.js +5 -5
  155. package/lib/server/progress.js +1 -4
  156. package/lib/server/protocolError.js +1 -1
  157. package/lib/server/recorder/chat.js +177 -0
  158. package/lib/server/recorder/codeGenerator.js +154 -0
  159. package/lib/server/recorder/contextRecorder.js +9 -18
  160. package/lib/server/recorder/csharp.js +311 -0
  161. package/lib/server/recorder/java.js +249 -0
  162. package/lib/server/recorder/javascript.js +230 -0
  163. package/lib/server/recorder/jsonl.js +48 -0
  164. package/lib/server/recorder/language.js +45 -0
  165. package/lib/server/recorder/python.js +276 -0
  166. package/lib/server/recorder/recorderActions.js +6 -0
  167. package/lib/server/recorder/recorderApp.js +25 -28
  168. package/lib/server/recorder/recorderCollection.js +9 -21
  169. package/lib/server/recorder/recorderInTraceViewer.js +1 -1
  170. package/lib/server/recorder/recorderRunner.js +7 -3
  171. package/lib/server/recorder/recorderUtils.js +5 -28
  172. package/lib/server/recorder/throttledFile.js +3 -4
  173. package/lib/server/recorder/utils.js +46 -0
  174. package/lib/server/recorder.js +83 -43
  175. package/lib/server/registry/browserFetcher.js +10 -8
  176. package/lib/server/registry/dependencies.js +20 -20
  177. package/lib/server/registry/index.js +215 -61
  178. package/lib/server/registry/nativeDeps.js +10 -4
  179. package/lib/server/registry/oopDownloadBrowserMain.js +3 -3
  180. package/lib/server/screenshotter.js +1 -1
  181. package/lib/server/selectors.js +3 -3
  182. package/lib/server/socksClientCertificatesInterceptor.js +8 -8
  183. package/lib/server/socksInterceptor.js +8 -5
  184. package/lib/server/storageScript.js +160 -0
  185. package/lib/server/timeoutSettings.js +74 -0
  186. package/lib/server/trace/recorder/snapshotter.js +10 -20
  187. package/lib/server/trace/recorder/snapshotterInjected.js +26 -1
  188. package/lib/server/trace/recorder/tracing.js +108 -45
  189. package/lib/server/trace/test/inMemorySnapshotter.js +6 -6
  190. package/lib/server/trace/viewer/traceViewer.js +21 -7
  191. package/lib/server/transport.js +3 -2
  192. package/lib/server/utils/ascii.js +31 -0
  193. package/lib/server/utils/comparators.js +159 -0
  194. package/lib/server/utils/crypto.js +171 -0
  195. package/lib/server/utils/debug.js +38 -0
  196. package/lib/server/utils/debugLogger.js +93 -0
  197. package/lib/server/utils/env.js +53 -0
  198. package/lib/server/utils/eventsHelper.js +38 -0
  199. package/lib/server/utils/expectUtils.js +33 -0
  200. package/lib/server/utils/fileUtils.js +204 -0
  201. package/lib/server/utils/happyEyeballs.js +207 -0
  202. package/lib/server/utils/hostPlatform.js +145 -0
  203. package/lib/server/utils/httpServer.js +233 -0
  204. package/lib/server/utils/image_tools/colorUtils.js +98 -0
  205. package/lib/server/utils/image_tools/compare.js +108 -0
  206. package/lib/server/utils/image_tools/imageChannel.js +70 -0
  207. package/lib/server/utils/image_tools/stats.js +102 -0
  208. package/lib/server/utils/linuxUtils.js +58 -0
  209. package/lib/server/utils/network.js +160 -0
  210. package/lib/server/utils/nodePlatform.js +140 -0
  211. package/lib/server/utils/pipeTransport.js +82 -0
  212. package/lib/server/utils/processLauncher.js +248 -0
  213. package/lib/server/utils/profiler.js +52 -0
  214. package/lib/server/utils/socksProxy.js +570 -0
  215. package/lib/server/utils/spawnAsync.js +45 -0
  216. package/lib/server/utils/task.js +58 -0
  217. package/lib/server/utils/userAgent.js +91 -0
  218. package/lib/server/utils/wsServer.js +128 -0
  219. package/lib/server/utils/zipFile.js +75 -0
  220. package/lib/server/utils/zones.js +54 -0
  221. package/lib/server/webkit/webkit.js +4 -4
  222. package/lib/server/webkit/wkBrowser.js +10 -10
  223. package/lib/server/webkit/wkConnection.js +1 -1
  224. package/lib/server/webkit/wkExecutionContext.js +26 -30
  225. package/lib/server/webkit/wkInput.js +17 -7
  226. package/lib/server/webkit/wkInterceptableRequest.js +2 -2
  227. package/lib/server/webkit/wkPage.js +80 -66
  228. package/lib/server/webkit/wkProvisionalPage.js +1 -1
  229. package/lib/server/webkit/wkWorkers.js +2 -2
  230. package/lib/utils/fileUtils.js +1 -1
  231. package/lib/utils/glob.js +84 -0
  232. package/lib/utils/isomorphic/ariaSnapshot.js +392 -0
  233. package/lib/utils/isomorphic/assert.js +25 -0
  234. package/lib/utils/isomorphic/colors.js +65 -0
  235. package/lib/utils/isomorphic/cssParser.js +5 -5
  236. package/lib/utils/isomorphic/headers.js +52 -0
  237. package/lib/utils/isomorphic/locatorGenerators.js +38 -8
  238. package/lib/utils/isomorphic/locatorParser.js +19 -13
  239. package/lib/utils/isomorphic/manualPromise.js +107 -0
  240. package/lib/utils/isomorphic/mimeType.js +11 -3
  241. package/lib/utils/isomorphic/multimap.js +73 -0
  242. package/lib/utils/isomorphic/rtti.js +41 -0
  243. package/lib/utils/isomorphic/semaphore.js +51 -0
  244. package/lib/utils/isomorphic/stackTrace.js +169 -0
  245. package/lib/utils/isomorphic/stringUtils.js +31 -1
  246. package/lib/utils/isomorphic/time.js +25 -0
  247. package/lib/utils/isomorphic/timeoutRunner.js +66 -0
  248. package/lib/utils/isomorphic/traceUtils.js +23 -0
  249. package/lib/utils/isomorphic/types.js +5 -0
  250. package/lib/utils/isomorphic/urlMatch.js +7 -5
  251. package/lib/utils/mimeType.js +30 -0
  252. package/lib/utils/stackTrace.js +1 -1
  253. package/lib/utils.js +447 -0
  254. package/lib/utilsBundle.js +4 -29
  255. package/lib/utilsBundleImpl/index.js +188 -33
  256. package/lib/vite/htmlReport/index.html +20 -17
  257. package/lib/vite/recorder/assets/codeMirrorModule-B9YMkrwa.js +24 -0
  258. package/lib/vite/recorder/assets/index-ELPgmkwA.js +184 -0
  259. package/lib/vite/recorder/assets/{index-BW-aOBcL.css → index-eHBmevrY.css} +1 -1
  260. package/lib/vite/recorder/index.html +2 -2
  261. package/lib/vite/traceViewer/assets/codeMirrorModule-gU1OOCQO.js +24 -0
  262. package/lib/vite/traceViewer/assets/defaultSettingsView-B5n_FjMx.js +1 -0
  263. package/lib/vite/traceViewer/assets/inspectorTab-6Tru8Mn_.js +235 -0
  264. package/lib/vite/traceViewer/assets/workbench-B_Nj4NA2.js +25 -0
  265. package/lib/vite/traceViewer/assets/{xtermModule-BeNbaIVa.js → xtermModule-BoAIEibi.js} +7 -7
  266. package/lib/vite/traceViewer/defaultSettingsView.CO3FR0CX.css +1 -0
  267. package/lib/vite/traceViewer/{embedded.BkvOrz5Z.js → embedded.DpNPH6mk.js} +2 -2
  268. package/lib/vite/traceViewer/embedded.html +6 -6
  269. package/lib/vite/traceViewer/index.CuE3SYGw.js +2 -0
  270. package/lib/vite/traceViewer/index.html +27 -9
  271. package/lib/vite/traceViewer/inspectorTab.CXDulcFG.css +1 -0
  272. package/lib/vite/traceViewer/{recorder.DNMfnSiu.js → recorder.BD-uZJs7.js} +2 -2
  273. package/lib/vite/traceViewer/recorder.html +4 -4
  274. package/lib/vite/traceViewer/sw.bundle.js +7888 -3
  275. package/lib/vite/traceViewer/{uiMode.CAYqod-m.css → uiMode.BatfzHMG.css} +1 -1
  276. package/lib/vite/traceViewer/uiMode.DHrNgddz.js +5 -0
  277. package/lib/vite/traceViewer/uiMode.html +8 -7
  278. package/lib/vite/traceViewer/workbench.B9vIAzH9.css +1 -0
  279. package/lib/zipBundleImpl.js +4 -4
  280. package/package.json +7 -7
  281. package/types/protocol.d.ts +820 -153
  282. package/types/types.d.ts +285 -82
  283. package/bin/PrintDeps.exe +0 -0
  284. package/bin/README.md +0 -2
  285. package/lib/vite/recorder/assets/codeMirrorModule-d0KhC1qL.js +0 -24
  286. package/lib/vite/recorder/assets/index-Bxxcmxlu.js +0 -42
  287. package/lib/vite/traceViewer/assets/codeMirrorModule-pBPtArIT.js +0 -24
  288. package/lib/vite/traceViewer/assets/codeMirrorModule-tzBrK1V4.js +0 -24
  289. package/lib/vite/traceViewer/assets/inspectorTab-BuJ3wAX_.js +0 -64
  290. package/lib/vite/traceViewer/assets/inspectorTab-Soeeuvzv.js +0 -64
  291. package/lib/vite/traceViewer/assets/testServerConnection-DeE2kSzz.js +0 -1
  292. package/lib/vite/traceViewer/assets/workbench-DdmJ9AJV.js +0 -9
  293. package/lib/vite/traceViewer/assets/workbench-lypYlf00.js +0 -9
  294. package/lib/vite/traceViewer/embedded.DInvAijy.js +0 -2
  295. package/lib/vite/traceViewer/index.Dha3cgqs.js +0 -2
  296. package/lib/vite/traceViewer/index._Iolt-uE.js +0 -2
  297. package/lib/vite/traceViewer/inspectorTab.DLjBDrQR.css +0 -1
  298. package/lib/vite/traceViewer/recorder.DTSaNaly.js +0 -2
  299. package/lib/vite/traceViewer/uiMode.BM7yhjzl.js +0 -5
  300. package/lib/vite/traceViewer/uiMode.Cr1tvTWS.js +0 -5
  301. package/lib/vite/traceViewer/workbench.DlsCx8k5.css +0 -1
  302. /package/lib/vite/recorder/assets/{codeMirrorModule-ez37Vkbh.css → codeMirrorModule-C3UTv-Ge.css} +0 -0
  303. /package/lib/vite/traceViewer/{codeMirrorModule.ez37Vkbh.css → codeMirrorModule.C3UTv-Ge.css} +0 -0
  304. /package/lib/vite/traceViewer/{embedded.w7WN2u1R.css → embedded.mLhjB5IF.css} +0 -0
  305. /package/lib/vite/traceViewer/{index.CrbWWHbf.css → index.CFOW-Ezb.css} +0 -0
  306. /package/lib/vite/traceViewer/{recorder.B_SY1GJM.css → recorder.tn0RQdqM.css} +0 -0
  307. /package/lib/vite/traceViewer/{xtermModule.DSXBckUd.css → xtermModule.Beg8tuEN.css} +0 -0
package/lib/server/dom.js CHANGED
@@ -7,17 +7,18 @@ exports.NonRecoverableDOMError = exports.FrameExecutionContext = exports.Element
7
7
  exports.assertDone = assertDone;
8
8
  exports.isNonRecoverableDOMError = isNonRecoverableDOMError;
9
9
  exports.kUnableToAdoptErrorMessage = void 0;
10
+ exports.throwElementIsNotAttached = throwElementIsNotAttached;
10
11
  exports.throwRetargetableDOMError = throwRetargetableDOMError;
11
12
  var _fs = _interopRequireDefault(require("fs"));
12
- var injectedScriptSource = _interopRequireWildcard(require("../generated/injectedScriptSource"));
13
- var _protocolError = require("./protocolError");
14
13
  var js = _interopRequireWildcard(require("./javascript"));
15
14
  var _progress = require("./progress");
16
15
  var _utils = require("../utils");
17
16
  var _fileUploadUtils = require("./fileUploadUtils");
17
+ var _protocolError = require("./protocolError");
18
+ var injectedScriptSource = _interopRequireWildcard(require("../generated/injectedScriptSource"));
18
19
  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); }
19
- 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; }
20
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20
+ 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; }
21
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
21
22
  /**
22
23
  * Copyright (c) Microsoft Corporation.
23
24
  *
@@ -70,10 +71,6 @@ class FrameExecutionContext extends js.ExecutionContext {
70
71
  returnByValue: false
71
72
  }, arg);
72
73
  }
73
- createHandle(remoteObject) {
74
- if (this.frame._page._delegate.isElementHandle(remoteObject)) return new ElementHandle(this, remoteObject.objectId);
75
- return super.createHandle(remoteObject);
76
- }
77
74
  injectedScript() {
78
75
  if (!this._injectedScriptPromise) {
79
76
  const custom = [];
@@ -97,7 +94,10 @@ class FrameExecutionContext extends js.ExecutionContext {
97
94
  );
98
95
  })();
99
96
  `;
100
- this._injectedScriptPromise = this.rawEvaluateHandle(source).then(objectId => new js.JSHandle(this, 'object', 'InjectedScript', objectId));
97
+ this._injectedScriptPromise = this.rawEvaluateHandle(source).then(handle => {
98
+ handle._setPreview('InjectedScript');
99
+ return handle;
100
+ });
101
101
  }
102
102
  return this._injectedScriptPromise;
103
103
  }
@@ -157,6 +157,13 @@ class ElementHandle extends js.JSHandle {
157
157
  if (!isFrameElement) return null;
158
158
  return this._page._delegate.getContentFrame(this);
159
159
  }
160
+ async generateLocatorString() {
161
+ const selector = await this.evaluateInUtility(async ([injected, node]) => {
162
+ return injected.generateSelectorSimple(node);
163
+ }, {});
164
+ if (selector === 'error:notconnected') return;
165
+ return (0, _utils.asLocator)('javascript', selector);
166
+ }
160
167
  async getAttribute(metadata, name) {
161
168
  return this._frame.getAttribute(metadata, ':scope', name, {}, this);
162
169
  }
@@ -225,17 +232,21 @@ class ElementHandle extends js.JSHandle {
225
232
  // Allow 1x1 elements. Compensate for rounding errors by comparing with 0.99 instead.
226
233
  const filtered = quads.map(quad => intersectQuadWithViewport(quad)).filter(quad => computeQuadArea(quad) > 0.99);
227
234
  if (!filtered.length) return 'error:notinviewport';
228
- // Return the middle point of the first quad.
229
- const result = {
230
- x: 0,
231
- y: 0
232
- };
233
- for (const point of filtered[0]) {
234
- result.x += point.x / 4;
235
- result.y += point.y / 4;
235
+ if (this._page._browserContext._browser.options.name === 'firefox') {
236
+ // Firefox internally uses integer coordinates, so 8.x is converted to 8 or 9 when clicking.
237
+ //
238
+ // This does not work nicely for small elements. For example, 1x1 square with corners
239
+ // (8;8) and (9;9) is targeted when clicking at (8;8) but not when clicking at (9;9).
240
+ // So, clicking at (8.x;8.y) will sometimes click at (9;9) and miss the target.
241
+ //
242
+ // Therefore, we try to find an integer point within a quad to make sure we click inside the element.
243
+ for (const quad of filtered) {
244
+ const integerPoint = findIntegerPointInsideQuad(quad);
245
+ if (integerPoint) return integerPoint;
246
+ }
236
247
  }
237
- compensateHalfIntegerRoundingError(result);
238
- return result;
248
+ // Return the middle point of the first quad.
249
+ return quadMiddlePoint(filtered[0]);
239
250
  }
240
251
  async _offsetPoint(offset) {
241
252
  const [box, border] = await Promise.all([this.boundingBox(), this.evaluateInUtility(([injected, node]) => injected.getElementBorderWidth(node), {}).catch(e => {})]);
@@ -253,7 +264,7 @@ class ElementHandle extends js.JSHandle {
253
264
  const waitTime = [0, 20, 100, 100, 500];
254
265
  while (progress.isRunning()) {
255
266
  if (retry) {
256
- progress.log(`retrying ${actionName} action${options.trial ? ' (trial run)' : ''}, attempt #${retry}`);
267
+ progress.log(`retrying ${actionName} action${options.trial ? ' (trial run)' : ''}`);
257
268
  const timeout = waitTime[Math.min(retry - 1, waitTime.length - 1)];
258
269
  if (timeout) {
259
270
  progress.log(` waiting ${timeout}ms`);
@@ -263,7 +274,7 @@ class ElementHandle extends js.JSHandle {
263
274
  } else {
264
275
  progress.log(`attempting ${actionName} action${options.trial ? ' (trial run)' : ''}`);
265
276
  }
266
- if (!options.skipLocatorHandlersCheckpoint && !options.force) await this._frame._page.performLocatorHandlersCheckpoint(progress);
277
+ if (!options.skipActionPreChecks && !options.force) await this._frame._page.performActionPreChecks(progress);
267
278
  const result = await action(retry);
268
279
  ++retry;
269
280
  if (result === 'error:notvisible') {
@@ -294,7 +305,7 @@ class ElementHandle extends js.JSHandle {
294
305
  }
295
306
  async _retryPointerAction(progress, actionName, waitForEnabled, action, options) {
296
307
  // Note: do not perform locator handlers checkpoint to avoid moving the mouse in the middle of a drag operation.
297
- const skipLocatorHandlersCheckpoint = actionName === 'move and up';
308
+ const skipActionPreChecks = actionName === 'move and up';
298
309
  return await this._retryAction(progress, actionName, async retry => {
299
310
  // By default, we scroll with protocol method to reveal the action point.
300
311
  // However, that might not work to scroll from under position:sticky elements
@@ -314,7 +325,7 @@ class ElementHandle extends js.JSHandle {
314
325
  return await this._performPointerAction(progress, actionName, waitForEnabled, action, forceScrollOptions, options);
315
326
  }, {
316
327
  ...options,
317
- skipLocatorHandlersCheckpoint
328
+ skipActionPreChecks
318
329
  });
319
330
  }
320
331
  async _performPointerAction(progress, actionName, waitForEnabled, action, forceScrollOptions, options) {
@@ -367,7 +378,7 @@ class ElementHandle extends js.JSHandle {
367
378
  if (typeof maybePoint === 'string') return maybePoint;
368
379
  const point = roundPoint(maybePoint);
369
380
  progress.metadata.point = point;
370
- await progress.beforeInputAction(this);
381
+ await this.instrumentation.onBeforeInputAction(this, progress.metadata);
371
382
  let hitTargetInterceptionHandle;
372
383
  if (force) {
373
384
  progress.log(` forcing action`);
@@ -433,9 +444,16 @@ class ElementHandle extends js.JSHandle {
433
444
  progress.log(' navigations have finished');
434
445
  return 'done';
435
446
  }
447
+ async _markAsTargetElement(metadata) {
448
+ if (!metadata.id) return;
449
+ await this.evaluateInUtility(([injected, node, callId]) => {
450
+ if (node.nodeType === 1 /* Node.ELEMENT_NODE */) injected.markTargetElements(new Set([node]), callId);
451
+ }, metadata.id);
452
+ }
436
453
  async hover(metadata, options) {
437
454
  const controller = new _progress.ProgressController(metadata, this);
438
455
  return controller.run(async progress => {
456
+ await this._markAsTargetElement(metadata);
439
457
  const result = await this._hover(progress, options);
440
458
  return assertDone(throwRetargetableDOMError(result));
441
459
  }, this._page._timeoutSettings.timeout(options));
@@ -449,6 +467,7 @@ class ElementHandle extends js.JSHandle {
449
467
  async click(metadata, options = {}) {
450
468
  const controller = new _progress.ProgressController(metadata, this);
451
469
  return controller.run(async progress => {
470
+ await this._markAsTargetElement(metadata);
452
471
  const result = await this._click(progress, {
453
472
  ...options,
454
473
  waitAfter: !options.noWaitAfter
@@ -462,6 +481,7 @@ class ElementHandle extends js.JSHandle {
462
481
  async dblclick(metadata, options) {
463
482
  const controller = new _progress.ProgressController(metadata, this);
464
483
  return controller.run(async progress => {
484
+ await this._markAsTargetElement(metadata);
465
485
  const result = await this._dblclick(progress, options);
466
486
  return assertDone(throwRetargetableDOMError(result));
467
487
  }, this._page._timeoutSettings.timeout(options));
@@ -475,6 +495,7 @@ class ElementHandle extends js.JSHandle {
475
495
  async tap(metadata, options = {}) {
476
496
  const controller = new _progress.ProgressController(metadata, this);
477
497
  return controller.run(async progress => {
498
+ await this._markAsTargetElement(metadata);
478
499
  const result = await this._tap(progress, options);
479
500
  return assertDone(throwRetargetableDOMError(result));
480
501
  }, this._page._timeoutSettings.timeout(options));
@@ -488,6 +509,7 @@ class ElementHandle extends js.JSHandle {
488
509
  async selectOption(metadata, elements, values, options) {
489
510
  const controller = new _progress.ProgressController(metadata, this);
490
511
  return controller.run(async progress => {
512
+ await this._markAsTargetElement(metadata);
491
513
  const result = await this._selectOption(progress, elements, values, options);
492
514
  return throwRetargetableDOMError(result);
493
515
  }, this._page._timeoutSettings.timeout(options));
@@ -495,7 +517,7 @@ class ElementHandle extends js.JSHandle {
495
517
  async _selectOption(progress, elements, values, options) {
496
518
  let resultingOptions = [];
497
519
  await this._retryAction(progress, 'select option', async () => {
498
- await progress.beforeInputAction(this);
520
+ await this.instrumentation.onBeforeInputAction(this, progress.metadata);
499
521
  if (!options.force) progress.log(` waiting for element to be visible and enabled`);
500
522
  const optionsToSelect = [...elements, ...values];
501
523
  const result = await this.evaluateInUtility(async ([injected, node, {
@@ -523,6 +545,7 @@ class ElementHandle extends js.JSHandle {
523
545
  async fill(metadata, value, options = {}) {
524
546
  const controller = new _progress.ProgressController(metadata, this);
525
547
  return controller.run(async progress => {
548
+ await this._markAsTargetElement(metadata);
526
549
  const result = await this._fill(progress, value, options);
527
550
  assertDone(throwRetargetableDOMError(result));
528
551
  }, this._page._timeoutSettings.timeout(options));
@@ -530,7 +553,7 @@ class ElementHandle extends js.JSHandle {
530
553
  async _fill(progress, value, options) {
531
554
  progress.log(` fill("${value}")`);
532
555
  return await this._retryAction(progress, 'fill', async () => {
533
- await progress.beforeInputAction(this);
556
+ await this.instrumentation.onBeforeInputAction(this, progress.metadata);
534
557
  if (!options.force) progress.log(' waiting for element to be visible, enabled and editable');
535
558
  const result = await this.evaluateInUtility(async ([injected, node, {
536
559
  value,
@@ -578,6 +601,7 @@ class ElementHandle extends js.JSHandle {
578
601
  const inputFileItems = await (0, _fileUploadUtils.prepareFilesForUpload)(this._frame, params);
579
602
  const controller = new _progress.ProgressController(metadata, this);
580
603
  return controller.run(async progress => {
604
+ await this._markAsTargetElement(metadata);
581
605
  const result = await this._setInputFiles(progress, inputFileItems);
582
606
  return assertDone(throwRetargetableDOMError(result));
583
607
  }, this._page._timeoutSettings.timeout(params));
@@ -607,7 +631,7 @@ class ElementHandle extends js.JSHandle {
607
631
  });
608
632
  if (result === 'error:notconnected' || !result.asElement()) return 'error:notconnected';
609
633
  const retargeted = result.asElement();
610
- await progress.beforeInputAction(this);
634
+ await this.instrumentation.onBeforeInputAction(this, progress.metadata);
611
635
  progress.throwIfAborted(); // Avoid action that has side-effects.
612
636
  if (localPaths || localDirectory) {
613
637
  const localPathsOrDirectory = localDirectory ? [localDirectory] : localPaths;
@@ -621,13 +645,14 @@ class ElementHandle extends js.JSHandle {
621
645
  await this._page._delegate.setInputFilePaths(retargeted, localPathsOrDirectory);
622
646
  await waitForInputEvent;
623
647
  } else {
624
- await this._page._delegate.setInputFiles(retargeted, filePayloads);
648
+ await retargeted.evaluateInUtility(([injected, node, files]) => injected.setInputFiles(node, files), filePayloads);
625
649
  }
626
650
  return 'done';
627
651
  }
628
652
  async focus(metadata) {
629
653
  const controller = new _progress.ProgressController(metadata, this);
630
654
  await controller.run(async progress => {
655
+ await this._markAsTargetElement(metadata);
631
656
  const result = await this._focus(progress);
632
657
  return assertDone(throwRetargetableDOMError(result));
633
658
  }, 0);
@@ -643,13 +668,14 @@ class ElementHandle extends js.JSHandle {
643
668
  async type(metadata, text, options) {
644
669
  const controller = new _progress.ProgressController(metadata, this);
645
670
  return controller.run(async progress => {
671
+ await this._markAsTargetElement(metadata);
646
672
  const result = await this._type(progress, text, options);
647
673
  return assertDone(throwRetargetableDOMError(result));
648
674
  }, this._page._timeoutSettings.timeout(options));
649
675
  }
650
676
  async _type(progress, text, options) {
651
677
  progress.log(`elementHandle.type("${text}")`);
652
- await progress.beforeInputAction(this);
678
+ await this.instrumentation.onBeforeInputAction(this, progress.metadata);
653
679
  const result = await this._focus(progress, true /* resetSelectionIfNotFocused */);
654
680
  if (result !== 'done') return result;
655
681
  progress.throwIfAborted(); // Avoid action that has side-effects.
@@ -659,13 +685,14 @@ class ElementHandle extends js.JSHandle {
659
685
  async press(metadata, key, options) {
660
686
  const controller = new _progress.ProgressController(metadata, this);
661
687
  return controller.run(async progress => {
688
+ await this._markAsTargetElement(metadata);
662
689
  const result = await this._press(progress, key, options);
663
690
  return assertDone(throwRetargetableDOMError(result));
664
691
  }, this._page._timeoutSettings.timeout(options));
665
692
  }
666
693
  async _press(progress, key, options) {
667
694
  progress.log(`elementHandle.press("${key}")`);
668
- await progress.beforeInputAction(this);
695
+ await this.instrumentation.onBeforeInputAction(this, progress.metadata);
669
696
  return this._page._frameManager.waitForSignalsCreatedBy(progress, !options.noWaitAfter, async () => {
670
697
  const result = await this._focus(progress, true /* resetSelectionIfNotFocused */);
671
698
  if (result !== 'done') return result;
@@ -691,8 +718,10 @@ class ElementHandle extends js.JSHandle {
691
718
  async _setChecked(progress, state, options) {
692
719
  const isChecked = async () => {
693
720
  const result = await this.evaluateInUtility(([injected, node]) => injected.elementState(node, 'checked'), {});
694
- return throwRetargetableDOMError(result);
721
+ if (result === 'error:notconnected' || result.received === 'error:notconnected') throwElementIsNotAttached();
722
+ return result.matches;
695
723
  };
724
+ await this._markAsTargetElement(progress.metadata);
696
725
  if ((await isChecked()) === state) return 'done';
697
726
  const result = await this._click(progress, {
698
727
  ...options,
@@ -706,6 +735,9 @@ class ElementHandle extends js.JSHandle {
706
735
  async boundingBox() {
707
736
  return this._page._delegate.getBoundingBox(this);
708
737
  }
738
+ async ariaSnapshot(options) {
739
+ return await this.evaluateInUtility(([injected, element, options]) => injected.ariaSnapshot(element, options), options);
740
+ }
709
741
  async screenshot(metadata, options = {}) {
710
742
  const controller = new _progress.ProgressController(metadata, this);
711
743
  return controller.run(progress => this._page._screenshotter.screenshotElement(progress, this, options), this._page._timeoutSettings.timeout(options));
@@ -813,9 +845,12 @@ class ElementHandle extends js.JSHandle {
813
845
  }
814
846
  exports.ElementHandle = ElementHandle;
815
847
  function throwRetargetableDOMError(result) {
816
- if (result === 'error:notconnected') throw new Error('Element is not attached to the DOM');
848
+ if (result === 'error:notconnected') throwElementIsNotAttached();
817
849
  return result;
818
850
  }
851
+ function throwElementIsNotAttached() {
852
+ throw new Error('Element is not attached to the DOM');
853
+ }
819
854
  function assertDone(result) {
820
855
  // This function converts 'done' to void and ensures typescript catches unhandled errors.
821
856
  }
@@ -825,21 +860,40 @@ function roundPoint(point) {
825
860
  y: (point.y * 100 | 0) / 100
826
861
  };
827
862
  }
828
- function compensateHalfIntegerRoundingError(point) {
829
- // Firefox internally uses integer coordinates, so 8.5 is converted to 9 when clicking.
830
- //
831
- // This does not work nicely for small elements. For example, 1x1 square with corners
832
- // (8;8) and (9;9) is targeted when clicking at (8;8) but not when clicking at (9;9).
833
- // So, clicking at (8.5;8.5) will effectively click at (9;9) and miss the target.
834
- //
835
- // Therefore, we skew half-integer values from the interval (8.49, 8.51) towards
836
- // (8.47, 8.49) that is rounded towards 8. This means clicking at (8.5;8.5) will
837
- // be replaced with (8.48;8.48) and will effectively click at (8;8).
838
- //
839
- // Other browsers use float coordinates, so this change should not matter.
840
- const remainderX = point.x - Math.floor(point.x);
841
- if (remainderX > 0.49 && remainderX < 0.51) point.x -= 0.02;
842
- const remainderY = point.y - Math.floor(point.y);
843
- if (remainderY > 0.49 && remainderY < 0.51) point.y -= 0.02;
863
+ function quadMiddlePoint(quad) {
864
+ const result = {
865
+ x: 0,
866
+ y: 0
867
+ };
868
+ for (const point of quad) {
869
+ result.x += point.x / 4;
870
+ result.y += point.y / 4;
871
+ }
872
+ return result;
873
+ }
874
+ function triangleArea(p1, p2, p3) {
875
+ return Math.abs(p1.x * (p2.y - p3.y) + p2.x * (p3.y - p1.y) + p3.x * (p1.y - p2.y)) / 2;
876
+ }
877
+ function isPointInsideQuad(point, quad) {
878
+ const area1 = triangleArea(point, quad[0], quad[1]) + triangleArea(point, quad[1], quad[2]) + triangleArea(point, quad[2], quad[3]) + triangleArea(point, quad[3], quad[0]);
879
+ const area2 = triangleArea(quad[0], quad[1], quad[2]) + triangleArea(quad[1], quad[2], quad[3]);
880
+ // Check that point is inside the quad.
881
+ if (Math.abs(area1 - area2) > 0.1) return false;
882
+ // Check that point is not on the right/bottom edge, because clicking
883
+ // there does not actually click the element.
884
+ return point.x < Math.max(quad[0].x, quad[1].x, quad[2].x, quad[3].x) && point.y < Math.max(quad[0].y, quad[1].y, quad[2].y, quad[3].y);
885
+ }
886
+ function findIntegerPointInsideQuad(quad) {
887
+ // Try all four rounding directions of the middle point.
888
+ const point = quadMiddlePoint(quad);
889
+ point.x = Math.floor(point.x);
890
+ point.y = Math.floor(point.y);
891
+ if (isPointInsideQuad(point, quad)) return point;
892
+ point.x += 1;
893
+ if (isPointInsideQuad(point, quad)) return point;
894
+ point.y += 1;
895
+ if (isPointInsideQuad(point, quad)) return point;
896
+ point.x -= 1;
897
+ if (isPointInsideQuad(point, quad)) return point;
844
898
  }
845
899
  const kUnableToAdoptErrorMessage = exports.kUnableToAdoptErrorMessage = 'Unable to adopt element handle from a different document';
@@ -8,7 +8,7 @@ var _path = _interopRequireDefault(require("path"));
8
8
  var _page = require("./page");
9
9
  var _utils = require("../utils");
10
10
  var _artifact = require("./artifact");
11
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
12
  /**
13
13
  * Copyright (c) Microsoft Corporation.
14
14
  *
@@ -7,26 +7,27 @@ exports.ElectronApplication = exports.Electron = void 0;
7
7
  var _fs = _interopRequireDefault(require("fs"));
8
8
  var _os = _interopRequireDefault(require("os"));
9
9
  var _path = _interopRequireDefault(require("path"));
10
+ var readline = _interopRequireWildcard(require("readline"));
11
+ var _timeoutSettings = require("../timeoutSettings");
12
+ var _utils = require("../../utils");
13
+ var _ascii = require("../utils/ascii");
14
+ var _debugLogger = require("../utils/debugLogger");
15
+ var _eventsHelper = require("../utils/eventsHelper");
16
+ var _browserContext = require("../browserContext");
10
17
  var _crBrowser = require("../chromium/crBrowser");
11
18
  var _crConnection = require("../chromium/crConnection");
12
19
  var _crExecutionContext = require("../chromium/crExecutionContext");
13
- var js = _interopRequireWildcard(require("../javascript"));
14
- var _timeoutSettings = require("../../common/timeoutSettings");
15
- var _utils = require("../../utils");
16
- var _transport = require("../transport");
17
- var _processLauncher = require("../../utils/processLauncher");
18
- var _browserContext = require("../browserContext");
19
- var _progress = require("../progress");
20
- var _helper = require("../helper");
21
- var _eventsHelper = require("../../utils/eventsHelper");
22
- var readline = _interopRequireWildcard(require("readline"));
23
- var _debugLogger = require("../../utils/debugLogger");
24
- var _instrumentation = require("../instrumentation");
25
20
  var _crProtocolHelper = require("../chromium/crProtocolHelper");
26
21
  var _console = require("../console");
22
+ var _helper = require("../helper");
23
+ var _instrumentation = require("../instrumentation");
24
+ var js = _interopRequireWildcard(require("../javascript"));
25
+ var _processLauncher = require("../utils/processLauncher");
26
+ var _progress = require("../progress");
27
+ var _transport = require("../transport");
27
28
  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); }
28
- 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; }
29
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
+ 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; }
30
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
30
31
  /**
31
32
  * Copyright (c) Microsoft Corporation.
32
33
  *
@@ -102,7 +103,7 @@ class ElectronApplication extends _instrumentation.SdkObject {
102
103
  return;
103
104
  }
104
105
  if (!this._nodeExecutionContext) return;
105
- const args = event.args.map(arg => this._nodeExecutionContext.createHandle(arg));
106
+ const args = event.args.map(arg => (0, _crExecutionContext.createHandle)(this._nodeExecutionContext, arg));
106
107
  const message = new _console.ConsoleMessage(null, event.type, undefined, args, (0, _crProtocolHelper.toConsoleMessageLocation)(event.stackTrace));
107
108
  this.emit(ElectronApplication.Events.Console, message);
108
109
  }
@@ -174,7 +175,7 @@ class Electron extends _instrumentation.SdkObject {
174
175
  command = require('electron/index.js');
175
176
  } catch (error) {
176
177
  if ((error === null || error === void 0 ? void 0 : error.code) === 'MODULE_NOT_FOUND') {
177
- throw new Error('\n' + (0, _utils.wrapInASCIIBox)(['Electron executablePath not found!', 'Please install it using `npm install -D electron` or set the executablePath to your Electron executable.'].join('\n'), 1));
178
+ throw new Error('\n' + (0, _ascii.wrapInASCIIBox)(['Electron executablePath not found!', 'Please install it using `npm install -D electron` or set the executablePath to your Electron executable.'].join('\n'), 1));
178
179
  }
179
180
  throw error;
180
181
  }
@@ -7,8 +7,8 @@ exports.TimeoutError = exports.TargetClosedError = void 0;
7
7
  exports.isTargetClosedError = isTargetClosedError;
8
8
  exports.parseError = parseError;
9
9
  exports.serializeError = serializeError;
10
- var _utils = require("../utils");
11
10
  var _serializers = require("../protocol/serializers");
11
+ var _utils = require("../utils");
12
12
  /**
13
13
  * Copyright (c) Microsoft Corporation.
14
14
  *