当我们创建自己的上下文时,Playwright 不会生成视频

问题描述 投票:0回答:1

剧作家报告 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 中。

javascript ui-automation playwright browser-automation playwright-test
1个回答
0
投票

当我们手动创建上下文时,一些剧作家配置设置会被忽略(可能是一个错误?)。但是,如果您可以接受在每个测试文件上定义设置,那么可以执行如下操作:

// 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

© www.soinside.com 2019 - 2024. All rights reserved.