Skip to content
Back to skills

Playwright E2e Testing

ASecurity

当需要为 Web 应用搭建或扩展端到端(E2E)自动化测试时使用;用 Playwright 完成安装配置、编写测试脚本、视觉回归、跨浏览器与移动端模拟、并接入 CI/CD,产出可运行的测试套件与流水线;不适用于单元/接口测试、纯手工探索测试或非浏览器场景;触发词:Playwright、E2E、端到端测试、跨浏览器、视觉回归、浏览器自动化、CI 测试

  • 3 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 19, 2026
ai-agentsjavascriptgojavabashnodetestinggitci/cd

Works with

  • cursor
  • cli

Security analysis

A100/100

Scanned September 19, 2026

npx -y skills add findscripter/everything-skills --skill playwright-e2e-testing --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Playwright E2e Testing?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Playwright E2e Testing
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/findscripter-playwright-e2e-testing/badge)](https://www.skillsdirectory.com/skills/findscripter-playwright-e2e-testing)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: playwright-e2e-testing
title: Playwright 端到端测试
description: 当需要为 Web 应用搭建或扩展端到端(E2E)自动化测试时使用;用 Playwright 完成安装配置、编写测试脚本、视觉回归、跨浏览器与移动端模拟、并接入 CI/CD,产出可运行的测试套件与流水线;不适用于单元/接口测试、纯手工探索测试或非浏览器场景;触发词:Playwright、E2E、端到端测试、跨浏览器、视觉回归、浏览器自动化、CI 测试
domain: 研发/testing
triggers: [Playwright, E2E 测试, 端到端测试, 跨浏览器测试, 视觉回归, 浏览器自动化, playwright test, CI 中跑前端测试, page object, trace 追踪]
tags: [测试, e2e, playwright, 浏览器自动化, 视觉回归, ci/cd, 前端, qa]
level: 进阶
status: stable
agents: [claude-code, codex, cursor, gemini-cli]
tools: [@playwright/test, playwright CLI, Node.js / npm, GitHub Actions, Chromium / Firefox / WebKit]
requires: []
related: [webapp-testing, browserstack-cross-browser-test, javascript-testing-patterns, android-ui-verification]
combines_with: [ci-cd-pipeline-builder, accessibility-wcag-audit, test-coverage-gap-finder]
license: MIT
source: sickn33/agentic-awesome-skills
source_license: MIT
---
## 何时使用

当你要为 Web 应用建立或扩展浏览器端到端(E2E)自动化测试时使用,典型场景:

- 从零搭建 Playwright 测试框架,配置测试目录与浏览器
- 为关键业务流(登录、下单、表单提交)编写自动化脚本与断言
- 做视觉回归(截图基线比对)
- 在 Chromium / Firefox / WebKit 及移动端模拟下做跨浏览器测试
- 把 E2E 测试接入 CI/CD,并行执行、产出报告与失败追踪产物

**不该用的边界:**

- 纯单元测试或函数级逻辑 → 用 Vitest/Jest,不要用 Playwright
- 后端 HTTP 接口契约测试 → 用接口测试工具(虽 Playwright 也能发请求,但非首选)
- 一次性手工探索 / 无回归价值的临时点击 → 不值得固化为脚本
- 缺少可访问的目标 URL、测试账号、成功判定标准时:先停下来问清楚,别盲目生成脚本

## 步骤

1. **环境搭建**:安装 Playwright,初始化配置,建立 `tests/` 目录,安装浏览器内核。
2. **测试设计**:梳理关键流程,规划测试数据与 fixtures,按页面建立 Page Object,避免选择器散落。
3. **编写实现**:写测试脚本与断言,用自动等待(web-first assertions)代替硬编码 sleep,处理动态内容与异常。
4. **浏览器能力**:按需开启 headless、截图、录像、trace 追踪、移动端模拟。
5. **视觉回归**:生成基线图,加 `toHaveScreenshot` 断言,设置容差阈值,审查差异。
6. **跨浏览器**:在 config 的 `projects` 中配置多内核与移动设备,对比结果。
7. **接入 CI/CD**:编写流水线,分片并行,上传 report/trace 产物,配置失败通知。

## 指令

```bash
# 1. 初始化(自动生成 config、示例用例、CI 模板)
npm init playwright@latest

# 2. 仅安装浏览器内核(已有项目)
npx playwright install --with-deps

# 3. 运行 / 调试
npx playwright test                 # 全量
npx playwright test --project=chromium
npx playwright test --ui            # UI 模式交互调试
npx playwright test --debug         # Inspector 单步
npx playwright codegen <url>        # 录制生成脚本

# 4. 报告与追踪
npx playwright show-report
npx playwright show-trace trace.zip

# 5. 视觉回归基线(首次或刻意更新)
npx playwright test --update-snapshots
```

## 示例

**playwright.config.ts —— 跨浏览器 + 失败追踪:**

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

export default defineConfig({
  testDir: './tests',
  fullyParallel: true,
  retries: process.env.CI ? 2 : 0,
  reporter: 'html',
  use: {
    baseURL: 'http://localhost:3000',
    trace: 'on-first-retry',     // 仅重试时收集 trace,降低开销
    screenshot: 'only-on-failure',
  },
  projects: [
    { name: 'chromium', use: { ...devices['Desktop Chrome'] } },
    { name: 'firefox',  use: { ...devices['Desktop Firefox'] } },
    { name: 'webkit',   use: { ...devices['Desktop Safari'] } },
    { name: 'mobile',   use: { ...devices['Pixel 5'] } },
  ],
});
```

**测试脚本 —— 自动等待 + 视觉回归:**

```ts
import { test, expect } from '@playwright/test';

test('登录后跳转到仪表盘', async ({ page }) => {
  await page.goto('/login');
  await page.getByLabel('用户名').fill('demo');
  await page.getByLabel('密码').fill('secret');
  await page.getByRole('button', { name: '登录' }).click();

  // web-first 断言,自动重试等待,无需手写 sleep
  await expect(page.getByRole('heading', { name: '仪表盘' })).toBeVisible();
  await expect(page).toHaveScreenshot('dashboard.png', { maxDiffPixelRatio: 0.01 });
});
```

**CI/CD(GitHub Actions):**

```yaml
name: e2e
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with: { node-version: 20 }
      - run: npm ci
      - run: npx playwright install --with-deps
      - run: npx playwright test
      - uses: actions/upload-artifact@v4
        if: ${{ !cancelled() }}
        with:
          name: playwright-report
          path: playwright-report/
          retention-days: 7
```

## 注意事项

- **选择器优先级**:优先用 `getByRole` / `getByLabel` / `getByText` 等面向用户的定位器,少用脆弱的 CSS/XPath。
- **不要硬等待**:禁用 `waitForTimeout(固定毫秒)`,依赖 web-first 断言的自动重试,否则测试既慢又 flaky。
- **视觉回归基线**:基线截图应在 CI 同款环境(同 OS/字体/渲染)生成,本地与 CI 渲染差异会导致大量假阳性;用 `maxDiffPixelRatio` 设容差。
- **trace 是排障利器**:CI 失败时务必上传 trace.zip,用 `show-trace` 回看每一步 DOM/网络/截图。
- **隔离与数据**:每个测试自带独立状态,借助 fixtures 准备/清理数据,避免用例间互相污染。
- **质量门禁**:合并前确认——用例全绿、关键流覆盖充分、视觉测试稳定、跨浏览器通过、CI 集成正常。
- 输出不能替代针对具体环境的人工验证与专家评审;输入、权限、成功标准缺失时先澄清再动手。

## 互见

- 测试与 QA 整体工作流(单元 / 接口 / E2E 分层)
- 前端开发与 Web 性能优化技能
- CI/CD 自动化与 GitHub Actions 模板

---

采编自 sickn33/antigravity-awesome-skills(MIT 许可证),已按「技能大典」规范适配重写并补充可执行命令与代码示例。

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…