登录与凭据
测试套件必须能登录,但既不能泄露密码,也不能在每个测试里重复输入。Hover 两件事都做了:它把凭据从 spec 中抹除,并把登录抽取成一个 fixture,让它对整个套件只运行一次。
凭据脱敏
输入到密码字段里的值,在生成的 spec 中会被参数化为 process.env.HOVER_PASSWORD。密码明文绝不会写入 spec、JSDoc 头部或 sidecar:
await page.getByLabel('Password').fill(process.env.HOVER_PASSWORD!);
登录作为 fixture
检测到登录时,Hover 不会把它内联进每个 spec,而是把登录抽取到 auth.setup.ts——一个 Playwright setup project,它登录一次并保存浏览器的 storageState。此后每个 spec 启动时都已处于已认证状态,登录不会在每个测试里重跑。
脚手架生成的 playwright.config.ts 会新增一个 setup project,以及一个指向 setup 所写内容的全局 storageState:
import { defineConfig, devices } from '@playwright/test';
export default defineConfig({
use: { baseURL: process.env.HOVER_BASE_URL ?? 'http://localhost:5173' },
projects: [
{ name: 'setup', testMatch: /auth\.setup\.ts/ },
{
name: 'chromium',
use: { ...devices['Desktop Chrome'], storageState: '.auth/user.json' },
dependencies: ['setup'],
},
],
});
chromium project 依赖 setup,所以登录会先运行,保存下来的 storageState 会在本次运行的其余部分被复用。
开箱即可运行
Hover 会搭建好 playwright.config.ts(它的 baseURL 来自本次运行的目标地址;在 CI 里用 HOVER_BASE_URL 覆盖),并把 @playwright/test 加入你的 devDependencies。所以一个全新的套件只需运行:
npx playwright test
在 CI 中
把密码作为 HOVER_PASSWORD 环境变量 / secret 提供,如果 CI 针对不同的 origin 运行,则设置 HOVER_BASE_URL。关于 auth 没有别的东西被内嵌——会话存在于 storageState 中,由 setup project 在运行时生成。