patchright-core 1.50.1 → 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 (242) hide show
  1. package/ThirdPartyNotices.txt +1 -43
  2. package/browsers.json +22 -10
  3. package/index.js +0 -1
  4. package/lib/androidServerImpl.js +4 -4
  5. package/lib/browserServerImpl.js +18 -9
  6. package/lib/cli/driver.js +6 -6
  7. package/lib/cli/program.js +9 -9
  8. package/lib/cli/programWithTestStub.js +2 -1
  9. package/lib/client/android.js +37 -58
  10. package/lib/client/artifact.js +4 -7
  11. package/lib/client/browser.js +10 -15
  12. package/lib/client/browserContext.js +77 -73
  13. package/lib/client/browserType.js +30 -64
  14. package/lib/client/channelOwner.js +23 -20
  15. package/lib/client/clientHelper.js +5 -7
  16. package/lib/client/clientStackTrace.js +65 -0
  17. package/lib/client/connection.js +46 -39
  18. package/lib/client/consoleMessage.js +4 -7
  19. package/lib/client/electron.js +10 -10
  20. package/lib/client/elementHandle.js +32 -33
  21. package/lib/client/errors.js +2 -2
  22. package/lib/client/eventEmitter.js +5 -8
  23. package/lib/client/fetch.js +60 -61
  24. package/lib/client/fileUtils.js +31 -0
  25. package/lib/client/frame.js +30 -29
  26. package/lib/client/harRouter.js +7 -9
  27. package/lib/client/jsHandle.js +3 -4
  28. package/lib/client/localUtils.js +24 -0
  29. package/lib/client/locator.js +37 -18
  30. package/lib/client/network.js +40 -40
  31. package/lib/client/page.js +59 -55
  32. package/lib/client/platform.js +71 -0
  33. package/lib/client/playwright.js +21 -1
  34. package/lib/client/selectors.js +8 -2
  35. package/lib/client/stream.js +2 -21
  36. package/lib/client/timeoutSettings.js +65 -0
  37. package/lib/client/tracing.js +10 -7
  38. package/lib/client/video.js +2 -2
  39. package/lib/client/waiter.js +5 -6
  40. package/lib/client/webSocket.js +106 -0
  41. package/lib/client/worker.js +12 -10
  42. package/lib/client/writableStream.js +2 -21
  43. package/lib/generated/consoleApiSource.js +1 -1
  44. package/lib/generated/injectedScriptSource.js +1 -1
  45. package/lib/inProcessFactory.js +6 -3
  46. package/lib/outofprocess.js +12 -8
  47. package/lib/protocol/validator.js +64 -13
  48. package/lib/protocol/validatorPrimitives.js +1 -2
  49. package/lib/remote/playwrightConnection.js +18 -10
  50. package/lib/remote/playwrightServer.js +20 -7
  51. package/lib/server/android/android.js +17 -14
  52. package/lib/server/android/backendAdb.js +14 -14
  53. package/lib/server/artifact.js +3 -3
  54. package/lib/server/bidi/bidiBrowser.js +2 -2
  55. package/lib/server/bidi/bidiChromium.js +4 -3
  56. package/lib/server/bidi/bidiConnection.js +1 -1
  57. package/lib/server/bidi/bidiExecutionContext.js +70 -40
  58. package/lib/server/bidi/bidiFirefox.js +4 -3
  59. package/lib/server/bidi/bidiInput.js +5 -8
  60. package/lib/server/bidi/bidiNetworkManager.js +3 -3
  61. package/lib/server/bidi/bidiOverCdp.js +2 -2
  62. package/lib/server/bidi/bidiPage.js +30 -46
  63. package/lib/server/bidi/third_party/firefoxPrefs.js +19 -3
  64. package/lib/server/browser.js +2 -2
  65. package/lib/server/browserContext.js +37 -40
  66. package/lib/server/browserType.js +18 -17
  67. package/lib/{utils/sequence.js → server/callLog.js} +18 -3
  68. package/lib/server/chromium/chromium.js +14 -14
  69. package/lib/server/chromium/chromiumSwitches.js +32 -1
  70. package/lib/server/chromium/crBrowser.js +15 -14
  71. package/lib/server/chromium/crConnection.js +2 -2
  72. package/lib/server/chromium/crCoverage.js +1 -1
  73. package/lib/server/chromium/crDevTools.js +1 -1
  74. package/lib/server/chromium/crDragDrop.js +1 -1
  75. package/lib/server/chromium/crExecutionContext.js +25 -17
  76. package/lib/server/chromium/crInput.js +2 -2
  77. package/lib/server/chromium/crNetworkManager.js +73 -26
  78. package/lib/server/chromium/crPage.js +22 -23
  79. package/lib/server/chromium/crPdf.js +1 -1
  80. package/lib/server/chromium/crProtocolHelper.js +3 -3
  81. package/lib/server/chromium/crServiceWorker.js +2 -2
  82. package/lib/server/chromium/videoRecorder.js +2 -2
  83. package/lib/server/clock.js +1 -1
  84. package/lib/server/codegen/javascript.js +1 -1
  85. package/lib/server/codegen/languages.js +2 -2
  86. package/lib/server/debugController.js +3 -3
  87. package/lib/server/deviceDescriptors.js +1 -1
  88. package/lib/server/deviceDescriptorsSource.json +131 -131
  89. package/lib/server/dispatchers/androidDispatcher.js +1 -1
  90. package/lib/server/dispatchers/artifactDispatcher.js +3 -3
  91. package/lib/server/dispatchers/browserContextDispatcher.js +19 -19
  92. package/lib/server/dispatchers/browserTypeDispatcher.js +1 -1
  93. package/lib/server/dispatchers/cdpSessionDispatcher.js +1 -1
  94. package/lib/server/dispatchers/dispatcher.js +27 -25
  95. package/lib/server/dispatchers/electronDispatcher.js +3 -3
  96. package/lib/server/dispatchers/elementHandlerDispatcher.js +7 -2
  97. package/lib/server/dispatchers/frameDispatcher.js +4 -4
  98. package/lib/server/dispatchers/jsHandleDispatcher.js +2 -2
  99. package/lib/server/dispatchers/jsonPipeDispatcher.js +2 -2
  100. package/lib/server/dispatchers/localUtilsDispatcher.js +25 -298
  101. package/lib/server/dispatchers/networkDispatchers.js +3 -3
  102. package/lib/server/dispatchers/pageDispatcher.js +11 -9
  103. package/lib/server/dispatchers/playwrightDispatcher.js +5 -5
  104. package/lib/server/dispatchers/streamDispatcher.js +4 -3
  105. package/lib/server/dispatchers/webSocketRouteDispatcher.js +8 -7
  106. package/lib/server/dispatchers/writableStreamDispatcher.js +5 -6
  107. package/lib/server/dom.js +18 -12
  108. package/lib/server/download.js +1 -1
  109. package/lib/server/electron/electron.js +17 -16
  110. package/lib/server/errors.js +1 -1
  111. package/lib/server/fetch.js +36 -25
  112. package/lib/server/fileUploadUtils.js +7 -4
  113. package/lib/server/firefox/ffBrowser.js +8 -2
  114. package/lib/server/firefox/ffConnection.js +1 -1
  115. package/lib/server/firefox/ffExecutionContext.js +25 -17
  116. package/lib/server/firefox/ffNetworkManager.js +2 -2
  117. package/lib/server/firefox/ffPage.js +15 -21
  118. package/lib/server/firefox/firefox.js +7 -9
  119. package/lib/server/frameSelectors.js +1 -1
  120. package/lib/server/frames.js +366 -209
  121. package/lib/server/har/harRecorder.js +4 -4
  122. package/lib/server/har/harTracer.js +7 -8
  123. package/lib/server/harBackend.js +157 -0
  124. package/lib/server/helper.js +2 -2
  125. package/lib/server/index.js +1 -8
  126. package/lib/server/input.js +1 -1
  127. package/lib/server/instrumentation.js +2 -2
  128. package/lib/server/isomorphic/utilityScriptSerializers.js +3 -0
  129. package/lib/server/javascript.js +46 -33
  130. package/lib/server/launchApp.js +2 -2
  131. package/lib/server/localUtils.js +203 -0
  132. package/lib/server/network.js +3 -3
  133. package/lib/server/page.js +41 -22
  134. package/lib/server/pipeTransport.js +1 -1
  135. package/lib/server/playwright.js +5 -5
  136. package/lib/server/progress.js +1 -1
  137. package/lib/server/protocolError.js +1 -1
  138. package/lib/server/recorder/contextRecorder.js +3 -3
  139. package/lib/server/recorder/recorderApp.js +18 -12
  140. package/lib/server/recorder/recorderCollection.js +3 -3
  141. package/lib/server/recorder/throttledFile.js +3 -4
  142. package/lib/server/recorder.js +7 -5
  143. package/lib/server/registry/browserFetcher.js +9 -7
  144. package/lib/server/registry/dependencies.js +15 -15
  145. package/lib/server/registry/index.js +38 -44
  146. package/lib/server/registry/oopDownloadBrowserMain.js +3 -3
  147. package/lib/server/screenshotter.js +1 -1
  148. package/lib/server/selectors.js +3 -3
  149. package/lib/server/socksClientCertificatesInterceptor.js +8 -8
  150. package/lib/server/socksInterceptor.js +8 -5
  151. package/lib/server/storageScript.js +160 -0
  152. package/lib/{common → server}/timeoutSettings.js +6 -5
  153. package/lib/server/trace/recorder/snapshotter.js +9 -8
  154. package/lib/server/trace/recorder/tracing.js +40 -31
  155. package/lib/server/trace/test/inMemorySnapshotter.js +4 -4
  156. package/lib/server/trace/viewer/traceViewer.js +13 -5
  157. package/lib/server/transport.js +2 -2
  158. package/lib/{utils → server/utils}/comparators.js +4 -4
  159. package/lib/{utils → server/utils}/crypto.js +4 -4
  160. package/lib/{utils → server/utils}/debug.js +4 -12
  161. package/lib/{utils → server/utils}/debugLogger.js +2 -2
  162. package/lib/{utils → server/utils}/env.js +4 -0
  163. package/lib/{utils → server/utils}/expectUtils.js +1 -1
  164. package/lib/{utils → server/utils}/fileUtils.js +4 -5
  165. package/lib/{utils/happy-eyeballs.js → server/utils/happyEyeballs.js} +22 -24
  166. package/lib/{utils → server/utils}/hostPlatform.js +1 -1
  167. package/lib/{utils → server/utils}/httpServer.js +8 -8
  168. package/lib/{utils → server/utils}/linuxUtils.js +3 -23
  169. package/lib/{utils → server/utils}/network.js +4 -4
  170. package/lib/server/utils/nodePlatform.js +140 -0
  171. package/lib/{protocol/transport.js → server/utils/pipeTransport.js} +2 -2
  172. package/lib/{utils → server/utils}/processLauncher.js +5 -5
  173. package/lib/{utils → server/utils}/profiler.js +5 -6
  174. package/lib/{common → server/utils}/socksProxy.js +10 -9
  175. package/lib/{utils → server/utils}/userAgent.js +2 -16
  176. package/lib/{utils → server/utils}/wsServer.js +3 -3
  177. package/lib/{utils → server/utils}/zipFile.js +1 -1
  178. package/lib/{utils → server/utils}/zones.js +9 -24
  179. package/lib/server/webkit/webkit.js +4 -4
  180. package/lib/server/webkit/wkBrowser.js +4 -4
  181. package/lib/server/webkit/wkConnection.js +1 -1
  182. package/lib/server/webkit/wkExecutionContext.js +25 -17
  183. package/lib/server/webkit/wkInput.js +2 -2
  184. package/lib/server/webkit/wkInterceptableRequest.js +2 -2
  185. package/lib/server/webkit/wkPage.js +41 -40
  186. package/lib/server/webkit/wkProvisionalPage.js +1 -1
  187. package/lib/server/webkit/wkWorkers.js +2 -2
  188. package/lib/utils/isomorphic/ariaSnapshot.js +2 -1
  189. package/lib/utils/isomorphic/assert.js +25 -0
  190. package/lib/utils/isomorphic/colors.js +65 -0
  191. package/lib/utils/isomorphic/cssParser.js +1 -1
  192. package/lib/utils/isomorphic/locatorGenerators.js +13 -1
  193. package/lib/utils/isomorphic/locatorParser.js +2 -2
  194. package/lib/utils/{manualPromise.js → isomorphic/manualPromise.js} +3 -5
  195. package/lib/utils/isomorphic/mimeType.js +11 -3
  196. package/lib/utils/{multimap.js → isomorphic/multimap.js} +1 -3
  197. package/lib/utils/{rtti.js → isomorphic/rtti.js} +2 -5
  198. package/lib/utils/isomorphic/stackTrace.js +169 -0
  199. package/lib/utils/isomorphic/stringUtils.js +1 -1
  200. package/lib/utils/{time.js → isomorphic/time.js} +1 -13
  201. package/lib/utils/{timeoutRunner.js → isomorphic/timeoutRunner.js} +4 -4
  202. package/lib/utils/isomorphic/traceUtils.js +23 -0
  203. package/lib/{utils/index.js → utils.js} +200 -121
  204. package/lib/utilsBundle.js +1 -25
  205. package/lib/utilsBundleImpl/index.js +114 -116
  206. package/lib/vite/htmlReport/index.html +20 -20
  207. package/lib/vite/recorder/assets/codeMirrorModule-B9YMkrwa.js +24 -0
  208. package/lib/vite/recorder/assets/index-ELPgmkwA.js +184 -0
  209. package/lib/vite/recorder/index.html +1 -1
  210. package/lib/vite/traceViewer/assets/codeMirrorModule-DpJ-EmBQ.js +24 -0
  211. package/lib/vite/traceViewer/assets/defaultSettingsView-DTenqiGw.js +259 -0
  212. package/lib/vite/traceViewer/assets/{xtermModule-c-SNdYZy.js → xtermModule-BoAIEibi.js} +7 -7
  213. package/lib/vite/traceViewer/defaultSettingsView.5fN5lw10.css +1 -0
  214. package/lib/vite/traceViewer/index.CUq7VgrV.js +2 -0
  215. package/lib/vite/traceViewer/index.html +3 -3
  216. package/lib/vite/traceViewer/sw.bundle.js +3 -3
  217. package/lib/vite/traceViewer/uiMode.CHJSAD7F.js +5 -0
  218. package/lib/vite/traceViewer/uiMode.html +3 -3
  219. package/lib/zipBundleImpl.js +4 -4
  220. package/package.json +7 -7
  221. package/types/protocol.d.ts +123 -99
  222. package/types/types.d.ts +91 -37
  223. package/lib/utils/stackTrace.js +0 -134
  224. package/lib/utils/traceUtils.js +0 -44
  225. package/lib/vite/recorder/assets/codeMirrorModule-CNAqJrkA.js +0 -24
  226. package/lib/vite/recorder/assets/index-DGS0JLxS.js +0 -184
  227. package/lib/vite/traceViewer/assets/codeMirrorModule-D55P_UuL.js +0 -24
  228. package/lib/vite/traceViewer/assets/defaultSettingsView-B-uNoFsX.js +0 -243
  229. package/lib/vite/traceViewer/defaultSettingsView.2xeEXCXv.css +0 -1
  230. package/lib/vite/traceViewer/index.BfvuujqP.js +0 -2
  231. package/lib/vite/traceViewer/uiMode.CStJu6jo.js +0 -5
  232. /package/lib/{utils → server/utils}/ascii.js +0 -0
  233. /package/lib/{utils → server/utils}/eventsHelper.js +0 -0
  234. /package/lib/{image_tools → server/utils/image_tools}/colorUtils.js +0 -0
  235. /package/lib/{image_tools → server/utils/image_tools}/compare.js +0 -0
  236. /package/lib/{image_tools → server/utils/image_tools}/imageChannel.js +0 -0
  237. /package/lib/{image_tools → server/utils/image_tools}/stats.js +0 -0
  238. /package/lib/{utils → server/utils}/spawnAsync.js +0 -0
  239. /package/lib/{utils → server/utils}/task.js +0 -0
  240. /package/lib/utils/{headers.js → isomorphic/headers.js} +0 -0
  241. /package/lib/utils/{semaphore.js → isomorphic/semaphore.js} +0 -0
  242. /package/lib/{common → utils/isomorphic}/types.js +0 -0
