chore: hide indexedDB in BrowserContext.storageState() by default (#35045)

This commit is contained in:
Max Schmitt 2025-03-06 12:42:40 +01:00 committed by GitHub
parent 6fe490469a
commit bb0bdff815
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 7 additions and 9 deletions

View File

@ -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({

View File

@ -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 {
@ -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);

View File

@ -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);
@ -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,
};
}

View File

@ -304,7 +304,7 @@ export type SetOriginStorage = {
export type OriginStorage = {
origin: string,
localStorage: NameValue[],
indexedDB: IndexedDBDatabase[],
indexedDB?: IndexedDBDatabase[],
};
export type SerializedError = {

View File

@ -279,7 +279,7 @@ OriginStorage:
type: array
items: NameValue
indexedDB:
type: array
type: array?
items: IndexedDBDatabase
SerializedError:

View File

@ -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: [],
}]);
});