test: add failing popup tests (#1849)

This commit is contained in:
Dmitry Gozman 2020-04-17 15:20:50 -07:00 committed by GitHub
parent 39c9a45219
commit cf415bb45a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 71 additions and 2 deletions

View file

@ -16,7 +16,7 @@
*/
const utils = require('./utils');
const {FFOX, CHROMIUM, WEBKIT} = utils.testOptions(browserType);
const {FFOX, CHROMIUM, WEBKIT, MAC} = utils.testOptions(browserType);
describe('BrowserContext', function() {
it('should create new context', async function({browser}) {
@ -651,4 +651,36 @@ describe('Events.BrowserContext.Page', function() {
]);
await context.close();
});
it.fail(CHROMIUM || WEBKIT)('should work with Shift-clicking', async({browser, server}) => {
// Chromium: Shift+Click fires frameRequestedNavigation that never materializes
// because it actually opens a new window.
// WebKit: Shift+Click does not open a new window.
const context = await browser.newContext();
const page = await context.newPage();
await page.goto(server.EMPTY_PAGE);
await page.setContent('<a href="/one-style.html">yo</a>');
const [popup] = await Promise.all([
context.waitForEvent('page'),
page.click('a', { modifiers: ['Shift'] }),
]);
expect(await page.evaluate(() => !!window.opener)).toBe(false);
expect(await popup.evaluate(() => !!window.opener)).toBe(false);
await context.close();
});
it.fail(CHROMIUM || WEBKIT)('should work with Ctrl-clicking', async({browser, server}) => {
// Chromium: Ctrl+Click fires frameRequestedNavigation that never materializes
// because it actually opens a new tab.
// WebKit: Ctrl+Click does not open a new tab.
const context = await browser.newContext();
const page = await context.newPage();
await page.goto(server.EMPTY_PAGE);
await page.setContent('<a href="/one-style.html">yo</a>');
const [popup] = await Promise.all([
context.waitForEvent('page'),
page.click('a', { modifiers: [ MAC ? 'Meta' : 'Control'] }),
]);
expect(await page.evaluate(() => !!window.opener)).toBe(false);
expect(await popup.evaluate(() => !!window.opener)).toBe(false);
await context.close();
});
});

View file

@ -14,7 +14,7 @@
* limitations under the License.
*/
const {FFOX, CHROMIUM, WEBKIT} = require('./utils').testOptions(browserType);
const {FFOX, CHROMIUM, WEBKIT, MAC} = require('./utils').testOptions(browserType);
describe('Link navigation', function() {
it('should inherit user agent from browser context', async function({browser, server}) {
@ -304,6 +304,43 @@ describe('Page.Events.Popup', function() {
expect(await popup.evaluate(() => !!window.opener)).toBe(true);
await context.close();
});
it.fail(true)('should work with Shift-clicking', async({browser, server}) => {
// Chromium:
// - Shift+Click fires frameRequestedNavigation that never materializes
// because it actually opens a new window.
// - New window does not report an opener.
// WebKit: Shift+Click does not open a new window.
// Firefox: new window does not report an opener.
const context = await browser.newContext();
const page = await context.newPage();
await page.goto(server.EMPTY_PAGE);
await page.setContent('<a href="/one-style.html">yo</a>');
const [popup] = await Promise.all([
page.waitForEvent('popup'),
page.click('a', { modifiers: ['Shift'] }),
]);
expect(await page.evaluate(() => !!window.opener)).toBe(false);
expect(await popup.evaluate(() => !!window.opener)).toBe(true);
await context.close();
});
it.fail(CHROMIUM || WEBKIT)('should work with Control-clicking', async({browser, server}) => {
// Chromium:
// - Shift+Click fires frameRequestedNavigation that never materializes
// because it actually opens a new tab.
// - New tab does not report an opener.
// WebKit: Shift+Click does not open a new tab.
const context = await browser.newContext();
const page = await context.newPage();
await page.goto(server.EMPTY_PAGE);
await page.setContent('<a href="/one-style.html">yo</a>');
const [popup] = await Promise.all([
page.waitForEvent('popup'),
page.click('a', { modifiers: [MAC ? 'Meta' : 'Control'] }),
]);
expect(await page.evaluate(() => !!window.opener)).toBe(false);
expect(await popup.evaluate(() => !!window.opener)).toBe(false);
await context.close();
});
it('should work with fake-clicking target=_blank and rel=noopener', async({browser, server}) => {
const context = await browser.newContext();
const page = await context.newPage();