@@ -4,11 +4,14 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.WKExecutionContext = void 0;
7
- var js = _interopRequireWildcard(require("../javascript"));
7
+ exports.createHandle = createHandle;
8
8
  var _utilityScriptSerializers = require("../isomorphic/utilityScriptSerializers");
9
+ var js = _interopRequireWildcard(require("../javascript"));
10
+ var dom = _interopRequireWildcard(require("../dom"));
9
11
  var _protocolError = require("../protocolError");
12
+ var _assert = require("../../utils/isomorphic/assert");
10
13
  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); }
11
- 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; }
14
+ 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; }
12
15
  /**
13
16
  * Copyright 2017 Google Inc. All rights reserved.
14
17
  * Modifications copyright (c) Microsoft Corporation.
@@ -46,7 +49,7 @@ class WKExecutionContext {
46
49
  throw rewriteError(error);
47
50
  }
48
51
  }
49
- async rawEvaluateHandle(expression) {
52
+ async rawEvaluateHandle(context, expression) {
50
53
  try {
51
54
  const response = await this._session.send('Runtime.evaluate', {
52
55
  expression,
@@ -54,12 +57,12 @@ class WKExecutionContext {
54
57
  returnByValue: false
55
58
  });
56
59
  if (response.wasThrown) throw new js.JavaScriptErrorInEvaluate(response.result.description);
57
- return response.result.objectId;
60
+ return createHandle(context, response.result);
58
61
  } catch (error) {
59
62
  throw rewriteError(error);
60
63
  }
61
64
  }
62
- async evaluateWithArguments(expression, returnByValue, utilityScript, values, objectIds) {
65
+ async evaluateWithArguments(expression, returnByValue, utilityScript, values, handles) {
63
66
  try {
64
67
  const response = await this._session.send('Runtime.callFunctionOn', {
65
68
  functionDeclaration: expression,
@@ -68,8 +71,8 @@ class WKExecutionContext {
68
71
  objectId: utilityScript._objectId
69
72
  }, ...values.map(value => ({
70
73
  value
71
- })), ...objectIds.map(objectId => ({
72
- objectId
74
+ })), ...handles.map(handle => ({
75
+ objectId: handle._objectId
73
76
  }))],
74
77
  returnByValue,
75
78
  emulateUserGesture: true,
@@ -77,30 +80,27 @@ class WKExecutionContext {
77
80
  });
78
81
  if (response.wasThrown) throw new js.JavaScriptErrorInEvaluate(response.result.description);
79
82
  if (returnByValue) return (0, _utilityScriptSerializers.parseEvaluationResultValue)(response.result.value);
80
- return utilityScript._context.createHandle(response.result);
83
+ return createHandle(utilityScript._context, response.result);
81
84
  } catch (error) {
82
85
  throw rewriteError(error);
83
86
  }
84
87
  }
85
- async getProperties(context, objectId) {
88
+ async getProperties(object) {
86
89
  const response = await this._session.send('Runtime.getProperties', {
87
- objectId,
90
+ objectId: object._objectId,
88
91
  ownProperties: true
89
92
  });
90
93
  const result = new Map();
91
94
  for (const property of response.properties) {
92
95
  if (!property.enumerable || !property.value) continue;
93
- result.set(property.name, context.createHandle(property.value));
96
+ result.set(property.name, createHandle(object._context, property.value));
94
97
  }
95
98
  return result;
96
99
  }
97
- createHandle(context, remoteObject) {
98
- const isPromise = remoteObject.className === 'Promise';
99
- return new js.JSHandle(context, isPromise ? 'promise' : remoteObject.subtype || remoteObject.type, renderPreview(remoteObject), remoteObject.objectId, potentiallyUnserializableValue(remoteObject));
100
- }
101
- async releaseHandle(objectId) {
100
+ async releaseHandle(handle) {
101
+ if (!handle._objectId) return;
102
102
  await this._session.send('Runtime.releaseObject', {
103
- objectId
103
+ objectId: handle._objectId
104
104
  });
105
105
  }
106
106
  }
@@ -128,4 +128,12 @@ function renderPreview(object) {
128
128
  }
129
129
  if (object.subtype === 'array' && object.preview) return js.sparseArrayToString(object.preview.properties);
130
130
  return object.description;
131
+ }
132
+ function createHandle(context, remoteObject) {
133
+ if (remoteObject.subtype === 'node') {
134
+ (0, _assert.assert)(context instanceof dom.FrameExecutionContext);
135
+ return new dom.ElementHandle(context, remoteObject.objectId);
136
+ }
137
+ const isPromise = remoteObject.className === 'Promise';
138
+ return new js.JSHandle(context, isPromise ? 'promise' : remoteObject.subtype || remoteObject.type, renderPreview(remoteObject), remoteObject.objectId, potentiallyUnserializableValue(remoteObject));
131
139
  }
@@ -4,11 +4,11 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.RawTouchscreenImpl = exports.RawMouseImpl = exports.RawKeyboardImpl = void 0;
7
+ var _utils = require("../../utils");
7
8
  var input = _interopRequireWildcard(require("../input"));
8
9
  var _macEditingCommands = require("../macEditingCommands");
9
- var _utils = require("../../utils");
10
10
  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); }
11
- 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; }
11
+ 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; }
12
12
  /**
13
13
  * Copyright 2017 Google Inc. All rights reserved.
14
14
  * Modifications copyright (c) Microsoft Corporation.
@@ -4,10 +4,10 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.WKRouteImpl = exports.WKInterceptableRequest = void 0;
7
- var network = _interopRequireWildcard(require("../network"));
8
7
  var _utils = require("../../utils");
8
+ var network = _interopRequireWildcard(require("../network"));
9
9
  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); }
10
- 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; }
10
+ 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; }
11
11
  /**
12
12
  * Copyright 2017 Google Inc. All rights reserved.
13
13
  * Modifications copyright (c) Microsoft Corporation.
@@ -5,13 +5,17 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.WKPage = void 0;
7
7
  var _path = _interopRequireDefault(require("path"));
8
- var _utilsBundle = require("../../utilsBundle");
9
- var _stackTrace = require("../../utils/stackTrace");
10
8
  var _utils = require("../../utils");
11
- var _hostPlatform = require("../../utils/hostPlatform");
9
+ var _headers = require("../../utils/isomorphic/headers");
10
+ var _crypto = require("../utils/crypto");
11
+ var _eventsHelper = require("../utils/eventsHelper");
12
+ var _hostPlatform = require("../utils/hostPlatform");
13
+ var _stackTrace = require("../../utils/isomorphic/stackTrace");
14
+ var _utilsBundle = require("../../utilsBundle");
15
+ var _browserContext = require("../browserContext");
12
16
  var dialog = _interopRequireWildcard(require("../dialog"));
13
17
  var dom = _interopRequireWildcard(require("../dom"));
14
- var _eventsHelper = require("../../utils/eventsHelper");
18
+ var _errors = require("../errors");
15
19
  var _helper = require("../helper");
16
20
  var network = _interopRequireWildcard(require("../network"));
17
21
  var _page = require("../page");
@@ -22,12 +26,10 @@ var _wkInput = require("./wkInput");
22
26
  var _wkInterceptableRequest = require("./wkInterceptableRequest");
23
27
  var _wkProvisionalPage = require("./wkProvisionalPage");
24
28
  var _wkWorkers = require("./wkWorkers");
25
- var _debugLogger = require("../../utils/debugLogger");
26
- var _browserContext = require("../browserContext");
27
- var _errors = require("../errors");
29
+ var _debugLogger = require("../utils/debugLogger");
28
30
  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); }
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 && 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; }
30
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
31
+ 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; }
32
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
31
33
  /**
32
34
  * Copyright 2017 Google Inc. All rights reserved.
33
35
  * Modifications copyright (c) Microsoft Corporation.
@@ -114,7 +116,7 @@ class WKPage {
114
116
  for (const [key, value] of this._browserContext._permissions) promises.push(this._grantPermissions(key, value));
115
117
  }
116
118
  if (this._browserContext._options.recordVideo) {
117
- const outputFile = _path.default.join(this._browserContext._options.recordVideo.dir, (0, _utils.createGuid)() + '.webm');
119
+ const outputFile = _path.default.join(this._browserContext._options.recordVideo.dir, (0, _crypto.createGuid)() + '.webm');
118
120
  promises.push(this._browserContext._ensureVideosPath().then(() => {
119
121
  return this._startVideo({
120
122
  // validateBrowserContextOptions ensures correct video size.
@@ -180,7 +182,7 @@ class WKPage {
180
182
  const contextOptions = this._browserContext._options;
181
183
  if (contextOptions.userAgent) promises.push(this.updateUserAgent());
182
184
  const emulatedMedia = this._page.emulatedMedia();
183
- if (emulatedMedia.media || emulatedMedia.colorScheme || emulatedMedia.reducedMotion || emulatedMedia.forcedColors) promises.push(WKPage._setEmulateMedia(session, emulatedMedia.media, emulatedMedia.colorScheme, emulatedMedia.reducedMotion, emulatedMedia.forcedColors));
185
+ if (emulatedMedia.media || emulatedMedia.colorScheme || emulatedMedia.reducedMotion || emulatedMedia.forcedColors || emulatedMedia.contrast) promises.push(WKPage._setEmulateMedia(session, emulatedMedia.media, emulatedMedia.colorScheme, emulatedMedia.reducedMotion, emulatedMedia.forcedColors, emulatedMedia.contrast));
184
186
  const bootstrapScript = this._calculateBootstrapScript();
185
187
  if (bootstrapScript.length) promises.push(session.send('Page.setBootstrapScript', {
186
188
  source: bootstrapScript
@@ -198,7 +200,7 @@ class WKPage {
198
200
  }
199
201
  promises.push(this.updateEmulateMedia());
200
202
  promises.push(session.send('Network.setExtraHTTPHeaders', {
201
- headers: (0, _utils.headersArrayToObject)(this._calculateExtraHTTPHeaders(), false /* lowerCase */)
203
+ headers: (0, _headers.headersArrayToObject)(this._calculateExtraHTTPHeaders(), false /* lowerCase */)
202
204
  }));
