Agent skill

Playwright E2E Review

by fmflurry in fmflurry/settings-opencode

Audit Playwright E2E tests in the gc.platform suite (tests/playwright) against the four hard rules — no mocks, Page Object Model, work-by-fixture, one folder per frontend feature module — plus…

MITAuto-check passedTesting & QA

Install Playwright E2E Review

skills CLI
$ npx skills add fmflurry/settings-opencode --skill playwright-e2e-review -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install fmflurry/settings-opencode playwright-e2e-review --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/fmflurry/settings-opencode.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/playwright-e2e-review .claude/skills/playwright-e2e-review && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
playwright-e2e-review
GitHub stars
171
Token cost
~2.2k tokens
SKILL.md length
860 words
Files
1
Skills in repo
20
Repo updated
First seen
Licence
MIT

At a glance

Audit Playwright E2E tests in the gc.platform suite (tests/playwright) against the four hard rules — no mocks, Page Object Model, work-by-fixture, one folder per frontend feature module — plus…

  • The user wants to review
  • SKILL.md covers When to activate, Scope the review, The checklist and Independent verification, plus 1 more section
  • Calls git and npx
  • Make sure it follows the conventions for .spec.ts / POM / fixture files

What it does

Playwright E2E Review is an agent skill from fmflurry/settings-opencode. Audit Playwright E2E tests in the gc.platform suite (tests/playwright) against the four hard rules — no mocks, Page Object Model, work-by-fixture, one folder per frontend feature module — plus strict-TypeScript quality. Use whenever the user wants to review, check, audit, or "make sure it follows the conventions" for .spec.ts / POM / fixture files, before merging or committing E2E test changes, or asks "does this respect the Playwright rules?". Read-only: reports tiered findings with file:line and a concrete fix…

Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Testing & QA, covering End-to-end testing and Browser testing. It works with Playwright and TypeScript. The repository describes itself as: Custom OpenCode settings. The licence is MIT.

When your agent uses it

  • The user wants to review
  • Make sure it follows the conventions for .spec.ts / POM / fixture files
  • Committing E2E test changes
  • Asks does this respect the Playwright rules?

Example prompts

  • “make sure it follows the conventions”
  • “does this respect the Playwright rules?”
  • “/playwright-e2e-review”

Requirements

  • Node.js

What it can do on your machine

Read from SKILL.md and the folder at commit 0e6c33c. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • git
    • npx

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git and npx, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Playwright E2E Review loads about 2.2k tokens when it runs. Until then it costs about 142 tokens; SKILL.md has 860 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~142
When it runs · the whole SKILL.md, loaded when a task matches
~2.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from fmflurry/settings-opencode at commit 0e6c33c, republished under its MIT licence (© fmflurry). 860 words, ~2,187 tokens.

