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

@@ -80,8 +80,8 @@ class BidiBrowser extends _browser.Browser {
browser._defaultContext = new BidiBrowserContext(browser, undefined, options.persistent);
await browser._defaultContext._initialize();
// Create default page as we cannot get access to the existing one.
const pageDelegate = await browser._defaultContext.newPageDelegate();
await pageDelegate.pageOrError();
const page = await browser._defaultContext.doCreateNewPage();
await page.waitForInitializedOrError();
}
return browser;
}
@@ -129,6 +129,8 @@ class BidiBrowser extends _browser.Browser {
if (!parentFrame) continue;
page._session.addFrameBrowsingContext(event.context);
page._page._frameManager.frameAttached(event.context, parentFrameId);
const frame = page._page._frameManager.frame(event.context);
if (frame) frame._url = event.url;
return;
}
return;
@@ -139,6 +141,7 @@ class BidiBrowser extends _browser.Browser {
const session = this._connection.createMainFrameBrowsingContextSession(event.context);
const opener = event.originalOpener && this._bidiPages.get(event.originalOpener);
const page = new _bidiPage.BidiPage(context, session, opener || null);
page._page.mainFrame()._url = event.url;
this._bidiPages.set(event.context, page);
}
_onBrowsingContextDestroyed(event) {
@@ -173,10 +176,10 @@ class BidiBrowserContext extends _browserContext.BrowserContext {
_bidiPages() {
return [...this._browser._bidiPages.values()].filter(bidiPage => bidiPage._browserContext === this);
}
pages() {
return this._bidiPages().map(bidiPage => bidiPage._initializedPage).filter(Boolean);
possiblyUninitializedPages() {
return this._bidiPages().map(bidiPage => bidiPage._page);
}
async newPageDelegate() {
async doCreateNewPage() {
(0, _browserContext.assertBrowserContextIsNotOwned)(this);
const {
context
@@ -184,7 +187,7 @@ class BidiBrowserContext extends _browserContext.BrowserContext {
type: bidi.BrowsingContext.CreateType.Window,
userContext: this._browserContextId
});
return this._browser._bidiPages.get(context);
return this._browser._bidiPages.get(context)._page;
}
async doGetCookies(urls) {
const {

View File

@@ -109,7 +109,26 @@ class BidiExecutionContext {
throw new js.JavaScriptErrorInEvaluate('Unexpected response type: ' + JSON.stringify(response));
}
async getProperties(context, objectId) {
throw new Error('Method not implemented.');
const handle = this.createHandle(context, {
objectId
});
try {
const names = await handle.evaluate(object => {
const names = [];
const descriptors = Object.getOwnPropertyDescriptors(object);
for (const name in descriptors) {
var _descriptors$name;
if ((_descriptors$name = descriptors[name]) !== null && _descriptors$name !== void 0 && _descriptors$name.enumerable) names.push(name);
}
return names;
});
const values = await Promise.all(names.map(name => handle.evaluateHandle((object, name) => object[name], name)));
const map = new Map();
for (let i = 0; i < names.length; i++) map.set(names[i], values[i]);
return map;
} finally {
handle.dispose();
}
}
createHandle(context, jsRemoteObject) {
const remoteObject = jsRemoteObject;

View File

@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
exports.RawTouchscreenImpl = exports.RawMouseImpl = exports.RawKeyboardImpl = void 0;
var bidi = _interopRequireWildcard(require("./third_party/bidiProtocol"));
var _bidiKeyboard = require("./third_party/bidiKeyboard");
var _input = require("../input");
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); }
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; }
/**
@@ -32,20 +33,21 @@ class RawKeyboardImpl {
setSession(session) {
this._session = session;
}
async keydown(modifiers, code, keyCode, keyCodeWithoutLocation, key, location, autoRepeat, text) {
async keydown(modifiers, keyName, description, autoRepeat) {
keyName = (0, _input.resolveSmartModifierString)(keyName);
const actions = [];
actions.push({
type: 'keyDown',
value: (0, _bidiKeyboard.getBidiKeyValue)(key)
value: (0, _bidiKeyboard.getBidiKeyValue)(keyName)
});
// TODO: add modifiers?
await this._performActions(actions);
}
async keyup(modifiers, code, keyCode, keyCodeWithoutLocation, key, location) {
async keyup(modifiers, keyName, description) {
keyName = (0, _input.resolveSmartModifierString)(keyName);
const actions = [];
actions.push({
type: 'keyUp',
value: (0, _bidiKeyboard.getBidiKeyValue)(key)
value: (0, _bidiKeyboard.getBidiKeyValue)(keyName)
});
await this._performActions(actions);
}

View File

@@ -57,10 +57,12 @@ class BidiNetworkManager {
if (param.intercepts) {
// We do not support intercepting redirects.
if (redirectedFrom) {
var _redirectedFrom$_orig;
var _redirectedFrom$_orig, _redirectedFrom$_orig2;
let params = {};
if ((_redirectedFrom$_orig = redirectedFrom._originalRequestRoute) !== null && _redirectedFrom$_orig !== void 0 && _redirectedFrom$_orig._alreadyContinuedHeaders) params = toBidiRequestHeaders((_redirectedFrom$_orig2 = redirectedFrom._originalRequestRoute._alreadyContinuedHeaders) !== null && _redirectedFrom$_orig2 !== void 0 ? _redirectedFrom$_orig2 : []);
this._session.sendMayFail('network.continueRequest', {
request: param.request.request,
...(((_redirectedFrom$_orig = redirectedFrom._originalRequestRoute) === null || _redirectedFrom$_orig === void 0 ? void 0 : _redirectedFrom$_orig._alreadyContinuedHeaders) || {})
...params
});
} else {
route = new BidiRouteImpl(this._session, param.request.request);
@@ -80,10 +82,10 @@ class BidiNetworkManager {
const startTime = timings.requestTime;
function relativeToStart(time) {
if (!time) return -1;
return (time - startTime) / 1000;
return time - startTime;
}
const timing = {
startTime: startTime / 1000,
startTime: startTime,
requestStart: relativeToStart(timings.requestStart),
responseStart: relativeToStart(timings.responseStart),
domainLookupStart: relativeToStart(timings.dnsStart),
@@ -111,7 +113,7 @@ class BidiNetworkManager {
// Keep redirected requests in the map for future reference as redirectedFrom.
const isRedirected = response.status() >= 300 && response.status() <= 399;
const responseEndTime = params.request.timings.responseEnd / 1000 - response.timing().startTime;
const responseEndTime = params.request.timings.responseEnd - response.timing().startTime;
if (isRedirected) {
response._requestFinished(responseEndTime);
} else {
@@ -287,11 +289,8 @@ function fromBidiHeaders(bidiHeaders) {
}
function toBidiRequestHeaders(allHeaders) {
const bidiHeaders = toBidiHeaders(allHeaders);
const cookies = bidiHeaders.filter(h => h.name.toLowerCase() === 'cookie');
const headers = bidiHeaders.filter(h => h.name.toLowerCase() !== 'cookie');
return {
cookies,
headers
headers: bidiHeaders
};
}
function toBidiResponseHeaders(headers) {

View File

@@ -41,7 +41,6 @@ class BidiPage {
this.rawKeyboard = void 0;
this.rawTouchscreen = void 0;
this._page = void 0;
this._pagePromise = void 0;
this._session = void 0;
this._opener = void 0;
this._realmToContext = void 0;
@@ -49,7 +48,6 @@ class BidiPage {
this._browserContext = void 0;
this._networkManager = void 0;
this._pdf = void 0;
this._initializedPage = null;
this._initScriptIds = [];
this._session = bidiSession;
this._opener = opener;
@@ -65,15 +63,13 @@ class BidiPage {
this._sessionListeners = [_eventsHelper.eventsHelper.addEventListener(bidiSession, 'script.realmCreated', this._onRealmCreated.bind(this)), _eventsHelper.eventsHelper.addEventListener(bidiSession, 'script.message', this._onScriptMessage.bind(this)), _eventsHelper.eventsHelper.addEventListener(bidiSession, 'browsingContext.contextDestroyed', this._onBrowsingContextDestroyed.bind(this)), _eventsHelper.eventsHelper.addEventListener(bidiSession, 'browsingContext.navigationStarted', this._onNavigationStarted.bind(this)), _eventsHelper.eventsHelper.addEventListener(bidiSession, 'browsingContext.navigationAborted', this._onNavigationAborted.bind(this)), _eventsHelper.eventsHelper.addEventListener(bidiSession, 'browsingContext.navigationFailed', this._onNavigationFailed.bind(this)), _eventsHelper.eventsHelper.addEventListener(bidiSession, 'browsingContext.fragmentNavigated', this._onFragmentNavigated.bind(this)), _eventsHelper.eventsHelper.addEventListener(bidiSession, 'browsingContext.domContentLoaded', this._onDomContentLoaded.bind(this)), _eventsHelper.eventsHelper.addEventListener(bidiSession, 'browsingContext.load', this._onLoad.bind(this)), _eventsHelper.eventsHelper.addEventListener(bidiSession, 'browsingContext.userPromptOpened', this._onUserPromptOpened.bind(this)), _eventsHelper.eventsHelper.addEventListener(bidiSession, 'log.entryAdded', this._onLogEntryAdded.bind(this))];
// Initialize main frame.
this._pagePromise = this._initialize().finally(async () => {
await this._page.initOpener(this._opener);
}).then(() => {
this._initializedPage = this._page;
this._page.reportAsNew();
return this._page;
}).catch(e => {
this._page.reportAsNew(e);
return e;
// TODO: Wait for first execution context to be created and maybe about:blank navigated.
this._initialize().then(() => {
var _this$_opener;
return this._page.reportAsNew((_this$_opener = this._opener) === null || _this$_opener === void 0 ? void 0 : _this$_opener._page);
}, error => {
var _this$_opener2;
return this._page.reportAsNew((_this$_opener2 = this._opener) === null || _this$_opener2 === void 0 ? void 0 : _this$_opener2._page, error);
});
}
async _initialize() {
@@ -84,18 +80,11 @@ class BidiPage {
async _addAllInitScripts() {
return Promise.all(this._page.allInitScripts().map(initScript => this.addInitScript(initScript)));
}
potentiallyUninitializedPage() {
return this._page;
}
didClose() {
this._session.dispose();
_eventsHelper.eventsHelper.removeEventListeners(this._sessionListeners);
this._page._didClose();
}
async pageOrError() {
// TODO: Wait for first execution context to be created and maybe about:blank navigated.
return this._pagePromise;
}
_onFrameAttached(frameId, parentFrameId) {
return this._page._frameManager.frameAttached(frameId, parentFrameId);
}
@@ -311,7 +300,7 @@ class BidiPage {
}
async _onScriptMessage(event) {
if (event.channel !== kPlaywrightBindingChannel) return;
const pageOrError = await this.pageOrError();
const pageOrError = await this._page.waitForInitializedOrError();
if (pageOrError instanceof Error) return;
const context = this._realmToContext.get(event.source.realm);
if (!context) return;
@@ -351,7 +340,7 @@ class BidiPage {
context: this._session.sessionId,
format: {
type: `image/${format === 'png' ? 'png' : 'jpeg'}`,
quality: quality || 80
quality: quality ? quality / 100 : 0.8
},
origin: documentRect ? 'document' : 'viewport',
clip: {

View File

@@ -13,18 +13,18 @@ exports.getBidiKeyValue = void 0;
/* eslint-disable curly */
const getBidiKeyValue = key => {
switch (key) {
const getBidiKeyValue = keyName => {
switch (keyName) {
case '\r':
case '\n':
key = 'Enter';
keyName = 'Enter';
break;
}
// Measures the number of code points rather than UTF-16 code units.
if ([...key].length === 1) {
return key;
if ([...keyName].length === 1) {
return keyName;
}
switch (key) {
switch (keyName) {
case 'Cancel':
return '\uE001';
case 'Help':
@@ -137,6 +137,8 @@ const getBidiKeyValue = key => {
return '\uE052';
case 'MetaRight':
return '\uE053';
case 'Space':
return ' ';
case 'Digit0':
return '0';
case 'Digit1':
@@ -232,7 +234,7 @@ const getBidiKeyValue = key => {
case 'Quote':
return '"';
default:
throw new Error(`Unknown key: "${key}"`);
throw new Error(`Unknown key: "${keyName}"`);
}
};
exports.getBidiKeyValue = getBidiKeyValue;