playwright-core 1.54.0-alpha-2025-06-23 → 1.54.0-alpha-2025-06-25

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 (44) hide show
  1. package/ThirdPartyNotices.txt +3 -3
  2. package/browsers.json +4 -4
  3. package/lib/cli/programWithTestStub.js +1 -1
  4. package/lib/client/elementHandle.js +0 -4
  5. package/lib/client/locator.js +2 -1
  6. package/lib/generated/injectedScriptSource.js +1 -1
  7. package/lib/protocol/validator.js +6 -4
  8. package/lib/remote/playwrightServer.js +5 -9
  9. package/lib/server/android/android.js +2 -2
  10. package/lib/server/bidi/bidiPage.js +2 -2
  11. package/lib/server/browser.js +1 -1
  12. package/lib/server/browserContext.js +3 -3
  13. package/lib/server/browserType.js +3 -3
  14. package/lib/server/chromium/chromium.js +7 -9
  15. package/lib/server/chromium/crPage.js +2 -3
  16. package/lib/server/chromium/videoRecorder.js +1 -1
  17. package/lib/server/dispatchers/elementHandlerDispatcher.js +0 -3
  18. package/lib/server/dispatchers/frameDispatcher.js +3 -0
  19. package/lib/server/dispatchers/localUtilsDispatcher.js +2 -3
  20. package/lib/server/dom.js +20 -50
  21. package/lib/server/electron/electron.js +1 -1
  22. package/lib/server/fetch.js +1 -1
  23. package/lib/server/firefox/ffPage.js +2 -2
  24. package/lib/server/frames.js +77 -58
  25. package/lib/server/input.js +11 -11
  26. package/lib/server/page.js +5 -8
  27. package/lib/server/progress.js +41 -21
  28. package/lib/server/recorder/recorderApp.js +1 -1
  29. package/lib/server/registry/index.js +1 -1
  30. package/lib/server/registry/oopDownloadBrowserMain.js +1 -1
  31. package/lib/server/screenshotter.js +1 -1
  32. package/lib/server/trace/viewer/traceViewer.js +1 -1
  33. package/lib/server/transport.js +0 -2
  34. package/lib/server/utils/network.js +13 -14
  35. package/lib/server/webkit/wkPage.js +1 -1
  36. package/lib/utils/isomorphic/protocolMetainfo.js +1 -1
  37. package/lib/utilsBundleImpl/index.js +160 -150
  38. package/lib/vite/traceViewer/assets/{codeMirrorModule--amfWN3K.js → codeMirrorModule-KhY1IY1h.js} +1 -1
  39. package/lib/vite/traceViewer/assets/{defaultSettingsView-BFAIqAv2.js → defaultSettingsView-h9mbAVJF.js} +45 -45
  40. package/lib/vite/traceViewer/{index.amRtOpxT.js → index.Ckw7w8kC.js} +1 -1
  41. package/lib/vite/traceViewer/index.html +2 -2
  42. package/lib/vite/traceViewer/uiMode.html +2 -2
  43. package/lib/vite/traceViewer/{uiMode.hufuL2u6.js → uiMode.wzqlDRzc.js} +1 -1
  44. package/package.json +1 -1
@@ -55,7 +55,6 @@ function httpRequest(params, onResponse, onError) {
55
55
  };
56
56
  if (params.rejectUnauthorized !== void 0)
57
57
  options.rejectUnauthorized = params.rejectUnauthorized;
58
- const timeout = params.timeout ?? NET_DEFAULT_TIMEOUT;
59
58
  const proxyURL = (0, import_utilsBundle.getProxyForUrl)(params.url);
60
59
  if (proxyURL) {
61
60
  const parsedProxyURL = import_url.default.parse(proxyURL);
@@ -73,33 +72,31 @@ function httpRequest(params, onResponse, onError) {
73
72
  options.rejectUnauthorized = false;
74
73
  }
75
74
  }
75
+ let cancelRequest;
76
76
  const requestCallback = (res) => {
77
77
  const statusCode = res.statusCode || 0;
78
78
  if (statusCode >= 300 && statusCode < 400 && res.headers.location) {
79
79
  request.destroy();
80
- httpRequest({ ...params, url: new URL(res.headers.location, params.url).toString() }, onResponse, onError);
80
+ cancelRequest = httpRequest({ ...params, url: new URL(res.headers.location, params.url).toString() }, onResponse, onError).cancel;
81
81
  } else {
82
82
  onResponse(res);
83
83
  }
84
84
  };
