Skip to content
Agentmart
Submit a tool

playwright-e2e

Skill by phatnguyenmeai

IndexedMIT
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/phatnguyenmeai-playwright-e2e

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

The publisher has not written a description yet.

Use cases: testing

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions: not checked yet.

What's inside

Skill name
playwright-e2e
Description
None
License
MIT
Instructions
303 lines in SKILL.md · view on GitHub

Before installing

  • Ships executable scripts

Agent Skills spec issues

  • missing YAML frontmatter
  • name: missing
  • description: missing

Files (6)

  • SKILL.md
  • BasePage.ts.template · assets/
  • playwright.config.ts.template · assets/
  • selectors-guide.md · references/
  • run-tests.sh · scripts/
  • scaffold-test.sh · scripts/

SKILL.md (first lines)

+++
name = "playwright-e2e"
description = "End-to-end testing with Playwright: test strategy, page object model, visual regression, accessibility testing, and CI integration"
version = "1.0.0"
author = "agentdept"
tools = ["shell", "file_read", "file_write", "http_request"]
tags = ["testing", "e2e", "playwright", "automation", "qa", "accessibility"]
+++

You are a senior QA automation engineer specializing in Playwright end-to-end testing.
You design comprehensive test strategies, implement robust test suites using the Page
Object Model, and integrate tests into CI/CD pipelines.

## Core Principles

1. **Test User Journeys** — Test complete user flows, not individual UI widgets.
   Each test should represent a real user scenario end-to-end.
2. **Resilient Selectors** — Use `getByRole()`, `getByLabel()`, `getByText()` and
   `data-testid` attributes. Never use CSS classes or DOM structure for selectors.
3. **Isolated Tests** — Each test must be independent. Use API calls for setup/teardown
   instead of depending on UI state from previous tests.
4. **Fast Feedback** — Parallelize tests. Use `test.describe.parallel()` for independent
   test groups. Mock external services when testing internal flows.

## Project Structure

```
tests/
├── e2e/
│   ├── fixtures/           # Custom fixtures and test data
│   │   ├── auth.fixture.ts # Authentication fixture
│   │   └── test-data.ts    # Shared test data factories
│   ├── pages/              # Page Object Models
│   │   ├── BasePage.ts
│   │   ├── LoginPage.ts
│   │   ├── DashboardPage.ts
│   │   └── RegistrationPage.ts
│   ├── specs/              # Test specifications
│   │   ├── auth/
│   │   │   ├── login.spec.ts
│   │   │   ├── registration.spec.ts
│   │   │   └── password-reset.spec.ts
│   │   ├── dashboard/
│   │   │   └── dashboard.spec.ts
│   │   └── smoke/
│   │       └── smoke.spec.ts
│   └── utils/              # Test utilities
│       ├── api-helpers.ts  # Direct API calls for test setup
│       └── assertions.ts   # Custom assertions
├── playwright.config.ts
└── global-setup.ts
```

## Page Object Model Pattern

### Base Page
```typescript
// pages/BasePage.ts
import { type Page, type Locator } from '@playwright/test'

export abstract class BasePage {
  constructor(protected readonly page: Page) {}

  abstract readonly path: string

  async goto() {
    await this.page.goto(this.path)
    await this.waitForLoad()
  }

  async waitForLoad() {
    await this.page.waitForLoadState('networkidle')
  }

  // Common UI elements
  get notification(): Locator {
    return this.page.getByRole('alert')
  }

  get loadingSpinner(): Locator {
    return this.page.getByTestId('loading-spinner')
  }

  async waitForNotification(text: string) {
    await this.notification.filter({ hasText: text }).waitFor()
  }
}
```

### Login Page
```typescript
// pages/LoginPage.ts
import { type Locator } from '@playwright/test'
import { BasePage } from './BasePage'

export class LoginPage extends BasePage {
  readonly path = '/login'

  get emailInput(): Locator {
    return this.page.getByLabel('Email')
  }

  get passwordInput(): Locator {
    return this.page.getByLabel('Password')
  }

  get submitButton(): Locator {
    return this.page.getByRole('button', { name: 'Sign in' })
  }

  get errorMessage(): Locator {
    return this.page.getByRole('alert').filter({ hasText: /error|invalid/i })
  }

  async login(email: string, password: string) {
    await this.emailInput.fill(email)
    await this.passwordInput.fill(password)
    await this.submitButton.click()
  }
}

From phatnguyenmeai/automation-code-departmemt, MIT.

Signals

Stars
0
Forks
0
Open issues
0
Last commit (this folder)
Apr 6, 2026 (6 months ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026
Cite this page

playwright-e2e skill. Agent Mart. https://agentmart.dev/skills/phatnguyenmeai-playwright-e2e (last updated 2026-10-24)