test: it.skip skips and it.fail expects to fail now (#1178)
This commit is contained in:
parent
08fbc92752
commit
5bd6e4970b
|
|
@ -85,7 +85,7 @@ module.exports.describe = function({testRunner, expect, FFOX, CHROMIUM, WEBKIT,
|
||||||
};
|
};
|
||||||
expect(await page.accessibility.snapshot()).toEqual(golden);
|
expect(await page.accessibility.snapshot()).toEqual(golden);
|
||||||
});
|
});
|
||||||
it.skip(WEBKIT && !MAC)('should work with regular text', async({page}) => {
|
it.fail(WEBKIT && !MAC)('should work with regular text', async({page}) => {
|
||||||
await page.setContent(`<div>Hello World</div>`);
|
await page.setContent(`<div>Hello World</div>`);
|
||||||
const snapshot = await page.accessibility.snapshot();
|
const snapshot = await page.accessibility.snapshot();
|
||||||
expect(snapshot.children[0]).toEqual({
|
expect(snapshot.children[0]).toEqual({
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ module.exports.describe = function({testRunner, expect, WIN, WEBKIT}) {
|
||||||
const {beforeAll, beforeEach, afterAll, afterEach} = testRunner;
|
const {beforeAll, beforeEach, afterAll, afterEach} = testRunner;
|
||||||
|
|
||||||
describe('Capabilities', function() {
|
describe('Capabilities', function() {
|
||||||
it.skip(WEBKIT && WIN)('Web Assembly should work', async function({page, server}) {
|
it.fail(WEBKIT && WIN)('Web Assembly should work', async function({page, server}) {
|
||||||
await page.goto(server.PREFIX + '/wasm/table2.html');
|
await page.goto(server.PREFIX + '/wasm/table2.html');
|
||||||
expect(await page.evaluate(() => loadTable())).toBe('42, 83');
|
expect(await page.evaluate(() => loadTable())).toBe('42, 83');
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ module.exports.describe = function({testRunner, expect, headless, ASSETS_DIR}) {
|
||||||
const {beforeAll, beforeEach, afterAll, afterEach} = testRunner;
|
const {beforeAll, beforeEach, afterAll, afterEach} = testRunner;
|
||||||
|
|
||||||
// Printing to pdf is currently only supported in headless
|
// Printing to pdf is currently only supported in headless
|
||||||
describe.skip(!headless)('Page.pdf', function() {
|
describe.fail(!headless)('Page.pdf', function() {
|
||||||
it('should be able to save file', async({page, server}) => {
|
it('should be able to save file', async({page, server}) => {
|
||||||
const outputFile = path.join(ASSETS_DIR, 'output.pdf');
|
const outputFile = path.join(ASSETS_DIR, 'output.pdf');
|
||||||
await page.pdf({path: outputFile});
|
await page.pdf({path: outputFile});
|
||||||
|
|
|
||||||
|
|
@ -326,7 +326,7 @@ module.exports.describe = function({testRunner, expect, playwright, FFOX, CHROMI
|
||||||
expect(await page.evaluate(() => offsetX)).toBe(WEBKIT ? 12 * 2 + 20 : 20);
|
expect(await page.evaluate(() => offsetX)).toBe(WEBKIT ? 12 * 2 + 20 : 20);
|
||||||
expect(await page.evaluate(() => offsetY)).toBe(WEBKIT ? 12 * 2 + 10 : 10);
|
expect(await page.evaluate(() => offsetY)).toBe(WEBKIT ? 12 * 2 + 10 : 10);
|
||||||
});
|
});
|
||||||
it.skip(FFOX)('should click a very large button with offset', async({page, server}) => {
|
it.fail(FFOX)('should click a very large button with offset', async({page, server}) => {
|
||||||
await page.goto(server.PREFIX + '/input/button.html');
|
await page.goto(server.PREFIX + '/input/button.html');
|
||||||
await page.$eval('button', button => button.style.borderWidth = '8px');
|
await page.$eval('button', button => button.style.borderWidth = '8px');
|
||||||
await page.$eval('button', button => button.style.height = button.style.width = '2000px');
|
await page.$eval('button', button => button.style.height = button.style.width = '2000px');
|
||||||
|
|
@ -336,7 +336,7 @@ module.exports.describe = function({testRunner, expect, playwright, FFOX, CHROMI
|
||||||
expect(await page.evaluate(() => offsetX)).toBe(WEBKIT ? 1900 + 8 : 1900);
|
expect(await page.evaluate(() => offsetX)).toBe(WEBKIT ? 1900 + 8 : 1900);
|
||||||
expect(await page.evaluate(() => offsetY)).toBe(WEBKIT ? 1910 + 8 : 1910);
|
expect(await page.evaluate(() => offsetY)).toBe(WEBKIT ? 1910 + 8 : 1910);
|
||||||
});
|
});
|
||||||
it.skip(FFOX)('should click a button in scrolling container with offset', async({page, server}) => {
|
it.fail(FFOX)('should click a button in scrolling container with offset', async({page, server}) => {
|
||||||
await page.goto(server.PREFIX + '/input/button.html');
|
await page.goto(server.PREFIX + '/input/button.html');
|
||||||
await page.$eval('button', button => {
|
await page.$eval('button', button => {
|
||||||
const container = document.createElement('div');
|
const container = document.createElement('div');
|
||||||
|
|
|
||||||
|
|
@ -54,7 +54,7 @@ module.exports.describe = function({testRunner, expect, playwright, defaultBrows
|
||||||
expect(cookies.length).toBe(1);
|
expect(cookies.length).toBe(1);
|
||||||
expect(cookies[0].httpOnly).toBe(true);
|
expect(cookies[0].httpOnly).toBe(true);
|
||||||
});
|
});
|
||||||
it.skip(WEBKIT && !MAC)('should properly report "Strict" sameSite cookie', async({context, page, server}) => {
|
it.fail(WEBKIT && !MAC)('should properly report "Strict" sameSite cookie', async({context, page, server}) => {
|
||||||
server.setRoute('/empty.html', (req, res) => {
|
server.setRoute('/empty.html', (req, res) => {
|
||||||
res.setHeader('Set-Cookie', 'name=value;SameSite=Strict');
|
res.setHeader('Set-Cookie', 'name=value;SameSite=Strict');
|
||||||
res.end();
|
res.end();
|
||||||
|
|
@ -64,7 +64,7 @@ module.exports.describe = function({testRunner, expect, playwright, defaultBrows
|
||||||
expect(cookies.length).toBe(1);
|
expect(cookies.length).toBe(1);
|
||||||
expect(cookies[0].sameSite).toBe('Strict');
|
expect(cookies[0].sameSite).toBe('Strict');
|
||||||
});
|
});
|
||||||
it.skip(WEBKIT && !MAC)('should properly report "Lax" sameSite cookie', async({context, page, server}) => {
|
it.fail(WEBKIT && !MAC)('should properly report "Lax" sameSite cookie', async({context, page, server}) => {
|
||||||
server.setRoute('/empty.html', (req, res) => {
|
server.setRoute('/empty.html', (req, res) => {
|
||||||
res.setHeader('Set-Cookie', 'name=value;SameSite=Lax');
|
res.setHeader('Set-Cookie', 'name=value;SameSite=Lax');
|
||||||
res.end();
|
res.end();
|
||||||
|
|
|
||||||
|
|
@ -299,7 +299,7 @@ module.exports.describe = function({testRunner, expect, FFOX, CHROMIUM, WEBKIT})
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('ElementHandle.scrollIntoViewIfNeeded', function() {
|
describe('ElementHandle.scrollIntoViewIfNeeded', function() {
|
||||||
it.skip(FFOX)('should work', async({page, server}) => {
|
it.fail(FFOX)('should work', async({page, server}) => {
|
||||||
await page.goto(server.PREFIX + '/offscreenbuttons.html');
|
await page.goto(server.PREFIX + '/offscreenbuttons.html');
|
||||||
for (let i = 0; i < 11; ++i) {
|
for (let i = 0; i < 11; ++i) {
|
||||||
const button = await page.$('#btn' + i);
|
const button = await page.$('#btn' + i);
|
||||||
|
|
|
||||||
|
|
@ -89,7 +89,7 @@ module.exports.describe = function({testRunner, expect, playwright, headless, FF
|
||||||
expect(await page.evaluate(() => Modernizr.touchevents)).toBe(true);
|
expect(await page.evaluate(() => Modernizr.touchevents)).toBe(true);
|
||||||
await context.close();
|
await context.close();
|
||||||
});
|
});
|
||||||
it.skip(FFOX)('should support landscape emulation', async({browser, server}) => {
|
it.fail(FFOX)('should support landscape emulation', async({browser, server}) => {
|
||||||
const context1 = await browser.newContext({ viewport: iPhone.viewport });
|
const context1 = await browser.newContext({ viewport: iPhone.viewport });
|
||||||
const page1 = await context1.newPage();
|
const page1 = await context1.newPage();
|
||||||
await page1.goto(server.PREFIX + '/mobile.html');
|
await page1.goto(server.PREFIX + '/mobile.html');
|
||||||
|
|
@ -100,7 +100,7 @@ module.exports.describe = function({testRunner, expect, playwright, headless, FF
|
||||||
await context1.close();
|
await context1.close();
|
||||||
await context2.close();
|
await context2.close();
|
||||||
});
|
});
|
||||||
it.skip(FFOX || WEBKIT)('should fire orientationchange event', async({browser, server}) => {
|
it.fail(FFOX || WEBKIT)('should fire orientationchange event', async({browser, server}) => {
|
||||||
const context = await browser.newContext({ viewport: { width: 300, height: 400, isMobile: true } });
|
const context = await browser.newContext({ viewport: { width: 300, height: 400, isMobile: true } });
|
||||||
const page = await context.newPage();
|
const page = await context.newPage();
|
||||||
await page.goto(server.PREFIX + '/mobile.html');
|
await page.goto(server.PREFIX + '/mobile.html');
|
||||||
|
|
@ -118,14 +118,14 @@ module.exports.describe = function({testRunner, expect, playwright, headless, FF
|
||||||
expect((await event2).text()).toBe('2');
|
expect((await event2).text()).toBe('2');
|
||||||
await context.close();
|
await context.close();
|
||||||
});
|
});
|
||||||
it.skip(FFOX)('default mobile viewports to 980 width', async({browser, server}) => {
|
it.fail(FFOX)('default mobile viewports to 980 width', async({browser, server}) => {
|
||||||
const context = await browser.newContext({ viewport: {width: 320, height: 480, isMobile: true} });
|
const context = await browser.newContext({ viewport: {width: 320, height: 480, isMobile: true} });
|
||||||
const page = await context.newPage();
|
const page = await context.newPage();
|
||||||
await page.goto(server.PREFIX + '/empty.html');
|
await page.goto(server.PREFIX + '/empty.html');
|
||||||
expect(await page.evaluate(() => window.innerWidth)).toBe(980);
|
expect(await page.evaluate(() => window.innerWidth)).toBe(980);
|
||||||
await context.close();
|
await context.close();
|
||||||
});
|
});
|
||||||
it.skip(FFOX)('respect meta viewport tag', async({browser, server}) => {
|
it.fail(FFOX)('respect meta viewport tag', async({browser, server}) => {
|
||||||
const context = await browser.newContext({ viewport: {width: 320, height: 480, isMobile: true} });
|
const context = await browser.newContext({ viewport: {width: 320, height: 480, isMobile: true} });
|
||||||
const page = await context.newPage();
|
const page = await context.newPage();
|
||||||
await page.goto(server.PREFIX + '/mobile.html');
|
await page.goto(server.PREFIX + '/mobile.html');
|
||||||
|
|
@ -199,7 +199,7 @@ module.exports.describe = function({testRunner, expect, playwright, headless, FF
|
||||||
await page.emulateMedia({ colorScheme: 'bad' }).catch(e => error = e);
|
await page.emulateMedia({ colorScheme: 'bad' }).catch(e => error = e);
|
||||||
expect(error.message).toBe('Unsupported color scheme: bad');
|
expect(error.message).toBe('Unsupported color scheme: bad');
|
||||||
});
|
});
|
||||||
it.skip(FFOX)('should work during navigation', async({page, server}) => {
|
it.fail(FFOX)('should work during navigation', async({page, server}) => {
|
||||||
await page.emulateMedia({ colorScheme: 'light' });
|
await page.emulateMedia({ colorScheme: 'light' });
|
||||||
const navigated = page.goto(server.EMPTY_PAGE);
|
const navigated = page.goto(server.EMPTY_PAGE);
|
||||||
for (let i = 0; i < 9; i++) {
|
for (let i = 0; i < 9; i++) {
|
||||||
|
|
@ -213,7 +213,7 @@ module.exports.describe = function({testRunner, expect, playwright, headless, FF
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe.skip(FFOX)('BrowserContext({timezoneId})', function() {
|
describe.fail(FFOX)('BrowserContext({timezoneId})', function() {
|
||||||
it('should work', async ({ browser }) => {
|
it('should work', async ({ browser }) => {
|
||||||
const func = () => new Date(1479579154987).toString();
|
const func = () => new Date(1479579154987).toString();
|
||||||
{
|
{
|
||||||
|
|
@ -253,7 +253,7 @@ module.exports.describe = function({testRunner, expect, playwright, headless, FF
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe.skip(FFOX)('BrowserContext({locale})', function() {
|
describe.fail(FFOX)('BrowserContext({locale})', function() {
|
||||||
it('should affect accept-language header', async({browser, server}) => {
|
it('should affect accept-language header', async({browser, server}) => {
|
||||||
const context = await browser.newContext({ locale: 'fr-CH' });
|
const context = await browser.newContext({ locale: 'fr-CH' });
|
||||||
const page = await context.newPage();
|
const page = await context.newPage();
|
||||||
|
|
@ -307,7 +307,7 @@ module.exports.describe = function({testRunner, expect, playwright, headless, FF
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('focus', function() {
|
describe('focus', function() {
|
||||||
it.skip(!headless)('should think that it is focused by default', async({page}) => {
|
it.fail(!headless)('should think that it is focused by default', async({page}) => {
|
||||||
expect(await page.evaluate('document.hasFocus()')).toBe(true);
|
expect(await page.evaluate('document.hasFocus()')).toBe(true);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -259,7 +259,7 @@ module.exports.describe = function({testRunner, expect, FFOX, CHROMIUM, WEBKIT})
|
||||||
expect(result).toEqual([42]);
|
expect(result).toEqual([42]);
|
||||||
});
|
});
|
||||||
// Works in WebKit, but slow
|
// Works in WebKit, but slow
|
||||||
it.skip(FFOX)('should transfer 100Mb of data from page to node.js', async({page, server}) => {
|
it.fail(FFOX)('should transfer 100Mb of data from page to node.js', async({page, server}) => {
|
||||||
const a = await page.evaluate(() => Array(100 * 1024 * 1024 + 1).join('a'));
|
const a = await page.evaluate(() => Array(100 * 1024 * 1024 + 1).join('a'));
|
||||||
expect(a.length).toBe(100 * 1024 * 1024);
|
expect(a.length).toBe(100 * 1024 * 1024);
|
||||||
});
|
});
|
||||||
|
|
@ -425,7 +425,7 @@ module.exports.describe = function({testRunner, expect, FFOX, CHROMIUM, WEBKIT})
|
||||||
const error = await page.evaluate(body => body.innerHTML, bodyHandle).catch(e => e);
|
const error = await page.evaluate(body => body.innerHTML, bodyHandle).catch(e => e);
|
||||||
expect(error.message).toContain('Unable to adopt element handle from a different document');
|
expect(error.message).toContain('Unable to adopt element handle from a different document');
|
||||||
});
|
});
|
||||||
it.skip(FFOX)('should return non-empty Node.constructor.name in utility context', async({page,server}) => {
|
it.fail(FFOX)('should return non-empty Node.constructor.name in utility context', async({page,server}) => {
|
||||||
await page.goto(server.EMPTY_PAGE);
|
await page.goto(server.EMPTY_PAGE);
|
||||||
await utils.attachFrame(page, 'frame1', server.EMPTY_PAGE);
|
await utils.attachFrame(page, 'frame1', server.EMPTY_PAGE);
|
||||||
const frame = page.frames()[1];
|
const frame = page.frames()[1];
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ module.exports.describe = function({testRunner, expect, WEBKIT}) {
|
||||||
const {beforeAll, beforeEach, afterAll, afterEach} = testRunner;
|
const {beforeAll, beforeEach, afterAll, afterEach} = testRunner;
|
||||||
|
|
||||||
// Permissions API is not implemented in WebKit (see https://developer.mozilla.org/en-US/docs/Web/API/Permissions_API)
|
// Permissions API is not implemented in WebKit (see https://developer.mozilla.org/en-US/docs/Web/API/Permissions_API)
|
||||||
describe.skip(WEBKIT)('Permissions', function() {
|
describe.fail(WEBKIT)('Permissions', function() {
|
||||||
function getPermission(page, name) {
|
function getPermission(page, name) {
|
||||||
return page.evaluate(name => navigator.permissions.query({name}).then(result => result.state), name);
|
return page.evaluate(name => navigator.permissions.query({name}).then(result => result.state), name);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ module.exports.describe = function ({ testRunner, expect, FFOX, WEBKIT }) {
|
||||||
const {it, fit, xit, dit} = testRunner;
|
const {it, fit, xit, dit} = testRunner;
|
||||||
const {beforeAll, beforeEach, afterAll, afterEach} = testRunner;
|
const {beforeAll, beforeEach, afterAll, afterEach} = testRunner;
|
||||||
|
|
||||||
describe.skip(FFOX)('Overrides.setGeolocation', function() {
|
describe.fail(FFOX)('Overrides.setGeolocation', function() {
|
||||||
it('should work', async({page, server, context}) => {
|
it('should work', async({page, server, context}) => {
|
||||||
await context.setPermissions(server.PREFIX, ['geolocation']);
|
await context.setPermissions(server.PREFIX, ['geolocation']);
|
||||||
await page.goto(server.EMPTY_PAGE);
|
await page.goto(server.EMPTY_PAGE);
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ module.exports.describe = function({testRunner, expect, playwright, defaultBrows
|
||||||
await removeUserDataDir(userDataDir);
|
await removeUserDataDir(userDataDir);
|
||||||
});
|
});
|
||||||
// see https://github.com/microsoft/playwright/issues/717
|
// see https://github.com/microsoft/playwright/issues/717
|
||||||
it.skip((WIN && CHROMIUM) || FFOX)('headless should be able to read cookies written by headful', async({server}) => {
|
it.fail((WIN && CHROMIUM) || FFOX)('headless should be able to read cookies written by headful', async({server}) => {
|
||||||
const userDataDir = await makeUserDataDir();
|
const userDataDir = await makeUserDataDir();
|
||||||
// Write a cookie in headful chrome
|
// Write a cookie in headful chrome
|
||||||
const headfulContext = await playwright.launchPersistent(userDataDir, headfulOptions);
|
const headfulContext = await playwright.launchPersistent(userDataDir, headfulOptions);
|
||||||
|
|
@ -59,7 +59,7 @@ module.exports.describe = function({testRunner, expect, playwright, defaultBrows
|
||||||
await removeUserDataDir(userDataDir);
|
await removeUserDataDir(userDataDir);
|
||||||
expect(cookie).toBe('foo=true');
|
expect(cookie).toBe('foo=true');
|
||||||
});
|
});
|
||||||
it.skip(FFOX)('should close browser with beforeunload page', async({server}) => {
|
it.fail(FFOX)('should close browser with beforeunload page', async({server}) => {
|
||||||
const userDataDir = await makeUserDataDir();
|
const userDataDir = await makeUserDataDir();
|
||||||
const browserContext = await playwright.launchPersistent(userDataDir, headfulOptions);
|
const browserContext = await playwright.launchPersistent(userDataDir, headfulOptions);
|
||||||
const page = await browserContext.newPage();
|
const page = await browserContext.newPage();
|
||||||
|
|
|
||||||
|
|
@ -524,7 +524,7 @@ module.exports.describe = function({testRunner, expect, defaultBrowserOptions, p
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe.skip(FFOX)('Interception.setOfflineMode', function() {
|
describe.fail(FFOX)('Interception.setOfflineMode', function() {
|
||||||
it('should work', async({page, server}) => {
|
it('should work', async({page, server}) => {
|
||||||
await page.setOfflineMode(true);
|
await page.setOfflineMode(true);
|
||||||
let error = null;
|
let error = null;
|
||||||
|
|
|
||||||
|
|
@ -78,7 +78,7 @@ module.exports.describe = function({testRunner, expect, FFOX, CHROMIUM, WEBKIT,
|
||||||
await page.keyboard.sendCharacters('a');
|
await page.keyboard.sendCharacters('a');
|
||||||
expect(await page.evaluate(() => document.querySelector('textarea').value)).toBe('嗨a');
|
expect(await page.evaluate(() => document.querySelector('textarea').value)).toBe('嗨a');
|
||||||
});
|
});
|
||||||
it.skip(FFOX)('should report shiftKey', async({page, server}) => {
|
it.fail(FFOX)('should report shiftKey', async({page, server}) => {
|
||||||
await page.goto(server.PREFIX + '/input/keyboard.html');
|
await page.goto(server.PREFIX + '/input/keyboard.html');
|
||||||
const keyboard = page.keyboard;
|
const keyboard = page.keyboard;
|
||||||
const codeForKey = {'Shift': 16, 'Alt': 18, 'Control': 17};
|
const codeForKey = {'Shift': 16, 'Alt': 18, 'Control': 17};
|
||||||
|
|
@ -241,7 +241,7 @@ module.exports.describe = function({testRunner, expect, FFOX, CHROMIUM, WEBKIT,
|
||||||
await textarea.type('👹 Tokyo street Japan 🇯🇵');
|
await textarea.type('👹 Tokyo street Japan 🇯🇵');
|
||||||
expect(await frame.$eval('textarea', textarea => textarea.value)).toBe('👹 Tokyo street Japan 🇯🇵');
|
expect(await frame.$eval('textarea', textarea => textarea.value)).toBe('👹 Tokyo street Japan 🇯🇵');
|
||||||
});
|
});
|
||||||
it.skip(CHROMIUM && MAC)('should handle selectAll', async({page, server}) => {
|
it.fail(CHROMIUM && MAC)('should handle selectAll', async({page, server}) => {
|
||||||
await page.goto(server.PREFIX + '/input/textarea.html');
|
await page.goto(server.PREFIX + '/input/textarea.html');
|
||||||
const textarea = await page.$('textarea');
|
const textarea = await page.$('textarea');
|
||||||
await textarea.type('some text');
|
await textarea.type('some text');
|
||||||
|
|
@ -252,7 +252,7 @@ module.exports.describe = function({testRunner, expect, FFOX, CHROMIUM, WEBKIT,
|
||||||
await page.keyboard.press('Backspace');
|
await page.keyboard.press('Backspace');
|
||||||
expect(await page.$eval('textarea', textarea => textarea.value)).toBe('');
|
expect(await page.$eval('textarea', textarea => textarea.value)).toBe('');
|
||||||
});
|
});
|
||||||
it.skip(CHROMIUM && MAC)('should be able to prevent selectAll', async({page, server}) => {
|
it.fail(CHROMIUM && MAC)('should be able to prevent selectAll', async({page, server}) => {
|
||||||
await page.goto(server.PREFIX + '/input/textarea.html');
|
await page.goto(server.PREFIX + '/input/textarea.html');
|
||||||
const textarea = await page.$('textarea');
|
const textarea = await page.$('textarea');
|
||||||
await textarea.type('some text');
|
await textarea.type('some text');
|
||||||
|
|
|
||||||
|
|
@ -283,7 +283,7 @@ module.exports.describe = function({testRunner, expect, defaultBrowserOptions, p
|
||||||
// This might throw. See https://github.com/GoogleChrome/puppeteer/issues/2778
|
// This might throw. See https://github.com/GoogleChrome/puppeteer/issues/2778
|
||||||
await removeUserDataDir(userDataDir);
|
await removeUserDataDir(userDataDir);
|
||||||
});
|
});
|
||||||
it.skip(FFOX)('userDataDir option should restore state', async({server}) => {
|
it.fail(FFOX)('userDataDir option should restore state', async({server}) => {
|
||||||
const userDataDir = await makeUserDataDir();
|
const userDataDir = await makeUserDataDir();
|
||||||
const browserContext = await playwright.launchPersistent(userDataDir, defaultBrowserOptions);
|
const browserContext = await playwright.launchPersistent(userDataDir, defaultBrowserOptions);
|
||||||
const page = await browserContext.newPage();
|
const page = await browserContext.newPage();
|
||||||
|
|
@ -309,7 +309,7 @@ module.exports.describe = function({testRunner, expect, defaultBrowserOptions, p
|
||||||
await removeUserDataDir(userDataDir2);
|
await removeUserDataDir(userDataDir2);
|
||||||
});
|
});
|
||||||
// See https://github.com/microsoft/playwright/issues/717
|
// See https://github.com/microsoft/playwright/issues/717
|
||||||
it.skip(FFOX || (WIN && CHROMIUM))('userDataDir option should restore cookies', async({server}) => {
|
it.fail(FFOX || (WIN && CHROMIUM))('userDataDir option should restore cookies', async({server}) => {
|
||||||
const userDataDir = await makeUserDataDir();
|
const userDataDir = await makeUserDataDir();
|
||||||
const browserContext = await playwright.launchPersistent(userDataDir, defaultBrowserOptions);
|
const browserContext = await playwright.launchPersistent(userDataDir, defaultBrowserOptions);
|
||||||
const page = await browserContext.newPage();
|
const page = await browserContext.newPage();
|
||||||
|
|
|
||||||
|
|
@ -231,7 +231,7 @@ module.exports.describe = function({testRunner, expect, MAC, WIN, FFOX, CHROMIUM
|
||||||
expect(responses[0].request()).toBeTruthy();
|
expect(responses[0].request()).toBeTruthy();
|
||||||
});
|
});
|
||||||
|
|
||||||
it.skip(FFOX)('Page.Events.RequestFailed', async({page, server}) => {
|
it.fail(FFOX)('Page.Events.RequestFailed', async({page, server}) => {
|
||||||
server.setRoute('/one-style.css', (req, res) => {
|
server.setRoute('/one-style.css', (req, res) => {
|
||||||
req.socket.write('deadbeef');
|
req.socket.write('deadbeef');
|
||||||
req.socket.end();
|
req.socket.end();
|
||||||
|
|
|
||||||
|
|
@ -667,7 +667,7 @@ module.exports.describe = function({testRunner, expect, headless, playwright, FF
|
||||||
});
|
});
|
||||||
|
|
||||||
// Firefox fires onload for blocked script before it issues the CSP console error.
|
// Firefox fires onload for blocked script before it issues the CSP console error.
|
||||||
it.skip(FFOX)('should throw when added with content to the CSP page', async({page, server}) => {
|
it.fail(FFOX)('should throw when added with content to the CSP page', async({page, server}) => {
|
||||||
await page.goto(server.PREFIX + '/csp.html');
|
await page.goto(server.PREFIX + '/csp.html');
|
||||||
let error = null;
|
let error = null;
|
||||||
await page.addScriptTag({ content: 'window.__injected = 35;' }).catch(e => error = e);
|
await page.addScriptTag({ content: 'window.__injected = 35;' }).catch(e => error = e);
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ module.exports.describe = function({testRunner, expect, playwright, CHROMIUM, WE
|
||||||
const {beforeAll, beforeEach, afterAll, afterEach} = testRunner;
|
const {beforeAll, beforeEach, afterAll, afterEach} = testRunner;
|
||||||
|
|
||||||
describe('window.open', function() {
|
describe('window.open', function() {
|
||||||
it.skip(CHROMIUM)('should inherit user agent from browser context', async function({browser, server}) {
|
it.fail(CHROMIUM)('should inherit user agent from browser context', async function({browser, server}) {
|
||||||
const context = await browser.newContext({
|
const context = await browser.newContext({
|
||||||
userAgent: 'hey'
|
userAgent: 'hey'
|
||||||
});
|
});
|
||||||
|
|
@ -36,7 +36,7 @@ module.exports.describe = function({testRunner, expect, playwright, CHROMIUM, WE
|
||||||
expect(userAgent).toBe('hey');
|
expect(userAgent).toBe('hey');
|
||||||
expect(request.headers['user-agent']).toBe('hey');
|
expect(request.headers['user-agent']).toBe('hey');
|
||||||
});
|
});
|
||||||
it.skip(CHROMIUM)('should inherit extra headers from browser context', async function({browser, server}) {
|
it.fail(CHROMIUM)('should inherit extra headers from browser context', async function({browser, server}) {
|
||||||
const context = await browser.newContext({
|
const context = await browser.newContext({
|
||||||
extraHTTPHeaders: { 'foo': 'bar' },
|
extraHTTPHeaders: { 'foo': 'bar' },
|
||||||
});
|
});
|
||||||
|
|
@ -48,7 +48,7 @@ module.exports.describe = function({testRunner, expect, playwright, CHROMIUM, WE
|
||||||
await context.close();
|
await context.close();
|
||||||
expect(request.headers['foo']).toBe('bar');
|
expect(request.headers['foo']).toBe('bar');
|
||||||
});
|
});
|
||||||
it.skip(CHROMIUM)('should inherit touch support from browser context', async function({browser, server}) {
|
it.fail(CHROMIUM)('should inherit touch support from browser context', async function({browser, server}) {
|
||||||
const context = await browser.newContext({
|
const context = await browser.newContext({
|
||||||
viewport: { width: 400, height: 500, isMobile: true }
|
viewport: { width: 400, height: 500, isMobile: true }
|
||||||
});
|
});
|
||||||
|
|
@ -61,7 +61,7 @@ module.exports.describe = function({testRunner, expect, playwright, CHROMIUM, WE
|
||||||
await context.close();
|
await context.close();
|
||||||
expect(hasTouch).toBe(true);
|
expect(hasTouch).toBe(true);
|
||||||
});
|
});
|
||||||
it.skip(CHROMIUM)('should inherit viewport size from browser context', async function({browser, server}) {
|
it.fail(CHROMIUM)('should inherit viewport size from browser context', async function({browser, server}) {
|
||||||
const context = await browser.newContext({
|
const context = await browser.newContext({
|
||||||
viewport: { width: 400, height: 500 }
|
viewport: { width: 400, height: 500 }
|
||||||
});
|
});
|
||||||
|
|
@ -74,7 +74,7 @@ module.exports.describe = function({testRunner, expect, playwright, CHROMIUM, WE
|
||||||
await context.close();
|
await context.close();
|
||||||
expect(size).toEqual({width: 400, height: 500});
|
expect(size).toEqual({width: 400, height: 500});
|
||||||
});
|
});
|
||||||
it.skip(CHROMIUM)('should apply addInitScript from browser context', async function({browser, server}) {
|
it.fail(CHROMIUM)('should apply addInitScript from browser context', async function({browser, server}) {
|
||||||
const context = await browser.newContext();
|
const context = await browser.newContext();
|
||||||
await context.addInitScript(() => window.injected = 123);
|
await context.addInitScript(() => window.injected = 123);
|
||||||
const page = await context.newPage();
|
const page = await context.newPage();
|
||||||
|
|
@ -100,7 +100,7 @@ module.exports.describe = function({testRunner, expect, playwright, CHROMIUM, WE
|
||||||
expect(await popup.evaluate(() => !!window.opener)).toBe(true);
|
expect(await popup.evaluate(() => !!window.opener)).toBe(true);
|
||||||
await context.close();
|
await context.close();
|
||||||
});
|
});
|
||||||
it.skip(CHROMIUM)('should work with empty url', async({browser}) => {
|
it.fail(CHROMIUM)('should work with empty url', async({browser}) => {
|
||||||
const context = await browser.newContext();
|
const context = await browser.newContext();
|
||||||
const page = await context.newPage();
|
const page = await context.newPage();
|
||||||
const [popup] = await Promise.all([
|
const [popup] = await Promise.all([
|
||||||
|
|
|
||||||
|
|
@ -117,7 +117,7 @@ module.exports.describe = function({testRunner, expect, product, FFOX, CHROMIUM,
|
||||||
expect(screenshots[i]).toBeGolden(`grid-cell-${i}.png`);
|
expect(screenshots[i]).toBeGolden(`grid-cell-${i}.png`);
|
||||||
await Promise.all(pages.map(page => page.close()));
|
await Promise.all(pages.map(page => page.close()));
|
||||||
});
|
});
|
||||||
it.skip(FFOX)('should allow transparency', async({page, server}) => {
|
it.fail(FFOX)('should allow transparency', async({page, server}) => {
|
||||||
await page.setViewportSize({ width: 50, height: 150 });
|
await page.setViewportSize({ width: 50, height: 150 });
|
||||||
await page.setContent(`
|
await page.setContent(`
|
||||||
<style>
|
<style>
|
||||||
|
|
@ -156,7 +156,7 @@ module.exports.describe = function({testRunner, expect, product, FFOX, CHROMIUM,
|
||||||
});
|
});
|
||||||
expect(Buffer.from(screenshot, 'base64')).toBeGolden('screenshot-sanity.png');
|
expect(Buffer.from(screenshot, 'base64')).toBeGolden('screenshot-sanity.png');
|
||||||
});
|
});
|
||||||
it.skip(FFOX)('should work with a mobile viewport', async({browser, server}) => {
|
it.fail(FFOX)('should work with a mobile viewport', async({browser, server}) => {
|
||||||
const context = await browser.newContext({viewport: { width: 320, height: 480, isMobile: true }});
|
const context = await browser.newContext({viewport: { width: 320, height: 480, isMobile: true }});
|
||||||
const page = await context.newPage();
|
const page = await context.newPage();
|
||||||
await page.goto(server.PREFIX + '/overflow.html');
|
await page.goto(server.PREFIX + '/overflow.html');
|
||||||
|
|
@ -176,7 +176,7 @@ module.exports.describe = function({testRunner, expect, product, FFOX, CHROMIUM,
|
||||||
const screenshot = await page.screenshot();
|
const screenshot = await page.screenshot();
|
||||||
expect(screenshot).toBeGolden('screenshot-translateZ.png');
|
expect(screenshot).toBeGolden('screenshot-translateZ.png');
|
||||||
});
|
});
|
||||||
it.skip(FFOX || WEBKIT)('should work for webgl', async({page, server}) => {
|
it.fail(FFOX || WEBKIT)('should work for webgl', async({page, server}) => {
|
||||||
await page.setViewportSize({width: 640, height: 480});
|
await page.setViewportSize({width: 640, height: 480});
|
||||||
await page.goto(server.PREFIX + '/screenshots/webgl.html');
|
await page.goto(server.PREFIX + '/screenshots/webgl.html');
|
||||||
const screenshot = await page.screenshot();
|
const screenshot = await page.screenshot();
|
||||||
|
|
|
||||||
4
test/types.d.ts
vendored
4
test/types.d.ts
vendored
|
|
@ -22,9 +22,9 @@ interface Expect<T> {
|
||||||
not: Expect<T>;
|
not: Expect<T>;
|
||||||
}
|
}
|
||||||
|
|
||||||
type DescribeFunction = ((name: string, inner: () => void) => void) & {skip(condition: boolean): DescribeFunction};
|
type DescribeFunction = ((name: string, inner: () => void) => void) & {fail(condition: boolean): DescribeFunction};
|
||||||
|
|
||||||
type ItFunction<STATE> = ((name: string, inner: (state: STATE) => Promise<void>) => void) & {skip(condition: boolean): ItFunction<STATE>; repeat(n: number): ItFunction<STATE>};
|
type ItFunction<STATE> = ((name: string, inner: (state: STATE) => Promise<void>) => void) & {fail(condition: boolean): ItFunction<STATE>; repeat(n: number): ItFunction<STATE>};
|
||||||
|
|
||||||
type TestRunner<STATE> = {
|
type TestRunner<STATE> = {
|
||||||
describe: DescribeFunction;
|
describe: DescribeFunction;
|
||||||
|
|
|
||||||
|
|
@ -117,7 +117,7 @@ module.exports.describe = function({testRunner, expect, product, playwright, FFO
|
||||||
await page.evaluate(() => window.__FOO = 'hit');
|
await page.evaluate(() => window.__FOO = 'hit');
|
||||||
await watchdog;
|
await watchdog;
|
||||||
});
|
});
|
||||||
it.skip(FFOX)('should work with strict CSP policy', async({page, server}) => {
|
it.fail(FFOX)('should work with strict CSP policy', async({page, server}) => {
|
||||||
server.setCSP('/empty.html', 'script-src ' + server.PREFIX);
|
server.setCSP('/empty.html', 'script-src ' + server.PREFIX);
|
||||||
await page.goto(server.EMPTY_PAGE);
|
await page.goto(server.EMPTY_PAGE);
|
||||||
let error = null;
|
let error = null;
|
||||||
|
|
|
||||||
|
|
@ -131,7 +131,7 @@ module.exports.describe = function({testRunner, expect, FFOX, CHROMIUM, WEBKIT})
|
||||||
expect(response.request()).toBe(request);
|
expect(response.request()).toBe(request);
|
||||||
expect(response.ok()).toBe(true);
|
expect(response.ok()).toBe(true);
|
||||||
});
|
});
|
||||||
false && it.skip(FFOX)('should report web socket activity', async function({page, server}) {
|
false && it.fail(FFOX)('should report web socket activity', async function({page, server}) {
|
||||||
const [worker] = await Promise.all([
|
const [worker] = await Promise.all([
|
||||||
page.waitForEvent('worker'),
|
page.waitForEvent('worker'),
|
||||||
page.goto(server.PREFIX + '/worker/worker.html'),
|
page.goto(server.PREFIX + '/worker/worker.html'),
|
||||||
|
|
|
||||||
|
|
@ -72,13 +72,13 @@ const TestMode = {
|
||||||
Run: 'run',
|
Run: 'run',
|
||||||
Skip: 'skip',
|
Skip: 'skip',
|
||||||
Focus: 'focus',
|
Focus: 'focus',
|
||||||
Fail: 'fail',
|
ExpectToFail: 'fail',
|
||||||
Flake: 'flake'
|
Flake: 'flake'
|
||||||
};
|
};
|
||||||
|
|
||||||
const TestResult = {
|
const TestResult = {
|
||||||
Ok: 'ok',
|
Ok: 'ok',
|
||||||
Skipped: 'skipped', // User skipped the test
|
ExpectToFail: 'skipped', // User marked as failed
|
||||||
Failed: 'failed', // Exception happened during running
|
Failed: 'failed', // Exception happened during running
|
||||||
TimedOut: 'timedout', // Timeout Exceeded while running
|
TimedOut: 'timedout', // Timeout Exceeded while running
|
||||||
Terminated: 'terminated', // Execution terminated
|
Terminated: 'terminated', // Execution terminated
|
||||||
|
|
@ -138,7 +138,7 @@ class TestPass {
|
||||||
for (let suite = test.suite; suite; suite = suite.parentSuite)
|
for (let suite = test.suite; suite; suite = suite.parentSuite)
|
||||||
this._workerDistribution.set(suite, workerId);
|
this._workerDistribution.set(suite, workerId);
|
||||||
// Do not shard skipped tests across workers.
|
// Do not shard skipped tests across workers.
|
||||||
if (test.declaredMode !== TestMode.Skip)
|
if (test.declaredMode !== TestMode.ExpectToFail)
|
||||||
workerId = (workerId + 1) % parallel;
|
workerId = (workerId + 1) % parallel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -200,8 +200,8 @@ class TestPass {
|
||||||
if (this._termination)
|
if (this._termination)
|
||||||
return;
|
return;
|
||||||
this._runner._willStartTest(test, workerId);
|
this._runner._willStartTest(test, workerId);
|
||||||
if (test.declaredMode === TestMode.Skip) {
|
if (test.declaredMode === TestMode.ExpectToFail) {
|
||||||
test.result = TestResult.Skipped;
|
test.result = TestResult.ExpectToFail;
|
||||||
this._runner._didFinishTest(test, workerId);
|
this._runner._didFinishTest(test, workerId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -296,7 +296,7 @@ function specBuilder(action) {
|
||||||
};
|
};
|
||||||
func.fail = condition => {
|
func.fail = condition => {
|
||||||
if (condition)
|
if (condition)
|
||||||
mode = TestMode.Fail;
|
mode = TestMode.ExpectToFail;
|
||||||
return func;
|
return func;
|
||||||
};
|
};
|
||||||
func.flake = condition => {
|
func.flake = condition => {
|
||||||
|
|
@ -344,15 +344,13 @@ class TestRunner extends EventEmitter {
|
||||||
this.it = specBuilder((mode, name, callback) => this._addTest(name, callback, mode, this._timeout));
|
this.it = specBuilder((mode, name, callback) => this._addTest(name, callback, mode, this._timeout));
|
||||||
this.fit = specBuilder((mode, name, callback) => this._addTest(name, callback, TestMode.Focus, this._timeout));
|
this.fit = specBuilder((mode, name, callback) => this._addTest(name, callback, TestMode.Focus, this._timeout));
|
||||||
this.xit = specBuilder((mode, name, callback) => this._addTest(name, callback, TestMode.Skip, this._timeout));
|
this.xit = specBuilder((mode, name, callback) => this._addTest(name, callback, TestMode.Skip, this._timeout));
|
||||||
|
this.dit = specBuilder((mode, name, callback) => {
|
||||||
this._debuggerLogBreakpointLines = new Multimap();
|
|
||||||
this.dit = (name, callback) => {
|
|
||||||
const test = this._addTest(name, callback, TestMode.Focus, INFINITE_TIMEOUT);
|
const test = this._addTest(name, callback, TestMode.Focus, INFINITE_TIMEOUT);
|
||||||
const N = callback.toString().split('\n').length;
|
const N = callback.toString().split('\n').length;
|
||||||
for (let i = 0; i < N; ++i)
|
for (let i = 0; i < N; ++i)
|
||||||
this._debuggerLogBreakpointLines.set(test.location.filePath, i + test.location.lineNumber);
|
this._debuggerLogBreakpointLines.set(test.location.filePath, i + test.location.lineNumber);
|
||||||
};
|
});
|
||||||
this.dit.skip = () => this.dit; // no-op;
|
this._debuggerLogBreakpointLines = new Multimap();
|
||||||
|
|
||||||
this.beforeAll = this._addHook.bind(this, 'beforeAll');
|
this.beforeAll = this._addHook.bind(this, 'beforeAll');
|
||||||
this.beforeEach = this._addHook.bind(this, 'beforeEach');
|
this.beforeEach = this._addHook.bind(this, 'beforeEach');
|
||||||
|
|
@ -370,11 +368,15 @@ class TestRunner extends EventEmitter {
|
||||||
}
|
}
|
||||||
|
|
||||||
_addTest(name, callback, mode, timeout) {
|
_addTest(name, callback, mode, timeout) {
|
||||||
|
if (mode === TestMode.Skip)
|
||||||
|
return;
|
||||||
let suite = this._currentSuite;
|
let suite = this._currentSuite;
|
||||||
let isSkipped = suite.declaredMode === TestMode.Skip;
|
let expectToFail = suite.declaredMode === TestMode.ExpectToFail;
|
||||||
while ((suite = suite.parentSuite))
|
while ((suite = suite.parentSuite))
|
||||||
isSkipped |= suite.declaredMode === TestMode.Skip;
|
expectToFail |= suite.declaredMode === TestMode.ExpectToFail;
|
||||||
const test = new Test(this._currentSuite, name, callback, isSkipped ? TestMode.Skip : mode, timeout);
|
if (expectToFail)
|
||||||
|
mode = TestMode.ExpectToFail;
|
||||||
|
const test = new Test(this._currentSuite, name, callback, mode, timeout);
|
||||||
this._currentSuite.children.push(test);
|
this._currentSuite.children.push(test);
|
||||||
this._tests.push(test);
|
this._tests.push(test);
|
||||||
this._hasFocusedTestsOrSuites = this._hasFocusedTestsOrSuites || mode === TestMode.Focus;
|
this._hasFocusedTestsOrSuites = this._hasFocusedTestsOrSuites || mode === TestMode.Focus;
|
||||||
|
|
@ -382,11 +384,13 @@ class TestRunner extends EventEmitter {
|
||||||
}
|
}
|
||||||
|
|
||||||
_addSuite(mode, name, callback, ...args) {
|
_addSuite(mode, name, callback, ...args) {
|
||||||
|
if (mode === TestMode.Skip)
|
||||||
|
return;
|
||||||
const oldSuite = this._currentSuite;
|
const oldSuite = this._currentSuite;
|
||||||
const suite = new Suite(this._currentSuite, name, mode);
|
const suite = new Suite(this._currentSuite, name, mode);
|
||||||
this._currentSuite.children.push(suite);
|
this._currentSuite.children.push(suite);
|
||||||
this._currentSuite = suite;
|
this._currentSuite = suite;
|
||||||
const result = callback(...args);
|
callback(...args);
|
||||||
this._currentSuite = oldSuite;
|
this._currentSuite = oldSuite;
|
||||||
this._hasFocusedTestsOrSuites = this._hasFocusedTestsOrSuites || mode === TestMode.Focus;
|
this._hasFocusedTestsOrSuites = this._hasFocusedTestsOrSuites || mode === TestMode.Focus;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue