From 9280037d0f952eafb5ddb68e649254dd4df33f25 Mon Sep 17 00:00:00 2001 From: Pavel Feldman Date: Wed, 5 Aug 2020 11:43:40 -0700 Subject: [PATCH] chore(test): add blank lines (#3303) --- test/browsercontext-add-cookies.spec.js | 18 ++++++++++++++ test/browsercontext-page-event.spec.js | 2 ++ test/downloads-path.spec.js | 1 + test/elementhandle-bounding-box.spec.js | 6 +++++ test/elementhandle-click.spec.js | 8 ++++++ test/elementhandle-content-frame.spec.js | 4 +++ test/elementhandle-convenience.spec.js | 9 +++++++ test/elementhandle-owner-frame.spec.js | 6 +++++ test/elementhandle-press.spec.js | 4 +++ test/elementhandle-screenshot.spec.js | 22 +++++++++++++++++ test/elementhandle-scroll-into-view.spec.js | 6 +++++ test/elementhandle-select-text.spec.js | 4 +++ test/elementhandle-type.spec.js | 4 +++ test/eval-on-selector-all.spec.js | 7 ++++++ test/focus.spec.js | 4 +++ test/frame-hierarcy.spec.js | 11 +++++++++ test/geolocation.spec.js | 8 ++++++ test/headful.spec.js | 8 ++++++ test/ignorehttpserrors.spec.js | 4 +++ test/keyboard.spec.js | 27 +++++++++++++++++++++ test/logger.spec.js | 1 + test/page-add-init-script.spec.js | 9 +++++++ test/workers.spec.js | 10 ++++++++ 23 files changed, 183 insertions(+) diff --git a/test/browsercontext-add-cookies.spec.js b/test/browsercontext-add-cookies.spec.js index 8ecc8c8295..b2b0c028c6 100644 --- a/test/browsercontext-add-cookies.spec.js +++ b/test/browsercontext-add-cookies.spec.js @@ -26,6 +26,7 @@ it('should work', async({context, page, server}) => { }]); expect(await page.evaluate(() => document.cookie)).toEqual('password=123456'); }); + it('should roundtrip cookie', async({context, page, server}) => { await page.goto(server.EMPTY_PAGE); // @see https://en.wikipedia.org/wiki/Year_2038_problem @@ -42,6 +43,7 @@ it('should roundtrip cookie', async({context, page, server}) => { await context.addCookies(cookies); expect(await context.cookies()).toEqual(cookies); }); + it('should send cookie header', async({server, context}) => { let cookie = ''; server.setRoute('/empty.html', (req, res) => { @@ -53,6 +55,7 @@ it('should send cookie header', async({server, context}) => { await page.goto(server.EMPTY_PAGE); expect(cookie).toBe('cookie=value'); }); + it('should isolate cookies in browser contexts', async({context, server, browser}) => { const anotherContext = await browser.newContext(); await context.addCookies([{url: server.EMPTY_PAGE, name: 'isolatecookie', value: 'page1value'}]); @@ -68,6 +71,7 @@ it('should isolate cookies in browser contexts', async({context, server, browser expect(cookies2[0].value).toBe('page2value'); await anotherContext.close(); }); + it('should isolate session cookies', async({context, server, browser}) => { server.setRoute('/setcookie.html', (req, res) => { res.setHeader('Set-Cookie', 'session=value'); @@ -93,6 +97,7 @@ it('should isolate session cookies', async({context, server, browser}) => { await context2.close(); } }); + it('should isolate persistent cookies', async({context, server, browser}) => { server.setRoute('/setcookie.html', (req, res) => { res.setHeader('Set-Cookie', 'persistent=persistent-value; max-age=3600'); @@ -112,6 +117,7 @@ it('should isolate persistent cookies', async({context, server, browser}) => { expect(cookies2.length).toBe(0); await context2.close(); }); + it('should isolate send cookie header', async({server, context, browser}) => { let cookie = []; server.setRoute('/empty.html', (req, res) => { @@ -132,6 +138,7 @@ it('should isolate send cookie header', async({server, context, browser}) => { await context.close(); } }); + it.slow()('should isolate cookies between launches', async({browserType, server, defaultBrowserOptions}) => { const browser1 = await browserType.launch(defaultBrowserOptions); const context1 = await browser1.newContext(); @@ -144,6 +151,7 @@ it.slow()('should isolate cookies between launches', async({browserType, server, expect(cookies.length).toBe(0); await browser2.close(); }); + it('should set multiple cookies', async({context, page, server}) => { await page.goto(server.EMPTY_PAGE); await context.addCookies([{ @@ -163,6 +171,7 @@ it('should set multiple cookies', async({context, page, server}) => { 'multiple-2=bar', ]); }); + it('should have |expires| set to |-1| for session cookies', async({context, server}) => { await context.addCookies([{ url: server.EMPTY_PAGE, @@ -172,6 +181,7 @@ it('should have |expires| set to |-1| for session cookies', async({context, serv const cookies = await context.cookies(); expect(cookies[0].expires).toBe(-1); }); + it('should set cookie with reasonable defaults', async({context, server}) => { await context.addCookies([{ url: server.EMPTY_PAGE, @@ -190,6 +200,7 @@ it('should set cookie with reasonable defaults', async({context, server}) => { sameSite: 'None', }]); }); + it('should set a cookie with a path', async({context, page, server}) => { await page.goto(server.PREFIX + '/grid.html'); await context.addCookies([{ @@ -214,6 +225,7 @@ it('should set a cookie with a path', async({context, page, server}) => { await page.goto(server.PREFIX + '/grid.html'); expect(await page.evaluate('document.cookie')).toBe('gridcookie=GRID'); }); + it('should not set a cookie with blank page URL', async function({context, server}) { let error = null; try { @@ -228,6 +240,7 @@ it('should not set a cookie with blank page URL', async function({context, serve `Blank page can not have cookie "example-cookie-blank"` ); }); + it('should not set a cookie on a data URL page', async function({context}) { let error = null; try { @@ -237,6 +250,7 @@ it('should not set a cookie on a data URL page', async function({context}) { } expect(error.message).toContain('Data URL page can not have cookie "example-cookie"'); }); + it('should default to setting secure cookie for HTTPS websites', async({context, page, server}) => { await page.goto(server.EMPTY_PAGE); const SECURE_URL = 'https://example.com'; @@ -248,6 +262,7 @@ it('should default to setting secure cookie for HTTPS websites', async({context, const [cookie] = await context.cookies(SECURE_URL); expect(cookie.secure).toBe(true); }); + it('should be able to set unsecure cookie for HTTP website', async({context, page, server}) => { await page.goto(server.EMPTY_PAGE); const HTTP_URL = 'http://example.com'; @@ -259,6 +274,7 @@ it('should be able to set unsecure cookie for HTTP website', async({context, pag const [cookie] = await context.cookies(HTTP_URL); expect(cookie.secure).toBe(false); }); + it('should set a cookie on a different domain', async({context, page, server}) => { await page.goto(server.EMPTY_PAGE); await context.addCookies([{ @@ -278,6 +294,7 @@ it('should set a cookie on a different domain', async({context, page, server}) = sameSite: 'None', }]); }); + it('should set cookies for a frame', async({context, page, server}) => { await page.goto(server.EMPTY_PAGE); await context.addCookies([ @@ -295,6 +312,7 @@ it('should set cookies for a frame', async({context, page, server}) => { expect(await page.frames()[1].evaluate('document.cookie')).toBe('frame-cookie=value'); }); + it('should(not) block third party cookies', async({context, page, server}) => { await page.goto(server.EMPTY_PAGE); await page.evaluate(src => { diff --git a/test/browsercontext-page-event.spec.js b/test/browsercontext-page-event.spec.js index 958de2ad84..4188f93041 100644 --- a/test/browsercontext-page-event.spec.js +++ b/test/browsercontext-page-event.spec.js @@ -158,6 +158,7 @@ it('should fire page lifecycle events', async function({browser, server}) { ]); await context.close(); }); + it.fail(WEBKIT)('should work with Shift-clicking', async({browser, server}) => { // WebKit: Shift+Click does not open a new window. const context = await browser.newContext(); @@ -171,6 +172,7 @@ it.fail(WEBKIT)('should work with Shift-clicking', async({browser, server}) => { expect(await popup.opener()).toBe(null); await context.close(); }); + it.fail(WEBKIT || FFOX)('should work with Ctrl-clicking', async({browser, server}) => { // Firefox: reports an opener in this case. // WebKit: Ctrl+Click does not open a new tab. diff --git a/test/downloads-path.spec.js b/test/downloads-path.spec.js index c729188900..2807aeaf3a 100644 --- a/test/downloads-path.spec.js +++ b/test/downloads-path.spec.js @@ -99,6 +99,7 @@ it('should delete downloads when context closes', async({downloadsBrowser, downl expect(fs.existsSync(path)).toBeFalsy(); }); + it('should report downloads in downloadsPath folder', async({downloadsBrowser, downloadsPath, server}) => { const page = await downloadsBrowser.newPage({ acceptDownloads: true }); await page.setContent(`download`); diff --git a/test/elementhandle-bounding-box.spec.js b/test/elementhandle-bounding-box.spec.js index 4cfc3bda88..7e0840a076 100644 --- a/test/elementhandle-bounding-box.spec.js +++ b/test/elementhandle-bounding-box.spec.js @@ -25,6 +25,7 @@ it.fail(FFOX && !HEADLESS)('should work', async ({ page, server }) => { const box = await elementHandle.boundingBox(); expect(box).toEqual({ x: 100, y: 50, width: 50, height: 50 }); }); + it('should handle nested frames', async ({ page, server }) => { await page.setViewportSize({ width: 500, height: 500 }); await page.goto(server.PREFIX + '/frames/nested-frames.html'); @@ -33,11 +34,13 @@ it('should handle nested frames', async ({ page, server }) => { const box = await elementHandle.boundingBox(); expect(box).toEqual({ x: 24, y: 224, width: 268, height: 18 }); }); + it('should return null for invisible elements', async ({ page, server }) => { await page.setContent('
hi
'); const element = await page.$('div'); expect(await element.boundingBox()).toBe(null); }); + it('should force a layout', async ({ page, server }) => { await page.setViewportSize({ width: 500, height: 500 }); await page.setContent('
hello
'); @@ -46,6 +49,7 @@ it('should force a layout', async ({ page, server }) => { const box = await elementHandle.boundingBox(); expect(box).toEqual({ x: 8, y: 8, width: 100, height: 200 }); }); + it('should work with SVG nodes', async ({ page, server }) => { await page.setContent(` @@ -60,6 +64,7 @@ it('should work with SVG nodes', async ({ page, server }) => { }, element); expect(pwBoundingBox).toEqual(webBoundingBox); }); + it.skip(FFOX)('should work with page scale', async ({ browser, server }) => { const context = await browser.newContext({ viewport: { width: 400, height: 400, isMobile: true } }); const page = await context.newPage(); @@ -80,6 +85,7 @@ it.skip(FFOX)('should work with page scale', async ({ browser, server }) => { expect(Math.round(box.height * 100)).toBe(20 * 100); await context.close(); }); + it('should work when inline box child is outside of viewport', async ({ page, server }) => { await page.setContent(`
elements with force', async ({ page, server }) => { await page.setContent('hello
goodbye'); const br = await page.$('br'); const error = await br.click({ force: true }).catch(err => err); expect(error.message).toContain('Element is outside of the viewport'); }); + it('should double click the button', async ({ page, server }) => { await page.goto(server.PREFIX + '/input/button.html'); await page.evaluate(() => { diff --git a/test/elementhandle-content-frame.spec.js b/test/elementhandle-content-frame.spec.js index f22d11fe81..c0a35f0f3a 100644 --- a/test/elementhandle-content-frame.spec.js +++ b/test/elementhandle-content-frame.spec.js @@ -25,6 +25,7 @@ it('should work', async ({ page, server }) => { const frame = await elementHandle.contentFrame(); expect(frame).toBe(page.frames()[1]); }); + it('should work for cross-process iframes', async ({ page, server }) => { await page.goto(server.EMPTY_PAGE); await utils.attachFrame(page, 'frame1', server.CROSS_PROCESS_PREFIX + '/empty.html'); @@ -32,6 +33,7 @@ it('should work for cross-process iframes', async ({ page, server }) => { const frame = await elementHandle.contentFrame(); expect(frame).toBe(page.frames()[1]); }); + it('should work for cross-frame evaluations', async ({ page, server }) => { await page.goto(server.EMPTY_PAGE); await utils.attachFrame(page, 'frame1', server.EMPTY_PAGE); @@ -39,6 +41,7 @@ it('should work for cross-frame evaluations', async ({ page, server }) => { const elementHandle = await frame.evaluateHandle(() => window.top.document.querySelector('#frame1')); expect(await elementHandle.contentFrame()).toBe(frame); }); + it('should return null for non-iframes', async ({ page, server }) => { await page.goto(server.EMPTY_PAGE); await utils.attachFrame(page, 'frame1', server.EMPTY_PAGE); @@ -46,6 +49,7 @@ it('should return null for non-iframes', async ({ page, server }) => { const elementHandle = await frame.evaluateHandle(() => document.body); expect(await elementHandle.contentFrame()).toBe(null); }); + it('should return null for document.documentElement', async ({ page, server }) => { await page.goto(server.EMPTY_PAGE); await utils.attachFrame(page, 'frame1', server.EMPTY_PAGE); diff --git a/test/elementhandle-convenience.spec.js b/test/elementhandle-convenience.spec.js index bad03e27e3..d9d8b8d2d7 100644 --- a/test/elementhandle-convenience.spec.js +++ b/test/elementhandle-convenience.spec.js @@ -30,6 +30,7 @@ it('should have a nice preview', async ({ page, server }) => { expect(String(text)).toBe('JSHandle@#text=Text,↡more text'); expect(String(check)).toBe('JSHandle@'); }); + it('getAttribute should work', async ({ page, server }) => { await page.goto(`${server.PREFIX}/dom.html`); const handle = await page.$('#outer'); @@ -38,18 +39,21 @@ it('getAttribute should work', async ({ page, server }) => { expect(await page.getAttribute('#outer', 'name')).toBe('value'); expect(await page.getAttribute('#outer', 'foo')).toBe(null); }); + it('innerHTML should work', async ({ page, server }) => { await page.goto(`${server.PREFIX}/dom.html`); const handle = await page.$('#outer'); expect(await handle.innerHTML()).toBe('
Text,\nmore text
'); expect(await page.innerHTML('#outer')).toBe('
Text,\nmore text
'); }); + it('innerText should work', async ({ page, server }) => { await page.goto(`${server.PREFIX}/dom.html`); const handle = await page.$('#inner'); expect(await handle.innerText()).toBe('Text, more text'); expect(await page.innerText('#inner')).toBe('Text, more text'); }); + it('innerText should throw', async ({ page, server }) => { await page.setContent(`text`); const error1 = await page.innerText('svg').catch(e => e); @@ -58,12 +62,14 @@ it('innerText should throw', async ({ page, server }) => { const error2 = await handle.innerText().catch(e => e); expect(error2.message).toContain('Not an HTMLElement'); }); + it('textContent should work', async ({ page, server }) => { await page.goto(`${server.PREFIX}/dom.html`); const handle = await page.$('#inner'); expect(await handle.textContent()).toBe('Text,\nmore text'); expect(await page.textContent('#inner')).toBe('Text,\nmore text'); }); + it('textContent should be atomic', async ({ playwright, page }) => { const createDummySelector = () => ({ create(root, target) { }, @@ -86,6 +92,7 @@ it('textContent should be atomic', async ({ playwright, page }) => { expect(tc).toBe('Hello'); expect(await page.evaluate(() => document.querySelector('div').textContent)).toBe('modified'); }); + it('innerText should be atomic', async ({ playwright, page }) => { const createDummySelector = () => ({ create(root, target) { }, @@ -108,6 +115,7 @@ it('innerText should be atomic', async ({ playwright, page }) => { expect(tc).toBe('Hello'); expect(await page.evaluate(() => document.querySelector('div').innerText)).toBe('modified'); }); + it('innerHTML should be atomic', async ({ playwright, page }) => { const createDummySelector = () => ({ create(root, target) { }, @@ -130,6 +138,7 @@ it('innerHTML should be atomic', async ({ playwright, page }) => { expect(tc).toBe('Helloworld'); expect(await page.evaluate(() => document.querySelector('div').innerHTML)).toBe('modified'); }); + it('getAttribute should be atomic', async ({ playwright, page }) => { const createDummySelector = () => ({ create(root, target) { }, diff --git a/test/elementhandle-owner-frame.spec.js b/test/elementhandle-owner-frame.spec.js index 7e6e850965..4e7ed651a3 100644 --- a/test/elementhandle-owner-frame.spec.js +++ b/test/elementhandle-owner-frame.spec.js @@ -25,6 +25,7 @@ it('should work', async ({ page, server }) => { const elementHandle = await frame.evaluateHandle(() => document.body); expect(await elementHandle.ownerFrame()).toBe(frame); }); + it('should work for cross-process iframes', async ({ page, server }) => { await page.goto(server.EMPTY_PAGE); await utils.attachFrame(page, 'frame1', server.CROSS_PROCESS_PREFIX + '/empty.html'); @@ -32,6 +33,7 @@ it('should work for cross-process iframes', async ({ page, server }) => { const elementHandle = await frame.evaluateHandle(() => document.body); expect(await elementHandle.ownerFrame()).toBe(frame); }); + it('should work for document', async ({ page, server }) => { await page.goto(server.EMPTY_PAGE); await utils.attachFrame(page, 'frame1', server.EMPTY_PAGE); @@ -39,6 +41,7 @@ it('should work for document', async ({ page, server }) => { const elementHandle = await frame.evaluateHandle(() => document); expect(await elementHandle.ownerFrame()).toBe(frame); }); + it('should work for iframe elements', async ({ page, server }) => { await page.goto(server.EMPTY_PAGE); await utils.attachFrame(page, 'frame1', server.EMPTY_PAGE); @@ -46,6 +49,7 @@ it('should work for iframe elements', async ({ page, server }) => { const elementHandle = await frame.evaluateHandle(() => document.querySelector('#frame1')); expect(await elementHandle.ownerFrame()).toBe(frame); }); + it('should work for cross-frame evaluations', async ({ page, server }) => { await page.goto(server.EMPTY_PAGE); await utils.attachFrame(page, 'frame1', server.EMPTY_PAGE); @@ -53,6 +57,7 @@ it('should work for cross-frame evaluations', async ({ page, server }) => { const elementHandle = await frame.evaluateHandle(() => document.querySelector('#frame1').contentWindow.document.body); expect(await elementHandle.ownerFrame()).toBe(frame.childFrames()[0]); }); + it('should work for detached elements', async ({ page, server }) => { await page.goto(server.EMPTY_PAGE); const divHandle = await page.evaluateHandle(() => { @@ -67,6 +72,7 @@ it('should work for detached elements', async ({ page, server }) => { }); expect(await divHandle.ownerFrame()).toBe(page.mainFrame()); }); + it('should work for adopted elements', async ({ page, server }) => { await page.goto(server.EMPTY_PAGE); const [popup] = await Promise.all([ diff --git a/test/elementhandle-press.spec.js b/test/elementhandle-press.spec.js index d2d99518e0..96d6096234 100644 --- a/test/elementhandle-press.spec.js +++ b/test/elementhandle-press.spec.js @@ -23,11 +23,13 @@ it('should work', async ({ page }) => { await page.press('input', 'h'); expect(await page.$eval('input', input => input.value)).toBe('h'); }); + it('should not select existing value', async ({ page }) => { await page.setContent(``); await page.press('input', 'w'); expect(await page.$eval('input', input => input.value)).toBe('whello'); }); + it('should reset selection when not focused', async ({ page }) => { await page.setContent(`
text
`); await page.$eval('input', input => { @@ -38,6 +40,7 @@ it('should reset selection when not focused', async ({ page }) => { await page.press('input', 'w'); expect(await page.$eval('input', input => input.value)).toBe('whello'); }); + it('should not modify selection when focused', async ({ page }) => { await page.setContent(``); await page.$eval('input', input => { @@ -48,6 +51,7 @@ it('should not modify selection when focused', async ({ page }) => { await page.press('input', 'w'); expect(await page.$eval('input', input => input.value)).toBe('hewo'); }); + it('should work with number input', async ({ page }) => { await page.setContent(``); await page.press('input', '1'); diff --git a/test/elementhandle-screenshot.spec.js b/test/elementhandle-screenshot.spec.js index ca454605a1..ff3a443d78 100644 --- a/test/elementhandle-screenshot.spec.js +++ b/test/elementhandle-screenshot.spec.js @@ -30,6 +30,7 @@ it.skip(ffheadful)('should work', async({page, server}) => { const screenshot = await elementHandle.screenshot(); expect(screenshot).toBeGolden('screenshot-element-bounding-box.png'); }); + it.skip(ffheadful)('should take into account padding and border', async({page}) => { await page.setViewportSize({width: 500, height: 500}); await page.setContent(` @@ -47,6 +48,7 @@ it.skip(ffheadful)('should take into account padding and border', async({page}) const screenshot = await elementHandle.screenshot(); expect(screenshot).toBeGolden('screenshot-element-padding-border.png'); }); + it.skip(ffheadful)('should capture full element when larger than viewport in parallel', async({page}) => { await page.setViewportSize({width: 500, height: 500}); @@ -74,6 +76,7 @@ it.skip(ffheadful)('should capture full element when larger than viewport in par await utils.verifyViewport(page, 500, 500); }); + it.skip(ffheadful)('should capture full element when larger than viewport', async({page}) => { await page.setViewportSize({width: 500, height: 500}); @@ -100,6 +103,7 @@ it.skip(ffheadful)('should capture full element when larger than viewport', asyn await utils.verifyViewport(page, 500, 500); }); + it.skip(ffheadful)('should scroll element into view', async({page}) => { await page.setViewportSize({width: 500, height: 500}); await page.setContent(` @@ -123,6 +127,7 @@ it.skip(ffheadful)('should scroll element into view', async({page}) => { const screenshot = await elementHandle.screenshot(); expect(screenshot).toBeGolden('screenshot-element-scrolled-into-view.png'); }); + it.skip(ffheadful)('should scroll 15000px into view', async({page}) => { await page.setViewportSize({width: 500, height: 500}); await page.setContent(` @@ -146,6 +151,7 @@ it.skip(ffheadful)('should scroll 15000px into view', async({page}) => { const screenshot = await elementHandle.screenshot(); expect(screenshot).toBeGolden('screenshot-element-scrolled-into-view.png'); }); + it.skip(ffheadful)('should work with a rotated element', async({page}) => { await page.setViewportSize({width: 500, height: 500}); await page.setContent(`
'); const div = await page.$('div'); @@ -173,6 +181,7 @@ it.skip(ffheadful)('should timeout waiting for visible', async({page, server}) = expect(error.message).toContain('elementHandle.screenshot: Timeout 3000ms exceeded'); expect(error.message).toContain('element is not visible'); }); + it.skip(ffheadful)('should wait for visible', async({page, server}) => { await page.setViewportSize({width: 500, height: 500}); await page.goto(server.PREFIX + '/grid.html'); @@ -191,12 +200,14 @@ it.skip(ffheadful)('should wait for visible', async({page, server}) => { const screenshot = await promise; expect(screenshot).toBeGolden('screenshot-element-bounding-box.png'); }); + it.skip(ffheadful)('should work for an element with fractional dimensions', async({page}) => { await page.setContent('
'); const elementHandle = await page.$('div'); const screenshot = await elementHandle.screenshot(); expect(screenshot).toBeGolden('screenshot-element-fractional.png'); }); + it.skip(FFOX)('should work with a mobile viewport', async({browser, server}) => { const context = await browser.newContext({viewport: { width: 320, height: 480, isMobile: true }}); const page = await context.newPage(); @@ -207,6 +218,7 @@ it.skip(FFOX)('should work with a mobile viewport', async({browser, server}) => expect(screenshot).toBeGolden('screenshot-element-mobile.png'); await context.close(); }); + it.skip(FFOX)('should work with device scale factor', async({browser, server}) => { const context = await browser.newContext({ viewport: { width: 320, height: 480 }, deviceScaleFactor: 2 }); const page = await context.newPage(); @@ -217,12 +229,14 @@ it.skip(FFOX)('should work with device scale factor', async({browser, server}) = expect(screenshot).toBeGolden('screenshot-element-mobile-dsf.png'); await context.close(); }); + it.skip(ffheadful)('should work for an element with an offset', async({page}) => { await page.setContent('
'); const elementHandle = await page.$('div'); const screenshot = await elementHandle.screenshot(); expect(screenshot).toBeGolden('screenshot-element-fractional-offset.png'); }); + it.skip(ffheadful)('should take screenshots when default viewport is null', async({server, browser}) => { const context = await browser.newContext({ viewport: null }); const page = await context.newPage(); @@ -241,6 +255,7 @@ it.skip(ffheadful)('should take screenshots when default viewport is null', asyn expect(sizeBefore.height).toBe(sizeAfter.height); await context.close(); }); + it.skip(ffheadful)('should take fullPage screenshots when default viewport is null', async({server, browser}) => { const context = await browser.newContext({ viewport: null }); const page = await context.newPage(); @@ -256,6 +271,7 @@ it.skip(ffheadful)('should take fullPage screenshots when default viewport is nu expect(sizeBefore.height).toBe(sizeAfter.height); await context.close(); }); + it.skip(ffheadful)('should restore default viewport after fullPage screenshot', async({ browser }) => { const context = await browser.newContext({ viewport: { width: 456, height: 789 } }); const page = await context.newPage(); @@ -265,6 +281,7 @@ it.skip(ffheadful)('should restore default viewport after fullPage screenshot', await utils.verifyViewport(page, 456, 789); await context.close(); }); + it.skip(ffheadful || USES_HOOKS)('should restore viewport after page screenshot and exception', async({ browser, server }) => { const context = await browser.newContext({ viewport: { width: 350, height: 360 } }); const page = await context.newPage(); @@ -275,6 +292,7 @@ it.skip(ffheadful || USES_HOOKS)('should restore viewport after page screenshot await utils.verifyViewport(page, 350, 360); await context.close(); }); + it.skip(ffheadful || USES_HOOKS)('should restore viewport after page screenshot and timeout', async({ browser, server }) => { const context = await browser.newContext({ viewport: { width: 350, height: 360 } }); const page = await context.newPage(); @@ -288,6 +306,7 @@ it.skip(ffheadful || USES_HOOKS)('should restore viewport after page screenshot await utils.verifyViewport(page, 400, 400); await context.close(); }); + it.skip(ffheadful)('should take element screenshot when default viewport is null and restore back', async({server, browser}) => { const context = await browser.newContext({viewport: null}); const page = await context.newPage({ viewport: null }); @@ -317,6 +336,7 @@ it.skip(ffheadful)('should take element screenshot when default viewport is null expect(sizeBefore.height).toBe(sizeAfter.height); await context.close(); }); + it.skip(ffheadful || USES_HOOKS)('should restore viewport after element screenshot and exception', async({server, browser}) => { const context = await browser.newContext({ viewport: { width: 350, height: 360 } }); const page = await context.newPage(); @@ -328,6 +348,7 @@ it.skip(ffheadful || USES_HOOKS)('should restore viewport after element screensh await utils.verifyViewport(page, 350, 360); await context.close(); }); + it.skip(ffheadful)('should wait for element to stop moving', async({page, server}) => { await page.setViewportSize({ width: 500, height: 500 }); await page.goto(server.PREFIX + '/grid.html'); @@ -339,6 +360,7 @@ it.skip(ffheadful)('should wait for element to stop moving', async({page, server const screenshot = await elementHandle.screenshot(); expect(screenshot).toBeGolden('screenshot-element-bounding-box.png'); }); + it.skip(ffheadful)('should take screenshot of disabled button', async({page}) => { await page.setViewportSize({ width: 500, height: 500 }); await page.setContent(``); diff --git a/test/elementhandle-scroll-into-view.spec.js b/test/elementhandle-scroll-into-view.spec.js index 5a96830f48..0d625fa15c 100644 --- a/test/elementhandle-scroll-into-view.spec.js +++ b/test/elementhandle-scroll-into-view.spec.js @@ -34,6 +34,7 @@ it('should work', async ({ page, server }) => { await page.evaluate(() => window.scrollTo(0, 0)); } }); + it('should throw for detached element', async ({ page, server }) => { await page.setContent('
Hello
'); const div = await page.$('div'); @@ -56,22 +57,27 @@ it('should wait for display:none to become visible', async ({ page, server }) => await page.setContent('
Hello
'); await testWaiting(page, div => div.style.display = 'block'); }); + it('should wait for display:contents to become visible', async ({ page, server }) => { await page.setContent('
Hello
'); await testWaiting(page, div => div.style.display = 'block'); }); + it('should wait for visibility:hidden to become visible', async ({ page, server }) => { await page.setContent('
Hello
'); await testWaiting(page, div => div.style.visibility = 'visible'); }); + it('should wait for zero-sized element to become visible', async ({ page, server }) => { await page.setContent('
Hello
'); await testWaiting(page, div => div.style.height = '100px'); }); + it('should wait for nested display:none to become visible', async ({ page, server }) => { await page.setContent('
Hello
'); await testWaiting(page, div => div.parentElement.style.display = 'block'); }); + it('should wait for element to stop moving', async ({ page, server }) => { await page.setContent(`