diff --git a/.github/workflows/tests_primary.yml b/.github/workflows/tests_primary.yml index eed38d676e..c9930d1b18 100644 --- a/.github/workflows/tests_primary.yml +++ b/.github/workflows/tests_primary.yml @@ -144,8 +144,8 @@ jobs: DEBUG: pw:install - run: npm run build - run: npx playwright install --with-deps - - run: xvfb-run npm run test-html-reporter - - run: xvfb-run npm run test-web + - run: npm run test-html-reporter + - run: npm run test-web if: always() test-package-installations: diff --git a/tests/installation/connect-to-selenium.spec.ts b/tests/installation/connect-to-selenium.spec.ts index a155f1b090..4e72c32c24 100755 --- a/tests/installation/connect-to-selenium.spec.ts +++ b/tests/installation/connect-to-selenium.spec.ts @@ -18,7 +18,7 @@ import path from 'path'; import { test } from './npmTest'; test('connect to selenium', async ({ exec, tmpWorkspace }, testInfo) => { - test.fixme(os.platform() !== 'linux'); + test.skip(os.platform() !== 'linux'); await exec('npm i --foreground-scripts playwright-core'); await exec(`node download-chromedriver.js ${path.join(tmpWorkspace)}`); diff --git a/tests/library/browsercontext-cookies.spec.ts b/tests/library/browsercontext-cookies.spec.ts index 8504cd35ef..d0cfdb6cec 100644 --- a/tests/library/browsercontext-cookies.spec.ts +++ b/tests/library/browsercontext-cookies.spec.ts @@ -353,7 +353,7 @@ it('should be able to send third party cookies via an iframe', async ({ browser, it('should support requestStorageAccess', async ({ page, server, channel, browserName, isMac, isLinux, isWindows }) => { it.info().annotations.push({ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/17285' }); it.skip(browserName === 'chromium', 'requestStorageAccess API is not available in Chromium'); - it.fixme(channel === 'firefox-beta', 'hasStorageAccess returns true, but no cookie is sent'); + it.skip(channel === 'firefox-beta', 'hasStorageAccess returns true, but no cookie is sent'); server.setRoute('/set-cookie.html', (req, res) => { res.setHeader('Set-Cookie', 'name=value; Path=/'); diff --git a/tests/library/browsercontext-har.spec.ts b/tests/library/browsercontext-har.spec.ts index 07c7ee62ee..32e8611993 100644 --- a/tests/library/browsercontext-har.spec.ts +++ b/tests/library/browsercontext-har.spec.ts @@ -184,8 +184,6 @@ it('should goBack to redirected navigation', async ({ context, asset, server }) }); it('should goForward to redirected navigation', async ({ context, asset, server, browserName }) => { - it.fixme(browserName === 'firefox', 'Flaky in firefox'); - const path = asset('har-redirect.har'); await context.routeFromHAR(path, { url: /.*theverge.*/ }); const page = await context.newPage(); diff --git a/tests/library/browsercontext-proxy.spec.ts b/tests/library/browsercontext-proxy.spec.ts index 367d6f9d58..a25965e4d4 100644 --- a/tests/library/browsercontext-proxy.spec.ts +++ b/tests/library/browsercontext-proxy.spec.ts @@ -94,6 +94,7 @@ it('should use proxy', async ({ contextFactory, server, proxyServer }) => { it('should set cookie for top-level domain', async ({ contextFactory, server, proxyServer, browserName, isLinux }) => { it.fixme(browserName === 'webkit' && isLinux); + proxyServer.forwardTo(server.PORT); const context = await contextFactory({ proxy: { server: `localhost:${proxyServer.PORT}` } @@ -129,7 +130,7 @@ it.describe('should proxy local network requests', () => { } ]) { it(`${params.description}`, async ({ platform, browserName, contextFactory, server, proxyServer }) => { - it.fixme(browserName === 'webkit' && platform === 'darwin' && ['localhost', '127.0.0.1'].includes(params.target), 'Flaky on macOS; needs investigation.'); + it.skip(browserName === 'webkit' && platform === 'darwin' && ['localhost', '127.0.0.1'].includes(params.target), 'Mac webkit does not proxy localhost'); const path = `/target-${additionalBypass}-${params.target}.html`; server.setRoute(path, async (req, res) => { @@ -287,8 +288,6 @@ it('should authenticate with empty password', async ({ contextFactory, server, p }); it('should isolate proxy credentials between contexts', async ({ contextFactory, server, browserName, proxyServer }) => { - it.fixme(browserName === 'firefox', 'Credentials from the first context stick around'); - proxyServer.forwardTo(server.PORT); let auth; proxyServer.setAuthHandler(req => { diff --git a/tests/library/browsercontext-route.spec.ts b/tests/library/browsercontext-route.spec.ts index 148289e622..8538957b58 100644 --- a/tests/library/browsercontext-route.spec.ts +++ b/tests/library/browsercontext-route.spec.ts @@ -109,8 +109,6 @@ it('should fall back to context.route', async ({ browser, server }) => { }); it('should support Set-Cookie header', async ({ contextFactory, server, browserName, defaultSameSiteCookieValue }) => { - it.fixme(browserName === 'webkit'); - const context = await contextFactory(); const page = await context.newPage(); await page.route('https://example.com/', (route, request) => { @@ -154,8 +152,6 @@ it('should ignore secure Set-Cookie header for insecure requests', async ({ cont }); it('should use Set-Cookie header in future requests', async ({ contextFactory, server, browserName, defaultSameSiteCookieValue }) => { - it.fixme(browserName === 'webkit'); - const context = await contextFactory(); const page = await context.newPage(); diff --git a/tests/library/capabilities.spec.ts b/tests/library/capabilities.spec.ts index 5cf09ab34b..27af793f59 100644 --- a/tests/library/capabilities.spec.ts +++ b/tests/library/capabilities.spec.ts @@ -110,8 +110,6 @@ it('should play audio @smoke', async ({ page, server, browserName, platform }) = }); it('should support webgl @smoke', async ({ page, browserName, headless }) => { - it.fixme(browserName === 'firefox' && headless); - const hasWebGL = await page.evaluate(() => { const canvas = document.createElement('canvas'); return !!canvas.getContext('webgl'); @@ -119,9 +117,9 @@ it('should support webgl @smoke', async ({ page, browserName, headless }) => { expect(hasWebGL).toBe(true); }); -it('should support webgl 2 @smoke', async ({ page, browserName, headless }) => { +it('should support webgl 2 @smoke', async ({ page, browserName, headless, isWindows }) => { it.skip(browserName === 'webkit', 'WebKit doesn\'t have webgl2 enabled yet upstream.'); - it.fixme(browserName === 'firefox'); + it.fixme(browserName === 'firefox' && isWindows); it.fixme(browserName === 'chromium' && !headless, 'chromium doesn\'t like webgl2 when running under xvfb'); const hasWebGL2 = await page.evaluate(() => { diff --git a/tests/library/download.spec.ts b/tests/library/download.spec.ts index 276f949b75..8f24306d3d 100644 --- a/tests/library/download.spec.ts +++ b/tests/library/download.spec.ts @@ -305,7 +305,7 @@ it.describe('download event', () => { }); it('should report alt-click downloads', async ({ browser, server, browserName }) => { - it.fixme(browserName === 'firefox' || browserName === 'webkit'); + it.fixme(browserName === 'firefox'); // Firefox does not download on alt-click by default. // Our WebKit embedder does not download on alt-click, although Safari does. @@ -524,8 +524,6 @@ it.describe('download event', () => { }); it('should be able to cancel pending downloads', async ({ browser, server, browserName, browserVersion }) => { - // The exact upstream change is in b449b5c, which still does not appear in the first few 91.* tags until 91.0.4437.0. - it.fixme(browserName === 'chromium' && Number(browserVersion.split('.')[0]) < 91, 'The upstream Browser.cancelDownload command is not available before Chrome 91'); const page = await browser.newPage(); await page.setContent(`download`); const [download] = await Promise.all([ @@ -539,8 +537,6 @@ it.describe('download event', () => { }); it('should not fail explicitly to cancel a download even if that is already finished', async ({ browser, server, browserName, browserVersion }) => { - // The exact upstream change is in b449b5c, which still does not appear in the first few 91.* tags until 91.0.4437.0. - it.fixme(browserName === 'chromium' && Number(browserVersion.split('.')[0]) < 91, 'The upstream Browser.cancelDownload command is not available before Chrome 91'); const page = await browser.newPage(); await page.setContent(`download`); const [download] = await Promise.all([ @@ -639,8 +635,8 @@ it('should be able to download a inline PDF file via response interception', asy await page.close(); }); -it('should be able to download a inline PDF file via navigation', async ({ browser, server, asset, browserName }) => { - it.fixme(browserName === 'chromium' || browserName === 'webkit'); +it('should be able to download a inline PDF file via navigation', async ({ browser, server, asset, browserName, headless }) => { + it.fixme((!headless && browserName === 'chromium') || browserName === 'webkit'); const page = await browser.newPage(); await page.goto(server.EMPTY_PAGE); await page.setContent(` diff --git a/tests/library/har.spec.ts b/tests/library/har.spec.ts index cd9c51da62..e92a7b879f 100644 --- a/tests/library/har.spec.ts +++ b/tests/library/har.spec.ts @@ -559,7 +559,8 @@ it('should have popup requests', async ({ contextFactory, server }, testInfo) => }); it('should not contain internal pages', async ({ browserName, contextFactory, server }, testInfo) => { - it.fixme(true, 'https://github.com/microsoft/playwright/issues/6743'); + it.info().annotations.push({ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/6743' }); + server.setRoute('/empty.html', (req, res) => { res.setHeader('Set-Cookie', 'name=value'); res.end(); diff --git a/tests/library/headful.spec.ts b/tests/library/headful.spec.ts index 7211fe6609..8b048ee026 100644 --- a/tests/library/headful.spec.ts +++ b/tests/library/headful.spec.ts @@ -152,9 +152,8 @@ 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.fixme(browserName === 'webkit'); + it.fixme(browserName === 'webkit', 'Our WebKit embedder does not respect window features'); - // Our WebKit embedder does not respect window features. const context = await browser.newContext({ viewport: null }); const page = await context.newPage(); await page.goto(server.EMPTY_PAGE); @@ -190,8 +189,9 @@ it('Page.bringToFront should work', async ({ browser }) => { await page2.close(); }); -it.skip('should click in OOPIF', async ({ browserName, launchPersistent, server }) => { - it.fixme(browserName === 'chromium'); +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) => { res.writeHead(200, { 'Content-Type': 'text/html' }); res.end(``); @@ -210,7 +210,9 @@ it.skip('should click in OOPIF', async ({ browserName, launchPersistent, server expect(consoleLog).toContain('ok'); }); -it.skip('should click bottom row w/ infobar in OOPIF', async ({ launchPersistent, server }) => { +it('should click bottom row w/ infobar in OOPIF', async ({ browserName, launchPersistent, server }) => { + it.fixme(browserName === 'chromium', 'Click is offset by the infobar height'); + server.setRoute('/empty.html', (req, res) => { res.writeHead(200, { 'Content-Type': 'text/html' }); res.end(` @@ -245,7 +247,8 @@ it.skip('should click bottom row w/ infobar in OOPIF', async ({ launchPersistent it('headless and headful should use same default fonts', async ({ page, browserName, browserType }) => { it.info().annotations.push({ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/11177' }); - it.fixme(browserName === 'firefox', 'Text is misaligned in headed vs headless'); + it.skip(browserName === 'firefox', 'Text is misaligned in headed vs headless'); + const genericFontFamilies = [ 'standard', 'serif', diff --git a/tests/library/inspector/cli-codegen-1.spec.ts b/tests/library/inspector/cli-codegen-1.spec.ts index 2c7a7d7668..c85ff66e0f 100644 --- a/tests/library/inspector/cli-codegen-1.spec.ts +++ b/tests/library/inspector/cli-codegen-1.spec.ts @@ -18,7 +18,6 @@ import { test, expect } from './inspectorTest'; test.describe('cli codegen', () => { test.skip(({ mode }) => mode !== 'default'); - test.fixme(({ browserName, headless }) => browserName === 'firefox' && !headless, 'Focus is off'); test('should click', async ({ page, openRecorder }) => { const recorder = await openRecorder(); @@ -609,8 +608,6 @@ test.describe('cli codegen', () => { }); test('should await popup', async ({ page, openRecorder, browserName, headless }) => { - test.fixme(browserName === 'webkit' && !headless, 'Middle click does not open a popup in our webkit embedder'); - const recorder = await openRecorder(); await recorder.setContentAndWait('link'); diff --git a/tests/library/inspector/cli-codegen-2.spec.ts b/tests/library/inspector/cli-codegen-2.spec.ts index 6af03e2750..5183ab69ed 100644 --- a/tests/library/inspector/cli-codegen-2.spec.ts +++ b/tests/library/inspector/cli-codegen-2.spec.ts @@ -105,8 +105,6 @@ test.describe('cli codegen', () => { }); test('should upload a single file', async ({ page, openRecorder, browserName, asset }) => { - test.fixme(browserName === 'firefox', 'Hangs'); - const recorder = await openRecorder(); await recorder.setContentAndWait(`
@@ -137,8 +135,6 @@ test.describe('cli codegen', () => { }); test('should upload multiple files', async ({ page, openRecorder, browserName, asset }) => { - test.fixme(browserName === 'firefox', 'Hangs'); - const recorder = await openRecorder(); await recorder.setContentAndWait(` @@ -169,8 +165,6 @@ test.describe('cli codegen', () => { }); test('should clear files', async ({ page, openRecorder, browserName, asset }) => { - test.fixme(browserName === 'firefox', 'Hangs'); - const recorder = await openRecorder(); await recorder.setContentAndWait(` @@ -371,8 +365,6 @@ test.describe('cli codegen', () => { }); test('should not clash pages', async ({ page, openRecorder, browserName }) => { - test.fixme(browserName === 'firefox', 'Times out on Firefox, maybe the focus issue'); - const recorder = await openRecorder(); const [popup1] = await Promise.all([ page.context().waitForEvent('page'), @@ -445,7 +437,7 @@ test.describe('cli codegen', () => { }); test('should update active model on action', async ({ page, openRecorder, browserName, headless }) => { - test.fixme(browserName !== 'chromium'); + test.fixme(browserName === 'webkit'); const recorder = await openRecorder(); await recorder.setContentAndWait(``); diff --git a/tests/library/logger.spec.ts b/tests/library/logger.spec.ts index 8ee19245c3..923ca7d179 100644 --- a/tests/library/logger.spec.ts +++ b/tests/library/logger.spec.ts @@ -17,7 +17,8 @@ import { playwrightTest as it, expect } from '../config/browserTest'; it('should log @smoke', async ({ browserType, mode }) => { - it.fixme(mode === 'docker', 'logger is not plumbed into the remote connection'); + it.skip(mode === 'docker', 'logger is not plumbed into the remote connection'); + const log = []; const browser = await browserType.launch({ logger: { log: (name, severity, message) => log.push({ name, severity, message }), diff --git a/tests/library/proxy.spec.ts b/tests/library/proxy.spec.ts index 7032129071..fab4a0e25c 100644 --- a/tests/library/proxy.spec.ts +++ b/tests/library/proxy.spec.ts @@ -92,7 +92,7 @@ it.describe('should proxy local network requests', () => { } ]) { it(`${params.description}`, async ({ platform, browserName, browserType, server, proxyServer }) => { - it.fixme(browserName === 'webkit' && platform === 'darwin' && ['localhost', '127.0.0.1'].includes(params.target), 'Flaky on macOS; needs investigation.'); + it.skip(browserName === 'webkit' && platform === 'darwin' && ['localhost', '127.0.0.1'].includes(params.target), 'Mac webkit does not proxy localhost.'); const path = `/target-${additionalBypass}-${params.target}.html`; server.setRoute(path, async (req, res) => { @@ -178,8 +178,6 @@ it('should work with authenticate followed by redirect', async ({ browserName, b }); it('should exclude patterns', async ({ browserType, server, browserName, headless }) => { - it.fixme(browserName === 'chromium' && !headless, 'Chromium headed crashes with CHECK(!in_frame_tree_) in RenderFrameImpl::OnDeleteFrame.'); - server.setRoute('/target.html', async (req, res) => { res.end('Served by the proxy'); }); diff --git a/tests/library/screenshot.spec.ts b/tests/library/screenshot.spec.ts index 2a673fda6a..842ecf84ae 100644 --- a/tests/library/screenshot.spec.ts +++ b/tests/library/screenshot.spec.ts @@ -377,7 +377,8 @@ browserTest.describe('element screenshot', () => { browserTest('should work if the main resource hangs', async ({ browser, browserName, mode, server }) => { browserTest.skip(mode !== 'default'); - browserTest.fixme(browserName === 'chromium', 'https://github.com/microsoft/playwright/issues/9757'); + browserTest.skip(browserName === 'chromium', 'https://github.com/microsoft/playwright/issues/9757'); + const page = await browser.newPage(); server.setRoute('/slow', (req, res) => { res.writeHead(200, { diff --git a/tests/library/trace-viewer.spec.ts b/tests/library/trace-viewer.spec.ts index 8bff11eb67..c404c6bd7f 100644 --- a/tests/library/trace-viewer.spec.ts +++ b/tests/library/trace-viewer.spec.ts @@ -126,7 +126,6 @@ test('should render events', async ({ showTraceViewer }) => { }); test('should render console', async ({ showTraceViewer, browserName }) => { - test.fixme(browserName === 'firefox', 'Firefox generates stray console message for page error'); const traceViewer = await showTraceViewer([traceFile]); await traceViewer.selectAction('page.evaluate'); await traceViewer.showConsoleTab(); @@ -137,7 +136,6 @@ test('should render console', async ({ showTraceViewer, browserName }) => { }); test('should open console errors on click', async ({ showTraceViewer, browserName }) => { - test.fixme(browserName === 'firefox', 'Firefox generates stray console message for page error'); const traceViewer = await showTraceViewer([traceFile]); expect(await traceViewer.actionIconsText('page.evaluate')).toEqual(['2', '1']); expect(await traceViewer.page.isHidden('.console-tab')).toBeTruthy(); diff --git a/tests/library/tracing.spec.ts b/tests/library/tracing.spec.ts index af9dc10fd6..c9792d0b17 100644 --- a/tests/library/tracing.spec.ts +++ b/tests/library/tracing.spec.ts @@ -22,9 +22,6 @@ import { parseTrace } from '../config/utils'; test.skip(({ trace }) => trace === 'on'); -// https://github.com/microsoft/playwright/issues/14285 -test.fixme(({ browserName, headless }) => browserName === 'firefox' && !headless); - test('should collect trace with resources, but no js', async ({ context, page, server }, testInfo) => { await context.tracing.start({ screenshots: true, snapshots: true }); await page.goto(server.PREFIX + '/frames/frame.html'); @@ -119,7 +116,6 @@ test('should not include buffers in the trace', async ({ context, page, server, }); test('should exclude internal pages', async ({ browserName, context, page, server }, testInfo) => { - test.fixme(true, 'https://github.com/microsoft/playwright/issues/6743'); await page.goto(server.EMPTY_PAGE); await context.tracing.start(); @@ -299,10 +295,11 @@ for (const params of [ } ]) { browserTest(`should produce screencast frames ${params.id}`, async ({ video, contextFactory, browserName, platform, headless }, testInfo) => { - browserTest.fixme(browserName === 'chromium' && video === 'on', 'Same screencast resolution conflicts'); + browserTest.skip(browserName === 'chromium' && video === 'on', 'Same screencast resolution conflicts'); browserTest.fixme(browserName === 'chromium' && !headless, 'Chromium screencast on headed has a min width issue'); browserTest.fixme(params.id === 'fit' && browserName === 'chromium' && platform === 'darwin', 'High DPI maxes image at 600x600'); browserTest.fixme(params.id === 'fit' && browserName === 'webkit' && platform === 'linux', 'Image size is flaky'); + browserTest.fixme(browserName === 'firefox' && !headless, 'Image size is different'); const scale = Math.min(800 / params.width, 600 / params.height, 1); const previewWidth = params.width * scale; diff --git a/tests/page/frame-hierarchy.spec.ts b/tests/page/frame-hierarchy.spec.ts index 9eaa016094..3b8f0fb19b 100644 --- a/tests/page/frame-hierarchy.spec.ts +++ b/tests/page/frame-hierarchy.spec.ts @@ -193,7 +193,7 @@ it('should report different frame instance when frame re-attaches', async ({ pag }); it('should refuse to display x-frame-options:deny iframe', async ({ page, server, browserName }) => { - it.fixme(browserName === 'firefox'); + it.skip(browserName === 'firefox'); server.setRoute('/x-frame-options-deny.html', async (req, res) => { res.setHeader('Content-Type', 'text/html'); diff --git a/tests/page/interception.spec.ts b/tests/page/interception.spec.ts index be58911d1a..db5e060da5 100644 --- a/tests/page/interception.spec.ts +++ b/tests/page/interception.spec.ts @@ -156,8 +156,6 @@ it('should work with regular expression passed from a different context', async }); it('should not break remote worker importScripts', async ({ page, server, browserName, browserMajorVersion }) => { - it.fixme(browserName && browserMajorVersion < 91); - await page.route('**', async route => { await route.continue(); }); diff --git a/tests/page/page-autowaiting-basic.spec.ts b/tests/page/page-autowaiting-basic.spec.ts index 5d3e9812be..c4e1b50ea8 100644 --- a/tests/page/page-autowaiting-basic.spec.ts +++ b/tests/page/page-autowaiting-basic.spec.ts @@ -165,7 +165,7 @@ it('should await navigation when assigning location twice', async ({ page, serve }); it('should await navigation when evaluating reload', async ({ page, server, browserName }) => { - it.fixme(browserName === 'firefox', 'With fission enabled, navigations in Firefox start asynchronously'); + it.skip(browserName === 'firefox', 'With fission enabled, navigations in Firefox start asynchronously'); await page.goto(server.EMPTY_PAGE); const messages = initServer(server); diff --git a/tests/page/page-basic.spec.ts b/tests/page/page-basic.spec.ts index 7d0c93c185..f0980698c3 100644 --- a/tests/page/page-basic.spec.ts +++ b/tests/page/page-basic.spec.ts @@ -254,6 +254,6 @@ it('frame.press should work', async ({ page, server }) => { }); it('has navigator.webdriver set to true', async ({ page, browserName }) => { - it.fixme(browserName === 'firefox'); + it.skip(browserName === 'firefox'); expect(await page.evaluate(() => navigator.webdriver)).toBe(true); }); diff --git a/tests/page/page-click-scroll.spec.ts b/tests/page/page-click-scroll.spec.ts index cfef31023c..12bc4ada39 100644 --- a/tests/page/page-click-scroll.spec.ts +++ b/tests/page/page-click-scroll.spec.ts @@ -17,7 +17,6 @@ import { expect, test as it } from './pageTest'; it('should not hit scroll bar', async ({ page, browserName, platform }) => { - it.fixme(browserName === 'webkit' && platform === 'darwin'); it.fixme(browserName === 'webkit' && platform === 'linux', 'Fails in headless and in headful on Ubuntu 22.04'); it.fixme(browserName === 'webkit' && platform === 'win32', 'https://github.com/microsoft/playwright/issues/18452'); diff --git a/tests/page/page-event-crash.spec.ts b/tests/page/page-event-crash.spec.ts index c4f8e38022..11503bfbc0 100644 --- a/tests/page/page-event-crash.spec.ts +++ b/tests/page/page-event-crash.spec.ts @@ -16,17 +16,14 @@ */ import { test as it, expect } from './pageTest'; -import * as os from 'os'; function crash({ page, toImpl, browserName, platform, mode }: any) { - if (browserName === 'chromium') { + if (browserName === 'chromium') page.goto('chrome://crash').catch(e => {}); - } else if (browserName === 'webkit') { - it.fixme(platform === 'darwin' && parseInt(os.release(), 10) >= 20, 'Timing out after roll on BigSur'); + else if (browserName === 'webkit') toImpl(page)._delegate._session.send('Page.crash', {}).catch(e => {}); - } else if (browserName === 'firefox') { + else if (browserName === 'firefox') toImpl(page)._delegate._session.send('Page.crash', {}).catch(e => {}); - } } it.describe('', () => { diff --git a/tests/page/page-event-popup.spec.ts b/tests/page/page-event-popup.spec.ts index 6a4573c9ca..c04c7ab085 100644 --- a/tests/page/page-event-popup.spec.ts +++ b/tests/page/page-event-popup.spec.ts @@ -47,8 +47,6 @@ it('should emit for immediately closed popups', async ({ page }) => { }); it('should emit for immediately closed popups 2', async ({ page, server, browserName, video }) => { - it.fixme(browserName === 'firefox' && video === 'on'); - await page.goto(server.EMPTY_PAGE); const [popup] = await Promise.all([ page.waitForEvent('popup'), diff --git a/tests/page/page-goto.spec.ts b/tests/page/page-goto.spec.ts index bb9acc0f14..efdf1fd48d 100644 --- a/tests/page/page-goto.spec.ts +++ b/tests/page/page-goto.spec.ts @@ -16,7 +16,6 @@ */ import url from 'url'; -import os from 'os'; import { test as it, expect } from './pageTest'; import { expectedSSLError } from '../config/utils'; @@ -254,7 +253,7 @@ it('should work when page calls history API in beforeunload', async ({ page, ser }); it('should fail when navigating to bad url', async ({ mode, page, browserName }) => { - it.fixme(mode === 'service', 'baseURL is inherited from webServer in config'); + it.skip(mode === 'service', 'baseURL is inherited from webServer in config'); let error = null; await page.goto('asdfasdf').catch(e => error = e); if (browserName === 'chromium' || browserName === 'webkit') @@ -594,7 +593,6 @@ it('should not throw unhandled rejections on invalid url', async ({ page, server }); it('should not crash when RTCPeerConnection is used', async ({ page, server, browserName, platform }) => { - it.fixme(browserName === 'webkit' && platform === 'darwin' && parseInt(os.release(), 10) === 18, 'Does not work on MacOS 10.14'); server.setRoute('/rtc.html', (_, res) => { res.end(` @@ -619,7 +617,6 @@ it('should not crash when RTCPeerConnection is used', async ({ page, server, bro }); it('should properly wait for load', async ({ page, server, browserName }) => { - it.fixme(browserName === 'webkit', 'WebKit has a bug where Page.frameStoppedLoading is sent too early.'); server.setRoute('/slow.js', async (req, res) => { await new Promise(x => setTimeout(x, 100)); res.writeHead(200, { 'Content-Type': 'application/javascript' }); @@ -655,7 +652,6 @@ it('should not resolve goto upon window.stop()', async ({ browserName, page, ser }); it('should return from goto if new navigation is started', async ({ page, server, browserName, isAndroid }) => { - it.fixme(browserName === 'webkit', 'WebKit has a bug where Page.frameStoppedLoading is sent too early.'); it.fixme(isAndroid); server.setRoute('/slow.js', async (req, res) => void 0); let finished = false; diff --git a/tests/page/page-network-response.spec.ts b/tests/page/page-network-response.spec.ts index 449ebbb83c..755b2af7b6 100644 --- a/tests/page/page-network-response.spec.ts +++ b/tests/page/page-network-response.spec.ts @@ -32,7 +32,8 @@ it('should work @smoke', async ({ page, server }) => { }); it('should return multiple header value', async ({ page, server, browserName, platform }) => { - it.fixme(browserName === 'webkit' && platform === 'win32', 'libcurl does not support non-set-cookie multivalue headers'); + it.skip(browserName === 'webkit' && platform === 'win32', 'libcurl does not support non-set-cookie multivalue headers'); + server.setRoute('/headers', (req, res) => { // Headers array is only supported since Node v14.14.0 so we write directly to the socket. // res.writeHead(200, ['name-a', 'v1','name-b', 'v4','Name-a', 'v2', 'name-A', 'v3']); @@ -179,7 +180,7 @@ it('should return status text', async ({ page, server }) => { it('should report all headers', async ({ page, server, browserName, platform, isElectron, browserMajorVersion }) => { it.skip(isElectron && browserMajorVersion < 99, 'This needs Chromium >= 99'); - it.fixme(browserName === 'webkit' && platform === 'win32', 'libcurl does not support non-set-cookie multivalue headers'); + it.skip(browserName === 'webkit' && platform === 'win32', 'libcurl does not support non-set-cookie multivalue headers'); const expectedHeaders = { 'header-a': ['value-a', 'value-a-1', 'value-a-2'], @@ -238,7 +239,7 @@ it('should report multiple set-cookie headers', async ({ page, server, isElectro }); it('should behave the same way for headers and allHeaders', async ({ page, server, browserName, platform }) => { - it.fixme(browserName === 'webkit' && platform === 'win32', 'libcurl does not support non-set-cookie multivalue headers'); + it.skip(browserName === 'webkit' && platform === 'win32', 'libcurl does not support non-set-cookie multivalue headers'); server.setRoute('/headers', (req, res) => { const headers = { 'Set-Cookie': ['a=b', 'c=d'], @@ -271,7 +272,7 @@ it('should behave the same way for headers and allHeaders', async ({ page, serve it('should provide a Response with a file URL', async ({ page, asset, isAndroid, isElectron, isWindows, browserName, browserMajorVersion }) => { it.skip(isAndroid, 'No files on Android'); - it.fixme(browserName === 'firefox', 'Firefox does return null for file:// URLs'); + it.skip(browserName === 'firefox', 'Firefox does return null for file:// URLs'); const fileurl = url.pathToFileURL(asset('frames/two-frames.html')).href; const response = await page.goto(fileurl); diff --git a/tests/page/page-request-continue.spec.ts b/tests/page/page-request-continue.spec.ts index ccf362e858..7fb1ae6d0d 100644 --- a/tests/page/page-request-continue.spec.ts +++ b/tests/page/page-request-continue.spec.ts @@ -251,7 +251,7 @@ it.describe('post data', () => { it('should use content-type from original request', async ({ page, server, browserName }) => { it.info().annotations.push({ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/16736' }); - it.fixme(browserName === 'firefox'); + await page.goto(server.EMPTY_PAGE); await page.route(`${server.PREFIX}/title.html`, route => route.continue({ postData: '{"b":2}' })); const [request] = await Promise.all([ diff --git a/tests/page/page-request-fulfill.spec.ts b/tests/page/page-request-fulfill.spec.ts index e61988f93a..85b985026b 100644 --- a/tests/page/page-request-fulfill.spec.ts +++ b/tests/page/page-request-fulfill.spec.ts @@ -308,7 +308,7 @@ it('should fulfill with fetch response that has multiple set-cookie', async ({ p it('headerValue should return set-cookie from intercepted response', async ({ page, server, browserName }) => { it.fail(browserName === 'chromium', 'Set-Cookie is missing in response after interception'); - it.fixme(browserName === 'webkit', 'Set-Cookie with \n in intercepted response does not pass validation in WebCore, see also https://github.com/microsoft/playwright/pull/9273'); + it.skip(browserName === 'webkit', 'Set-Cookie with \n in intercepted response does not pass validation in WebCore, see also https://github.com/microsoft/playwright/pull/9273'); await page.route('**/empty.html', async route => { route.fulfill({ status: 200, diff --git a/tests/page/page-screenshot.spec.ts b/tests/page/page-screenshot.spec.ts index 992488e33d..10a5c5969b 100644 --- a/tests/page/page-screenshot.spec.ts +++ b/tests/page/page-screenshot.spec.ts @@ -61,7 +61,8 @@ it.describe('page screenshot', () => { }); it('should capture blinking caret if explicitly asked for', async ({ page, server, browserName }) => { - it.fixme(browserName === 'firefox', 'browser-level screenshot API in firefox does not capture caret'); + it.skip(browserName === 'firefox', 'browser-level screenshot API in firefox does not capture caret'); + await page.setContent(`