Playwright E2E Testing
fugazi/test-automation-skills-agents
Author and maintain versioned Playwright (@playwright/test) TypeScript UI specs for browser user flows.
Spec file conventions for the Playwright scaffold — imports from test-options.ts, test file structure (describe / beforeEach / test / test.step), single-tag rule, functional vs E2E vs API vs setup…
$ npx skills add idavidov13/agentic-playwright --skill test-standards -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install idavidov13/agentic-playwright test-standards --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/idavidov13/agentic-playwright.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/test-standards .claude/skills/test-standards && rm -rf skills-srcUse ~/.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/
Install the "test-standards" agent skill from https://github.com/idavidov13/agentic-playwright/tree/main/.claude/skills/test-standards into .claude/skills/test-standards/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "test-standards", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/idavidov13/agentic-playwright/tree/main/.claude/skills/test-standardsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add idavidov13/agentic-playwright --skill test-standards -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install idavidov13/agentic-playwright test-standards --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/idavidov13/agentic-playwright.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/test-standards .agents/skills/test-standards && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "test-standards" agent skill from https://github.com/idavidov13/agentic-playwright/tree/main/.claude/skills/test-standards into .agents/skills/test-standards/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "test-standards", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add idavidov13/agentic-playwright --skill test-standards -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install idavidov13/agentic-playwright test-standards --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/idavidov13/agentic-playwright.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/test-standards .cursor/skills/test-standards && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "test-standards" agent skill from https://github.com/idavidov13/agentic-playwright/tree/main/.claude/skills/test-standards into .cursor/skills/test-standards/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "test-standards", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/idavidov13/agentic-playwright.git --path .claude/skills/test-standards--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add idavidov13/agentic-playwright --skill test-standards -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install idavidov13/agentic-playwright test-standards --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/idavidov13/agentic-playwright.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/test-standards .gemini/skills/test-standards && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "test-standards" agent skill from https://github.com/idavidov13/agentic-playwright/tree/main/.claude/skills/test-standards into .gemini/skills/test-standards/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "test-standards", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install idavidov13/agentic-playwright test-standardsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add idavidov13/agentic-playwright --skill test-standards -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/idavidov13/agentic-playwright.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/test-standards .github/skills/test-standards && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "test-standards" agent skill from https://github.com/idavidov13/agentic-playwright/tree/main/.claude/skills/test-standards into .github/skills/test-standards/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "test-standards", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add idavidov13/agentic-playwright --skill test-standards -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install idavidov13/agentic-playwright test-standards --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/idavidov13/agentic-playwright.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/test-standards .opencode/skills/test-standards && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "test-standards" agent skill from https://github.com/idavidov13/agentic-playwright/tree/main/.claude/skills/test-standards into .opencode/skills/test-standards/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "test-standards", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
test-standardsSpec file conventions for the Playwright scaffold — imports from test-options.ts, test file structure (describe / beforeEach / test / test.step), single-tag rule, functional vs E2E vs API vs setup…
Test Standards is an agent skill from idavidov13/agentic-playwright. Spec file conventions for the Playwright scaffold — imports from test-options.ts, test file structure (describe / beforeEach / test / test.step), single-tag rule, functional vs E2E vs API vs setup test types, data-driven test loops against TS static data, web-first assertions, destructive-test cleanup, and test independence. Use when creating a new spec file, adding tests to an existing spec, deciding which test type or tag to use, writing data-driven loops, wiring destructive cleanup, or reviewing a test for…
Its SKILL.md is about 3.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including reference files (for example `references/examples.md` and `references/troubleshooting.md`).
It sits in Testing & QA, covering API testing, End-to-end testing and Browser testing. It works with Playwright. The repository describes itself as: Production-grade Playwright + TypeScript Scaffold for Agentic Testing. Harness for all major AI coding agents baked in. The licence is MIT.
9 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit f6cbf35. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
npmnpxFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npm 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.
Names these keys or tokens, usually read from environment variables:
ACCESS_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Test Standards loads about 3.9k tokens when it runs, and up to ~5.7k if it reads all its reference files. Until then it costs about 205 tokens; SKILL.md has 1,221 words of instructions outside code blocks.
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.
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.
The full file from idavidov13/agentic-playwright at commit f6cbf35, republished under its MIT licence (© idavidov13). 1,221 words, ~3,939 tokens.
.claude/skills/test-standards/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.test and expect from fixtures/pom/test-options.ts. NEVER from @playwright/test in spec files.@smoke | @sanity | @regression | @e2e | @api | @destructive. NEVER combine tags. NEVER use @functional. NEVER put tags on test.describe() blocks.@destructive is the heaviest tag and always wins — but only for shared/global state. A test that mutates state other tests or users depend on (locale, permissions, roles, guest access, feature flags, global settings) is tagged only @destructive. A test that creates and deletes only its own data is isolated, not destructive — tag it by importance (@smoke / @sanity / @regression / @e2e / @api).test.afterEach() or test.afterAll() cleanup that reverts the change — both @destructive shared-state tests and isolated tests that write their own data.await expect(locator).toBeVisible(), .toHaveText(), .toBeEnabled(), .toHaveCount(...), etc.). NEVER page.waitForTimeout(...).test.step() for Given/When/Then structure when a test has more than one distinct phase (setup, action, assertion)..spec.ts containing console.log(await page.content()), temporary probes, etc.)..ts modules (test-data/static/**/*.ts) via named as const exports. NEVER .json.test-data/factories/{area}/); universal type-mismatch arrays from test-data/static/util/invalid-values.ts; domain-specific curated sets from test-data/static/{area}/*.ts. See the data-strategy skill.async ({ appPage }) => ...). NEVER new PageObject(page) inside a test.
{area}is a placeholder. Before creating or referencing any path below, runls tests/to discover the real subdirectory names in this repo (e.g.,front-office,back-office) and use those instead.
| Test Type | Directory | What it covers |
|---|---|---|
| Functional | tests/{area}/functional/ | One feature or behaviour in isolation |
| API | tests/{area}/api/ | API contracts and response validation |
| E2E | tests/{area}/e2e/ | A complete multi-feature user journey in a single test |
| Setup | tests/{area}/ | Auth or precondition setup (.setup.ts) |
Functional vs E2E distinction:
Determine whether the work is a functional, E2E, API, or setup test, then run ls tests/ to resolve {area} and place the file in tests/{area}/<type>/[name].spec.ts (or tests/{area}/[name].setup.ts for setup). Never guess the area.
Every spec file starts with:
import { expect, test } from '../../../fixtures/pom/test-options';
test.describe('Feature Name', () => {
test.beforeEach(async ({ appPage }) => {
await appPage.openHomePage();
});
test(
'should do expected behavior',
{ tag: '@smoke' },
async ({ appPage }) => {
// ...
}
);
});fixtures/pom/test-options.ts, not @playwright/test.test.describe(...) groups related tests; the describe name has no tag.test.beforeEach(...) handles navigation and per-test setup (see Phase 7 for destructive cleanup and Phase 6 for resetStorageState).Each test gets exactly one tag. Pick the right one:
| Tag | Used for |
|---|---|
@smoke | Critical path functional tests, run first and frequently |
@sanity | Key functionality verification |
@regression | Full regression coverage of a single behaviour |
@e2e | End-to-end multi-feature user journey tests |
@api | API contract and schema validation tests |
@destructive | Mutates shared/global state (locale, permissions, roles, guest access, feature flags, global settings) — excluded from npm test, run via npm run test:destructive |
@destructive overrides any other importance tag — for shared/global state mutation only. If a test would otherwise be @smoke but changes global settings, it is tagged only @destructive. A test that creates and cleans up only its own data is isolated, not destructive — keep its importance tag (@smoke/@regression/@api/…).
// CORRECT
test('should login successfully', { tag: '@smoke' }, async ({ appPage }) => {
/* ... */
});
test('should validate cart flow', { tag: '@e2e' }, async ({ checkoutPage }) => {
/* ... */
});
test('should return user profile', { tag: '@api' }, async ({ apiRequest }) => {
/* ... */
});
test(
'should delete all users',
{ tag: '@destructive' },
async ({ apiRequest }) => {
/* ... */
}
);
// WRONG -- @functional is not a valid tag
test('should login', { tag: '@functional' }, async ({ appPage }) => {
/* ... */
});
// WRONG -- combining tags is forbidden
test(
'should delete all users',
{ tag: ['@regression', '@destructive'] },
async () => {
/* ... */
}
);
// WRONG -- tag belongs on the test, not the describe
test.describe('Feature @smoke', () => {
/* ... */
});test.stepUse test.step() to split the test into Given / When / Then blocks. This produces readable HTML reports and makes debugging faster.
test(
'should show error for invalid login',
{ tag: '@regression' },
async ({ appPage }) => {
await test.step('GIVEN user is on the login page', async () => {
await expect(appPage.loginButton).toBeVisible();
});
await test.step('WHEN user enters invalid credentials', async () => {
// generateLoginCredentials() is illustrative -- build the factory
// via the data-strategy skill or use process.env.* + a known-bad password.
const { email, password } = generateLoginCredentials();
await appPage.login(email, password);
});
await test.step('THEN error message is displayed', async () => {
await expect(appPage.errorMessage).toBeVisible();
});
}
);For API tests with multiple calls, test.step is mandatory — see the api-testing skill (Phase 4).
Web-first assertions auto-wait and retry until the condition is met or a timeout elapses. Never use hard waits.
// CORRECT -- web-first assertions
await expect(locator).toBeVisible();
await expect(locator).toHaveText('Expected text');
await expect(locator).toBeEnabled();
await expect(locator).toHaveCount(3);
// FORBIDDEN -- hard waits mask real timing issues
await page.waitForTimeout(1000);If a response must be awaited, use page.waitForResponse(...) inside a page-object action method, not inside the spec.
test.beforeEach() for per-test navigation and setup.test.afterEach() for per-test cleanup when fixtures don't handle it.resetStorageState fixture when testing login/logout flows so each test starts unauthenticated:test.beforeEach(async ({ resetStorageState, appPage }) => {
await resetStorageState();
await appPage.openHomePage();
});For API-driven setup/teardown reused across many files, see the api-testing skill (Phase 8, helper-fixture rule of thumb).
@destructive is reserved for shared/global state. A test is destructive only when it mutates state that lives outside the test and that other tests, users, or sessions depend on. Concretely:
Counter-example — NOT destructive. A test that creates its own record, asserts on it, then deletes only that record in cleanup is isolated, not destructive. It touches no state another test depends on. Tag it by importance (@smoke / @regression / @api / …) — never @destructive. It still needs a cleanup hook (see below), but it runs in the parallel suite.
Cleanup hook is required for any state-mutating test. Both @destructive shared-state tests and isolated own-data tests MUST use test.afterEach() or test.afterAll() to revert what they wrote:
test.describe('admin data management', () => {
test.afterEach(async ({ apiRequest }) => {
// REQUIRED: Revert state changes made by the test.
// ApiEndpoints.RESET_DATA is illustrative -- use whatever reset
// endpoint your app provides, defined in enums/{area}/*.ts.
await apiRequest({
method: 'POST',
url: ApiEndpoints.RESET_DATA,
baseUrl: process.env.API_URL,
headers: process.env.ACCESS_TOKEN,
});
});
test(
'should delete all inactive users',
{ tag: '@destructive' },
async ({ apiRequest }) => {
// Test that modifies shared state
}
);
});Execution rules:
npm test — the base command uses --grep-invert @destructive to keep destructive tests out of the parallel suite.test:smoke, test:regression, test:api, etc.) use --grep to match their own tag. Because each test has exactly one tag, a @destructive test only runs under npm run test:destructive — not under test:smoke, test:regression, etc.npm run test:destructive runs only destructive tests with --workers=1 for sequential execution.Loop outside test blocks to generate individual test cases. Static data is imported from .ts modules via named as const exports.
import { INVALID_LOGIN_ATTEMPTS } from '../../../test-data/static/app/invalidCredentials';
for (const { description, email, password } of INVALID_LOGIN_ATTEMPTS) {
test(
`should show error for ${description}`,
{ tag: '@regression' },
async ({ appPage }) => {
await appPage.login(email, password);
await expect(appPage.errorMessage).toBeVisible();
}
);
}For universal invalid-value loops (wrong type for any string/number/etc. field) import from test-data/static/util/invalid-values.ts (INVALID_STRING_VALUES, INVALID_NUMBER_VALUES, etc.). Full three-tier rule in the data-strategy skill.
Tests must be independent — no test may depend on the outcome or side-effects of another test. Use fixtures and beforeEach for shared setup.
After adding or modifying a test file:
# Run the specific spec file
npx playwright test tests/app/functional/login.spec.ts
# Run by tag (exactly one tag match since tags never combine)
npx playwright test --grep @smoke
# Run the destructive suite
npm run test:destructiveDo not finish until the added/modified tests pass consistently. Do not suppress failures.
api-testing skill — full API test coverage matrix, test.step requirements for multi-call tests, per-field negative-testing patterns, helper-fixture promotion rule (Phase 8).data-strategy skill — Faker + Zod factories, three-tier static data rule, universal invalid-value arrays, TS-only policy.fixtures skill — DI pattern, test-options.ts merge layer, page-object fixture registration.page-objects skill — POM class structure, action methods, component composition, fixture registration.selectors skill — exploration-first workflow, locator priority, feedback / validation message selectors.common-tasks skill — copy-paste prompt templates for creating spec files of each type.refactor-values skill — safe workflow for changing enum values or static data used in assertions.debugging skill — failure-mode taxonomy and the right Playwright tool (UI Mode, Trace Viewer, Inspector) when a test fails or behaves unexpectedly during Phase 9 verification.references/examples.md — four worked spec patterns (functional smoke, data-driven regression, destructive with cleanup, E2E multi-feature journey).references/troubleshooting.md — common test-standards pitfalls (@functional, tag arrays, wrong imports, hard waits, JSON data, manual instantiation, parallel collisions, destructive leaks, committed explore files).© idavidov13, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files (references) in .claude/skills/test-standards of idavidov13/agentic-playwright.
Open the folder on GitHubat commit f6cbf35
Test Standards 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Test Standards this skillidavidov13/agentic-playwright | 223 | — | ~3.9k | Automated safety check: Pass | MIT | |
| Playwright E2E Testingfugazi/test-automation-skills-agents | 247 | — | ~3.2k | Automated safety check: Pass | MIT | |
| Web Testing with Playwright and Vitestwithkynam/vibecode-pro-max-kit | 1.1k | — | ~892 | Automated safety check: Pass | Apache-2.0 | |
| Dotnet Testingnovotnyllc/dotnet-artisan | 233 | — | ~972 | Automated safety check: Pass | MIT | |
| Senior QAalirezarezvani/claude-skills | 28k | 1 repos | ~2.1k | Automated safety check: Pass | MIT | |
| Vue Testing Best PracticesJetBrains/skills | 364 | 7 repos | ~563 | Automated safety check: Pass | MIT |
fugazi/test-automation-skills-agents
Author and maintain versioned Playwright (@playwright/test) TypeScript UI specs for browser user flows.
withkynam/vibecode-pro-max-kit
Covers web testing from unit to E2E, load, visual, accessibility and security checks, with Playwright, Vitest and k6 guides plus a Playwright setup script.
novotnyllc/dotnet-artisan
Defines .NET test strategy and implementation patterns across xUnit v3 (Facts, Theories, fixtures, IAsyncLifetime), integration testing (WebApplicationFactory, Testcontainers), Aspire testing…
alirezarezvani/claude-skills
Generates unit tests, integration tests, and E2E tests for React/Next.js applications.
JetBrains/skills
A skill your agent uses for Vue.js testing. An agent skill from JetBrains/skills.
citypaul/.dotfiles
Behavior-driven UI testing patterns across Vitest Browser Mode, Playwright E2E evidence boundaries, and DOM Testing Library.
idavidov13/agentic-playwright
Sole entry-point router for AI-assisted work on this Playwright scaffold — owns the 8-phase main workflow (classify → route → explore → plan+confidence → human gate → apply → verify → report), the…
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.
idavidov13/agentic-playwright
Test data strategy for the Playwright scaffold — Faker + Zod factories for dynamic happy-path data, static TS files (.ts with as const exports — never .json) for domain-specific curated invalid…
idavidov13/agentic-playwright
Page Object Model pattern for the Playwright scaffold — class structure, get-accessor locator pattern, action-method conventions, component composition, registration via the page-object fixture, and…
idavidov13/agentic-playwright
Selector strategy, exploration-first workflow, locator priority order (getByRole then getByLabel then getByPlaceholder then getByText then getByTestId), and feedback/validation-message selector…
idavidov13/agentic-playwright
TypeScript type safety conventions for the Playwright scaffold — the "no any" rule, Zod 4 schema patterns (z.strictObject, top-level validators like z.uuid / z.email / z.url / z.int / z.enum)…
Works with
Categories
Spec file conventions for the Playwright scaffold — imports from test-options.ts, test file structure (describe / beforeEach / test / test.step), single-tag rule, functional vs E2E vs API vs setup…. Test Standards is an agent skill from idavidov13/agentic-playwright.step), single-tag rule, functional vs E2E vs API vs setup test types, data-driven test loops against TS static data, web-first assertions, destructive-test cleanup, and test independence.
Test Standards fits situations like: creating a new spec file; adding tests to an existing spec; deciding which test type; writing data-driven loops.
Run `npx skills add idavidov13/agentic-playwright --skill test-standards -a claude-code`. Or copy the skill folder (.claude/skills/test-standards in idavidov13/agentic-playwright) into .claude/skills/test-standards in your project. Claude Code loads it when a task matches its description.
Run `npx skills add idavidov13/agentic-playwright --skill test-standards -a codex`. Or copy the skill folder (.claude/skills/test-standards in idavidov13/agentic-playwright) into .agents/skills/test-standards in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add idavidov13/agentic-playwright --skill test-standards -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/test-standards, .gemini/skills/test-standards, .github/skills/test-standards and .opencode/skills/test-standards in your project.
Going by SKILL.md and its folder, Test Standards needs the command-line tools its instructions call (npm and npx) and credentials named ACCESS_TOKEN.
SKILL.md contains no URLs. Its commands use npm and npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
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.
Test Standards is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.9k tokens (SKILL.md is roughly 16k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.7k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Test Standards: Playwright E2E Testing (fugazi/test-automation-skills-agents, 247 stars), Web Testing with Playwright and Vitest (withkynam/vibecode-pro-max-kit, 1.1k stars), Dotnet Testing (novotnyllc/dotnet-artisan, 233 stars) and Senior QA (alirezarezvani/claude-skills, 28k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
idavidov13 (a GitHub user) maintains it in idavidov13/agentic-playwright, which has 223 GitHub stars. The repository holds 13 skills in this directory. The repository was last updated on October 1, 2026.
Source: idavidov13/agentic-playwright on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.