From 0cff9df00f9477fc804025ef66918a28b11a8ab6 Mon Sep 17 00:00:00 2001 From: Andrey Lushnikov Date: Tue, 10 Mar 2020 14:24:25 -0700 Subject: [PATCH] test: add failing test for clicking and oopifs (#1325) --- test/assets/button-overlay-oopif.html | 39 ++++++++++++++++++++++++++ test/chromium/oopif.spec.js | 40 +++++++++++++++------------ 2 files changed, 61 insertions(+), 18 deletions(-) create mode 100644 test/assets/button-overlay-oopif.html diff --git a/test/assets/button-overlay-oopif.html b/test/assets/button-overlay-oopif.html new file mode 100644 index 0000000000..7e1f136fcd --- /dev/null +++ b/test/assets/button-overlay-oopif.html @@ -0,0 +1,39 @@ + + diff --git a/test/chromium/oopif.spec.js b/test/chromium/oopif.spec.js index da01a9fd7b..0d6bf4b07f 100644 --- a/test/chromium/oopif.spec.js +++ b/test/chromium/oopif.spec.js @@ -46,29 +46,21 @@ module.exports.describe = function({testRunner, expect, defaultBrowserOptions, p state.browser = null; }); it.fail(true)('should report oopif frames', async function({browser, page, server, context}) { - const browserSession = await browser.createBrowserSession(); - await browserSession.send('Target.setDiscoverTargets', { discover: true }); - const oopifs = []; - browserSession.on('Target.targetCreated', async ({targetInfo}) => { - if (targetInfo.type === 'iframe') - oopifs.push(targetInfo); - }); await page.goto(server.PREFIX + '/dynamic-oopif.html'); - expect(oopifs.length).toBe(1); + expect(await countOOPIFs(browser)).toBe(1); expect(page.frames().length).toBe(2); }); it('should load oopif iframes with subresources and request interception', async function({browser, page, server, context}) { await page.route('**/*', request => request.continue()); - const browserSession = await browser.createBrowserSession(); - await browserSession.send('Target.setDiscoverTargets', { discover: true }); - const oopifs = []; - browserSession.on('Target.targetCreated', async ({targetInfo}) => { - if (targetInfo.type === 'iframe') - oopifs.push(targetInfo); - }); await page.goto(server.PREFIX + '/dynamic-oopif.html'); - expect(oopifs.length).toBe(1); - await browserSession.detach(); + expect(await countOOPIFs(browser)).toBe(1); + }); + // @see https://github.com/microsoft/playwright/issues/1240 + xit('should click a button when it overlays oopif', async function({browser, page, server, context}) { + await page.goto(server.PREFIX + '/button-overlay-oopif.html'); + expect(await countOOPIFs(browser)).toBe(1); + await page.click('button'); + expect(await page.evaluate(() => window.BUTTON_CLICKED)).toBe(true); }); it.fail(true)('should report google.com frame with headful', async({server}) => { // TODO: Support OOOPIF. @see https://github.com/GoogleChrome/puppeteer/issues/2548 @@ -94,4 +86,16 @@ module.exports.describe = function({testRunner, expect, defaultBrowserOptions, p await browser.close(); }); }); -}; \ No newline at end of file +}; + +async function countOOPIFs(browser) { + const browserSession = await browser.createBrowserSession(); + const oopifs = []; + browserSession.on('Target.targetCreated', async ({targetInfo}) => { + if (targetInfo.type === 'iframe') + oopifs.push(targetInfo); + }); + await browserSession.send('Target.setDiscoverTargets', { discover: true }); + await browserSession.detach(); + return oopifs.length; +}