From 1931f16ed94736cfdd4349c5ee50453dc98b3b52 Mon Sep 17 00:00:00 2001 From: Simon Knott Date: Thu, 6 Feb 2025 09:59:34 +0100 Subject: [PATCH] fix: allow opt out from storageState --- .../playwright-core/src/server/browserContext.ts | 2 +- packages/playwright-core/src/server/storageScript.ts | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/playwright-core/src/server/browserContext.ts b/packages/playwright-core/src/server/browserContext.ts index d75be1c34d..3773c4fdf8 100644 --- a/packages/playwright-core/src/server/browserContext.ts +++ b/packages/playwright-core/src/server/browserContext.ts @@ -515,7 +515,7 @@ export abstract class BrowserContext extends SdkObject { }; const originsToSave = new Set(this._origins); - const collectScript = `(${storageScript.collect})((${utilityScriptSerializers.source})(), ${this._browser.options.name === 'firefox'})`; + const collectScript = `(${storageScript.collect})((${utilityScriptSerializers.source})(), ${this._browser.options.name === 'firefox'}, ${Boolean(process.env.PLAYWRIGHT_SKIP_INDEXEDDB)})`; // First try collecting storage stage from existing pages. for (const page of this.pages()) { diff --git a/packages/playwright-core/src/server/storageScript.ts b/packages/playwright-core/src/server/storageScript.ts index 517a1529d3..f3282eb49b 100644 --- a/packages/playwright-core/src/server/storageScript.ts +++ b/packages/playwright-core/src/server/storageScript.ts @@ -19,8 +19,8 @@ import type { source } from './isomorphic/utilityScriptSerializers'; export type Storage = Omit; -export async function collect(serializers: ReturnType, isFirefox: boolean): Promise { - const idbResult = await Promise.all((await indexedDB.databases()).map(async dbInfo => { +export async function collect(serializers: ReturnType, isFirefox: boolean, skipIndexedDB: boolean): Promise { + async function collectDB(dbInfo: IDBDatabaseInfo) { if (!dbInfo.name) throw new Error('Database name is empty'); if (!dbInfo.version) @@ -119,13 +119,13 @@ export async function collect(serializers: ReturnType, isFirefox: version: dbInfo.version, stores, }; - })).catch(e => { - throw new Error('Unable to serialize IndexedDB: ' + e.message); - }); + } return { localStorage: Object.keys(localStorage).map(name => ({ name, value: localStorage.getItem(name)! })), - indexedDB: idbResult, + indexedDB: skipIndexedDB ? [] : await Promise.all((await indexedDB.databases()).map(collectDB)).catch(e => { + throw new Error('Unable to serialize IndexedDB: ' + e.message); + }), }; }