Download SKILL.mdSave it as .claude/skills/playwright-e2e-review/SKILL.md (or your agent's skills folder).
name
playwright-e2e-review
description
Audit Playwright E2E tests in the gc.platform suite (tests/playwright) against the four hard rules — no mocks, Page Object Model, work-by-fixture, one folder per frontend feature module — plus strict-TypeScript quality. Use whenever the user wants to review, check, audit, or "make sure it follows the conventions" for `.spec.ts` / POM / fixture files, before merging or committing E2E test changes, or asks "does this respect the Playwright rules?". Read-only: reports tiered findings with file:line and a concrete fix — it does not edit files.

Playwright E2E Review — gc.platform

Audit Playwright test code against the suite's four hard rules (from tests/playwright/CLAUDE.md) and its strict-TypeScript bar. This skill is read-only: produce findings the author can act on, don't patch. If the user wants the fixes applied, hand the findings to the playwright-e2e-authoring skill or make the edits in a separate, explicit step.

Path convention: All paths in this document are relative to tests/playwright/ (the test suite root).

When to activate

  • Reviewing new or changed .spec.ts, *.page.ts, or *.fixture.ts files.
  • A pre-merge / pre-commit check of E2E test changes.
  • "Does this follow the Playwright conventions?" / "audit these tests".

Scope the review

Default to the changed files when there's a diff, otherwise the path the user names:

bash
cd tests/playwright
git diff --name-only main...HEAD -- tests support   # changed test files

Read each file fully before judging — context matters (e.g. a page.locator('tbody tr') inside a POM is allowed; the same inside a spec is not).

The checklist

Rule 1 — No mocks (Critical)

The suite's entire value is that it hits the real stack. Any simulation is a Critical finding.

bash
grep -rnE "page\.route|context\.route|waitForTimeout|mockServiceWorker|msw|sinon|nock|page\.fulfill" tests support --include='*.ts'

(Or use the harness Grep tool.)

  • page.route() / context.route() / route.fulfill() → network interception. Forbidden.
  • page.waitForTimeout(...) or any arbitrary sleep → flaky and banned; replace with a web-first assertion on the awaited state.
  • MSW / sinon / nock / stub libraries, hardcoded response fixtures, fake data files → forbidden.

Admitted exception: A single page.route() with times: 1 is allowed only to force a failure shape the real stack cannot produce deterministically (e.g. a 401, or .abort()), scoped to one URL pattern, carrying a JSDoc justification. Link to ../playwright-e2e-authoring/references/spec.md#admitted-exceptions for examples and constraints. If the route stubs business data, simulates success, or widens beyond one request — Critical.

Rule 2 — Page Object Model (High)
bash
grep -rnE "(page|authenticatedPage)\.(locator|getBy|click|fill|goto)\(" tests --include='*.spec.ts'

(Or use the harness Grep tool.)

  • A spec calling page.locator(...) / page.getByRole(...) / page.click(...) (or the same on authenticatedPage) directly → DOM access leaked out of a POM. Move it into a POM method.
  • A spec that destructures authenticatedPage to touch the DOM directly (rather than calling POM methods) is the same violation.
  • Every screen referenced by a spec should have a POM under tests/<module>/pages/ that extends BasePage (support/pages/base.page.ts).
  • Inside POMs: flag fragile selectors (raw CSS/XPath, index-based nth(...)) where a getByRole/getByLabel/getByTestId would work. page.locator('tbody tr') filtered by text is acceptable for structural collections.

False negatives (grep won't catch): Locators obtained via a destructured page stored in a variable (e.g. const { getByRole } = page; getByRole(...)), or obtained via context.newPage() inline in the test. Read the file to verify. False positive: page.goto in a public-route beforeEach is allowed (part of test setup, not implementation detail).

Rule 3 — Work by fixture (High)
bash
grep -rnE "from '@playwright/test'" tests --include='*.spec.ts'   # specs must NOT import from here
grep -rnE "new \w+Page\(" tests --include='*.spec.ts'             # POMs must come from fixtures

(Or use the harness Grep tool.)

  • A spec importing test/expect from @playwright/test instead of its module fixture (./fixtures/<module>.fixture) → loses fixtures. Fix the import.
  • new SomePage(...) inside a spec → POM instantiated by hand instead of injected. Provide it as a fixture key.
  • A module fixture should extend base (public routes) or auth (authenticated routes) and re-export expect.
  • Authenticated-route POMs should be bound to authenticatedPage, not a fresh page.
  • Admitted exceptions: Importing BrowserContext types from @playwright/test is allowed for multi-context tests (Medium "verify justification" instead of High). Hand-instantiating a POM with test.use({ storageState: undefined }) is allowed for alternate-tenant tests. Link to ../playwright-e2e-authoring/references/spec.md#admitted-exceptions for constraints.
  • Orphan POMs: Each POM class under tests/<module>/pages/ must be exposed by a key in the module fixture. Flag any POMs that are imported nowhere (Medium).
Show full SKILL.md (318 more words)Show less
Rule 4 — Per application module (Medium)
  • Test folder tests/<module>/ must mirror a real frontend/src/app/modules/<module>. Flag mismatched or invented module names.
  • POM, fixtures, and specs for a module stay colocated under that folder; cross-module helpers belong in support/, not copied between modules.
  • Naming: <screen>.page.ts/<Screen>Page, <module>.fixture.ts, <feature>.spec.ts.
TypeScript & hygiene
bash
# Detect `any` type (not English word "any" in comments):
grep -rnE ":\s*any\b|as any|<any[,>]" tests support --include='*.ts'

# Detect console.log in test code:
grep -rnE "console\.log" tests support --include='*.ts'

# Detect leftover test markers:
grep -rnE "test\.(only|skip|fixme)\(" tests --include='*.spec.ts'

(Or use the harness Grep tool.)

  • any type annotation (: any, as any, <any>) → repo-wide ban (High). Locators are Locator, ctor params Page.
  • console.log in test code → remove.
  • Mutated shared state instead of fresh objects → flag (immutability is a repo rule).
  • Leftover test markers: test.only, test.skip, test.fixme without a reason string → High for .only (blocks CI), Medium for .skip/.fixme (explain why). Note: forbidOnly is CI-enforced, not locally.
  • Warm-up check (Medium): Every authenticated route navigated by a POM's goto() must appear in the route warm-up loop of support/auth.setup.ts. Cross-check the two lists — missing routes cause cold-compile flakiness.
  • Comment audit (High): If the repo provides scripts/check-added-comments.sh, run it against the base branch; otherwise git diff -U0 | grep -nE '^\+.*(//|/\*|#|<!--)', to verify all added/changed comments are truthful and belong to allowed classes (~/.claude/rules/common/code-comments.md, or the repo's copy). False or forbidden comments block approval.

Independent verification

Don't trust a green self-report — compile it yourself:

bash
cd tests/playwright
npx tsc --noEmit --pretty false

Report the result. If it errors, those are Critical findings regardless of the checklist.

Output format

Lead with a one-line verdict, then findings grouped by severity, each with file:line, the rule it breaks, and a concrete fix. Close with what's clean so the author knows it was actually checked.

## Playwright E2E review — <scope>

Verdict: <BLOCK / approve with fixes / clean>

### Critical
- tests/foo/foo.spec.ts:23 — Rule 1 (no mocks): `page.route('**/api/x')` intercepts the backend.
  Fix: delete the route; assert against the real response, seed data via the `request` fixture.

### High
- tests/foo/foo.spec.ts:1 — Rule 3 (fixtures): imports `test` from `@playwright/test`.
  Fix: `import { test, expect } from './fixtures/foo.fixture';`

### Medium
- ...

### Clean
- POMs extend BasePage and use getByRole/getByLabel throughout.
- `npx tsc --noEmit` passes.

Keep it terse and specific — a reviewer should be able to jump to each file:line and act without re-reading the rules.

For the fix wording: Reuse the templates in ../playwright-e2e-authoring/references/pom.md, fixtures.md, spec.md, and data-setup.md so fixes feel native to the suite's conventions.

On duplication: The four core rules are already stated in tests/playwright/CLAUDE.md (canonical). This skill's checklist adds procedure and the review's own verification steps; do not restate the full rules, only reference them.

© fmflurry, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/playwright-e2e-review of fmflurry/settings-opencode.

Open the folder on GitHubat commit 0e6c33c

Compare with similar skills

Playwright E2E Review next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Playwright E2E Review compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Playwright E2E Review this skillfmflurry/settings-opencode171—~2.2kAutomated safety check: PassMIT
RStudio Selenium to Playwright Migrationrstudio/rstudio5.1k—~3.6kAutomated safety check: PassCustom licence
Svelte Testingspences10/sveltest113—~579Automated safety check: PassMIT
Playwright Login Flowsandrewyng/context-hub14k—~715Automated safety check: PassMIT
Ha Frontend Testinghome-assistant/frontend5.7k—~1.7kAutomated safety check: PassApache-2.0
Playwright Page Objectsbartstc/vite-ts-react-template122—~1kAutomated safety check: NotesMIT

Similar skills

  • Converts RStudio Python Selenium electron tests into TypeScript Playwright tests, checking each against a live RStudio before counting it as migrated.

    5.1k GitHub stars~3.6k tokensUpdated yesterday
    Testing & QAAuto-check passed
  • Svelte Testing

    spences10/sveltest

    Fix and create Svelte 5 tests with vitest-browser-svelte and Playwright.

    113 GitHub stars~579 tokensUpdated yesterday
    Testing & QAAuto-check passed
  • Playwright Login Flows

    andrewyng/context-hub

    Collects reusable Playwright patterns for logging in during end-to-end tests: password forms, OAuth redirects, saved browser state and TOTP two-factor codes.

    14k GitHub stars~715 tokensUpdated 4 mo ago
    Testing & QAAuto-check passed
  • Ha Frontend Testing

    home-assistant/frontend

    Home Assistant frontend testing and validation workflow. An agent skill from home-assistant/frontend.

    5.7k GitHub stars~1.7k tokensUpdated yesterday
    Testing & QAAuto-check passed
  • Playwright Page Objects

    bartstc/vite-ts-react-template

    A skill your agent uses when creating page objects or refactoring Playwright E2E tests for better maintainability with Page Object Model patterns.

    122 GitHub stars~1k tokensUpdated 2 days ago
    Testing & QAAuto-check: notes
  • Common Tasks

    idavidov13/agentic-playwright

    Copy-paste AI prompt templates for common Playwright scaffold development tasks — adding page objects, functional/E2E/API tests, Zod schemas, factories, fixtures, and components.

    223 GitHub stars~2.5k tokensUpdated 7 days ago
    Testing & QAAuto-check passed

More from fmflurry/settings-opencode

All 20 skills in this repo
  • Show Your Work

    fmflurry/settings-opencode

    Keep a reviewable decision trail for long-running or unattended work: a TSV log with one row per decision (what, why, evidence, result).

    171 GitHub stars~1.8k tokensUpdated yesterday
    Auto-check passed
  • Playwright E2E Authoring

    fmflurry/settings-opencode

    Scaffold and extend Playwright E2E tests for the gc.platform suite (tests/playwright), wiring every artifact to the real frontend (localhost:4200) + real .NET backend — never mocks.

    171 GitHub stars~2.4k tokensUpdated yesterday
    Auto-check passed
  • Why

    fmflurry/settings-opencode

    A skill your agent uses for 'why does X work this way', 'why we picked Y', design rationale, regressions, postmortems, or data-backed thresholds.

    171 GitHub stars~2k tokensUpdated yesterday
    Auto-check passed
  • Angular Accessibility

    fmflurry/settings-opencode

    Audit and fix common accessibility issues in Angular templates and Angular Material components.

    171 GitHub stars~2.7k tokensUpdated yesterday
    Auto-check passed
  • Angular Clean Architecture

    fmflurry/settings-opencode

    Scaffolds and extends Angular standalone feature MODULES under src/app/modules/{name} using Clean Architecture layering (presentation/application/core/infrastructure), a self-registering module…

    171 GitHub stars~3.6k tokensUpdated yesterday
    Auto-check passed
  • Angular Cop

    fmflurry/settings-opencode

    Pre-merge code review for Angular + TypeScript pull requests.

    171 GitHub stars~1.4k tokensUpdated yesterday
    Auto-check passed

Categories

Questions about Playwright E2E Review

What does Playwright E2E Review do?

Audit Playwright E2E tests in the gc.platform suite (tests/playwright) against the four hard rules — no mocks, Page Object Model, work-by-fixture, one folder per frontend feature module — plus…. Playwright E2E Review is an agent skill from fmflurry/settings-opencode.platform suite (tests/playwright) against the four hard rules — no mocks, Page Object Model, work-by-fixture, one folder per frontend feature module — plus strict-TypeScript quality.

When should I use Playwright E2E Review?

Playwright E2E Review fits situations like: the user wants to review; make sure it follows the conventions for .spec.ts / POM / fixture files; committing E2E test changes; asks does this respect the Playwright rules?.

How do I install Playwright E2E Review in Claude Code?

Run `npx skills add fmflurry/settings-opencode --skill playwright-e2e-review -a claude-code`. Or copy the skill folder (skills/playwright-e2e-review in fmflurry/settings-opencode) into .claude/skills/playwright-e2e-review in your project. Claude Code loads it when a task matches its description.

How do I install Playwright E2E Review in Codex?

Run `npx skills add fmflurry/settings-opencode --skill playwright-e2e-review -a codex`. Or copy the skill folder (skills/playwright-e2e-review in fmflurry/settings-opencode) into .agents/skills/playwright-e2e-review in your project. Codex loads it when a task matches its description.

Can I use Playwright E2E Review in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add fmflurry/settings-opencode --skill playwright-e2e-review -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/playwright-e2e-review, .gemini/skills/playwright-e2e-review, .github/skills/playwright-e2e-review and .opencode/skills/playwright-e2e-review in your project.

What does Playwright E2E Review need to run?

Going by SKILL.md and its folder, Playwright E2E Review needs the command-line tools its instructions call (git and npx). Our summary lists: Node.js.

Does Playwright E2E Review access the network?

SKILL.md contains no URLs. Its commands use git and npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Playwright E2E Review safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Playwright E2E Review use?

Playwright E2E Review is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Playwright E2E Review use?

About 2.2k tokens (SKILL.md is roughly 8.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Playwright E2E Review?

Skills that share tags, products or a category with Playwright E2E Review: RStudio Selenium to Playwright Migration (rstudio/rstudio, 5.1k stars), Svelte Testing (spences10/sveltest, 113 stars), Playwright Login Flows (andrewyng/context-hub, 14k stars) and Ha Frontend Testing (home-assistant/frontend, 5.7k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Playwright E2E Review?

fmflurry (a GitHub user) maintains it in fmflurry/settings-opencode, which has 171 GitHub stars. The repository holds 20 skills in this directory. The repository was last updated on October 7, 2026.

Source: fmflurry/settings-opencode on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.