203
205
  if (contextOptions.offline) promises.push(session.send('Network.setEmulateOfflineState', {
204
206
  offline: true
@@ -306,7 +308,6 @@ class WKPage {
306
308
  this._page._frameManager.frameAbortedNavigation(this._page.mainFrame()._id, errorText, event.loaderId);
307
309
  }
308
310
  handleWindowOpen(event) {
309
- (0, _utils.debugAssert)(!this._nextWindowOpenPopupFeatures);
310
311
  this._nextWindowOpenPopupFeatures = event.windowFeatures;
311
312
  }
312
313
  async _onTargetCreated(event) {
@@ -454,7 +455,6 @@ class WKPage {
454
455
  let worldName = null;
455
456
  if (contextPayload.type === 'normal') worldName = 'main';else if (contextPayload.type === 'user' && contextPayload.name === UTILITY_WORLD_NAME) worldName = 'utility';
456
457
  const context = new dom.FrameExecutionContext(delegate, frame, worldName);
457
- context[contextDelegateSymbol] = delegate;
458
458
  if (worldName) frame._contextCreated(worldName, context);
459
459
  this._contextIdToContext.set(contextPayload.id, context);
460
460
  }
@@ -524,7 +524,7 @@ class WKPage {
524
524
  context = [...this._contextIdToContext.values()].find(c => c.frame === this._page.mainFrame());
525
525
  }
526
526
  if (!context) return;
527
- handles.push(context.createHandle(p));
527
+ handles.push((0, _wkExecutionContext.createHandle)(context, p));
528
528
  }
529
529
  this._lastConsoleMessage = {
530
530
  derivedType,
@@ -568,14 +568,14 @@ class WKPage {
568
568
  let handle;
569
569
  try {
570
570
  const context = await this._page._frameManager.frame(event.frameId)._mainContext();
571
- handle = context.createHandle(event.element).asElement();
571
+ handle = (0, _wkExecutionContext.createHandle)(context, event.element).asElement();
572
572
  } catch (e) {
573
573
  // During async processing, frame/context may go away. We should not throw.
574
574
  return;
575
575
  }
576
576
  await this._page._onFileChooserOpened(handle);
577
577
  }
578
- static async _setEmulateMedia(session, mediaType, colorScheme, reducedMotion, forcedColors) {
578
+ static async _setEmulateMedia(session, mediaType, colorScheme, reducedMotion, forcedColors, contrast) {
579
579
  const promises = [];
580
580
  promises.push(session.send('Page.setEmulatedMedia', {
581
581
  media: mediaType === 'no-override' ? '' : mediaType
@@ -627,11 +627,27 @@ class WKPage {
627
627
  promises.push(session.send('Page.setForcedColors', {
628
628
  forcedColors: forcedColorsWk
629
629
  }));
630
+ let contrastWk = undefined;
631
+ switch (contrast) {
632
+ case 'more':
633
+ contrastWk = 'More';
634
+ break;
635
+ case 'no-preference':
636
+ contrastWk = 'NoPreference';
637
+ break;
638
+ case 'no-override':
639
+ contrastWk = undefined;
640
+ break;
641
+ }
642
+ promises.push(session.send('Page.overrideUserPreference', {
643
+ name: 'PrefersContrast',
644
+ value: contrastWk
645
+ }));
630
646
  await Promise.all(promises);
631
647
  }
632
648
  async updateExtraHTTPHeaders() {
633
649
  await this._updateState('Network.setExtraHTTPHeaders', {
634
- headers: (0, _utils.headersArrayToObject)(this._calculateExtraHTTPHeaders(), false /* lowerCase */)
650
+ headers: (0, _headers.headersArrayToObject)(this._calculateExtraHTTPHeaders(), false /* lowerCase */)
635
651
  });
636
652
  }
637
653
  _calculateExtraHTTPHeaders() {
@@ -644,7 +660,8 @@ class WKPage {
644
660
  const colorScheme = emulatedMedia.colorScheme;
645
661
  const reducedMotion = emulatedMedia.reducedMotion;
646
662
  const forcedColors = emulatedMedia.forcedColors;
647
- await this._forAllSessions(session => WKPage._setEmulateMedia(session, emulatedMedia.media, colorScheme, reducedMotion, forcedColors));
663
+ const contrast = emulatedMedia.contrast;
664
+ await this._forAllSessions(session => WKPage._setEmulateMedia(session, emulatedMedia.media, colorScheme, reducedMotion, forcedColors, contrast));
648
665
  }
649
666
  async updateEmulatedViewportSize() {
650
667
  this._browserContext._validateEmulatedViewport(this._page.viewportSize());
@@ -831,9 +848,6 @@ class WKPage {
831
848
  });
832
849
  return nodeInfo.ownerFrameId || null;
833
850
  }
834
- isElementHandle(remoteObject) {
835
- return remoteObject.subtype === 'node';
836
- }
837
851
  async getBoundingBox(handle) {
838
852
  const quads = await this.getContentQuads(handle);
839
853
  if (!quads || !quads.length) return null;
@@ -916,18 +930,6 @@ class WKPage {
916
930
  y: quad[7]
917
931
  }]);
918
932
  }
919
- async setInputFiles(handle, files) {
920
- const objectId = handle._objectId;
921
- const protocolFiles = files.map(file => ({
922
- name: file.name,
923
- type: file.mimeType,
924
- data: file.buffer
925
- }));
926
- await this._session.send('DOM.setInputFiles', {
927
- objectId,
928
- files: protocolFiles
929
- });
930
- }
931
933
  async setInputFilePaths(handle, paths) {
932
934
  const pageProxyId = this._pageProxySession.sessionId;
933
935
  const objectId = handle._objectId;
@@ -942,10 +944,10 @@ class WKPage {
942
944
  async adoptElementHandle(handle, to) {
943
945
  const result = await this._session.sendMayFail('DOM.resolveNode', {
944
946
  objectId: handle._objectId,
945
- executionContextId: to[contextDelegateSymbol]._contextId
947
+ executionContextId: to.delegate._contextId
946
948
  });
947
949
  if (!result || result.object.subtype === 'null') throw new Error(dom.kUnableToAdoptErrorMessage);
948
- return to.createHandle(result.object);
950
+ return (0, _wkExecutionContext.createHandle)(to, result.object);
949
951
  }
950
952
  async getAccessibilityTree(needle) {
951
953
  return (0, _wkAccessibility.getAccessibilityTree)(this._session, needle);
@@ -958,10 +960,10 @@ class WKPage {
958
960
  const context = await parent._mainContext();
959
961
  const result = await this._session.send('DOM.resolveNode', {
960
962
  frameId: frame._id,
961
- executionContextId: context[contextDelegateSymbol]._contextId
963
+ executionContextId: context.delegate._contextId
962
964
  });
963
965
  if (!result || result.object.subtype === 'null') throw new Error('Frame has been detached.');
964
- return context.createHandle(result.object);
966
+ return (0, _wkExecutionContext.createHandle)(context, result.object);
965
967
  }
966
968
  _maybeCancelCoopNavigationRequest(provisionalPage) {
967
969
  const navigationRequest = provisionalPage.coopNavigationRequest();
@@ -1203,5 +1205,4 @@ function isLoadedSecurely(url, timing) {
1203
1205
  if (timing.secureConnectionStart === -1 && timing.connectStart !== -1) return false;
1204
1206
  return true;
1205
1207
  } catch (_) {}
1206
- }
1207
- const contextDelegateSymbol = Symbol('delegate');
1208
+ }
@@ -4,8 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.WKProvisionalPage = void 0;
7
- var _eventsHelper = require("../../utils/eventsHelper");
8
7
  var _utils = require("../../utils");
8
+ var _eventsHelper = require("../utils/eventsHelper");
9
9
  /**
10
10
  * Copyright (c) Microsoft Corporation.
11
11
  *
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.WKWorkers = void 0;
7
- var _eventsHelper = require("../../utils/eventsHelper");
7
+ var _eventsHelper = require("../utils/eventsHelper");
8
8
  var _page = require("../page");
9
9
  var _wkConnection = require("./wkConnection");
10
10
  var _wkExecutionContext = require("./wkExecutionContext");
@@ -91,7 +91,7 @@ class WKWorkers {
91
91
  let derivedType = type || '';
92
92
  if (type === 'log') derivedType = level;else if (type === 'timing') derivedType = 'timeEnd';
93
93
  const handles = (parameters || []).map(p => {
94
- return worker._existingExecutionContext.createHandle(p);
94
+ return (0, _wkExecutionContext.createHandle)(worker._existingExecutionContext, p);
95
95
  });
96
96
  const location = {
97
97
  url: url || '',
@@ -188,7 +188,8 @@ const emptyFragment = {
188
188
  role: 'fragment'
189
189
  };
190
190
  function normalizeWhitespace(text) {
191
- return text.replace(/[\r\n\s\t]+/g, ' ').trim();
191
+ // TODO: why is this different from normalizeWhitespace in stringUtils.ts?
192
+ return text.replace(/[\u200b\u00ad]/g, '').replace(/[\r\n\s\t]+/g, ' ').trim();
192
193
  }
193
194
  function valueOrRegex(value) {
194
195
  return value.startsWith('/') && value.endsWith('/') && value.length > 1 ? {
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.assert = assert;
7
+ /**
8
+ * Copyright (c) Microsoft Corporation.
9
+ *
10
+ * Licensed under the Apache License, Version 2.0 (the "License");
11
+ * you may not use this file except in compliance with the License.
12
+ * You may obtain a copy of the License at
13
+ *
14
+ * http://www.apache.org/licenses/LICENSE-2.0
15
+ *
16
+ * Unless required by applicable law or agreed to in writing, software
17
+ * distributed under the License is distributed on an "AS IS" BASIS,
18
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19
+ * See the License for the specific language governing permissions and
20
+ * limitations under the License.
21
+ */
22
+
23
+ function assert(value, message) {
24
+ if (!value) throw new Error(message || 'Assertion error');
25
+ }
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.webColors = exports.noColors = void 0;
7
+ /**
8
+ * Copyright (c) Microsoft Corporation.
9
+ *
10
+ * Licensed under the Apache License, Version 2.0 (the "License");
11
+ * you may not use this file except in compliance with the License.
12
+ * You may obtain a copy of the License at
13
+ *
14
+ * http://www.apache.org/licenses/LICENSE-2.0
15
+ *
16
+ * Unless required by applicable law or agreed to in writing, software
17
+ * distributed under the License is distributed on an "AS IS" BASIS,
18
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19
+ * See the License for the specific language governing permissions and
20
+ * limitations under the License.
21
+ */
22
+
23
+ const webColors = exports.webColors = {
24
+ enabled: true,
25
+ reset: text => applyStyle(0, 0, text),
26
+ bold: text => applyStyle(1, 22, text),
27
+ dim: text => applyStyle(2, 22, text),
28
+ italic: text => applyStyle(3, 23, text),
29
+ underline: text => applyStyle(4, 24, text),
30
+ inverse: text => applyStyle(7, 27, text),
31
+ hidden: text => applyStyle(8, 28, text),
32
+ strikethrough: text => applyStyle(9, 29, text),
33
+ black: text => applyStyle(30, 39, text),
34
+ red: text => applyStyle(31, 39, text),
35
+ green: text => applyStyle(32, 39, text),
36
+ yellow: text => applyStyle(33, 39, text),
37
+ blue: text => applyStyle(34, 39, text),
38
+ magenta: text => applyStyle(35, 39, text),
39
+ cyan: text => applyStyle(36, 39, text),
40
+ white: text => applyStyle(37, 39, text),
41
+ gray: text => applyStyle(90, 39, text),
42
+ grey: text => applyStyle(90, 39, text)
43
+ };
44
+ const noColors = exports.noColors = {
45
+ enabled: false,
46
+ reset: t => t,
47
+ bold: t => t,
48
+ dim: t => t,
49
+ italic: t => t,
50
+ underline: t => t,
51
+ inverse: t => t,
52
+ hidden: t => t,
53
+ strikethrough: t => t,
54
+ black: t => t,
55
+ red: t => t,
56
+ green: t => t,
57
+ yellow: t => t,
58
+ blue: t => t,
59
+ magenta: t => t,
60
+ cyan: t => t,
61
+ white: t => t,
62
+ gray: t => t,
63
+ grey: t => t
64
+ };
65
+ const applyStyle = (open, close, text) => `\u001b[${open}m${text}\u001b[${close}m`;
@@ -9,7 +9,7 @@ exports.parseCSS = parseCSS;
9
9
  exports.serializeSelector = serializeSelector;
10
10
  var css = _interopRequireWildcard(require("./cssTokenizer"));
11
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; }
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 && {}.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; }
13
13
  /**
14
14
  * Copyright (c) Microsoft Corporation.
15
15
  *
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.PythonLocatorFactory = exports.JsonlLocatorFactory = exports.JavaScriptLocatorFactory = exports.JavaLocatorFactory = exports.CSharpLocatorFactory = void 0;
7
7
  exports.asLocator = asLocator;
8
8
  exports.asLocators = asLocators;
9
- var _stringUtils = require("./stringUtils");
10
9
  var _selectorParser = require("./selectorParser");
10
+ var _stringUtils = require("./stringUtils");
11
11
  /**
12
12
  * Copyright (c) Microsoft Corporation.
13
13
  *
@@ -47,6 +47,10 @@ function innerAsLocators(factory, parsed, isFrameLocator = false, maxOutputSize
47
47
  if (part.body === '0') tokens.push([factory.generateLocator(base, 'first', ''), factory.generateLocator(base, 'nth', '0')]);else if (part.body === '-1') tokens.push([factory.generateLocator(base, 'last', ''), factory.generateLocator(base, 'nth', '-1')]);else tokens.push([factory.generateLocator(base, 'nth', part.body)]);
48
48
  continue;
49
49
  }
50
+ if (part.name === 'visible') {
51
+ tokens.push([factory.generateLocator(base, 'visible', part.body), factory.generateLocator(base, 'default', `visible=${part.body}`)]);
52
+ continue;
53
+ }
50
54
  if (part.name === 'internal:text') {
51
55
  const {
52
56
  exact,
@@ -287,6 +291,8 @@ class JavaScriptLocatorFactory {
287
291
  return `first()`;
288
292
  case 'last':
289
293
  return `last()`;
294
+ case 'visible':
295
+ return `filter({ visible: ${body === 'true' ? 'true' : 'false'} })`;
290
296
  case 'role':
291
297
  const attrs = [];
292
298
  if (isRegExp(options.name)) {
@@ -372,6 +378,8 @@ class PythonLocatorFactory {
372
378
  return `first`;
373
379
  case 'last':
374
380
  return `last`;
381
+ case 'visible':
382
+ return `filter(visible=${body === 'true' ? 'True' : 'False'})`;
375
383
  case 'role':
376
384
  const attrs = [];
377
385
  if (isRegExp(options.name)) {
@@ -474,6 +482,8 @@ class JavaLocatorFactory {
474
482
  return `first()`;
475
483
  case 'last':
476
484
  return `last()`;
485
+ case 'visible':
486
+ return `filter(new ${clazz}.FilterOptions().setVisible(${body === 'true' ? 'true' : 'false'}))`;
477
487
  case 'role':
478
488
  const attrs = [];
479
489
  if (isRegExp(options.name)) {
@@ -560,6 +570,8 @@ class CSharpLocatorFactory {
560
570
  return `First`;
561
571
  case 'last':
562
572
  return `Last`;
573
+ case 'visible':
574
+ return `Filter(new() { Visible = ${body === 'true' ? 'true' : 'false'} })`;
563
575
  case 'role':
564
576
  const attrs = [];
565
577
  if (isRegExp(options.name)) {
@@ -5,9 +5,9 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.locatorOrSelectorAsSelector = locatorOrSelectorAsSelector;
7
7
  exports.unsafeLocatorOrSelectorAsSelector = unsafeLocatorOrSelectorAsSelector;
8
- var _stringUtils = require("./stringUtils");
9
8
  var _locatorGenerators = require("./locatorGenerators");
10
9
  var _selectorParser = require("./selectorParser");
10
+ var _stringUtils = require("./stringUtils");
11
11
  /**
12
12
  * Copyright (c) Microsoft Corporation.
13
13
  *
@@ -124,7 +124,7 @@ function transform(template, params, testIdAttributeName) {
124
124
  }
125
125
 
126
126
  // Transform to selector engines.
127
- template = template.replace(/\,set([\w]+)\(([^)]+)\)/g, (_, group1, group2) => ',' + group1.toLowerCase() + '=' + group2.toLowerCase()).replace(/framelocator\(([^)]+)\)/g, '$1.internal:control=enter-frame').replace(/contentframe(\(\))?/g, 'internal:control=enter-frame').replace(/locator\(([^)]+),hastext=([^),]+)\)/g, 'locator($1).internal:has-text=$2').replace(/locator\(([^)]+),hasnottext=([^),]+)\)/g, 'locator($1).internal:has-not-text=$2').replace(/locator\(([^)]+),hastext=([^),]+)\)/g, 'locator($1).internal:has-text=$2').replace(/locator\(([^)]+)\)/g, '$1').replace(/getbyrole\(([^)]+)\)/g, 'internal:role=$1').replace(/getbytext\(([^)]+)\)/g, 'internal:text=$1').replace(/getbylabel\(([^)]+)\)/g, 'internal:label=$1').replace(/getbytestid\(([^)]+)\)/g, `internal:testid=[${testIdAttributeName}=$1]`).replace(/getby(placeholder|alt|title)(?:text)?\(([^)]+)\)/g, 'internal:attr=[$1=$2]').replace(/first(\(\))?/g, 'nth=0').replace(/last(\(\))?/g, 'nth=-1').replace(/nth\(([^)]+)\)/g, 'nth=$1').replace(/filter\(,?hastext=([^)]+)\)/g, 'internal:has-text=$1').replace(/filter\(,?hasnottext=([^)]+)\)/g, 'internal:has-not-text=$1').replace(/filter\(,?has2=([^)]+)\)/g, 'internal:has=$1').replace(/filter\(,?hasnot2=([^)]+)\)/g, 'internal:has-not=$1').replace(/,exact=false/g, '').replace(/,exact=true/g, 's').replace(/,includehidden=/g, ',include-hidden=').replace(/\,/g, '][');
127
+ template = template.replace(/\,set([\w]+)\(([^)]+)\)/g, (_, group1, group2) => ',' + group1.toLowerCase() + '=' + group2.toLowerCase()).replace(/framelocator\(([^)]+)\)/g, '$1.internal:control=enter-frame').replace(/contentframe(\(\))?/g, 'internal:control=enter-frame').replace(/locator\(([^)]+),hastext=([^),]+)\)/g, 'locator($1).internal:has-text=$2').replace(/locator\(([^)]+),hasnottext=([^),]+)\)/g, 'locator($1).internal:has-not-text=$2').replace(/locator\(([^)]+),hastext=([^),]+)\)/g, 'locator($1).internal:has-text=$2').replace(/locator\(([^)]+)\)/g, '$1').replace(/getbyrole\(([^)]+)\)/g, 'internal:role=$1').replace(/getbytext\(([^)]+)\)/g, 'internal:text=$1').replace(/getbylabel\(([^)]+)\)/g, 'internal:label=$1').replace(/getbytestid\(([^)]+)\)/g, `internal:testid=[${testIdAttributeName}=$1]`).replace(/getby(placeholder|alt|title)(?:text)?\(([^)]+)\)/g, 'internal:attr=[$1=$2]').replace(/first(\(\))?/g, 'nth=0').replace(/last(\(\))?/g, 'nth=-1').replace(/nth\(([^)]+)\)/g, 'nth=$1').replace(/filter\(,?visible=true\)/g, 'visible=true').replace(/filter\(,?visible=false\)/g, 'visible=false').replace(/filter\(,?hastext=([^)]+)\)/g, 'internal:has-text=$1').replace(/filter\(,?hasnottext=([^)]+)\)/g, 'internal:has-not-text=$1').replace(/filter\(,?has2=([^)]+)\)/g, 'internal:has=$1').replace(/filter\(,?hasnot2=([^)]+)\)/g, 'internal:has-not=$1').replace(/,exact=false/g, '').replace(/,exact=true/g, 's').replace(/,includehidden=/g, ',include-hidden=').replace(/\,/g, '][');
128
128
  const parts = template.split('.');
129
129
  // Turn "internal:control=enter-frame >> nth=0" into "nth=0 >> internal:control=enter-frame"
130
130
  // because these are swapped in locators vs selectors.
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.ManualPromise = exports.LongStandingScope = void 0;
7
7
  var _stackTrace = require("./stackTrace");
8
- let _Symbol$species, _Symbol$toStringTag;
9
8
  /**
10
9
  * Copyright (c) Microsoft Corporation.
11
10
  *
@@ -21,8 +20,7 @@ let _Symbol$species, _Symbol$toStringTag;
21
20
  * See the License for the specific language governing permissions and
22
21
  * limitations under the License.
23
22
  */
24
- _Symbol$species = Symbol.species;
25
- _Symbol$toStringTag = Symbol.toStringTag;
23
+
26
24
  class ManualPromise extends Promise {
27
25
  constructor() {
28
26
  let resolve;
@@ -49,10 +47,10 @@ class ManualPromise extends Promise {
49
47
  this._isDone = true;
50
48
  this._reject(e);
51
49
  }
52
- static get [_Symbol$species]() {
50
+ static get [Symbol.species]() {
53
51
  return Promise;
54
52
  }
55
- get [_Symbol$toStringTag]() {
53
+ get [Symbol.toStringTag]() {
56
54
  return 'ManualPromise';
57
55
  }
58
56
  }