val*_*alk 1 mobile platform playwright
桌面版和移动版有不同的 UI 版本,我正在努力专门针对移动版进行某些测试,同时强制其余测试仅针对桌面版运行。除了现有的浏览器之外,我还添加了一个移动目标,如下所示:
{
name: 'mobile',
use: {
...devices['iPhone 12'],
viewport: {
width: 390,
height: 844
},
headless: false,
video: 'on-first-retry'
},
},
Run Code Online (Sandbox Code Playgroud)
这是正确运行模拟指定移动目标的测试。问题是它会尝试使用此配置进行每个测试,而我需要它只为移动设备运行指定的测试。
我能想到实现该目标的唯一方法是创建两个单独的项目。有没有更好的“可配置”方式?
小智 6
您想要testProject.grep选项吗?
过滤以仅运行标题与模式之一匹配的测试。例如,通过
grep: /cart/应该只运行标题中带有“cart”的测试。也可以通过 -g 选项在全局和命令行中使用。
{
name: 'mobile',
use: {
...devices['iPhone 12'],
viewport: {
width: 390,
height: 844
},
headless: false,
video: 'on-first-retry',
},
grep: /mobile/
},
Run Code Online (Sandbox Code Playgroud)
您可以在剧作家配置文件中使用称为项目的东西。对于不同的项目类型,您可以使用正则表达式模式来识别要运行的测试:
import type { PlaywrightTestConfig } from '@playwright/test';
const config: PlaywrightTestConfig = {
timeout: 60000, // Timeout is shared between all tests.
projects: [
{
name: 'Smoke',
testMatch: /.*smoke.spec.ts/,
retries: 0,
},
{
name: 'Default',
testIgnore: /.*something.spec.ts/,
retries: 2,
},
],
};
export default config;
Run Code Online (Sandbox Code Playgroud)
然后要运行测试,您可以这样做:
npx playwright test --project=Smoke
Run Code Online (Sandbox Code Playgroud)