test(storageState): IndexedDB with keyPath (#34648)

This commit is contained in:
Simon Knott 2025-02-06 12:39:19 +01:00 committed by GitHub
parent 2b5493219b
commit 365f411548
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -90,15 +90,19 @@ it('should round-trip through the file', async ({ contextFactory }, testInfo) =>
await new Promise((resolve, reject) => { await new Promise((resolve, reject) => {
const openRequest = indexedDB.open('db', 42); const openRequest = indexedDB.open('db', 42);
openRequest.onupgradeneeded = () => { openRequest.onupgradeneeded = () => {
openRequest.result.createObjectStore('store'); openRequest.result.createObjectStore('store', { keyPath: 'name' });
openRequest.result.createObjectStore('store2');
}; };
openRequest.onsuccess = () => { openRequest.onsuccess = () => {
const request = openRequest.result.transaction('store', 'readwrite') const transaction = openRequest.result.transaction(['store', 'store2'], 'readwrite');
transaction
.objectStore('store') .objectStore('store')
.put({ name: 'foo', date: new Date(0) }, 'bar'); .put({ name: 'foo', date: new Date(0) });
request.addEventListener('success', resolve); transaction
request.addEventListener('error', reject); .objectStore('store2')
.put('bar', 'foo');
transaction.addEventListener('complete', resolve);
transaction.addEventListener('error', reject);
}; };
}); });
@ -120,18 +124,25 @@ it('should round-trip through the file', async ({ contextFactory }, testInfo) =>
expect(localStorage).toEqual({ name1: 'value1' }); expect(localStorage).toEqual({ name1: 'value1' });
const cookie = await page2.evaluate('document.cookie'); const cookie = await page2.evaluate('document.cookie');
expect(cookie).toEqual('username=John Doe'); expect(cookie).toEqual('username=John Doe');
const idbValue = await page2.evaluate(() => new Promise<string>((resolve, reject) => { const idbValues = await page2.evaluate(() => new Promise((resolve, reject) => {
const openRequest = indexedDB.open('db', 42); const openRequest = indexedDB.open('db', 42);
openRequest.addEventListener('success', () => { openRequest.addEventListener('success', () => {
const db = openRequest.result; const db = openRequest.result;
const transaction = db.transaction('store', 'readonly'); const transaction = db.transaction(['store', 'store2'], 'readonly');
const getRequest = transaction.objectStore('store').get('bar'); const request1 = transaction.objectStore('store').get('foo');
getRequest.addEventListener('success', () => resolve(getRequest.result)); const request2 = transaction.objectStore('store2').get('foo');
getRequest.addEventListener('error', () => reject(getRequest.error));
Promise.all([request1, request2].map(request => new Promise((resolve, reject) => {
request.addEventListener('success', () => resolve(request.result));
request.addEventListener('error', () => reject(request.error));
}))).then(resolve, reject);
}); });
openRequest.addEventListener('error', () => reject(openRequest.error)); openRequest.addEventListener('error', () => reject(openRequest.error));
})); }));
expect(idbValue).toEqual({ name: 'foo', date: new Date(0) }); expect(idbValues).toEqual([
{ name: 'foo', date: new Date(0) },
'bar'
]);
await context2.close(); await context2.close();
}); });