如何在测试中访问剧作家测试运行者项目信息?

Pat*_*nny 11 playwright

我正在编写一个测试来在我的网站上注册用户。使用@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'],
},
Run Code Online (Sandbox Code Playgroud)

我的测试如下所示:

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');
Run Code Online (Sandbox Code Playgroud)

但是,当我运行此测试时,它仅适用于第一个工作人员,因为您只能注册一次电子邮件地址。

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

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

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

Max*_*itt 17

您可以像第二个参数一样访问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`);
Run Code Online (Sandbox Code Playgroud)

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

浏览此处获取更多信息。