SuperAPI AI 工具集

use-profiles

测试与质量

查看项目

更新于 10-16 10:18

技能介绍

用途

在浏览器自动化工作开始前,加载已保存的 Playwright storageState 认证配置文件,从而不必在每个浏览器会话开始时手动登录。

生效条件

需要同时满足以下条件时该技能才适用:

  • 当前项目存在 .playwright/profiles.json 文件
  • 即将开始浏览器自动化工作(通过 Bash 使用 Playwright CLI)
  • 目标页面需要认证

配置文件发现

在项目根目录检查 .playwright/profiles.json,读取它以发现可用配置文件。文件内容形如:

{ "profiles": { "admin": { "loginUrl": "https://example.com/login", "description": "Full permissions", "createdAt": "2026-03-31T12:00:00Z" } } }

每个配置文件对应一个 storageState 文件,位于 .playwright/profiles/<role-name>.json。

配置文件选择

根据对话上下文确定使用哪个配置文件:

  • 用户提到具体角色(如“test the admin dashboard”“check the speaker view”)时,匹配配置中的配置文件名。
  • 用户未指定角色且只存在一个配置文件时,自动使用它。
  • 用户未指定角色且存在多个配置文件时,询问使用哪一个,并列出可用配置文件及其描述。

加载配置文件

在导航到任何需要认证的页面之前,通过 Bash 工具使用 playwright-cli 加载配置文件。其中 {session} 占位符指当前命名会话(如 runner-desktop、qa-ux——由调用方技能或命令设置)。

先验证 storageState 文件存在于 .playwright/profiles/<role-name>.json。若不存在,告知用户并建议运行 /setup-profiles 创建它。

将配置文件的 cookies 和 localStorage 载入浏览器会话:

playwright-cli -s={session} state-load ".playwright/profiles/<role-name>.json"

这会恢复 storageState JSON 中的所有 cookies 和各源的 localStorage——格式与 Playwright 的 storageState() 相同。

如果配置文件 JSON 包含 sessionStorage 字段(不属于标准 storageState——由 /setup-profiles 添加),需在导航到目标源后单独恢复:

playwright-cli -s={session} goto "<origin>"

然后对每个 sessionStorage 条目:

playwright-cli -s={session} sessionstorage-set "<name>" "<value>"

再导航到目标认证页面。此时 cookies 随请求发送、localStorage 已填充、sessionStorage 已恢复,服务端、客户端以及 SPA 认证库(Supabase、Firebase、Auth0)都能识别该会话。

测试数据文件与验收条件

加载配置文件后,检查 profiles.json 中该配置是否含有 files 数组和/或 acceptance 对象。这些字段是可选的——许多配置不会有。

展示可用文件

如果配置有 files,向调用方展示摘要,例如:

该配置有 N 个测试数据文件可用:

  • valid-deck.pptx — 干净的演示文稿,通过所有检查
  • profanity-deck.pptx — 备注含脏话,应被标记
  • (cloud) oversized-deck.pptx — 200MB 演示文稿,测试大小限制

配置验收条件:上传被接受、处理完成

对云端托管文件(有 url 而非 path)标注 (cloud)。此信息仅展示,本技能不据此执行操作——由使用方(工作流生成器、运行器、代理)决定是否及如何使用。

文件路径校验

对每个含 path 字段的文件条目,验证文件是否存在于项目根目录下的给定路径。若文件缺失则警告:

配置 "speaker" 引用的测试文件 "test-fixtures/valid-deck.pptx" 不存在。该文件可能已被移动或删除。

不要因文件缺失而失败或阻断——仅警告。含 url 的文件不校验(它们可能需要认证或位于私有网络)。

验收条件摘要

若配置有 acceptance,包含配置条件的可读摘要。字段映射如下: uploadAccepted: true → upload accepted processingCompletes: true → processing completes resultDownloadable: true → result downloadable errorExpected: true → error expected expectedStatus: "clear" → expected status: "clear"

若个别文件有验收覆盖,注明哪些文件覆盖了配置默认值:

文件 "corrupted.pptx" 覆盖配置验收:upload rejected、error expected

会话过期检测

加载配置并导航到目标页面后,按顺序使用以下启发式判断会话是否仍有效:

  • URL 跳转:若浏览器被重定向到匹配配置 loginUrl 的 URL,会话可能已过期。检查快照输出中 Page URL 行的 URL。
  • 认证提供方跳转:若最终 URL 在不同域(如 accounts.google.com、auth0.com),应用跳转到了 OAuth 提供方——会话已过期。
  • 页面内容检查:通过 Bash 运行 playwright-cli -s={session} snapshot,查找登录相关元素:登录表单、“Log in”/“Sign in”按钮,或“session expired”文本。若目标页面本应显示认证内容却显示登录界面,会话已过期。

若检测到过期:

  • 告知用户该配置的会话似乎已过期
  • 建议运行 /setup-profiles 刷新
  • 不要尝试自动登录

这些启发式为尽力而为。用户始终可以手动运行 /setup-profiles 刷新任意配置。

配置文件缺失

若 .playwright/profiles.json 存在但引用的配置对应 storageState 文件缺失(如全新克隆后),告知用户:

"此项目配置了 Playwright 配置文件,但认证状态文件缺失(它们被 gitignore,需在本地创建)。运行 /setup-profiles 进行认证。"

无配置

若 .playwright/profiles.json 不存在,该技能不适用。除非用户明确询问认证浏览器自动化,否则不要建议创建配置。