Communitygithub.com

Niltra/web-qa-visual

使用 Playwright CLI 在网站上线前进行全面验证:控制台错误、失败请求、响应式溢出 (375/414/768/1280/1440)、axe 无障碍检查、键盘焦点、reduced-motion、链接、SEO/元数据及加载性能指标。每次测试网站、重大变更后或验证部署时使用。

web-qa-visual 是什么?

该技能利用 Playwright CLI 自动化视觉质量保证流程,确保网站交付前满足严格标准。它集成了多项检查:控制台错误与失败网络请求检测、多个视口(375px 至 1440px)下的响应式溢出分析、axe-core 的严重/关键无障碍违规扫描、键盘焦点与 tab 顺序验证、reduced-motion 模拟,以及内部/外部链接验证。此外,它还涵盖 SEO 元数据(标题、描述、OG、hreflang、JSON-LD)、sitemap/robots.txt 可达性以及 LCP/CLS 等核心性能指标。该技能要求使用生产构建进行性能测量,并生成带有证据的详细门控报告;任何检查失败都会阻止任务被标记为“完成”。它适用于任何可运行 Playwright 的环境中构建或维护 Web 应用的团队,例如独立的 Node.js 项目或集成到 CI/CD 管道中。该技能强调 CLI 执行而非 MCP,以实现快速可重复运行,并明确指出 headless iOS 帧序列验证等局限性。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Niltra/agent-skills-web/tree/HEAD/skills/web-qa-visual

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

使用 Playwright CLI 进行视觉 QA

黄金法则:没有新鲜的命令输出就没有结论。绝不能只说“应该看起来没问题”。

最小化设置

  • Playwright 作为项目的 devDependency;playwright.config.ts 需显式设置 viewport 为 375px(不要用 devices['Pixel 7'],那是 412px),并包含 desktop-chrome 和 mobile-chrome 两个项目。
  • 截图脚本位于 scripts/shot.mjs(不要使用 MCP 来做这个:CLI 更快且可重复)。
  • 对于 axe:@axe-core/playwright。
  • 提供生产构建(npm run build && npm run start)来测量真实性能;仅调试时使用开发环境。

每页和每区域设置需执行的检查

  1. 控制台和网络:page.on('console')、page.on('pageerror')、page.on('requestfailed') 以及状态码 ≥400 的响应。失败 = 红色。
  2. 溢出:在每个视口检查 document.documentElement.scrollWidth <= clientWidth + 1;如果存在溢出,列出导致问题的元素(getBoundingClientRect().right > innerWidth)。
  3. 无障碍:axe 无 critical/serious 违规;只有一个 h1;完整的 img[alt];所有可交互元素可见焦点(使用真实键盘检查 :focus-visible,不要用肉眼检查 CSS);逻辑的 Tab 顺序。
  4. Reduced motion:page.emulateMedia({ reducedMotion: 'reduce' });不应出现旋转、自动播放或超过 200ms 的动画。
  5. 链接:提取所有 href,验证内部链接(200)并将外部链接标记为信息性;0 个无事件处理器的 href="#"。
  6. SEO:title、meta description、canonical、OG、各区域设置的 hreflang、可解析的 JSON-LD、sitemap.xml 和 robots.txt 返回 200。
  7. 性能:加载后使用 PerformanceObserver 测量 LCP/CLS;桌面上 LCP 目标 < 2.5s,CLS < 0.1;通过 rAF 在自动滚动 5 秒内统计长帧(>50ms)来测量滚动卡顿。
  8. Canvas/滚动:由于 headless 模式下 Canvas 可能输出黑色,需通过 DOM 验证:元素具有期望的透明度/变换、节拍文本在正确范围内存在且可见,以及(如果存在)暴露在 window 上的状态。

循环

  • 每次执行后:提供包含门控/命令/结果/状态的表格报告,以及带有证据(选择器、日志或截图)的阻塞项列表。
  • 如果某个门控失败:修复(自己的测试/脚本)或提出具体的 src/ 修复方案并附上证据;重复完整的循环。
  • 将带日期的截图保存到 docs/qa/(每个主要区域设置的桌面 + 移动端),并与基线比较以检测回归。
  • 如果仍有门控处于红色或未执行状态,则不得声明“就绪”。

诚实的局限性

  • 无法在 headless 模式下验证真实 iOS 上的帧序列:应在报告中注明。
  • 通过 npx lighthouse 运行 Lighthouse 是可选的,但在生产构建中推荐使用;如果无法运行,应如实说明而非估算。

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

相关技能