build(deps): bump playwright from 1.49.1 to 1.50.1

This commit is contained in:
2025-02-21 17:22:03 -07:00
parent 79c9869e65
commit dc6d9c68a9
174 changed files with 3064 additions and 1955 deletions

View File

@@ -42,7 +42,7 @@ class WebKit extends _browserType.BrowserType {
}
doRewriteStartupLog(error) {
if (!error.logs) return error;
if (error.logs.includes('cannot open display')) error.logs = '\n' + (0, _utils.wrapInASCIIBox)(_browserType.kNoXServerRunningError, 1);
if (error.logs.includes('Failed to open display') || error.logs.includes('cannot open display')) error.logs = '\n' + (0, _utils.wrapInASCIIBox)(_browserType.kNoXServerRunningError, 1);
return error;
}
attemptToGracefullyCloseBrowser(transport) {

View File

@@ -108,13 +108,13 @@ class WKBrowser extends _browser.Browser {
// abort navigation that is still running. We should be able to fix this by
// instrumenting policy decision start/proceed/cancel.
page._page._frameManager.frameAbortedNavigation(payload.frameId, 'Download is starting');
let originPage = page._initializedPage;
let originPage = page._page.initializedOrUndefined();
// If it's a new window download, report it on the opener page.
if (!originPage) {
// Resume the page creation with an error. The page will automatically close right
// after the download begins.
page._firstNonInitialNavigationCommittedReject(new Error('Starting new page download'));
if (page._opener) originPage = page._opener._initializedPage;
if (page._opener) originPage = page._opener._page.initializedOrUndefined();
}
if (!originPage) return;
this._downloadCreated(originPage, payload.uuid, payload.url);
@@ -209,17 +209,17 @@ class WKBrowserContext extends _browserContext.BrowserContext {
_wkPages() {
return Array.from(this._browser._wkPages.values()).filter(wkPage => wkPage._browserContext === this);
}
pages() {
return this._wkPages().map(wkPage => wkPage._initializedPage).filter(pageOrNull => !!pageOrNull);
possiblyUninitializedPages() {
return this._wkPages().map(wkPage => wkPage._page);
}
async newPageDelegate() {
async doCreateNewPage() {
(0, _browserContext.assertBrowserContextIsNotOwned)(this);
const {
pageProxyId
} = await this._browser._browserSession.send('Playwright.createPage', {
browserContextId: this._browserContextId
});
return this._browser._wkPages.get(pageProxyId);
return this._browser._wkPages.get(pageProxyId)._page;
}
async doGetCookies(urls) {
const {

View File

@@ -111,6 +111,7 @@ function potentiallyUnserializableValue(remoteObject) {
return isUnserializable ? js.parseUnserializableValue(remoteObject.description) : value;
}
function rewriteError(error) {
if (error.message.includes('Object has too long reference chain')) throw new Error('Cannot serialize result: object reference chain is too long.');
if (!js.isJavaScriptErrorInEvaluate(error) && !(0, _protocolError.isSessionClosedError)(error)) return new Error('Execution context was destroyed, most likely because of a navigation.');
return error;
}

View File

@@ -51,11 +51,17 @@ class RawKeyboardImpl {
setSession(session) {
this._session = session;
}
async keydown(modifiers, code, keyCode, keyCodeWithoutLocation, key, location, autoRepeat, text) {
async keydown(modifiers, keyName, description, autoRepeat) {
const parts = [];
for (const modifier of ['Shift', 'Control', 'Alt', 'Meta']) {
if (modifiers.has(modifier)) parts.push(modifier);
}
const {
code,
keyCode,
key,
text
} = description;
parts.push(code);
const shortcut = parts.join('+');
let commands = _macEditingCommands.macEditingCommands[shortcut];
@@ -70,17 +76,21 @@ class RawKeyboardImpl {
unmodifiedText: text,
autoRepeat,
macCommands: commands,
isKeypad: location === input.keypadLocation
isKeypad: description.location === input.keypadLocation
});
}
async keyup(modifiers, code, keyCode, keyCodeWithoutLocation, key, location) {
async keyup(modifiers, keyName, description) {
const {
code,
key
} = description;
await this._pageProxySession.send('Input.dispatchKeyEvent', {
type: 'keyUp',
modifiers: toModifiersMask(modifiers),
key,
windowsVirtualKeyCode: keyCode,
windowsVirtualKeyCode: description.keyCode,
code,
isKeypad: location === input.keypadLocation
isKeypad: description.location === input.keypadLocation
});
}
async sendText(text) {

View File

@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
});
exports.WKPage = void 0;
var _path = _interopRequireDefault(require("path"));
var _os = _interopRequireDefault(require("os"));
var _utilsBundle = require("../../utilsBundle");
var _stackTrace = require("../../utils/stackTrace");
var _utils = require("../../utils");
@@ -24,7 +23,6 @@ var _wkInterceptableRequest = require("./wkInterceptableRequest");
var _wkProvisionalPage = require("./wkProvisionalPage");
var _wkWorkers = require("./wkWorkers");
var _debugLogger = require("../../utils/debugLogger");
var _manualPromise = require("../../utils/manualPromise");
var _browserContext = require("../browserContext");
var _errors = require("../errors");
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); }
@@ -56,7 +54,6 @@ class WKPage {
this._session = void 0;
this._provisionalPage = null;
this._page = void 0;
this._pagePromise = new _manualPromise.ManualPromise();
this._pageProxySession = void 0;
this._opener = void 0;
this._requestIdToRequest = new Map();
@@ -66,7 +63,6 @@ class WKPage {
this._sessionListeners = [];
this._eventListeners = void 0;
this._browserContext = void 0;
this._initializedPage = null;
this._firstNonInitialNavigationCommittedPromise = void 0;
this._firstNonInitialNavigationCommittedFulfill = () => {};
this._firstNonInitialNavigationCommittedReject = e => {};
@@ -103,9 +99,6 @@ class WKPage {
};
}
}
potentiallyUninitializedPage() {
return this._page;
}
async _initializePageProxySession() {
if (this._page._browserContext.isSettingStorageState()) return;
const promises = [this._pageProxySession.send('Dialog.enable'), this._pageProxySession.send('Emulation.setActiveAndFocused', {
@@ -303,7 +296,7 @@ class WKPage {
this._pageProxySession.dispatchMessage(message);
}
handleProvisionalLoadFailed(event) {
if (!this._initializedPage) {
if (!this._page.initializedOrUndefined()) {
this._firstNonInitialNavigationCommittedReject(new Error('Initial load failed'));
return;
}
@@ -316,9 +309,6 @@ class WKPage {
(0, _utils.debugAssert)(!this._nextWindowOpenPopupFeatures);
this._nextWindowOpenPopupFeatures = event.windowFeatures;
}
async pageOrError() {
return this._pagePromise;
}
async _onTargetCreated(event) {
const {
targetInfo
@@ -338,7 +328,8 @@ class WKPage {
});
(0, _utils.assert)(targetInfo.type === 'page', 'Only page targets are expected in WebKit, received: ' + targetInfo.type);
if (!targetInfo.isProvisional) {
(0, _utils.assert)(!this._initializedPage);
var _this$_opener;
(0, _utils.assert)(!this._page.initializedOrUndefined());
let pageOrError;
try {
this._setSession(session);
@@ -365,12 +356,7 @@ class WKPage {
// Avoid rejection on disconnect.
this._firstNonInitialNavigationCommittedPromise.catch(() => {});
}
await this._page.initOpener(this._opener);
// Note: it is important to call |reportAsNew| before resolving pageOrError promise,
// so that anyone who awaits pageOrError got a ready and reported page.
this._initializedPage = pageOrError instanceof _page.Page ? pageOrError : null;
this._page.reportAsNew(pageOrError instanceof _page.Page ? undefined : pageOrError);
this._pagePromise.resolve(pageOrError);
this._page.reportAsNew((_this$_opener = this._opener) === null || _this$_opener === void 0 ? void 0 : _this$_opener._page, pageOrError instanceof _page.Page ? undefined : pageOrError);
} else {
(0, _utils.assert)(targetInfo.isProvisional);
(0, _utils.assert)(!this._provisionalPage);
@@ -473,7 +459,7 @@ class WKPage {
this._contextIdToContext.set(contextPayload.id, context);
}
async _onBindingCalled(contextId, argument) {
const pageOrError = await this.pageOrError();
const pageOrError = await this._page.waitForInitializedOrError();
if (!(pageOrError instanceof Error)) {
const context = this._contextIdToContext.get(contextId);
if (context) await this._page._onBindingCalled(argument, context);
@@ -692,11 +678,7 @@ class WKPage {
})];
if (options.isMobile) {
const angle = viewportSize.width > viewportSize.height ? 90 : 0;
// Special handling for macOS 12.
const useLegacySetOrientationOverrideMethod = _os.default.platform() === 'darwin' && parseInt(_os.default.release().split('.')[0], 10) <= 21;
if (useLegacySetOrientationOverrideMethod) promises.push(this._session.send('Page.setOrientationOverride', {
angle
}));else promises.push(this._pageProxySession.send('Emulation.setOrientationOverride', {
promises.push(this._pageProxySession.send('Emulation.setOrientationOverride', {
angle
}));
}
@@ -806,7 +788,7 @@ class WKPage {
toolbarHeight: this._toolbarHeight()
});
this._recordingVideoFile = options.outputFile;
this._browserContext._browser._videoStarted(this._browserContext, screencastId, options.outputFile, this.pageOrError());
this._browserContext._browser._videoStarted(this._browserContext, screencastId, options.outputFile, this._page.waitForInitializedOrError());
}
async _stopVideo() {
if (!this._recordingVideoFile) return;