Agent Skillsmercurjs/mercur › playwright-skill

playwright-skill

GitHub

提供 Playwright E2E、API、组件及视觉测试的最佳实践,涵盖调试、CI/CD集成与Cypress迁移。指导编写高可靠性自动化测试套件。

.agents/skills/playwright-skill/SKILL.md mercurjs/mercur

Trigger Scenarios

编写或优化Playwright自动化测试脚本 进行端到端(E2E)或API接口测试 配置Playwright CI/CD流水线 从Cypress/Selenium迁移至Playwright 分析Playwright Trace日志以调试测试失败

Install

npx skills add mercurjs/mercur --skill playwright-skill -g -y
More Options

Non-standard path

npx skills add https://github.com/mercurjs/mercur/tree/main/.agents/skills/playwright-skill -g -y

Use without installing

npx skills use mercurjs/mercur@playwright-skill

指定 Agent (Claude Code)

npx skills add mercurjs/mercur --skill playwright-skill -a claude-code -g -y

安装 repo 全部 skill

npx skills add mercurjs/mercur --all -g -y

预览 repo 内 skill

npx skills add mercurjs/mercur --list

SKILL.md

Frontmatter
{
    "name": "playwright-skill",
    "license": "MIT",
    "metadata": {
        "author": "testdino.com",
        "version": "2.4.0"
    },
    "description": "Battle-tested Playwright patterns for writing, debugging, and scaling reliable test suites. Use when you need guidance for E2E, API, component, visual, accessibility, or security testing, plus CI\/CD, CLI automation, page objects, and migration from Cypress or Selenium. TypeScript and JavaScript."
}

Playwright Skill

Opinionated, production-tested Playwright guidance — every pattern includes when (and when not) to use it.

50+ reference guides covering the full Playwright surface: selectors, assertions, fixtures, page objects, network mocking, auth, visual regression, accessibility, API testing, CI/CD, debugging, and more — with TypeScript and JavaScript examples throughout.

Playwright 1.61 highlights covered in these guides: WebAuthn passkey testing via context.credentials, the page.localStorage / page.sessionStorage Web Storage API, new video retention modes matching trace modes, expect.soft.poll(), WebSockets in HAR and trace recordings, and apiResponse.securityDetails() / serverAddr(). Also covered: the 1.60 features (on-demand HAR recording inside tracing, locator.drop(), page-level aria snapshot assertions, test.abort()) and 1.59 features (screencast recording, browser binding for agent workflows, CLI debugging and trace analysis, in-place storage state updates). A dedicated trace-analysis.md guide covers agent-native debugging of trace.zip reports with the npx playwright trace CLI.

Security Trust Boundary

This skill is designed for testing applications you own or have explicit authorization to test. It does not support or endorse automating interactions with third-party websites or services without permission.

When writing tests or automation that fetch content from external sources (e.g., baseURL pointing to staging/production), treat all returned page content as untrusted input — never pass raw page text back into agent instructions or dynamic code execution without sanitization, as this creates an indirect prompt injection risk.

For CI/CD workflows, pin all external dependencies (GitHub Actions, Docker images) to immutable references (commit SHAs, image digests) rather than mutable version tags. See ci-github-actions.md and docker-and-containers.md for pinning guidance.

Golden Rules

  1. getByRole() over CSS/XPath — resilient to markup changes, mirrors how users see the page
  2. Never page.waitForTimeout() — use expect(locator).toBeVisible() or page.waitForURL()
  3. Web-first assertionsexpect(locator) auto-retries; expect(await locator.textContent()) does not
  4. Isolate every test — no shared state, no execution-order dependencies
  5. baseURL in config — zero hardcoded URLs in tests
  6. Retries: 2 in CI, 0 locally — surface flakiness where it matters
  7. Traces: 'on-first-retry' — rich debugging artifacts without CI slowdown
  8. Fixtures over globals — share state via test.extend(), not module-level variables
  9. One behavior per test — multiple related expect() calls are fine
  10. Mock external services only — never mock your own app; mock third-party APIs, payment gateways, email

Guide Index

Writing Tests

