You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Playwright单条测试中重置设备配置

在单条Playwright测试中重置设备配置的解决方案

要实现单测跳过全局的Desktop Chrome设备配置、回到默认状态,你之前用test.use({ ...devices[""] })的方法行不通——因为devices对象里根本没有空键的配置项。正确的做法是显式重置被设备配置覆盖的属性,让Playwright恢复到默认值,具体步骤如下:

核心思路

全局配置里的devices['Desktop Chrome']本质是设置了viewport、userAgent、deviceScaleFactor、isMobile、hasTouch这些属性。要达到注释掉全局use配置的效果,只需在单测中将这些属性设为undefined,覆盖全局配置,让Playwright使用内置默认值。

代码示例

单条测试单独重置

test('无需设备配置的测试', async ({ page }) => {
  // 重置设备相关配置到默认状态
  test.use({
    viewport: undefined,
    userAgent: undefined,
    deviceScaleFactor: undefined,
    isMobile: undefined,
    hasTouch: undefined,
  });

  // 后续测试逻辑使用的就是默认配置,和注释掉全局use的效果一致
  await page.goto('https://example.com');
  // ...其他测试步骤
});

一组测试批量重置

如果有多条测试需要相同配置,用test.describe包裹,一次性设置:

test.describe('不使用设备配置的测试组', () => {
  test.use({
    viewport: undefined,
    userAgent: undefined,
    deviceScaleFactor: undefined,
    isMobile: undefined,
    hasTouch: undefined,
  });

  test('测试案例1', async ({ page }) => {
    // 测试逻辑
  });

  test('测试案例2', async ({ page }) => {
    // 测试逻辑
  });
});

为什么之前的方法无效

devices[""]是不存在的配置项,这样写相当于没有覆盖任何全局配置,全局的Desktop Chrome设备设置依然会生效。只有显式重置那些被设备配置修改的属性,才能彻底回到默认状态。

这种方式只会影响当前测试或测试组,完全不会干扰项目中的其他测试。

内容的提问来源于stack exchange,提问作者I.sh.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 00:40:14