diff --git a/tests/library/defaultbrowsercontext-2.spec.ts b/tests/library/defaultbrowsercontext-2.spec.ts index e8a9f5b7a40f5..823ad6492769a 100644 --- a/tests/library/defaultbrowsercontext-2.spec.ts +++ b/tests/library/defaultbrowsercontext-2.spec.ts @@ -283,6 +283,27 @@ it('dialog.accept should work', { await context.close(); }); +it('CacheStorage entry should survive page.reload()', { + annotation: { type: 'issue', description: 'https://github.com/microsoft/playwright/issues/41618' } +}, async ({ launchPersistent, server }) => { + const { context, page } = await launchPersistent(); + await page.goto(server.EMPTY_PAGE); + await page.evaluate(async () => { + const cache = await caches.open('repro-cache'); + await cache.put('/meta', new Response('payload')); + }); + + await page.reload(); + + const after = await page.evaluate(async () => { + const cache = await caches.open('repro-cache'); + const resp = await cache.match('/meta'); + return resp ? await resp.text() : null; + }); + expect(after).toBe('payload'); + await context.close(); +}); + it('exposes browser', async ({ launchPersistent }) => { const { context } = await launchPersistent(); const browser = context.browser(); diff --git a/tests/page/page-cache-storage.spec.ts b/tests/page/page-cache-storage.spec.ts new file mode 100644 index 0000000000000..4087533895baa --- /dev/null +++ b/tests/page/page-cache-storage.spec.ts @@ -0,0 +1,37 @@ +/** + * Copyright (c) Microsoft Corporation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { test, expect } from './pageTest'; + +test('CacheStorage entry should survive page.reload()', { + annotation: { type: 'issue', description: 'https://github.com/microsoft/playwright/issues/41618' } +}, async ({ page, server, browserName }) => { + test.fail(browserName === 'webkit', 'Ephemeral CacheStorage is not persisted across reload in WebKit, consistent with Safari'); + await page.goto(server.EMPTY_PAGE); + await page.evaluate(async () => { + const cache = await caches.open('repro-cache'); + await cache.put('/meta', new Response('payload')); + }); + + await page.reload(); + + const after = await page.evaluate(async () => { + const cache = await caches.open('repro-cache'); + const resp = await cache.match('/meta'); + return resp ? await resp.text() : null; + }); + expect(after).toBe('payload'); +});