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

如何在Playwright中为不同测试子集配置多存储状态

解决Playwright测试集分环境配置存储状态的问题

直接给你梳理正确的配置方案,解决你遇到的规则冲突问题:

核心思路

把测试拆成三个独立的配置项,彻底隔离不同测试集的运行规则:

  • 保留通用的setup前置项目
  • 单独配置普通Chromium测试:不使用预存状态,走你自己写的beforeAll登录流程
  • 配置特殊测试项目:分别对应Chrome和Firefox环境,指定专属的存储状态,且只跑特殊测试目录下的用例

最终配置代码

修改playwright.config.ts里的projects数组:

projects: [
  // 通用前置setup,保持原样就行
  {
    name: 'setup',
    testDir: './',
    testMatch: /.*\.setup\.js/
  },

  // 普通Chromium测试:不加载预存状态,走自定义登录
  {
    name: 'Desktop Chrome (Normal)',
    use: {
      browserName: 'chromium',
      // 这里不要配置storageState,让测试自己在beforeAll里处理登录
    },
    dependencies: ['setup'],
    // 排除特殊测试目录,只跑普通用例
    testIgnore: '/specialtests/**'
  },

  // 特殊测试:Chrome环境,用指定的存储状态
  {
    name: 'Desktop Chrome (Special)',
    use: {
      browserName: 'chromium',
      storageState: '.auth/specialuser1.json'
    },
    dependencies: ['setup'],
    // 只跑specialtests目录下的用例
    testDir: './specialtests'
  },

  // 特殊测试:Firefox环境,用指定的存储状态
  {
    name: 'Desktop Firefox (Special)',
    use: {
      browserName: 'firefox',
      storageState: '.auth/specialuser2.json'
    },
    dependencies: ['setup'],
    // 同样只跑specialtests目录下的用例
    testDir: './specialtests'
  }
]

怎么运行

  • 跑普通Chromium测试:
    npx playwright test --project="Desktop Chrome (Normal)"
    
  • 跑所有特殊测试(Chrome+Firefox一起跑):
    npx playwright test --project="Desktop Chrome (Special)" --project="Desktop Firefox (Special)"
    
  • 单独跑某一个特殊环境的测试:
    npx playwright test --project="Desktop Chrome (Special)"
    

你之前的问题出在哪

  1. 项目名称重复:你把两个不同的项目都命名成Special Chrome,导致配置规则冲突,Playwright识别混乱。
  2. testDir和testIgnore的逻辑搞反:普通测试应该用testIgnore排除特殊目录,而特殊测试用testDir锁定专属目录,这样两边的规则不会互相干扰。
  3. 存储状态没有彻底隔离:现在普通测试不配置storageState,完全走你自己的登录逻辑,特殊测试单独配置,彻底分开。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 09:07:23