diff --git a/tests/page/locator-frame.spec.ts b/tests/page/locator-frame.spec.ts index 50151a4257..08da3dff0a 100644 --- a/tests/page/locator-frame.spec.ts +++ b/tests/page/locator-frame.spec.ts @@ -268,3 +268,33 @@ it('wait for hidden should succeed when frame is not in dom', async ({ page }) = const error = await button.waitFor({ state: 'attached', timeout: 1000 }).catch(e => e); expect(error.message).toContain('Timeout 1000ms exceeded'); }); + +it('should work with COEP/COOP/CORP isolated iframe', async ({ page, server, browserName }) => { + it.info().annotations.push({ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/28082' }); + it.fixme(browserName === 'firefox'); + await page.route('**/empty.html', route => { + return route.fulfill({ + body: ``, + contentType: 'text/html', + headers: { + 'cross-origin-embedder-policy': 'require-corp', + 'cross-origin-opener-policy': 'same-origin', + 'cross-origin-resource-policy': 'cross-origin', + } + }); + }); + await page.route('**/btn.html', route => { + return route.fulfill({ + body: '', + contentType: 'text/html', + headers: { + 'cross-origin-embedder-policy': 'require-corp', + 'cross-origin-opener-policy': 'same-origin', + 'cross-origin-resource-policy': 'cross-origin', + } + }); + }); + await page.goto(server.EMPTY_PAGE); + await page.frameLocator('iframe').getByRole('button').click(); + expect(await page.frames()[1].evaluate(() => window['__clicked'])).toBe(true); +});