diff --git a/tests/library/chromium/oopif.spec.ts b/tests/library/chromium/oopif.spec.ts
index cc1279b8af..0143120629 100644
--- a/tests/library/chromium/oopif.spec.ts
+++ b/tests/library/chromium/oopif.spec.ts
@@ -297,6 +297,16 @@ it('should click', async function({ page, browser, server }) {
expect(await handle1.evaluate(() => (window as any)['_clicked'])).toBe(true);
});
+it('contentFrame should work', async ({ page, browser, server }) => {
+ await page.goto(server.PREFIX + '/dynamic-oopif.html');
+ expect(page.frames().length).toBe(2);
+ expect(await countOOPIFs(browser)).toBe(1);
+ expect(await page.locator('iframe').contentFrame().locator('div').count()).toBe(200);
+ const oopif = await page.$('iframe');
+ const content = await oopif.contentFrame();
+ expect(await content.locator('div').count()).toBe(200);
+});
+
it('should allow cdp sessions on oopifs', async function({ page, browser, server }) {
await page.goto(server.PREFIX + '/dynamic-oopif.html');
expect(await countOOPIFs(browser)).toBe(1);
diff --git a/tests/page/frame-frame-element.spec.ts b/tests/page/frame-frame-element.spec.ts
index e3b25a8fe1..e44e7deb3e 100644
--- a/tests/page/frame-frame-element.spec.ts
+++ b/tests/page/frame-frame-element.spec.ts
@@ -75,3 +75,19 @@ it('should work inside closed shadow root', async ({ page, server, browserName }
const element = await frame.frameElement();
expect(await element.getAttribute('name')).toBe('myframe');
});
+
+it('should work inside declarative shadow root', async ({ page, server, browserName }) => {
+ await page.goto(server.EMPTY_PAGE);
+ await page.setContent(`
+
+
+
+
+
+ footer
+
+ `);
+ const frame = page.frame({ name: 'myframe' });
+ const element = await frame.frameElement();
+ expect(await element.getAttribute('name')).toBe('myframe');
+});
diff --git a/tests/page/interception.spec.ts b/tests/page/interception.spec.ts
index fd798cb715..7f3ef98000 100644
--- a/tests/page/interception.spec.ts
+++ b/tests/page/interception.spec.ts
@@ -164,7 +164,7 @@ it('should work with regular expression passed from a different context', async
expect(intercepted).toBe(true);
});
-it('should not break remote worker importScripts', async ({ page, server, browserName, browserMajorVersion }) => {
+it('should not break remote worker importScripts', async ({ page, server }) => {
await page.route('**', async route => {
await route.continue();
});
@@ -189,3 +189,20 @@ it('should disable memory cache when intercepting', async ({ page, server }) =>
await expect(page).toHaveURL(server.PREFIX + '/page.html');
expect(interceted).toBe(2);
});
+
+it('should intercept blob url requests', async function({ page, server, browserName }) {
+ it.fixme(browserName !== 'webkit');
+ await page.goto(server.EMPTY_PAGE);
+ await page.route('**/*', route => {
+ route.fulfill({
+ status: 200,
+ body: 'intercepted',
+ }).catch(e => null);
+ });
+ page.on('console', msg => console.log(msg.text()));
+ const response = await page.evaluate(async () => {
+ const blobUrl = URL.createObjectURL(new Blob(['failed to intercept'], { type: 'text/plain' }));
+ return await fetch(blobUrl).then(response => response.text());
+ });
+ expect(response).toBe('intercepted');
+});
diff --git a/tests/page/page-mouse.spec.ts b/tests/page/page-mouse.spec.ts
index 3e7223319f..5d29be2bb7 100644
--- a/tests/page/page-mouse.spec.ts
+++ b/tests/page/page-mouse.spec.ts
@@ -78,6 +78,33 @@ it('should dblclick the div', async ({ page, server }) => {
expect(event.button).toBe(0);
});
+it('down and up should generate click', async ({ page, server }) => {
+ await page.evaluate(() => {
+ window['clickPromise'] = new Promise(resolve => {
+ document.addEventListener('click', event => {
+ resolve({
+ type: event.type,
+ detail: event.detail,
+ clientX: event.clientX,
+ clientY: event.clientY,
+ isTrusted: event.isTrusted,
+ button: event.button
+ });
+ });
+ });
+ });
+ await page.mouse.move(50, 60);
+ await page.mouse.down();
+ await page.mouse.up();
+ const event = await page.evaluate(() => window['clickPromise']);
+ expect(event.type).toBe('click');
+ expect(event.detail).toBe(1);
+ expect(event.clientX).toBe(50);
+ expect(event.clientY).toBe(60);
+ expect(event.isTrusted).toBe(true);
+ expect(event.button).toBe(0);
+});
+
it('should pointerdown the div with a custom button', async ({ page, server, browserName }) => {
await page.setContent(`Click me
`);
await page.evaluate(() => {