From 037fe39c303f75ef528f9ac74ef19dacbfa67588 Mon Sep 17 00:00:00 2001 From: Simon Knott Date: Wed, 5 Feb 2025 13:49:06 +0100 Subject: [PATCH] types --- packages/playwright-core/src/server/browserContext.ts | 7 +++---- .../playwright-core/src/server/injected/storageScript.ts | 8 +++++--- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/packages/playwright-core/src/server/browserContext.ts b/packages/playwright-core/src/server/browserContext.ts index ca2a79b6d6..fb2adbe600 100644 --- a/packages/playwright-core/src/server/browserContext.ts +++ b/packages/playwright-core/src/server/browserContext.ts @@ -520,8 +520,8 @@ export abstract class BrowserContext extends SdkObject { if (!origin || !originsToSave.has(origin)) continue; try { - const storage: Awaited> = await page.mainFrame().nonStallingEvaluateInExistingContext(`(${storageScript.collect})()`, 'utility'); - if (storage.localStorage.length || storage.indexedDB?.length) + const storage: storageScript.Storage = await page.mainFrame().nonStallingEvaluateInExistingContext(`(${storageScript.collect})()`, 'utility'); + if (storage.localStorage.length || storage.indexedDB.length) result.origins.push({ origin, localStorage: storage.localStorage, indexedDB: storage.indexedDB }); originsToSave.delete(origin); } catch { @@ -605,8 +605,7 @@ export abstract class BrowserContext extends SdkObject { for (const originState of state.origins) { const frame = page.mainFrame(); await frame.goto(metadata, originState.origin); - const args: Parameters = [originState]; - await frame.evaluateExpression(storageScript.restore.toString(), { isFunction: true, world: 'utility' }, args); + await frame.evaluateExpression(storageScript.restore.toString(), { isFunction: true, world: 'utility' }, originState); } await page.close(internalMetadata); } diff --git a/packages/playwright-core/src/server/injected/storageScript.ts b/packages/playwright-core/src/server/injected/storageScript.ts index f19c57bec9..acde6b54f7 100644 --- a/packages/playwright-core/src/server/injected/storageScript.ts +++ b/packages/playwright-core/src/server/injected/storageScript.ts @@ -16,7 +16,9 @@ import type * as channels from '@protocol/channels'; -export async function collect(): Promise> { +export type Storage = Omit; + +export async function collect(): Promise { const idbResult = await Promise.all((await indexedDB.databases()).map(async dbInfo => { if (!dbInfo.name) throw new Error('Database name is empty'); @@ -109,8 +111,8 @@ export async function restore(originState: channels.SetOriginStorage) { await Promise.all(store.records.map(async record => { await idbRequestToPromise( objectStore.add( - record.value as any, // protocol says string, but this got deserialized above - objectStore.keyPath === null ? record.key : undefined + record.value, + objectStore.keyPath === null ? record.key : undefined ) ); }));