← 所有文章
·playwrightauthenticationstorageState

登录一次,让每个 Playwright 测试复用同一个会话

在登录墙后面,偷懒的套件会在每个 spec 开头都重新登录一遍。十个 spec,十次登录,同一组邮箱和密码抄进你所有的测试文件。测试跑得又慢,你的账号密码如今还躺在 git 里。

Playwright 给了个答案:storageState。登录一次,把浏览器的 cookie 和 local storage 存成一个文件,再让其余每个测试都加载它,这样一开跑就是已登录状态。可要是手动接线,就得自己写一个 setup project、把配置指过去,再一路把状态文件传下去。多数人嫌麻烦,干脆把登录直接粘进每个 spec。

Hover 帮你写好接线

一旦 Hover 发现同一段登录前缀在多个 spec 里反复出现,就会把这些步骤提取到 auth.setup.ts,由它登录并把会话存到磁盘。它会往你的 playwright.config.ts 里加一个 setup project,让浏览器 project 指向存下来的状态。其余每个 spec 都甩掉内联的登录,一开跑就是已认证状态。这个升级不挑顺序:无论你手里有没有 spec,它都用 ts-morph 就地改配置,而不会覆盖掉你原有的设置。

账号密码不进文件

录制时填了密码字段,Hover 会把值脱敏成 process.env.HOVER_PASSWORD——写进 spec 和它的 sidecar 的只有环境变量名,绝不会是密钥本身。setup 文件在运行时才从环境里读密码。CI 以 secret 的形式把它喂进来,而你的仓库自始至终都看不到。

它会一路延续到你的 API 测试

给 UI spec 做认证的那个会话,同样会给 Hover 在你探索时捕获的请求做认证,所以 API spec 能以已登录用户的身份去断言契约,不必你再重新提供一次 token。

最后你手上的这套测试:只登录一次,git 里不留半点密钥,review 时读起来清清爽爽,当初那十个文件里的登录样板也全没了。

阅读认证文档 →

在你自己的应用上试试 Hover。

把 Hover 的 MCP 加到你已经在用的编码 agent。它探索你的应用,结晶出你自己拥有的纯 Playwright spec。

npm i -g @hover-dev/mcp && claude mcp add hover -- hover-mcp阅读快速开始 →