85
85
  const request = options.protocol === "https:" ? import_https.default.request(options, requestCallback) : import_http.default.request(options, requestCallback);
86
86
  request.on("error", onError);
87
- if (timeout !== void 0) {
88
- const rejectOnTimeout = () => {
89
- onError(new Error(`Request to ${params.url} timed out after ${timeout}ms`));
87
+ if (params.socketTimeout !== void 0) {
88
+ request.setTimeout(params.socketTimeout, () => {
89
+ onError(new Error(`Request to ${params.url} timed out after ${params.socketTimeout}ms`));
90
90
  request.abort();
91
- };
92
- if (timeout <= 0) {
93
- rejectOnTimeout();
94
- return;
95
- }
96
- request.setTimeout(timeout, rejectOnTimeout);
91
+ });
97
92
  }
93
+ cancelRequest = (e) => request.destroy(e);
98
94
  request.end(params.data);
95
+ return { cancel: (e) => cancelRequest(e) };
99
96
  }
100
- function fetchData(params, onError) {
101
- return new Promise((resolve, reject) => {
102
- httpRequest(params, async (response) => {
97
+ function fetchData(progress, params, onError) {
98
+ const promise = new Promise((resolve, reject) => {
99
+ const { cancel } = httpRequest(params, async (response) => {
103
100
  if (response.statusCode !== 200) {
104
101
  const error = onError ? await onError(params, response) : new Error(`fetch failed: server returned code ${response.statusCode}. URL: ${params.url}`);
105
102
  reject(error);
@@ -110,7 +107,9 @@ function fetchData(params, onError) {
110
107
  response.on("error", (error) => reject(error));
111
108
  response.on("end", () => resolve(body));
112
109
  }, reject);
110
+ progress?.cleanupWhenAborted(cancel);
113
111
  });
112
+ return progress ? progress.race(promise) : promise;
114
113
  }
115
114
  function shouldBypassProxy(url2, bypass) {
116
115
  if (!bypass)
@@ -795,7 +795,7 @@ class WKPage {
795
795
  const omitDeviceScaleFactor = scale === "css";
796
796
  this.validateScreenshotDimension(rect.width, omitDeviceScaleFactor);
797
797
  this.validateScreenshotDimension(rect.height, omitDeviceScaleFactor);
798
- const result = await this._session.send("Page.snapshotRect", { ...rect, coordinateSystem: documentRect ? "Page" : "Viewport", omitDeviceScaleFactor });
798
+ const result = await progress.race(this._session.send("Page.snapshotRect", { ...rect, coordinateSystem: documentRect ? "Page" : "Viewport", omitDeviceScaleFactor }));
799
799
  const prefix = "data:image/png;base64,";
800
800
  let buffer = Buffer.from(result.dataURL.substr(prefix.length), "base64");
801
801
  if (format === "jpeg")
@@ -159,6 +159,7 @@ const methodMetainfo = /* @__PURE__ */ new Map([
159
159
  ["Frame.fill", { title: 'Fill "{value}"', slowMo: true, snapshot: true, pausesBeforeInput: true }],
160
160
  ["Frame.focus", { title: "Focus", slowMo: true, snapshot: true }],
161
161
  ["Frame.frameElement", { internal: true }],
162
+ ["Frame.generateLocatorString", { internal: true }],
162
163
  ["Frame.highlight", { internal: true }],
163
164
  ["Frame.getAttribute", { internal: true, snapshot: true }],
164
165
  ["Frame.goto", { title: 'Navigate to "{url}"', slowMo: true, snapshot: true }],
@@ -212,7 +213,6 @@ const methodMetainfo = /* @__PURE__ */ new Map([
212
213
  ["ElementHandle.dispatchEvent", { title: "Dispatch event", slowMo: true, snapshot: true }],
213
214
  ["ElementHandle.fill", { title: 'Fill "{value}"', slowMo: true, snapshot: true, pausesBeforeInput: true }],
214
215
  ["ElementHandle.focus", { title: "Focus", slowMo: true, snapshot: true }],
215
- ["ElementHandle.generateLocatorString", { internal: true }],
216
216
  ["ElementHandle.getAttribute", { internal: true }],
217
217
  ["ElementHandle.hover", { title: "Hover", slowMo: true, snapshot: true, pausesBeforeInput: true }],
218
218
  ["ElementHandle.innerHTML", { title: "Get HTML", snapshot: true }],