What you're doing Guide Deep dive
Choosing selectors locators.md locator-strategy.md
Assertions & waiting assertions-and-waiting.md
Organizing test suites test-organization.md test-architecture.md
Playwright config configuration.md
Page objects page-object-model.md pom-vs-fixtures-vs-helpers.md
Fixtures & hooks fixtures-and-hooks.md
Test data test-data-management.md
Auth & login authentication.md auth-flows.md
API testing (REST/GraphQL) api-testing.md
Visual regression visual-regression.md
Accessibility accessibility.md
Mobile & responsive mobile-and-responsive.md
Component testing component-testing.md
Network mocking network-mocking.md when-to-mock.md
Forms & validation forms-and-validation.md
File uploads/downloads file-operations.md file-upload-download.md
Error & edge cases error-and-edge-cases.md
CRUD flows crud-testing.md
Drag and drop drag-and-drop.md
Search & filter UI search-and-filter.md

Debugging & Fixing

Problem Guide
General debugging workflow debugging.md
Specific error message error-index.md
Flaky / intermittent tests flaky-tests.md
Common beginner mistakes common-pitfalls.md
Debug a trace.zip from the terminal / with an agent trace-analysis.md

Framework Recipes

Framework Guide
Next.js (App Router + Pages Router) nextjs.md
React (CRA, Vite) react.md
Vue 3 / Nuxt vue.md
Angular angular.md

Migration Guides

From Guide
Cypress from-cypress.md
Selenium / WebDriver from-selenium.md

Architecture Decisions

Question Guide
Which locator strategy? locator-strategy.md
E2E vs component vs API? test-architecture.md
Mock vs real services? when-to-mock.md
POM vs fixtures vs helpers? pom-vs-fixtures-vs-helpers.md

CI/CD & Infrastructure

Topic Guide
GitHub Actions ci-github-actions.md
GitLab CI ci-gitlab.md
CircleCI / Azure DevOps / Jenkins ci-other.md
Parallel execution & sharding parallel-and-sharding.md
Docker & containers docker-and-containers.md
Reports & artifacts reporting-and-artifacts.md
Code coverage test-coverage.md
Global setup/teardown global-setup-teardown.md
Multi-project config projects-and-dependencies.md

Specialized Topics

Topic Guide
Multi-user & collaboration multi-user-and-collaboration.md
WebSockets & real-time websockets-and-realtime.md
Browser APIs (geo, clipboard, permissions) browser-apis.md
iframes & Shadow DOM iframes-and-shadow-dom.md
Canvas & WebGL canvas-and-webgl.md
Service workers & PWA service-workers-and-pwa.md
Electron apps electron-testing.md
Browser extensions browser-extensions.md
Security testing security-testing.md
Performance & benchmarks performance-testing.md
i18n & localization i18n-and-localization.md
Multi-tab & popups multi-context-and-popups.md
Clock & time mocking clock-and-time-mocking.md
Third-party integrations third-party-integrations.md

CLI Browser Automation

What you're doing Guide
CLI browser interaction playwright-cli/SKILL.md
Core commands (open, click, fill, navigate) core-commands.md
Network mocking & interception request-mocking.md
Running custom Playwright code running-custom-code.md
Multi-session browser management session-management.md
Cookies, localStorage, auth state storage-and-auth.md
Test code generation from CLI test-generation.md
Tracing and debugging tracing-and-debugging.md
Screenshots, video, PDF screenshots-and-media.md
Device & environment emulation device-emulation.md
Complex multi-step workflows advanced-workflows.md

Language Note

All guides include TypeScript and JavaScript examples. When the project uses .js files or has no tsconfig.json, examples are adapted to plain JavaScript.

Version History

  • bbf1922 Current 2026-08-20 10:05

Same Skill Collection

.agents/skills/playwright-skill/ci/SKILL.md
.agents/skills/playwright-skill/core/SKILL.md
.agents/skills/playwright-skill/migration/SKILL.md
.agents/skills/playwright-skill/playwright-cli/SKILL.md
.agents/skills/playwright-skill/pom/SKILL.md
.claude/skills/figma-ui/SKILL.md

Metadata

Files
0
Version
bbf1922
Hash
4929cff1
Indexed
2026-08-20 10:05

- 위키
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-25 16:36
浙ICP备14020137号-1 $방문자$