如何在 Playwright 中的`globalSetup`期间运行特定的规范文件?

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

我正在尝试在 Playwright 的

math.spec.js
阶段运行特定的规范文件 (
globalSetup
)。目标是在运行任何其他测试之前执行此规范文件。

这是我的项目的结构:

/my-project
|-- tests/
|   |-- e2e/
|       |-- pos/
|           |-- math.spec.js
|-- playwright.config.js
|-- global-setup.js

global-setup.js
中,我想使用 Playwright 测试运行程序运行
math.spec.js
文件。我尝试过使用 Node 的
child_process
来执行命令,但我不确定这是否是最好的方法,或者 Playwright 中是否有内置方法来处理这个问题。

global-setup.js

const { execSync } = require('child_process');

module.exports = async () => {
  try {
    // Attempt to run the specific spec file
    execSync('npx playwright test tests/e2e/pos/math.spec.js', { stdio: 'inherit' });
  } catch (error) {
    console.error('Error running math.spec.js in global setup:', error);
    process.exit(1); // Exit with a failure code if the test fails
  }
};

playwright.config.js

import { defineConfig } from '@playwright/test';

export default defineConfig({
  globalSetup: require.resolve('./global-setup.js'),
  // Other configurations...
});

问题:

  • 这是在 Playwright 中的
    globalSetup
    期间运行特定规范文件的正确方法吗?
  • 这种方法有任何最佳实践或潜在问题吗?
  • 是否有更符合剧作家本机的方法来实现这一目标?

我正在使用 Playwright 版本

1.46.1
和 Node.js 版本
20.15.1

javascript node.js automation playwright
1个回答
0
投票

如果您需要在每个套件执行之前运行测试规范,您可以将其设为自己的项目,并且您的其他项目可以将其列为依赖项。

export default defineConfig({
  testDir: './tests',
  // ...
  projects: [
    {
      name: 'math',
      testMatch: /math.spec.js/,
    },
    {
      name: 'chromium',
      use: { ...devices['Desktop Chrome'] },
      dependencies: ['math'],
      // only include the following if you don't want math to run as part of the project as well
      testIgnore: /math.spec.js/
    }
  ]
});
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.