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

Playwright测试套件认证配置:globalSetup与setup project的正确用法?

Playwright 模拟已登录用户的正确认证配置方案(Angular 15)

核心结论

不需要同时配置globalSetup和setup project,优先用setup project方案——这是Playwright官方推荐的认证实现方式,比globalSetup更灵活、更贴合测试项目的依赖管理逻辑。

具体实现步骤(setup project 方案)

1. 编写认证测试脚本

新建一个专门处理登录流程的测试文件,比如tests/auth.setup.ts,在里面完成登录并保存认证状态:

import { test as setup } from '@playwright/test';

// 指定保存认证状态的文件路径
const authFile = 'playwright/.auth/user.json';

setup('完成用户登录', async ({ page }) => {
  // 替换为你的Angular应用实际登录流程
  await page.goto('/login');
  await page.getByLabel('用户名').fill('测试账号');
  await page.getByLabel('密码').fill('测试密码');
  await page.getByRole('button', { name: '登录' }).click();
  
  // 等待登录完成(比如跳转到首页或出现用户标识)
  await page.waitForURL('/dashboard');
  
  // 将认证状态(Cookie、LocalStorage等)保存到文件
  await page.context().storageState({ path: authFile });
});

2. 修改Playwright配置文件

在playwright.config.ts中添加setup项目,并让所有测试项目依赖它,同时指定使用保存的认证状态:

import { defineConfig, devices } from '@playwright/test';

export default defineConfig({
  projects: [
    // 1. 新增setup项目,仅执行认证脚本
    {
      name: 'setup',
      testMatch: /auth\.setup\.ts/,
    },
    // 2. 配置Chrome测试项目,依赖setup并使用认证状态
    {
      name: 'chromium',
      use: {
        ...devices['Desktop Chrome'],
        storageState: 'playwright/.auth/user.json',
      },
      dependencies: ['setup'],
    },
    // 其他浏览器项目同理配置
    {
      name: 'firefox',
      use: {
        ...devices['Desktop Firefox'],
        storageState: 'playwright/.auth/user.json',
      },
      dependencies: ['setup'],
    },
  ],
});

3. 运行测试

直接执行npx playwright test,Playwright会自动先运行setup项目完成登录并保存状态,再依次启动所有依赖它的测试项目——每个测试都会带着已登录的上下文启动。

两种方案的区别

  • globalSetup:是脱离测试上下文的全局前置脚本,需要手动创建浏览器/上下文,更适合做环境初始化(比如启动测试服务、设置环境变量),处理登录这类需要操作页面的场景不够直观。
  • setup project:是一个标准的测试项目,用Playwright原生API编写,能直接操作页面完成登录,还能通过依赖管理确保执行顺序,甚至可以为不同测试项目配置不同的认证状态(比如普通用户、管理员账号),灵活性拉满。

为什么不建议同时配置

同时启用两种方案会导致登录流程重复执行,既浪费时间,还可能出现认证状态冲突的问题,完全没有必要。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 18:58:27