test: remove some fixmes (#32953)

This commit is contained in:
Dmitry Gozman 2024-10-04 08:22:27 -07:00 committed by GitHub
parent 40670e6ffd
commit 34ad67659f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
22 changed files with 33 additions and 55 deletions

View File

@ -254,7 +254,7 @@ it('should be able to navigate after disabling javascript', async ({ browser, se
}); });
it('should not hang on promises after disabling javascript', async ({ browserName, contextFactory }) => { it('should not hang on promises after disabling javascript', async ({ browserName, contextFactory }) => {
it.fixme(browserName === 'webkit' || browserName === 'firefox'); it.fixme(browserName === 'firefox');
const context = await contextFactory({ javaScriptEnabled: false }); const context = await contextFactory({ javaScriptEnabled: false });
const page = await context.newPage(); const page = await context.newPage();
expect(await page.evaluate(() => 1)).toBe(1); expect(await page.evaluate(() => 1)).toBe(1);

View File

@ -406,7 +406,6 @@ it('should support requestStorageAccess', async ({ page, server, channel, browse
it('should parse cookie with large Max-Age correctly', async ({ server, page, defaultSameSiteCookieValue, browserName, platform }) => { it('should parse cookie with large Max-Age correctly', async ({ server, page, defaultSameSiteCookieValue, browserName, platform }) => {
it.info().annotations.push({ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/30305' }); it.info().annotations.push({ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/30305' });
it.fixme(browserName === 'webkit' && platform === 'linux', 'https://github.com/microsoft/playwright/issues/30305');
server.setRoute('/foobar', (req, res) => { server.setRoute('/foobar', (req, res) => {
res.setHeader('set-cookie', [ res.setHeader('set-cookie', [

View File

@ -171,8 +171,6 @@ it('should work with Shift-clicking', async ({ browser, server, browserName }) =
}); });
it('should work with Ctrl-clicking', async ({ browser, server, browserName }) => { it('should work with Ctrl-clicking', async ({ browser, server, browserName }) => {
it.fixme(browserName === 'firefox', 'Reports an opener in this case.');
const context = await browser.newContext(); const context = await browser.newContext();
const page = await context.newPage(); const page = await context.newPage();
await page.goto(server.EMPTY_PAGE); await page.goto(server.EMPTY_PAGE);
@ -181,6 +179,6 @@ it('should work with Ctrl-clicking', async ({ browser, server, browserName }) =>
context.waitForEvent('page'), context.waitForEvent('page'),
page.click('a', { modifiers: ['ControlOrMeta'] }), page.click('a', { modifiers: ['ControlOrMeta'] }),
]); ]);
expect(await popup.opener()).toBe(null); expect(await popup.opener()).toBe(browserName === 'firefox' ? page : null);
await context.close(); await context.close();
}); });

View File

@ -65,7 +65,9 @@ it('should use proxy', async ({ contextFactory, server, proxyServer }) => {
}); });
it('should set cookie for top-level domain', async ({ contextFactory, server, proxyServer, browserName, isLinux }) => { it('should set cookie for top-level domain', {
annotation: { type: 'issue', description: 'https://github.com/microsoft/playwright/issues/18362' }
}, async ({ contextFactory, server, proxyServer, browserName, isLinux }) => {
it.fixme(browserName === 'webkit' && isLinux); it.fixme(browserName === 'webkit' && isLinux);
proxyServer.forwardTo(server.PORT, { allowConnectRequests: true }); proxyServer.forwardTo(server.PORT, { allowConnectRequests: true });

View File

@ -761,7 +761,6 @@ for (const kind of ['launchServer', 'run-server'] as const) {
}); });
test.describe('socks proxy', () => { test.describe('socks proxy', () => {
test.fixme(({ platform, browserName }) => browserName === 'webkit' && platform === 'win32');
test.skip(({ mode }) => mode !== 'default'); test.skip(({ mode }) => mode !== 'default');
test.skip(kind === 'launchServer', 'not supported yet'); test.skip(kind === 'launchServer', 'not supported yet');

View File

@ -65,13 +65,9 @@ it('should respect CSP @smoke', async ({ page, server }) => {
expect(await page.evaluate(() => window['testStatus'])).toBe('SUCCESS'); expect(await page.evaluate(() => window['testStatus'])).toBe('SUCCESS');
}); });
it('should play video @smoke', async ({ page, asset, browserName, platform, macVersion, mode }) => { it('should play video @smoke', async ({ page, asset, browserName, isWindows, isLinux, mode }) => {
// TODO: the test passes on Windows locally but fails on GitHub Action bot, it.skip(browserName === 'webkit' && isWindows, 'passes locally but fails on GitHub Action bot, apparently due to a Media Pack issue in the Windows Server');
// apparently due to a Media Pack issue in the Windows Server. it.fixme(browserName === 'firefox' && isLinux, 'https://github.com/microsoft/playwright/issues/5721');
// Also the test is very flaky on Linux WebKit.
it.fixme(browserName === 'webkit' && platform !== 'darwin');
it.fixme(browserName === 'firefox', 'https://github.com/microsoft/playwright/issues/5721');
it.fixme(browserName === 'webkit' && platform === 'darwin' && macVersion === 11, 'Does not work on BigSur');
it.skip(mode.startsWith('service')); it.skip(mode.startsWith('service'));
// Safari only plays mp4 so we test WebKit with an .mp4 clip. // Safari only plays mp4 so we test WebKit with an .mp4 clip.
@ -85,8 +81,7 @@ it('should play video @smoke', async ({ page, asset, browserName, platform, macV
}); });
it('should play webm video @smoke', async ({ page, asset, browserName, platform, macVersion, mode }) => { it('should play webm video @smoke', async ({ page, asset, browserName, platform, macVersion, mode }) => {
it.fixme(browserName === 'webkit' && platform === 'darwin' && macVersion === 11, 'Does not work on BigSur'); it.skip(browserName === 'webkit' && platform === 'win32', 'not supported');
it.fixme(browserName === 'webkit' && platform === 'win32');
it.skip(mode.startsWith('service')); it.skip(mode.startsWith('service'));
const absolutePath = asset('video_webm.html'); const absolutePath = asset('video_webm.html');
@ -98,8 +93,6 @@ it('should play webm video @smoke', async ({ page, asset, browserName, platform,
}); });
it('should play audio @smoke', async ({ page, server, browserName, platform }) => { it('should play audio @smoke', async ({ page, server, browserName, platform }) => {
it.fixme(browserName === 'firefox' && platform === 'win32', 'https://github.com/microsoft/playwright/issues/10887');
it.fixme(browserName === 'firefox' && platform === 'linux', 'https://github.com/microsoft/playwright/issues/10887');
it.fixme(browserName === 'webkit' && platform === 'win32', 'https://github.com/microsoft/playwright/issues/10892'); it.fixme(browserName === 'webkit' && platform === 'win32', 'https://github.com/microsoft/playwright/issues/10892');
await page.goto(server.EMPTY_PAGE); await page.goto(server.EMPTY_PAGE);
await page.setContent(`<audio src="${server.PREFIX}/example.mp3"></audio>`); await page.setContent(`<audio src="${server.PREFIX}/example.mp3"></audio>`);
@ -133,7 +126,6 @@ it('should support webgl 2 @smoke', async ({ page, browserName, headless, isWind
it('should not crash on page with mp4 @smoke', async ({ page, server, platform, browserName }) => { it('should not crash on page with mp4 @smoke', async ({ page, server, platform, browserName }) => {
it.fixme(browserName === 'webkit' && platform === 'win32', 'https://github.com/microsoft/playwright/issues/11009, times out in setContent'); it.fixme(browserName === 'webkit' && platform === 'win32', 'https://github.com/microsoft/playwright/issues/11009, times out in setContent');
it.fixme(browserName === 'firefox', 'https://bugzilla.mozilla.org/show_bug.cgi?id=1697004');
await page.setContent(`<video><source src="${server.PREFIX}/movie.mp4"/></video>`); await page.setContent(`<video><source src="${server.PREFIX}/movie.mp4"/></video>`);
await page.waitForTimeout(1000); await page.waitForTimeout(1000);
}); });
@ -261,7 +253,6 @@ it('window.GestureEvent in WebKit', async ({ page, server, browserName }) => {
it('requestFullscreen', async ({ page, server, browserName, headless, isLinux }) => { it('requestFullscreen', async ({ page, server, browserName, headless, isLinux }) => {
it.info().annotations.push({ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/22832' }); it.info().annotations.push({ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/22832' });
it.fixme(browserName === 'chromium' && headless, 'fullscreenchange is not fired in headless Chromium');
await page.goto(server.EMPTY_PAGE); await page.goto(server.EMPTY_PAGE);
await page.evaluate(() => { await page.evaluate(() => {
const result = new Promise(resolve => document.addEventListener('fullscreenchange', resolve)); const result = new Promise(resolve => document.addEventListener('fullscreenchange', resolve));

View File

@ -728,8 +728,7 @@ test.describe('browser', () => {
}); });
test('should return target connection errors when using http2', async ({ browser, startCCServer, asset, browserName, isMac, isLinux }) => { test('should return target connection errors when using http2', async ({ browser, startCCServer, asset, browserName, isMac, isLinux }) => {
test.skip(browserName === 'webkit' && isMac, 'WebKit on macOS doesn\n proxy localhost'); test.skip(browserName === 'webkit' && isMac, 'WebKit on macOS does not proxy localhost');
test.fixme(browserName === 'webkit' && isLinux, 'WebKit on Linux does not support http2 https://bugs.webkit.org/show_bug.cgi?id=276990');
test.skip(+process.versions.node.split('.')[0] < 20, 'http2.performServerHandshake is not supported in older Node.js versions'); test.skip(+process.versions.node.split('.')[0] < 20, 'http2.performServerHandshake is not supported in older Node.js versions');
const serverURL = await startCCServer({ http2: true }); const serverURL = await startCCServer({ http2: true });

View File

@ -1155,7 +1155,7 @@ it.describe('stubTimers', () => {
}); });
}); });
it.fixme('deletes global property on uninstall if it was inherited onto the global object', ({}) => { it('restores global property on uninstall if it was inherited onto the global object', ({}) => {
// Give the global object an inherited 'setTimeout' method // Give the global object an inherited 'setTimeout' method
const proto = { Date, const proto = { Date,
setTimeout: () => {}, setTimeout: () => {},
@ -1167,8 +1167,10 @@ it.describe('stubTimers', () => {
const { clock } = rawInstall(myGlobal, { now: 0, toFake: ['setTimeout'] }); const { clock } = rawInstall(myGlobal, { now: 0, toFake: ['setTimeout'] });
expect(myGlobal.hasOwnProperty('setTimeout')).toBeTruthy(); expect(myGlobal.hasOwnProperty('setTimeout')).toBeTruthy();
expect(myGlobal.setTimeout).not.toBe(proto.setTimeout);
clock.uninstall(); clock.uninstall();
expect(myGlobal.hasOwnProperty('setTimeout')).toBeFalsy(); expect(myGlobal.hasOwnProperty('setTimeout')).toBeTruthy();
expect(myGlobal.setTimeout).toBe(proto.setTimeout);
}); });
it('fakes Date constructor', ({ installEx }) => { it('fakes Date constructor', ({ installEx }) => {

View File

@ -305,10 +305,8 @@ it.describe('download event', () => {
}); });
it('should report alt-click downloads', async ({ browser, server, browserName }) => { it('should report alt-click downloads', async ({ browser, server, browserName }) => {
it.fixme(browserName === 'firefox'); it.skip(browserName === 'firefox', 'Firefox does not download on alt-click.');
// Firefox does not download on alt-click by default.
// Our WebKit embedder does not download on alt-click, although Safari does.
server.setRoute('/download', (req, res) => { server.setRoute('/download', (req, res) => {
res.setHeader('Content-Type', 'application/octet-stream'); res.setHeader('Content-Type', 'application/octet-stream');
res.end(`Hello world`); res.end(`Hello world`);

View File

@ -192,7 +192,7 @@ it('should not block third party SameSite=None cookies', async ({ httpsServer, b
}); });
it('should not override viewport size when passed null', async function({ browserName, server, browser }) { it('should not override viewport size when passed null', async function({ browserName, server, browser }) {
it.fixme(browserName === 'webkit', 'Our WebKit embedder does not respect window features'); it.skip(browserName === 'webkit', 'Our WebKit embedder does not respect window features');
const context = await browser.newContext({ viewport: null }); const context = await browser.newContext({ viewport: null });
const page = await context.newPage(); const page = await context.newPage();
@ -230,8 +230,6 @@ it('Page.bringToFront should work', async ({ browser }) => {
}); });
it('should click in OOPIF', async ({ browserName, launchPersistent, server }) => { it('should click in OOPIF', async ({ browserName, launchPersistent, server }) => {
it.fixme(browserName === 'chromium', 'Click is offset by the infobar height');
server.setRoute('/empty.html', (req, res) => { server.setRoute('/empty.html', (req, res) => {
res.writeHead(200, { 'Content-Type': 'text/html' }); res.writeHead(200, { 'Content-Type': 'text/html' });
res.end(`<iframe src="${server.CROSS_PROCESS_PREFIX}/iframe.html"></iframe>`); res.end(`<iframe src="${server.CROSS_PROCESS_PREFIX}/iframe.html"></iframe>`);
@ -250,8 +248,8 @@ it('should click in OOPIF', async ({ browserName, launchPersistent, server }) =>
expect(consoleLog).toContain('ok'); expect(consoleLog).toContain('ok');
}); });
it('should click bottom row w/ infobar in OOPIF', async ({ browserName, launchPersistent, server }) => { it('should click bottom row w/ infobar in OOPIF', async ({ browserName, launchPersistent, server, isWindows }) => {
it.fixme(browserName === 'chromium', 'Click is offset by the infobar height'); it.fixme(browserName === 'chromium' && isWindows, 'Click is offset by the infobar height');
server.setRoute('/empty.html', (req, res) => { server.setRoute('/empty.html', (req, res) => {
res.writeHead(200, { 'Content-Type': 'text/html' }); res.writeHead(200, { 'Content-Type': 'text/html' });

View File

@ -106,7 +106,6 @@ await page.CloseAsync();`);
}); });
test('should upload a single file', async ({ openRecorder, browserName, asset, isLinux }) => { test('should upload a single file', async ({ openRecorder, browserName, asset, isLinux }) => {
test.fixme(browserName === 'firefox' && isLinux, 'https://bugzilla.mozilla.org/show_bug.cgi?id=1827551');
const { page, recorder } = await openRecorder(); const { page, recorder } = await openRecorder();
await recorder.setContentAndWait(` await recorder.setContentAndWait(`
<form> <form>
@ -137,7 +136,6 @@ await page.GetByRole(AriaRole.Textbox).SetInputFilesAsync(new[] { \"file-to-uplo
}); });
test('should upload multiple files', async ({ openRecorder, browserName, asset, isLinux }) => { test('should upload multiple files', async ({ openRecorder, browserName, asset, isLinux }) => {
test.fixme(browserName === 'firefox' && isLinux, 'https://bugzilla.mozilla.org/show_bug.cgi?id=1827551');
const { page, recorder } = await openRecorder(); const { page, recorder } = await openRecorder();
await recorder.setContentAndWait(` await recorder.setContentAndWait(`
<form> <form>
@ -168,7 +166,6 @@ await page.GetByRole(AriaRole.Textbox).SetInputFilesAsync(new[] { \"file-to-uplo
}); });
test('should clear files', async ({ openRecorder, browserName, asset, isLinux }) => { test('should clear files', async ({ openRecorder, browserName, asset, isLinux }) => {
test.fixme(browserName === 'firefox' && isLinux, 'https://bugzilla.mozilla.org/show_bug.cgi?id=1827551');
const { page, recorder } = await openRecorder(); const { page, recorder } = await openRecorder();
await recorder.setContentAndWait(` await recorder.setContentAndWait(`
<form> <form>

View File

@ -176,7 +176,8 @@ it('should support clipboard read', async ({ page, context, server, browserName,
it('storage access', { it('storage access', {
annotation: { type: 'issue', description: 'https://github.com/microsoft/playwright/issues/31227' } annotation: { type: 'issue', description: 'https://github.com/microsoft/playwright/issues/31227' }
}, async ({ page, context, server, browserName }) => { }, async ({ page, context, server, browserName }) => {
it.fixme(browserName !== 'chromium'); it.skip(browserName !== 'chromium', 'chromium-only api');
await context.grantPermissions(['storage-access']); await context.grantPermissions(['storage-access']);
expect(await getPermission(page, 'storage-access')).toBe('granted'); expect(await getPermission(page, 'storage-access')).toBe('granted');
server.setRoute('/set-cookie.html', (req, res) => { server.setRoute('/set-cookie.html', (req, res) => {

View File

@ -262,14 +262,17 @@ it('should not throttle rAF in the opener page', async ({ page, server }) => {
}); });
it('should not throw when click closes popup', async ({ browserName, page, server }) => { it('should not throw when click closes popup', async ({ browserName, page, server }) => {
it.fixme(browserName === 'firefox'); it.fixme(browserName === 'firefox', 'locator.click: Target page, context or browser has been closed');
await page.goto(server.EMPTY_PAGE); await page.goto(server.EMPTY_PAGE);
const [popup] = await Promise.all([ const [popup] = await Promise.all([
page.waitForEvent('popup'), page.waitForEvent('popup'),
page.evaluate(() => { page.evaluate(async browserName => {
const w = window.open('about:blank'); const w = window.open('about:blank');
if (browserName === 'firefox')
await new Promise(x => w.onload = x);
w.document.body.innerHTML = `<button onclick="window.close()">close</button>`; w.document.body.innerHTML = `<button onclick="window.close()">close</button>`;
}), }, browserName),
]); ]);
await popup.getByRole('button').click(); await popup.getByRole('button').click();
}); });

View File

@ -1452,18 +1452,18 @@ test.skip('should handle case where neither snapshots nor screenshots exist', as
}); });
test('should show only one pointer with multilevel iframes', async ({ page, runAndTrace, server, browserName }) => { test('should show only one pointer with multilevel iframes', async ({ page, runAndTrace, server, browserName }) => {
test.fixme(browserName !== 'chromium', 'Elements in iframe are not marked'); test.fixme(browserName === 'firefox', 'Elements in iframe are not marked');
server.setRoute('/level-0.html', (req, res) => { server.setRoute('/level-0.html', (req, res) => {
res.writeHead(200); res.writeHead(200, { 'Content-Type': 'text/html' });
res.end(`<iframe src="/level-1.html" style="position: absolute; left: 100px"></iframe>`); res.end(`<iframe src="/level-1.html" style="position: absolute; left: 100px"></iframe>`);
}); });
server.setRoute('/level-1.html', (req, res) => { server.setRoute('/level-1.html', (req, res) => {
res.writeHead(200); res.writeHead(200, { 'Content-Type': 'text/html' });
res.end(`<iframe src="/level-2.html"></iframe>`); res.end(`<iframe src="/level-2.html"></iframe>`);
}); });
server.setRoute('/level-2.html', (req, res) => { server.setRoute('/level-2.html', (req, res) => {
res.writeHead(200); res.writeHead(200, { 'Content-Type': 'text/html' });
res.end(`<button>Click me</button>`); res.end(`<button>Click me</button>`);
}); });

View File

@ -20,8 +20,6 @@ import { test as it, expect } from './pageTest';
it.skip(({ isAndroid }) => isAndroid); it.skip(({ isAndroid }) => isAndroid);
it('should work', async ({ page, server, browserName, headless, isLinux }) => { it('should work', async ({ page, server, browserName, headless, isLinux }) => {
it.fixme(browserName === 'firefox' && !headless && !isLinux);
await page.setViewportSize({ width: 500, height: 500 }); await page.setViewportSize({ width: 500, height: 500 });
await page.goto(server.PREFIX + '/grid.html'); await page.goto(server.PREFIX + '/grid.html');
const elementHandle = await page.$('.box:nth-of-type(13)'); const elementHandle = await page.$('.box:nth-of-type(13)');

View File

@ -113,8 +113,6 @@ it('should wait for button with an aria-disabled parent', async ({ page }) => {
}); });
it('should wait for stable position', async ({ page, server, browserName, platform }) => { it('should wait for stable position', async ({ page, server, browserName, platform }) => {
it.fixme(browserName === 'firefox' && platform === 'linux');
await page.goto(server.PREFIX + '/input/button.html'); await page.goto(server.PREFIX + '/input/button.html');
const button = await page.$('button'); const button = await page.$('button');
await page.$eval('button', button => { await page.$eval('button', button => {

View File

@ -349,7 +349,6 @@ test.describe('toBeInViewport', () => {
}); });
test('should respect ratio option', async ({ page, isAndroid }) => { test('should respect ratio option', async ({ page, isAndroid }) => {
test.fixme(isAndroid, 'fails due an upstream bug in Chrome, updating Chrome will fix it.');
await page.setContent(` await page.setContent(`
<style>body, div, html { padding: 0; margin: 0; }</style> <style>body, div, html { padding: 0; margin: 0; }</style>
<div id=big style="height: 400vh;"></div> <div id=big style="height: 400vh;"></div>

View File

@ -133,8 +133,7 @@ it('should be isolated between frames', async ({ page, server }) => {
}); });
it('should work in iframes that failed initial navigation', async ({ page, browserName }) => { it('should work in iframes that failed initial navigation', async ({ page, browserName }) => {
it.fail(browserName === 'chromium'); it.fixme(browserName !== 'webkit');
it.fixme(browserName === 'firefox');
// - Firefox does not report domcontentloaded for the iframe. // - Firefox does not report domcontentloaded for the iframe.
// - Chromium and Firefox report empty url. // - Chromium and Firefox report empty url.

View File

@ -111,7 +111,6 @@ it('should take screenshot', async ({ page, server, browserName, headless, isAnd
}); });
it('should return bounding box', async ({ page, server, browserName, headless, isAndroid, isLinux }) => { it('should return bounding box', async ({ page, server, browserName, headless, isAndroid, isLinux }) => {
it.fixme(browserName === 'firefox' && !headless && !isLinux);
it.skip(isAndroid); it.skip(isAndroid);
await page.setViewportSize({ width: 500, height: 500 }); await page.setViewportSize({ width: 500, height: 500 });

View File

@ -336,7 +336,7 @@ it('should click the button inside an iframe', async ({ page, server }) => {
}); });
it('should click the button with fixed position inside an iframe', async ({ page, server, browserName }) => { it('should click the button with fixed position inside an iframe', async ({ page, server, browserName }) => {
it.fixme(browserName === 'chromium' || browserName === 'webkit'); it.fixme(browserName === 'chromium');
// @see https://github.com/GoogleChrome/puppeteer/issues/4110 // @see https://github.com/GoogleChrome/puppeteer/issues/4110
// @see https://bugs.chromium.org/p/chromium/issues/detail?id=986390 // @see https://bugs.chromium.org/p/chromium/issues/detail?id=986390

View File

@ -289,8 +289,7 @@ it('should not crash on mouse drag with any button', async ({ page }) => {
it('should dispatch mouse move after context menu was opened', async ({ page, browserName, isWindows }) => { it('should dispatch mouse move after context menu was opened', async ({ page, browserName, isWindows }) => {
it.info().annotations.push({ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/20823' }); it.info().annotations.push({ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/20823' });
it.fixme(browserName === 'firefox'); it.fixme(browserName === 'chromium' && isWindows, 'context menu support is best-effort for Linux and MacOS');
it.skip(browserName === 'chromium' && isWindows, 'context menu support is best-effort for Linux and MacOS');
await page.evaluate(() => { await page.evaluate(() => {
window['contextMenuPromise'] = new Promise(x => { window['contextMenuPromise'] = new Promise(x => {
window.addEventListener('contextmenu', x, false); window.addEventListener('contextmenu', x, false);

View File

@ -275,7 +275,6 @@ it('should work with :nth-child', async ({ page, server }) => {
}); });
it('should work with :nth-child(of) notation with nested functions', async ({ page, browserName, browserMajorVersion }) => { it('should work with :nth-child(of) notation with nested functions', async ({ page, browserName, browserMajorVersion }) => {
it.fixme(browserName === 'firefox', 'Should enable once Firefox supports this syntax');
it.skip(browserName === 'chromium' && browserMajorVersion < 111, 'https://caniuse.com/css-nth-child-of'); it.skip(browserName === 'chromium' && browserMajorVersion < 111, 'https://caniuse.com/css-nth-child-of');
await page.setContent(` await page.setContent(`