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

Playwright测试中Local Storage未找到问题求助

问题排查与修复方案

你的Playwright测试无法读取LocalStorage中的JWT,核心问题集中在路径匹配、域名隔离和配置启用三个方面,逐一修复即可解决:

1. StorageState 文件路径不匹配

  • playwright.config.ts中配置的storageState路径是.auth/token.json,但实际目录结构为auth/token.json(多了前置点),导致Playwright定位不到存储文件。
  • global-setup.ts生成的存储文件是auth/storageState.json,和配置里的token.json文件名不一致,也会造成加载失败。

修复代码:
修改playwright.config.ts中的路径:

projects: [
  {
    name: 'chromium',
    use: {
      ...devices['Desktop Chrome'],
      storageState: "auth/token.json" // 移除前置点,与目录结构对齐
    },
  },

同时调整global-setup.ts的输出文件名:

await context.storageState({ path: "auth/token.json" }); // 改为token.json与配置匹配

2. Global Setup 中的域名不匹配

LocalStorage是域名隔离的,你的global-setup.ts在https://www.example.org域名下设置存储,但测试目标是http://localhost:4300,跨域名的存储无法被测试页面读取。

修复代码:
将global-setup.ts中的跳转地址改为测试服务域名:

await page.goto("http://localhost:4300"); // 替换example.org为本地服务地址
await page.waitForLoadState("domcontentloaded");

await page.evaluate((token) => {
  localStorage.setItem("auth_token", token);
}, jwt);

3. Playwright配置未启用Global Setup

playwright.config.ts缺少globalSetup字段,导致global-setup.ts没有执行,无法自动生成正确的storageState文件。

修复代码:
在配置文件中添加globalSetup启用项:

export default defineConfig({
  ...nxE2EPreset(__filename, { testDir: './src' }),
  globalSetup: './global-setup.ts', // 新增该行启用全局前置脚本
  // 其他原有配置...
});

额外验证点

如果手动维护token.json,需确保origin字段与测试页面的域名完全一致(包含协议、主机、端口):

{
    "cookies": [],
    "origins": [
      {
        "origin": "http://localhost:4300", // 必须与baseURL完全匹配
        "localStorage": [
          {
            "name": "auth_token",
            "value": "你的实际JWT内容"
          }
        ]
      }
    ]
}

完成以上修改后重新运行测试,即可正常读取LocalStorage中的JWT。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 13:32:07