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

如何使用Playwright在独立显示模式下测试PWA?

在Playwright中模拟PWA独立显示模式的解决方案

方法一:注入初始化脚本修改matchMedia结果

Playwright的emulateMedia方法目前不支持display-mode媒体查询,你可以通过页面初始化时注入脚本,覆盖原生matchMedia的行为,让针对(display-mode: standalone)的查询强制返回匹配状态。

示例代码:

await page.addInitScript(() => {
  const originalMatchMedia = window.matchMedia;
  window.matchMedia = (query) => {
    const result = originalMatchMedia(query);
    if (query === '(display-mode: standalone)') {
      return {
        ...result,
        matches: true,
        addListener: () => {},
        removeListener: () => {},
        addEventListener: () => {},
        removeEventListener: () => {},
        dispatchEvent: () => true
      };
    }
    return result;
  };
});

这段脚本会在页面加载前运行,替换原生方法后,你的应用中isStandalone变量会被设为true,可正常测试对应UI调整逻辑。

方法二:用Chrome--app启动参数模拟独立窗口

如果需要贴近真实PWA安装后的运行场景,可配置Chrome启动参数,让浏览器以独立应用窗口打开页面,此时浏览器原生会将display-mode设为standalone。

示例代码:

const browser = await chromium.launch({
  args: ['--app=https://你的PWA地址.com']
});
const context = await browser.newContext();
const page = await context.newPage();
// 此时页面已处于standalone模式,无需额外修改

验证方式

测试中可添加断言确认状态是否生效:

const isStandalone = await page.evaluate(() => {
  return window.matchMedia('(display-mode: standalone)').matches;
});
expect(isStandalone).toBe(true);

内容的提问来源于stack exchange,提问作者Ben

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 06:33:28