From fdf31cd70d87588821a879381bef6439118eacde Mon Sep 17 00:00:00 2001 From: Dmitry Gozman Date: Wed, 10 Aug 2022 12:37:43 -0700 Subject: [PATCH] cherry-pick(#16420): feat(driver): add reuse and navigate commands (#16423) --- packages/playwright-core/src/cli/driver.ts | 13 +++++++++++++ .../playwright-core/src/server/browserContext.ts | 8 +++++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/packages/playwright-core/src/cli/driver.ts b/packages/playwright-core/src/cli/driver.ts index b36d3fb330..34b75ac0f6 100644 --- a/packages/playwright-core/src/cli/driver.ts +++ b/packages/playwright-core/src/cli/driver.ts @@ -92,6 +92,19 @@ class ProtocolHandler { this._playwright = playwright; } + async resetForReuse() { + const contexts = new Set(); + for (const page of this._playwright.allPages()) + contexts.add(page.context()); + for (const context of contexts) + await context.resetForReuse(internalMetadata, null); + } + + async navigate(params: { url: string }) { + for (const p of this._playwright.allPages()) + await p.mainFrame().goto(internalMetadata, params.url); + } + async setMode(params: { mode: Mode, language?: string, file?: string }) { await gc(this._playwright); diff --git a/packages/playwright-core/src/server/browserContext.ts b/packages/playwright-core/src/server/browserContext.ts index 8510569f89..dd81f05297 100644 --- a/packages/playwright-core/src/server/browserContext.ts +++ b/packages/playwright-core/src/server/browserContext.ts @@ -157,12 +157,14 @@ export abstract class BrowserContext extends SdkObject { return JSON.stringify(paramsCopy); } - async resetForReuse(metadata: CallMetadata, params: channels.BrowserNewContextForReuseParams) { + async resetForReuse(metadata: CallMetadata, params: channels.BrowserNewContextForReuseParams | null) { this.setDefaultNavigationTimeout(undefined); this.setDefaultTimeout(undefined); - for (const key of paramsThatAllowContextReuse) - (this._options as any)[key] = params[key]; + if (params) { + for (const key of paramsThatAllowContextReuse) + (this._options as any)[key] = params[key]; + } await this._cancelAllRoutesInFlight();