Skip to content

Commit

Permalink
cherry-pick(#16691): fix(selectors): make them work in the browser re…
Browse files Browse the repository at this point in the history
…use mode
  • Loading branch information
pavelfeldman committed Aug 19, 2022
1 parent c9e2a8b commit 962e414
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 4 deletions.
2 changes: 2 additions & 0 deletions packages/playwright-core/src/server/browserContext.ts
Expand Up @@ -100,6 +100,8 @@ export abstract class BrowserContext extends SdkObject {

setSelectors(selectors: Selectors) {
this._selectors = selectors;
for (const page of this.pages())
page.selectors = selectors;
}

selectors(): Selectors {
Expand Down
Expand Up @@ -47,7 +47,7 @@ export class BrowserDispatcher extends Dispatcher<Browser, channels.BrowserChann
}

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> {
Expand Down Expand Up @@ -104,7 +104,7 @@ export class ConnectedBrowserDispatcher extends Dispatcher<Browser, channels.Bro
}

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> {
Expand Down Expand Up @@ -141,14 +141,16 @@ 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);
if (needsReset) {
const oldContextDispatcher = existingDispatcher<BrowserContextDispatcher>(context);
if (oldContextDispatcher)
oldContextDispatcher._dispose();
await context.resetForReuse(metadata, params);
}
if (selectors)
context.setSelectors(selectors);
const contextDispatcher = new BrowserContextDispatcher(scope, context);
return { context: contextDispatcher };
}
2 changes: 1 addition & 1 deletion packages/playwright-core/src/server/page.ts
Expand Up @@ -166,7 +166,7 @@ export class Page extends SdkObject {
_clientRequestInterceptor: network.RouteHandler | undefined;
_serverRequestInterceptor: network.RouteHandler | undefined;
_ownedContext: BrowserContext | undefined;
readonly selectors: Selectors;
selectors: Selectors;
_pageIsError: Error | undefined;
_video: Artifact | null = null;
_opener: Page | undefined;
Expand Down

0 comments on commit 962e414

Please sign in to comment.