如何在测试中访问 playwright 测试运行器项目信息?

How do I access playwright test runner project info in a test?

我正在编写一个测试来在我的网站上注册用户。使用 @playwright/test,我在 playwright.config.ts:

中定义了几个不同的项目
{
  name: 'iPhone 12 Pro',
  use: devices['iPhone 12 Pro'],
},
{
  name: 'iPhone 12 Pro Max',
  use: devices['iPhone 12 Pro Max'],
},
{
  name: 'iPhone 5/SE',
  use: devices['iPhone SE'],
},

我的测试是这样的:

test('Register a user', async ({ page }) => {
  // Go to baseUrl/webapp/
  await page.goto(`${baseUrl}webapp/`);

  // Click the register tab.
  await page.click('ion-segment-button[role="tab"]:has-text("Register")');
  await page.click('input[name="mail"]');
  // @TODO: How do I get the project name here?
  await page.fill('input[name="mail"]', `test@example.com`);
  // Press Tab
  await page.press('input[name="mail"]', 'Tab');
  await page.fill('input[name="pass"]', 'password');

然而,当我运行这个测试时,它只适用于第一个工人,因为你只能注册一次电子邮件地址。

所以我想做的是在我的测试中访问项目名称(例如,iPhone 12 Pro),以便我可以将其转换为电子邮件地址,以便每次测试运行,会根据项目名注册一个用户

如何在剧作家测试中获取项目名称?

我阅读了有关 workerInfo object 的 Playwright 文档,但我不知道如何在测试中应用它。

您可以像第二个参数那样访问 workerInfo,在这种情况下,您可以使用它来使每个工作人员的电子邮件独一无二:

test('Register a user', async ({ page }, workerInfo) => {
  // Go to baseUrl/webapp/
  await page.goto(`${baseUrl}webapp/`);

  // Click the register tab.
  await page.click('ion-segment-button[role="tab"]:has-text("Register")');
  await page.click('input[name="mail"]');
  await page.fill('input[name="mail"]', `test-user-${workerInfo.workerIndex}@example.com`);

您也可以通过workerInfo.project.name获取项目名称。

有关详细信息,请参阅 here