cherry-pick(#16691): fix(selectors): make them work in the browser reuse mode
This commit is contained in:
parent
c9e2a8b340
commit
962e41474e
|
|
@ -100,6 +100,8 @@ export abstract class BrowserContext extends SdkObject {
|
||||||
|
|
||||||
setSelectors(selectors: Selectors) {
|
setSelectors(selectors: Selectors) {
|
||||||
this._selectors = selectors;
|
this._selectors = selectors;
|
||||||
|
for (const page of this.pages())
|
||||||
|
page.selectors = selectors;
|
||||||
}
|
}
|
||||||
|
|
||||||
selectors(): Selectors {
|
selectors(): Selectors {
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ export class BrowserDispatcher extends Dispatcher<Browser, channels.BrowserChann
|
||||||
}
|
}
|
||||||
|
|
||||||
async newContextForReuse(params: channels.BrowserNewContextForReuseParams, metadata: CallMetadata): Promise<channels.BrowserNewContextForReuseResult> {
|
async newContextForReuse(params: channels.BrowserNewContextForReuseParams, metadata: CallMetadata): Promise<channels.BrowserNewContextForReuseResult> {
|
||||||
return newContextForReuse(this._object, this._scope, params, metadata);
|
return newContextForReuse(this._object, this._scope, params, null, metadata);
|
||||||
}
|
}
|
||||||
|
|
||||||
async close(): Promise<void> {
|
async close(): Promise<void> {
|
||||||
|
|
@ -104,7 +104,7 @@ export class ConnectedBrowserDispatcher extends Dispatcher<Browser, channels.Bro
|
||||||
}
|
}
|
||||||
|
|
||||||
async newContextForReuse(params: channels.BrowserNewContextForReuseParams, metadata: CallMetadata): Promise<channels.BrowserNewContextForReuseResult> {
|
async newContextForReuse(params: channels.BrowserNewContextForReuseParams, metadata: CallMetadata): Promise<channels.BrowserNewContextForReuseResult> {
|
||||||
return newContextForReuse(this._object, this._scope, params, metadata);
|
return newContextForReuse(this._object, this._scope, params, this.selectors, metadata);
|
||||||
}
|
}
|
||||||
|
|
||||||
async close(): Promise<void> {
|
async close(): Promise<void> {
|
||||||
|
|
@ -141,7 +141,7 @@ export class ConnectedBrowserDispatcher extends Dispatcher<Browser, channels.Bro
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function newContextForReuse(browser: Browser, scope: DispatcherScope, params: channels.BrowserNewContextForReuseParams, metadata: CallMetadata): Promise<channels.BrowserNewContextForReuseResult> {
|
async function newContextForReuse(browser: Browser, scope: DispatcherScope, params: channels.BrowserNewContextForReuseParams, selectors: Selectors | null, metadata: CallMetadata): Promise<channels.BrowserNewContextForReuseResult> {
|
||||||
const { context, needsReset } = await browser.newContextForReuse(params, metadata);
|
const { context, needsReset } = await browser.newContextForReuse(params, metadata);
|
||||||
if (needsReset) {
|
if (needsReset) {
|
||||||
const oldContextDispatcher = existingDispatcher<BrowserContextDispatcher>(context);
|
const oldContextDispatcher = existingDispatcher<BrowserContextDispatcher>(context);
|
||||||
|
|
@ -149,6 +149,8 @@ async function newContextForReuse(browser: Browser, scope: DispatcherScope, para
|
||||||
oldContextDispatcher._dispose();
|
oldContextDispatcher._dispose();
|
||||||
await context.resetForReuse(metadata, params);
|
await context.resetForReuse(metadata, params);
|
||||||
}
|
}
|
||||||
|
if (selectors)
|
||||||
|
context.setSelectors(selectors);
|
||||||
const contextDispatcher = new BrowserContextDispatcher(scope, context);
|
const contextDispatcher = new BrowserContextDispatcher(scope, context);
|
||||||
return { context: contextDispatcher };
|
return { context: contextDispatcher };
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -166,7 +166,7 @@ export class Page extends SdkObject {
|
||||||
_clientRequestInterceptor: network.RouteHandler | undefined;
|
_clientRequestInterceptor: network.RouteHandler | undefined;
|
||||||
_serverRequestInterceptor: network.RouteHandler | undefined;
|
_serverRequestInterceptor: network.RouteHandler | undefined;
|
||||||
_ownedContext: BrowserContext | undefined;
|
_ownedContext: BrowserContext | undefined;
|
||||||
readonly selectors: Selectors;
|
selectors: Selectors;
|
||||||
_pageIsError: Error | undefined;
|
_pageIsError: Error | undefined;
|
||||||
_video: Artifact | null = null;
|
_video: Artifact | null = null;
|
||||||
_opener: Page | undefined;
|
_opener: Page | undefined;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue