我正在尝试在 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...
});
问题:
globalSetup
期间运行特定规范文件的正确方法吗?我正在使用 Playwright 版本
1.46.1
和 Node.js 版本 20.15.1
。
如果您需要在每个套件执行之前运行测试规范,您可以将其设为自己的项目,并且您的其他项目可以将其列为依赖项。
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/
}
]
});