剧作家报告 HTML 报告中不会生成视频。有解决办法吗?
下面是 playwright.config.ts 文件:
import { defineConfig, devices } from '@playwright/test';
export default defineConfig({
testDir: './tests',
fullyParallel: true,
forbidOnly: !!process.env.CI,
retries: process.env.CI ? 2 : 0,
workers: process.env.CI ? 1 : undefined,
reporter: 'html',
use: {
trace: 'on-first-retry',
headless: true,
screenshot: "only-on-failure",
video: "on"
},
projects: [
{
name: 'chromium',
use: { ...devices['Desktop Chrome'] },
},
],
});
以下是测试:
import { chromium, BrowserContext } from 'playwright';
import { test } from '@playwright/test';
test('test', async () => {
const browser = await chromium.launch();
const context: BrowserContext = await browser.newContext();
const page = await context.newPage();
await page.goto('https://www.google.com');
await context.close();
await browser.close();
});
预期结果:
上面的规范应该成功生成屏幕截图、测试步骤、跟踪文件和 HTML 结果中的视频。
实际结果:
视频尚未生成。 Playwright 文档中有一个选项可以使用以下代码来录制视频
{ recordVideo: { dir: 'videos/' } }
但是从此以后,视频将在单独的文件夹中生成,并且不会嵌入到报告 HTML 中。
当我们手动创建上下文时,一些剧作家配置设置会被忽略(可能是一个错误?)。但是,如果您可以接受在每个测试文件上定义设置,那么可以执行如下操作:
// example.spec.ts It works :)
import { test, Page } from '@playwright/test';
test.describe.configure({ mode: 'serial' });
let page: Page;
test.beforeAll(async ({ browser }, testInfo) => {
page = await browser.newPage({
recordVideo: {
dir: testInfo.outputPath('videos'),
}
});
await page.goto('https://www.google.com');
});
test.afterAll(async ({}, testInfo) => {
const videoPath = testInfo.outputPath('my-video.webm');
await Promise.all([
page.video().saveAs(videoPath),
page.close()
]);
testInfo.attachments.push({
name: 'video',
path: videoPath,
contentType: 'video/webm'
});
});
test('Login', async () => {
await page.fill('input[name="login"]', 'user');
await page.fill('input[name="password"]', 'password');
});
参考:https://github.com/microsoft/playwright/issues/14164#issuecomment-1131451544