Skip to content

Commit

Permalink
cherry-pick(#35045): chore: hide indexedDB in BrowserContext.storageS…
Browse files Browse the repository at this point in the history
…tate() by default
  • Loading branch information
mxschmitt committed Mar 6, 2025
1 parent 52ddca4 commit 3707a93
Show file tree
Hide file tree
Showing 6 changed files with 7 additions and 9 deletions.
2 changes: 1 addition & 1 deletion packages/playwright-core/src/protocol/validator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ scheme.SetOriginStorage = tObject({
scheme.OriginStorage = tObject({
origin: tString,
localStorage: tArray(tType('NameValue')),
indexedDB: tArray(tType('IndexedDBDatabase')),
indexedDB: tOptional(tArray(tType('IndexedDBDatabase'))),
});
scheme.SerializedError = tObject({
error: tOptional(tObject({
Expand Down
4 changes: 2 additions & 2 deletions packages/playwright-core/src/server/browserContext.ts
Original file line number Diff line number Diff line change
Expand Up @@ -527,7 +527,7 @@ export abstract class BrowserContext extends SdkObject {
continue;
try {
const storage: storageScript.Storage = await page.mainFrame().nonStallingEvaluateInExistingContext(collectScript, 'utility');
if (storage.localStorage.length || storage.indexedDB.length)
if (storage.localStorage.length || storage.indexedDB?.length)
result.origins.push({ origin, localStorage: storage.localStorage, indexedDB: storage.indexedDB });
originsToSave.delete(origin);
} catch {
Expand All @@ -547,7 +547,7 @@ export abstract class BrowserContext extends SdkObject {
const frame = page.mainFrame();
await frame.goto(internalMetadata, origin);
const storage: storageScript.Storage = await frame.evaluateExpression(collectScript, { world: 'utility' });
if (storage.localStorage.length || storage.indexedDB.length)
if (storage.localStorage.length || storage.indexedDB?.length)
result.origins.push({ origin, localStorage: storage.localStorage, indexedDB: storage.indexedDB });
}
await page.close(internalMetadata);
Expand Down
4 changes: 2 additions & 2 deletions packages/playwright-core/src/server/storageScript.ts
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ export async function collect(serializers: ReturnType<typeof source>, isFirefox:

const keys = await idbRequestToPromise(objectStore.getAllKeys());
const records = await Promise.all(keys.map(async key => {
const record: channels.OriginStorage['indexedDB'][0]['stores'][0]['records'][0] = {};
const record: channels.IndexedDBDatabase['stores'][0]['records'][0] = {};

if (objectStore.keyPath === null) {
const { encoded, trivial } = trySerialize(key);
Expand Down Expand Up @@ -125,7 +125,7 @@ export async function collect(serializers: ReturnType<typeof source>, isFirefox:
localStorage: Object.keys(localStorage).map(name => ({ name, value: localStorage.getItem(name)! })),
indexedDB: recordIndexedDB ? await Promise.all((await indexedDB.databases()).map(collectDB)).catch(e => {
throw new Error('Unable to serialize IndexedDB: ' + e.message);
}) : [],
}) : undefined,
};
}

Expand Down
2 changes: 1 addition & 1 deletion packages/protocol/src/channels.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -304,7 +304,7 @@ export type SetOriginStorage = {
export type OriginStorage = {
origin: string,
localStorage: NameValue[],
indexedDB: IndexedDBDatabase[],
indexedDB?: IndexedDBDatabase[],
};

export type SerializedError = {
Expand Down
2 changes: 1 addition & 1 deletion packages/protocol/src/protocol.yml
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@ OriginStorage:
type: array
items: NameValue
indexedDB:
type: array
type: array?
items: IndexedDBDatabase

SerializedError:
Expand Down
2 changes: 0 additions & 2 deletions tests/library/browsercontext-storage-state.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,14 +40,12 @@ it('should capture local storage', async ({ contextFactory }) => {
name: 'name2',
value: 'value2'
}],
indexedDB: [],
}, {
origin: 'https://www.example.com',
localStorage: [{
name: 'name1',
value: 'value1'
}],
indexedDB: [],
}]);
});

Expand Down

0 comments on commit 3707a93

Please sign in to comment.