mirror of
https://github.com/microsoft/playwright.git
synced 2025-06-26 21:40:17 +00:00
test: try to unflake video spec (#14288)
This commit is contained in:
parent
34429a222e
commit
fd452058bb
@ -17,6 +17,7 @@
|
|||||||
import { browserTest as it, expect } from '../config/browserTest';
|
import { browserTest as it, expect } from '../config/browserTest';
|
||||||
import fs from 'fs';
|
import fs from 'fs';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
|
import type { Page } from 'playwright-core';
|
||||||
import { spawnSync } from 'child_process';
|
import { spawnSync } from 'child_process';
|
||||||
import { PNG } from 'playwright-core/lib/utilsBundle';
|
import { PNG } from 'playwright-core/lib/utilsBundle';
|
||||||
import { registry } from '../../packages/playwright-core/lib/server';
|
import { registry } from '../../packages/playwright-core/lib/server';
|
||||||
@ -171,7 +172,7 @@ it.describe('screencast', () => {
|
|||||||
const page = await context.newPage();
|
const page = await context.newPage();
|
||||||
|
|
||||||
await page.evaluate(() => document.body.style.backgroundColor = 'red');
|
await page.evaluate(() => document.body.style.backgroundColor = 'red');
|
||||||
await new Promise(r => setTimeout(r, 1000));
|
await waitForRafs(page, 100);
|
||||||
await context.close();
|
await context.close();
|
||||||
|
|
||||||
const videoFile = await page.video().path();
|
const videoFile = await page.video().path();
|
||||||
@ -196,7 +197,7 @@ it.describe('screencast', () => {
|
|||||||
const page = await context.newPage();
|
const page = await context.newPage();
|
||||||
|
|
||||||
await page.evaluate(() => document.body.style.backgroundColor = 'red');
|
await page.evaluate(() => document.body.style.backgroundColor = 'red');
|
||||||
await new Promise(r => setTimeout(r, 1000));
|
await waitForRafs(page, 100);
|
||||||
await context.close();
|
await context.close();
|
||||||
|
|
||||||
const videoFile = await page.video().path();
|
const videoFile = await page.video().path();
|
||||||
@ -263,7 +264,7 @@ it.describe('screencast', () => {
|
|||||||
const page = await context.newPage();
|
const page = await context.newPage();
|
||||||
const deletePromise = page.video().delete();
|
const deletePromise = page.video().delete();
|
||||||
await page.evaluate(() => document.body.style.backgroundColor = 'red');
|
await page.evaluate(() => document.body.style.backgroundColor = 'red');
|
||||||
await page.waitForTimeout(1000);
|
await waitForRafs(page, 100);
|
||||||
await context.close();
|
await context.close();
|
||||||
|
|
||||||
const videoPath = await page.video().path();
|
const videoPath = await page.video().path();
|
||||||
@ -320,9 +321,9 @@ it.describe('screencast', () => {
|
|||||||
const page = await context.newPage();
|
const page = await context.newPage();
|
||||||
|
|
||||||
await page.goto(server.PREFIX + '/background-color.html#rgb(0,0,0)');
|
await page.goto(server.PREFIX + '/background-color.html#rgb(0,0,0)');
|
||||||
await new Promise(r => setTimeout(r, 1000));
|
await waitForRafs(page, 100);
|
||||||
await page.goto(server.CROSS_PROCESS_PREFIX + '/background-color.html#rgb(100,100,100)');
|
await page.goto(server.CROSS_PROCESS_PREFIX + '/background-color.html#rgb(100,100,100)');
|
||||||
await new Promise(r => setTimeout(r, 1000));
|
await waitForRafs(page, 100);
|
||||||
await context.close();
|
await context.close();
|
||||||
|
|
||||||
const videoFile = await page.video().path();
|
const videoFile = await page.video().path();
|
||||||
@ -358,7 +359,7 @@ it.describe('screencast', () => {
|
|||||||
const page = await context.newPage();
|
const page = await context.newPage();
|
||||||
|
|
||||||
await page.goto(server.PREFIX + '/rotate-z.html');
|
await page.goto(server.PREFIX + '/rotate-z.html');
|
||||||
await new Promise(r => setTimeout(r, 1000));
|
await waitForRafs(page, 100);
|
||||||
await context.close();
|
await context.close();
|
||||||
|
|
||||||
const videoFile = await page.video().path();
|
const videoFile = await page.video().path();
|
||||||
@ -391,7 +392,10 @@ it.describe('screencast', () => {
|
|||||||
page.evaluate(() => { window.open('about:blank'); }),
|
page.evaluate(() => { window.open('about:blank'); }),
|
||||||
]);
|
]);
|
||||||
await popup.evaluate(() => document.body.style.backgroundColor = 'red');
|
await popup.evaluate(() => document.body.style.backgroundColor = 'red');
|
||||||
await new Promise(r => setTimeout(r, 1000));
|
await Promise.all([
|
||||||
|
waitForRafs(page, 100),
|
||||||
|
waitForRafs(popup, 100),
|
||||||
|
]);
|
||||||
await context.close();
|
await context.close();
|
||||||
|
|
||||||
const pageVideoFile = await page.video().path();
|
const pageVideoFile = await page.video().path();
|
||||||
@ -422,11 +426,11 @@ it.describe('screencast', () => {
|
|||||||
await page.$eval('.container', container => {
|
await page.$eval('.container', container => {
|
||||||
container.firstElementChild.classList.remove('red');
|
container.firstElementChild.classList.remove('red');
|
||||||
});
|
});
|
||||||
await new Promise(r => setTimeout(r, 300));
|
await waitForRafs(page, 100);
|
||||||
await page.$eval('.container', container => {
|
await page.$eval('.container', container => {
|
||||||
container.firstElementChild.classList.add('red');
|
container.firstElementChild.classList.add('red');
|
||||||
});
|
});
|
||||||
await new Promise(r => setTimeout(r, 1000));
|
await waitForRafs(page, 100);
|
||||||
await context.close();
|
await context.close();
|
||||||
|
|
||||||
const videoFile = await page.video().path();
|
const videoFile = await page.video().path();
|
||||||
@ -462,7 +466,7 @@ it.describe('screencast', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const page = await context.newPage();
|
const page = await context.newPage();
|
||||||
await new Promise(r => setTimeout(r, 1000));
|
await waitForRafs(page, 100);
|
||||||
await context.close();
|
await context.close();
|
||||||
|
|
||||||
const videoFile = await page.video().path();
|
const videoFile = await page.video().path();
|
||||||
@ -479,7 +483,7 @@ it.describe('screencast', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const page = await context.newPage();
|
const page = await context.newPage();
|
||||||
await new Promise(r => setTimeout(r, 1000));
|
await waitForRafs(page, 100);
|
||||||
await context.close();
|
await context.close();
|
||||||
|
|
||||||
const videoFile = await page.video().path();
|
const videoFile = await page.video().path();
|
||||||
@ -499,7 +503,7 @@ it.describe('screencast', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const page = await context.newPage();
|
const page = await context.newPage();
|
||||||
await new Promise(r => setTimeout(r, 1000));
|
await waitForRafs(page, 100);
|
||||||
await context.close();
|
await context.close();
|
||||||
|
|
||||||
const videoFile = await page.video().path();
|
const videoFile = await page.video().path();
|
||||||
@ -520,7 +524,7 @@ it.describe('screencast', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
await page.evaluate(() => document.body.style.backgroundColor = 'red');
|
await page.evaluate(() => document.body.style.backgroundColor = 'red');
|
||||||
await new Promise(r => setTimeout(r, 1000));
|
await waitForRafs(page, 100);
|
||||||
await context.close();
|
await context.close();
|
||||||
|
|
||||||
const videoFile = await page.video().path();
|
const videoFile = await page.video().path();
|
||||||
@ -549,7 +553,7 @@ it.describe('screencast', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const page = await context.newPage();
|
const page = await context.newPage();
|
||||||
await new Promise(r => setTimeout(r, 1000));
|
await waitForRafs(page, 100);
|
||||||
await context.close();
|
await context.close();
|
||||||
|
|
||||||
const videoFile = await page.video().path();
|
const videoFile = await page.video().path();
|
||||||
@ -570,7 +574,7 @@ it.describe('screencast', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const page = await context.newPage();
|
const page = await context.newPage();
|
||||||
await new Promise(r => setTimeout(r, 1000));
|
await waitForRafs(page, 100);
|
||||||
await browser.close();
|
await browser.close();
|
||||||
|
|
||||||
const file = testInfo.outputPath('saved-video-');
|
const file = testInfo.outputPath('saved-video-');
|
||||||
@ -591,7 +595,7 @@ it.describe('screencast', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const page = await context.newPage();
|
const page = await context.newPage();
|
||||||
await new Promise(r => setTimeout(r, 1000));
|
await waitForRafs(page, 100);
|
||||||
await (browser as any)._channel.killForTests();
|
await (browser as any)._channel.killForTests();
|
||||||
|
|
||||||
const file = testInfo.outputPath('saved-video-');
|
const file = testInfo.outputPath('saved-video-');
|
||||||
@ -613,7 +617,7 @@ it.describe('screencast', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const page = await context.newPage();
|
const page = await context.newPage();
|
||||||
await new Promise(r => setTimeout(r, 1000));
|
await waitForRafs(page, 100);
|
||||||
await page.close();
|
await page.close();
|
||||||
await context.close();
|
await context.close();
|
||||||
await browser.close();
|
await browser.close();
|
||||||
@ -641,7 +645,7 @@ it.describe('screencast', () => {
|
|||||||
|
|
||||||
const page = await context.newPage();
|
const page = await context.newPage();
|
||||||
await page.goto(server.EMPTY_PAGE);
|
await page.goto(server.EMPTY_PAGE);
|
||||||
await new Promise(r => setTimeout(r, 1000));
|
await waitForRafs(page, 100);
|
||||||
|
|
||||||
const cookies = await context.cookies();
|
const cookies = await context.cookies();
|
||||||
expect(cookies.length).toBe(1);
|
expect(cookies.length).toBe(1);
|
||||||
@ -670,7 +674,7 @@ it.describe('screencast', () => {
|
|||||||
|
|
||||||
const page = await context.newPage();
|
const page = await context.newPage();
|
||||||
await page.setContent(`<div style='margin: 0; background: red; position: fixed; right:0; bottom:0; width: 30; height: 30;'></div>`);
|
await page.setContent(`<div style='margin: 0; background: red; position: fixed; right:0; bottom:0; width: 30; height: 30;'></div>`);
|
||||||
await new Promise(r => setTimeout(r, 1000));
|
await waitForRafs(page, 100);
|
||||||
await page.close();
|
await page.close();
|
||||||
await context.close();
|
await context.close();
|
||||||
await browser.close();
|
await browser.close();
|
||||||
@ -701,10 +705,23 @@ it('should saveAs video', async ({ browser }, testInfo) => {
|
|||||||
});
|
});
|
||||||
const page = await context.newPage();
|
const page = await context.newPage();
|
||||||
await page.evaluate(() => document.body.style.backgroundColor = 'red');
|
await page.evaluate(() => document.body.style.backgroundColor = 'red');
|
||||||
await page.waitForTimeout(1000);
|
await waitForRafs(page, 100);
|
||||||
await context.close();
|
await context.close();
|
||||||
|
|
||||||
const saveAsPath = testInfo.outputPath('my-video.webm');
|
const saveAsPath = testInfo.outputPath('my-video.webm');
|
||||||
await page.video().saveAs(saveAsPath);
|
await page.video().saveAs(saveAsPath);
|
||||||
expect(fs.existsSync(saveAsPath)).toBeTruthy();
|
expect(fs.existsSync(saveAsPath)).toBeTruthy();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
async function waitForRafs(page: Page, count: number): Promise<void> {
|
||||||
|
await page.evaluate(count => new Promise<void>(resolve => {
|
||||||
|
const onRaf = () => {
|
||||||
|
--count;
|
||||||
|
if (!count)
|
||||||
|
resolve();
|
||||||
|
else
|
||||||
|
requestAnimationFrame(onRaf);
|
||||||
|
};
|
||||||
|
requestAnimationFrame(onRaf);
|
||||||
|
}), count);
|
||||||
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user