diff --git a/tests/library/browsercontext-har.spec.ts b/tests/library/browsercontext-har.spec.ts index 6f2317d3fb..07c7ee62ee 100644 --- a/tests/library/browsercontext-har.spec.ts +++ b/tests/library/browsercontext-har.spec.ts @@ -19,9 +19,7 @@ import fs from 'fs'; import path from 'path'; import extractZip from '../../packages/playwright-core/bundles/zip/node_modules/extract-zip'; -it('should context.routeFromHAR, matching the method and following redirects', async ({ context, isAndroid, asset }) => { - it.fixme(isAndroid); - +it('should context.routeFromHAR, matching the method and following redirects', async ({ context, asset }) => { const path = asset('har-fulfill.har'); await context.routeFromHAR(path); const page = await context.newPage(); @@ -32,9 +30,7 @@ it('should context.routeFromHAR, matching the method and following redirects', a await expect(page.locator('body')).toHaveCSS('background-color', 'rgb(255, 0, 0)'); }); -it('should page.routeFromHAR, matching the method and following redirects', async ({ context, isAndroid, asset }) => { - it.fixme(isAndroid); - +it('should page.routeFromHAR, matching the method and following redirects', async ({ context, asset }) => { const path = asset('har-fulfill.har'); const page = await context.newPage(); await page.routeFromHAR(path); @@ -45,9 +41,7 @@ it('should page.routeFromHAR, matching the method and following redirects', asyn await expect(page.locator('body')).toHaveCSS('background-color', 'rgb(255, 0, 0)'); }); -it('fallback:continue should continue when not found in har', async ({ context, server, isAndroid, asset }) => { - it.fixme(isAndroid); - +it('fallback:continue should continue when not found in har', async ({ context, server, asset }) => { const path = asset('har-fulfill.har'); await context.routeFromHAR(path, { notFound: 'fallback' }); const page = await context.newPage(); @@ -55,9 +49,7 @@ it('fallback:continue should continue when not found in har', async ({ context, await expect(page.locator('body')).toHaveCSS('background-color', 'rgb(255, 192, 203)'); }); -it('by default should abort requests not found in har', async ({ context, server, isAndroid, asset }) => { - it.fixme(isAndroid); - +it('by default should abort requests not found in har', async ({ context, server, asset }) => { const path = asset('har-fulfill.har'); await context.routeFromHAR(path); const page = await context.newPage(); @@ -65,9 +57,7 @@ it('by default should abort requests not found in har', async ({ context, server expect(error instanceof Error).toBe(true); }); -it('fallback:continue should continue requests on bad har', async ({ context, server, isAndroid }, testInfo) => { - it.fixme(isAndroid); - +it('fallback:continue should continue requests on bad har', async ({ context, server }, testInfo) => { const path = testInfo.outputPath('test.har'); fs.writeFileSync(path, JSON.stringify({ log: {} }), 'utf-8'); await context.routeFromHAR(path, { notFound: 'fallback' }); @@ -76,9 +66,7 @@ it('fallback:continue should continue requests on bad har', async ({ context, se await expect(page.locator('body')).toHaveCSS('background-color', 'rgb(255, 192, 203)'); }); -it('should only handle requests matching url filter', async ({ context, isAndroid, asset }) => { - it.fixme(isAndroid); - +it('should only handle requests matching url filter', async ({ context, asset }) => { const path = asset('har-fulfill.har'); await context.routeFromHAR(path, { notFound: 'fallback', url: '**/*.js' }); const page = await context.newPage(); @@ -96,9 +84,7 @@ it('should only handle requests matching url filter', async ({ context, isAndroi await expect(page.locator('body')).toHaveCSS('background-color', 'rgba(0, 0, 0, 0)'); }); -it('should only context.routeFromHAR requests matching url filter', async ({ context, isAndroid, asset }) => { - it.fixme(isAndroid); - +it('should only context.routeFromHAR requests matching url filter', async ({ context, asset }) => { const path = asset('har-fulfill.har'); await context.routeFromHAR(path, { url: '**/*.js' }); const page = await context.newPage(); @@ -116,9 +102,7 @@ it('should only context.routeFromHAR requests matching url filter', async ({ con await expect(page.locator('body')).toHaveCSS('background-color', 'rgba(0, 0, 0, 0)'); }); -it('should only page.routeFromHAR requests matching url filter', async ({ context, isAndroid, asset }) => { - it.fixme(isAndroid); - +it('should only page.routeFromHAR requests matching url filter', async ({ context, asset }) => { const path = asset('har-fulfill.har'); const page = await context.newPage(); await page.routeFromHAR(path, { url: '**/*.js' }); @@ -136,9 +120,7 @@ it('should only page.routeFromHAR requests matching url filter', async ({ contex await expect(page.locator('body')).toHaveCSS('background-color', 'rgba(0, 0, 0, 0)'); }); -it('should support regex filter', async ({ context, isAndroid, asset }) => { - it.fixme(isAndroid); - +it('should support regex filter', async ({ context, asset }) => { const path = asset('har-fulfill.har'); await context.routeFromHAR(path, { url: /.*(\.js|.*\.css|no.playwright\/)$/ }); const page = await context.newPage(); @@ -147,9 +129,7 @@ it('should support regex filter', async ({ context, isAndroid, asset }) => { await expect(page.locator('body')).toHaveCSS('background-color', 'rgb(255, 0, 0)'); }); -it('newPage should fulfill from har, matching the method and following redirects', async ({ browser, isAndroid, asset }) => { - it.fixme(isAndroid); - +it('newPage should fulfill from har, matching the method and following redirects', async ({ browser, asset }) => { const path = asset('har-fulfill.har'); const page = await browser.newPage(); await page.routeFromHAR(path); @@ -161,9 +141,7 @@ it('newPage should fulfill from har, matching the method and following redirects await page.close(); }); -it('should change document URL after redirected navigation', async ({ context, isAndroid, asset }) => { - it.fixme(isAndroid); - +it('should change document URL after redirected navigation', async ({ context, asset }) => { const path = asset('har-redirect.har'); await context.routeFromHAR(path); const page = await context.newPage(); @@ -177,9 +155,7 @@ it('should change document URL after redirected navigation', async ({ context, i expect(await page.evaluate(() => location.href)).toBe('https://www.theverge.com/'); }); -it('should change document URL after redirected navigation on click', async ({ server, context, isAndroid, asset }) => { - it.fixme(isAndroid); - +it('should change document URL after redirected navigation on click', async ({ server, context, asset }) => { const path = asset('har-redirect.har'); await context.routeFromHAR(path, { url: /.*theverge.*/ }); const page = await context.newPage(); @@ -194,9 +170,7 @@ it('should change document URL after redirected navigation on click', async ({ s expect(await page.evaluate(() => location.href)).toBe('https://www.theverge.com/'); }); -it('should goBack to redirected navigation', async ({ context, isAndroid, asset, server }) => { - it.fixme(isAndroid); - +it('should goBack to redirected navigation', async ({ context, asset, server }) => { const path = asset('har-redirect.har'); await context.routeFromHAR(path, { url: /.*theverge.*/ }); const page = await context.newPage(); @@ -209,8 +183,7 @@ it('should goBack to redirected navigation', async ({ context, isAndroid, asset, expect(await page.evaluate(() => location.href)).toBe('https://www.theverge.com/'); }); -it('should goForward to redirected navigation', async ({ context, isAndroid, asset, server, browserName }) => { - it.fixme(isAndroid); +it('should goForward to redirected navigation', async ({ context, asset, server, browserName }) => { it.fixme(browserName === 'firefox', 'Flaky in firefox'); const path = asset('har-redirect.har'); @@ -228,9 +201,7 @@ it('should goForward to redirected navigation', async ({ context, isAndroid, ass expect(await page.evaluate(() => location.href)).toBe('https://www.theverge.com/'); }); -it('should reload redirected navigation', async ({ context, isAndroid, asset, server }) => { - it.fixme(isAndroid); - +it('should reload redirected navigation', async ({ context, asset, server }) => { const path = asset('har-redirect.har'); await context.routeFromHAR(path, { url: /.*theverge.*/ }); const page = await context.newPage(); @@ -242,9 +213,7 @@ it('should reload redirected navigation', async ({ context, isAndroid, asset, se expect(await page.evaluate(() => location.href)).toBe('https://www.theverge.com/'); }); -it('should fulfill from har with content in a file', async ({ context, isAndroid, asset }) => { - it.fixme(isAndroid); - +it('should fulfill from har with content in a file', async ({ context, asset }) => { const path = asset('har-sha1.har'); await context.routeFromHAR(path); const page = await context.newPage(); @@ -252,9 +221,7 @@ it('should fulfill from har with content in a file', async ({ context, isAndroid expect(await page.content()).toBe('Hello, world'); }); -it('should round-trip har.zip', async ({ contextFactory, isAndroid, server }, testInfo) => { - it.fixme(isAndroid); - +it('should round-trip har.zip', async ({ contextFactory, server }, testInfo) => { const harPath = testInfo.outputPath('har.zip'); const context1 = await contextFactory({ recordHar: { mode: 'minimal', path: harPath } }); const page1 = await context1.newPage(); @@ -269,9 +236,7 @@ it('should round-trip har.zip', async ({ contextFactory, isAndroid, server }, te await expect(page2.locator('body')).toHaveCSS('background-color', 'rgb(255, 192, 203)'); }); -it('should produce extracted zip', async ({ contextFactory, isAndroid, server }, testInfo) => { - it.fixme(isAndroid); - +it('should produce extracted zip', async ({ contextFactory, server }, testInfo) => { const harPath = testInfo.outputPath('har.har'); const context1 = await contextFactory({ recordHar: { mode: 'minimal', path: harPath, content: 'attach' } }); const page1 = await context1.newPage(); @@ -290,9 +255,7 @@ it('should produce extracted zip', async ({ contextFactory, isAndroid, server }, await expect(page2.locator('body')).toHaveCSS('background-color', 'rgb(255, 192, 203)'); }); -it('should round-trip extracted har.zip', async ({ contextFactory, isAndroid, server }, testInfo) => { - it.fixme(isAndroid); - +it('should round-trip extracted har.zip', async ({ contextFactory, server }, testInfo) => { const harPath = testInfo.outputPath('har.zip'); const context1 = await contextFactory({ recordHar: { mode: 'minimal', path: harPath } }); const page1 = await context1.newPage(); @@ -310,8 +273,7 @@ it('should round-trip extracted har.zip', async ({ contextFactory, isAndroid, se await expect(page2.locator('body')).toHaveCSS('background-color', 'rgb(255, 192, 203)'); }); -it('should round-trip har with postData', async ({ contextFactory, isAndroid, server }, testInfo) => { - it.fixme(isAndroid); +it('should round-trip har with postData', async ({ contextFactory, server }, testInfo) => { server.setRoute('/echo', async (req, res) => { const body = await req.postBody; res.end(body.toString()); @@ -341,9 +303,7 @@ it('should round-trip har with postData', async ({ contextFactory, isAndroid, se expect(await page2.evaluate(fetchFunction, '4').catch(e => e)).toBeTruthy(); }); -it('should disambiguate by header', async ({ contextFactory, isAndroid, server }, testInfo) => { - it.fixme(isAndroid); - +it('should disambiguate by header', async ({ contextFactory, server }, testInfo) => { server.setRoute('/echo', async (req, res) => { res.end(req.headers['baz']); }); @@ -381,9 +341,7 @@ it('should disambiguate by header', async ({ contextFactory, isAndroid, server } expect(await page2.evaluate(fetchFunction, 'baz4')).toBe('baz1'); }); -it('should update har.zip for context', async ({ contextFactory, isAndroid, server }, testInfo) => { - it.fixme(isAndroid); - +it('should update har.zip for context', async ({ contextFactory, server }, testInfo) => { const harPath = testInfo.outputPath('har.zip'); const context1 = await contextFactory(); await context1.routeFromHAR(harPath, { update: true }); @@ -399,9 +357,7 @@ it('should update har.zip for context', async ({ contextFactory, isAndroid, serv await expect(page2.locator('body')).toHaveCSS('background-color', 'rgb(255, 192, 203)'); }); -it('should update har.zip for page', async ({ contextFactory, isAndroid, server }, testInfo) => { - it.fixme(isAndroid); - +it('should update har.zip for page', async ({ contextFactory, server }, testInfo) => { const harPath = testInfo.outputPath('har.zip'); const context1 = await contextFactory(); const page1 = await context1.newPage(); @@ -417,9 +373,7 @@ it('should update har.zip for page', async ({ contextFactory, isAndroid, server await expect(page2.locator('body')).toHaveCSS('background-color', 'rgb(255, 192, 203)'); }); -it('should update extracted har.zip for page', async ({ contextFactory, isAndroid, server }, testInfo) => { - it.fixme(isAndroid); - +it('should update extracted har.zip for page', async ({ contextFactory, server }, testInfo) => { const harPath = testInfo.outputPath('har.har'); const context1 = await contextFactory(); const page1 = await context1.newPage(); diff --git a/tests/library/defaultbrowsercontext-2.spec.ts b/tests/library/defaultbrowsercontext-2.spec.ts index ab4c12ffda..b48b1834c0 100644 --- a/tests/library/defaultbrowsercontext-2.spec.ts +++ b/tests/library/defaultbrowsercontext-2.spec.ts @@ -224,9 +224,7 @@ it('should connect to a browser with the default page', async ({ browserType,cre await context.close(); }); -it('should support har option', async ({ isAndroid, launchPersistent, asset }) => { - it.fixme(isAndroid); - +it('should support har option', async ({ launchPersistent, asset }) => { const path = asset('har-fulfill.har'); const { page } = await launchPersistent(); await page.routeFromHAR(path); diff --git a/tests/page/frame-goto.spec.ts b/tests/page/frame-goto.spec.ts index cb9620c6e6..80cbf765b2 100644 --- a/tests/page/frame-goto.spec.ts +++ b/tests/page/frame-goto.spec.ts @@ -40,9 +40,7 @@ it('should reject when frame detaches', async ({ page, server }) => { expect(error.message).toContain('frame was detached'); }); -it('should continue after client redirect', async ({ page, server, isAndroid }) => { - it.fixme(isAndroid); - +it('should continue after client redirect', async ({ page, server }) => { server.setRoute('/frames/script.js', () => {}); const url = server.PREFIX + '/frames/child-redirect.html'; const error = await page.goto(url, { timeout: 5000, waitUntil: 'networkidle' }).catch(e => e); diff --git a/tests/page/locator-frame.spec.ts b/tests/page/locator-frame.spec.ts index d4b4064fda..cc40421168 100644 --- a/tests/page/locator-frame.spec.ts +++ b/tests/page/locator-frame.spec.ts @@ -106,8 +106,7 @@ it('should wait for frame 2', async ({ page, server }) => { await page.frameLocator('iframe').locator('button').click(); }); -it('should wait for frame to go', async ({ page, server, isAndroid }) => { - it.fail(isAndroid, 'iframe is not removed on Android'); +it('should wait for frame to go', async ({ page, server }) => { await routeIframe(page); await page.goto(server.EMPTY_PAGE); setTimeout(() => page.$eval('iframe', e => e.remove()).catch(() => {}), 300); diff --git a/tests/page/matchers.misc.spec.ts b/tests/page/matchers.misc.spec.ts index f4bacb816e..360549177c 100644 --- a/tests/page/matchers.misc.spec.ts +++ b/tests/page/matchers.misc.spec.ts @@ -16,8 +16,7 @@ import { test as it, expect } from './pageTest'; -it('should outlive frame navigation', async ({ page, server, isAndroid }) => { - it.fixme(isAndroid, 'Should be fixed when rolling the emulator'); +it('should outlive frame navigation', async ({ page, server }) => { await page.goto(server.EMPTY_PAGE); setTimeout(async () => { await page.goto(server.PREFIX + '/grid.html').catch(() => {}); diff --git a/tests/page/network-post-data.spec.ts b/tests/page/network-post-data.spec.ts index 99a322840c..bcc1f08704 100644 --- a/tests/page/network-post-data.spec.ts +++ b/tests/page/network-post-data.spec.ts @@ -16,8 +16,6 @@ import { test as it, expect } from './pageTest'; -it.fixme(({ isAndroid }) => isAndroid, 'Post data does not work'); - it('should return correct postData buffer for utf-8 body', async ({ page, server }) => { await page.goto(server.EMPTY_PAGE); const value = 'baẞ'; diff --git a/tests/page/page-autowaiting-basic.spec.ts b/tests/page/page-autowaiting-basic.spec.ts index 2b598b88d2..5de8f17685 100644 --- a/tests/page/page-autowaiting-basic.spec.ts +++ b/tests/page/page-autowaiting-basic.spec.ts @@ -28,8 +28,6 @@ function initServer(server: TestServer): string[] { return messages; } -it.skip(({ isAndroid }) => isAndroid, 'Too flaky on Android'); - it('should await navigation when clicking anchor', async ({ page, server }) => { const messages = initServer(server); await page.setContent(`empty.html`); diff --git a/tests/page/page-click-scroll.spec.ts b/tests/page/page-click-scroll.spec.ts index 5e0e6b512f..c052b6c548 100644 --- a/tests/page/page-click-scroll.spec.ts +++ b/tests/page/page-click-scroll.spec.ts @@ -16,10 +16,9 @@ import { test as it } from './pageTest'; -it('should not hit scroll bar', async ({ page, isAndroid, browserName, platform }) => { +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.skip(isAndroid); await page.setContent(`