我有很多剧作家测试用例,我希望某些选定的测试用例仅在 Chrome 上运行。怎么才能实现呢?
示例:
test('test 1', async () => {
});
test('test 2', async () => {
});
test('test 3', async () => {
});
现在我希望
test 1
案例仅在 Chrome 上运行,其余部分默认情况下应在每个浏览器上运行。
我希望有更好的方法可以通过一些配置魔法来做到这一点,但您可以根据浏览器有条件地跳过:
test('Hello World', async ({ browserName, page }) => {
test.skip(browserName.toLowerCase() !== 'chromium',
`Test only for chromium!`);
// rest of test
});
在命令行中使用带有“grep”命令的标签:
# This will run @chromeOnly
$ npx playwright test --grep @chromeOnly
# This will run @allBrowsers
$ npx playwright test --grep @allBrowsers
在 Playwright 中,您可以使用 @tag 语法将标签添加到测试描述中。虽然从技术上讲您可以使用任何字符串作为标记,但建议坚持使用 @tag 约定以保持一致性。以下是如何向测试描述添加标签的示例:
test('user can login @smoke @login', async ({ page }) => {
// Test implementation goes here
});
Playwright 提供 --grep 和 --grep-invert 命令行标志来根据其标签运行测试。 --grep 标志允许您运行与特定标记模式匹配的测试,而 --grep-invert 允许您排除与该模式匹配的测试。以下是如何使用特定标签运行测试的一些示例:
# Run tests with the @smoke tag
npx playwright test --grep "@smoke"
# Run tests with the @login tag, excluding those with the @smoke tag
npx playwright test --grep "@login" --grep-invert "@smoke"
除了使用单个标签之外,您还可以组合多个标签来创建更复杂的测试选择标准。以下是如何执行此操作的一些示例:
# Run tests with either the @smoke or @login tag (logical OR)
npx playwright test --grep "@smoke|@login"
# Run tests with both the @smoke and @login tags (logical AND)
npx playwright test --grep "(?=.*@smoke)(?=.*@login)"
这些示例取自使用标签组织剧作家测试
现有答案讨论
--grep
按名称过滤测试,但暗示您需要标签才能使用它。
鉴于您现有的无标签测试文件:
import {test} from "@playwright/test"; // ^1.42.1
test('test 1', async () => {});
test('test 2', async () => {});
test('test 3', async () => {});
您可以按如下方式运行
test 1
:
$ npx playwright test --grep "test 1$"
Running 1 test using 1 worker
✓ 1 pw.test.js:39:6 › test 1 (10ms)
注意
$
锚点,确保您不会逃跑 test 11
。
但由于某种原因,
"^test 1$"
没有找到任何测试,所以我不确定如何过滤除标签之外的"foo test 1"
。如果您知道如何做,请随时发表评论。