API Testing
fugazi/test-automation-skills-agents
Test REST and GraphQL endpoint contracts using Playwright request fixture (TypeScript) or REST Assured (Java).
Plain utility function conventions for the Playwright scaffold — app-specific helpers in helpers/{area}/ (authentication bootstrap, storage-state creation, data seeding) and generic utilities in…
$ npx skills add idavidov13/agentic-playwright --skill helpers -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install idavidov13/agentic-playwright helpers --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/helpers .claude/skills/helpers && 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 "helpers" agent skill from https://github.com/idavidov13/agentic-playwright/tree/main/.claude/skills/helpers into .claude/skills/helpers/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "helpers", 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/helpersType 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 helpers -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install idavidov13/agentic-playwright helpers --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/helpers .agents/skills/helpers && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "helpers" agent skill from https://github.com/idavidov13/agentic-playwright/tree/main/.claude/skills/helpers into .agents/skills/helpers/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "helpers", 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 helpers -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install idavidov13/agentic-playwright helpers --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/helpers .cursor/skills/helpers && 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 "helpers" agent skill from https://github.com/idavidov13/agentic-playwright/tree/main/.claude/skills/helpers into .cursor/skills/helpers/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "helpers", 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/helpers--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 helpers -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install idavidov13/agentic-playwright helpers --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/helpers .gemini/skills/helpers && 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 "helpers" agent skill from https://github.com/idavidov13/agentic-playwright/tree/main/.claude/skills/helpers into .gemini/skills/helpers/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "helpers", 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 helpersInstalls 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 helpers -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/helpers .github/skills/helpers && 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 "helpers" agent skill from https://github.com/idavidov13/agentic-playwright/tree/main/.claude/skills/helpers into .github/skills/helpers/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "helpers", 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 helpers -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 helpers --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/helpers .opencode/skills/helpers && 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 "helpers" agent skill from https://github.com/idavidov13/agentic-playwright/tree/main/.claude/skills/helpers into .opencode/skills/helpers/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "helpers", 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.
helpersPlain utility function conventions for the Playwright scaffold — app-specific helpers in helpers/{area}/ (authentication bootstrap, storage-state creation, data seeding) and generic utilities in…
Helpers is an agent skill from idavidov13/agentic-playwright. Plain utility function conventions for the Playwright scaffold — app-specific helpers in helpers/{area}/ (authentication bootstrap, storage-state creation, data seeding) and generic utilities in helpers/util/ (date formatting, string manipulation, parsing). Use when adding a reusable function that does NOT need the Playwright fixture lifecycle, wiring authentication bootstrap in tests/{area}/auth.setup.ts, or deciding whether a reusable piece of code belongs in helpers/ or fixtures/. For Playwright fixtures with…
Its SKILL.md is about 3.3k 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 Browser testing and API 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.
6 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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are typescript).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
ACCESS_TOKENAPP_PASSWORDFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Helpers loads about 3.3k tokens when it runs. Until then it costs about 194 tokens; SKILL.md has 1,372 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 noted patterns worth knowing about, such as sudo or a known installer.
Missing env variable in the active `env/.env.${ENVIRONMENT}` file.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,372 words, ~3,323 tokens.
.claude/skills/helpers/SKILL.md (or your agent's skills folder).use(), no base.extend. If you need setup → use(data) → teardown, it's a fixture, not a helper (see the fixtures skill).helpers/{area}/ (e.g. helpers/app/). Generic utilities live in helpers/util/.@param and @returns on every exported helper.Promise<void>, string, etc.). No implicit any.process.env.* (see the config skill). Use enums/{area}/* for endpoint paths and storage-state paths.expect(SchemaName.parse(body)).toBeTruthy(); — identical to the api-testing Critical rule.createAppStorageState, setUserAccessToken, formatDate, parseCurrency).api-testing skill, Phase 8 rule of thumb).process.env from a helper is a narrow exception, not a general pattern. It is acceptable only for auth-bootstrap helpers that publish a token (e.g. writing process.env.ACCESS_TOKEN inside a login helper). Do not copy the env-mutation pattern into other helpers — return values through the function signature instead.
{area}is a placeholder. Before creating or referencing any path below, runls helpers/to discover the real subdirectory names in this repo (e.g.,front-office,back-office) and use those instead.
| Type | Directory | Purpose | Scaffold example |
|---|---|---|---|
| App helpers | helpers/{area}/ | App-specific helper functions (auth bootstrap, storage state, seeding) | helpers/app/createStorageState.ts |
| Utility helpers | helpers/util/ | Generic utility functions reusable across apps/projects | helpers/util/util.ts |
Use this table. The correct criterion is "does this need the Playwright fixture lifecycle?" — not "is this used in setup or in tests?". A plain utility like formatDate is a helper even though it's called from inside tests.
| Symptom | Home |
|---|---|
| Pure function — no setup/teardown lifecycle needed | Helper in helpers/{area}/ or helpers/util/ |
Needs page / request context via DI, or owns setup → use(data) → teardown around each test | Fixture (see the fixtures skill; for lifecycle API helpers see api-testing Phase 8) |
| Encapsulates locators and user interactions on a specific page | Page object (see the page-objects skill) |
| One-off API call inside a single test | Call apiRequest directly in the test — neither helper nor fixture |
| Reusable happy-path data generation | Factory under test-data/factories/{area}/ (see the data-strategy skill) |
If the need fits none of these rows, stop and ask. Do not invent a new location.
helpers/{area}/ — logic that only makes sense for the app under test: authentication flows, storage state creation, data seeding, app-specific request composition.helpers/util/ — logic that's reusable across apps or projects: date formatting, string manipulation, retry logic, parsing utilities.Prefer extending an existing file (createStorageState.ts, util.ts) over creating a new one when the function belongs to the same domain. Create a new file only when the domain is genuinely new.
Every exported helper must declare:
Promise<void>, string, UserResponse, etc.). No implicit any.@param for every argument, @returns, and — when useful — an @example block.Pattern:
/**
* Creates and saves the browser storage state after successful login.
* @returns {Promise<void>} Resolves when storage state is saved.
*/
export async function createAppStorageState(): Promise<void> {
// implementation
}process.env.*Helpers never hardcode URLs, credentials, or tokens. Read from process.env.* and use enums for endpoint paths / storage-state paths:
import { ApiEndpoints, StorageStatePaths } from '../../enums/app/app';
// CORRECT
baseUrl: process.env.API_URL,
url: ApiEndpoints.LOGIN,
body: { email: process.env.APP_EMAIL, password: process.env.APP_PASSWORD },
await context.storageState({ path: StorageStatePaths.APP });
// FORBIDDEN
baseUrl: 'https://api.example.com',
url: '/api/users/login',See the config skill for sources of truth and the enums skill for paths.
The mandatory API response-validation pattern from api-testing applies equally inside helpers:
const { status, body } = await apiRequest<UserResponse>({
method: 'POST',
url: ApiEndpoints.LOGIN,
baseUrl: process.env.API_URL,
body: { email: process.env.APP_EMAIL, password: process.env.APP_PASSWORD },
});
expect(status).toBe(200);
expect(UserResponseSchema.parse(body)).toBeTruthy();Rules:
<UserResponse> gives compile-time safety on body.expect(SchemaName.parse(body)).toBeTruthy(); is the exact assertion — not schema.parse(body) alone.null (e.g., a 204 DELETE), assert expect(body).toBeNull() instead.Call the helper from the right context — helpers have no lifecycle of their own, so where you call them matters:
tests/{area}/auth.setup.ts) — app-login helpers run once before the main test suite to produce storage state and/or tokens. The scaffold ships a demo implementation in helpers/app/createStorageState.ts; adapt or replace it to match your app's auth flow.beforeEach / afterEach — utility helpers freely, API helpers when they do self-contained work.Auth-bootstrap helpers that publish a token via process.env.* (e.g. the demo setUserAccessToken in the scaffold) are the one place env mutation is acceptable. Every other helper must return its results through the function signature.
User says: "Add a helper that parses a currency string like $1,234.56 into a number so tests can assert on cart totals."
Actions:
helpers/util/util.ts (extend the existing file).export function parseCurrency(value: string): number, with JSDoc + @param + @returns.expect(parseCurrency(await cart.totalText())).toBe(1234.56);.User says: "Wrap the factory + API create call so setup scripts can seed a product."
Actions:
apiRequest as a parameter; does not own lifecycle) → helper. If it needed guaranteed per-test teardown, it would be a fixture instead.helpers/{area}/ (e.g. helpers/app/seedProduct.ts).export async function seedProduct(apiRequest: ApiRequestFn, overrides?: Partial<Product>): Promise<Product>.process.env.*, endpoint from ApiEndpoints.PRODUCTS.expect(status).toBe(201); + expect(ProductSchema.parse(body)).toBeTruthy();.tests/{area}/auth.setup.ts or inside a fixture's setup block.User says: "I want to write a helper that creates a test user before each test and deletes it after — same API I wrote for seedProduct."
Actions:
fixtures skill + the api-testing skill (Phase 8) and promote only if the setup/teardown is reused across 3+ spec files.beforeEach / afterEach using apiRequest directly.My helper returns undefined for process.env.* values.
Cause: Missing env variable in the active env/.env.${ENVIRONMENT} file.
Fix: Confirm the key exists there; update env/.env.example if you added a new variable. See the config skill.
I want the helper to set up a resource and tear it down around each test.
Fix: That's a fixture, not a helper. Route to the fixtures skill; if the setup/teardown is API-driven see the api-testing skill (Phase 8).
process.env.ACCESS_TOKEN (or whichever token env var your auth helper writes) is undefined in API tests.
Cause: The auth-setup test didn't run, or your login helper failed silently before writing the env var.
Fix: Confirm Playwright's project dependencies are wired so tests/{area}/auth.setup.ts runs before the main suite. Re-run the setup and watch for schema-parse failures inside the auth helper (a schema mismatch means the login response shape changed).
My API helper calls schema.parse(body) without wrapping in expect(...).toBeTruthy().
Cause: Old pattern.
Fix: Replace with expect(SchemaName.parse(body)).toBeTruthy(); — identical to the api-testing Critical rule.
I want to mutate process.env inside a new helper for convenience.
Fix: Don't. The setUserAccessToken env mutation is a sanctioned auth-bootstrap exception. For any other case, pass values through return types or factory overrides — env mutation hides state and breaks parallel isolation.
I'm about to promote a one-off helper to a helper fixture because "it feels reusable".
Fix: Promote only when the same setup/teardown is copy-pasted across 3+ spec files with a lifecycle need. Otherwise keep it as a helper or an inline apiRequest call (see the api-testing skill, Phase 8 rule of thumb).
TypeScript complains that my helper has an implicit any return type.
Fix: Add an explicit return type (Promise<void>, Promise<UserResponse>, string, etc.) — Critical rule.
fixtures skill — Playwright fixtures with use() lifecycle (setup / yield / teardown); the sibling category to helpers.api-testing skill — mandatory expect(Schema.parse(body)).toBeTruthy(); pattern and the Phase 8 rule of thumb for promoting to a helper fixture.config skill — env variable conventions (process.env.*), where APP_URL / API_URL / APP_EMAIL / APP_PASSWORD live.enums skill — ApiEndpoints.* for endpoint paths and StorageStatePaths.* for storage-state file paths.data-strategy skill — Faker + Zod factories used inside seeding helpers; three-tier rule for static invalid data.debugging skill — process.env.ACCESS_TOKEN undefined, auth-bootstrap failures, and other helper-driven test failures.© idavidov13, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/helpers of idavidov13/agentic-playwright.
Open the folder on GitHubat commit f6cbf35
Helpers 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 |
|---|---|---|---|---|---|---|
| Helpers this skillidavidov13/agentic-playwright | 223 | — | ~3.3k | Automated safety check: Notes | MIT | |
| API Testingfugazi/test-automation-skills-agents | 247 | — | ~1.5k | Automated safety check: Pass | MIT | |
| API Testingpetrkindlmann/qa-skills | 165 | — | ~2.7k | Automated safety check: Pass | MIT | |
| API Playwright Test Developerjaktestowac/awesome-copilot-for-testers | 116 | — | ~2k | Automated safety check: Pass | MIT | |
| Playwright E2E Testingfugazi/test-automation-skills-agents | 247 | — | ~3.2k | Automated safety check: Pass | MIT | |
| QAgaragon/nanostack | 207 | — | ~3.4k | Automated safety check: Pass | Apache-2.0 |
fugazi/test-automation-skills-agents
Test REST and GraphQL endpoint contracts using Playwright request fixture (TypeScript) or REST Assured (Java).
petrkindlmann/qa-skills
Test REST and GraphQL APIs with Playwright APIRequestContext, Supertest, or standalone HTTP clients.
jaktestowac/awesome-copilot-for-testers
Writes and reviews API automation tests with Playwright Test, covering setup/teardown, assertions, data management, and hybrid API+UI flows.
fugazi/test-automation-skills-agents
Author and maintain versioned Playwright (@playwright/test) TypeScript UI specs for browser user flows.
garagon/nanostack
A skill your agent uses to verify that code works correctly — browser-based testing with Playwright, native app testing with computer use, CLI testing, API testing, or root-cause debugging.
petrkindlmann/qa-skills
Write production-grade Playwright tests in TypeScript: Page Object Model, fixtures, auto-waiting, user-facing locators, parallel execution, CI integration, sharding, and 2025-2026 feature awareness.
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
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…
Works with
Categories
Plain utility function conventions for the Playwright scaffold — app-specific helpers in helpers/{area}/ (authentication bootstrap, storage-state creation, data seeding) and generic utilities in…. Helpers is an agent skill from idavidov13/agentic-playwright. Plain utility function conventions for the Playwright scaffold — app-specific helpers in helpers/{area}/ (authentication bootstrap, storage-state creation, data seeding) and generic utilities in helpers/util/ (date formatting, string manipulation, parsing).
Helpers fits situations like: adding a reusable function that does NOT need the Playwright fixture lifecycle; wiring authentication bootstrap in tests/{area}/auth.setup.ts; deciding whether a reusable piece of code belongs in helpers/.
Run `npx skills add idavidov13/agentic-playwright --skill helpers -a claude-code`. Or copy the skill folder (.claude/skills/helpers in idavidov13/agentic-playwright) into .claude/skills/helpers in your project. Claude Code loads it when a task matches its description.
Run `npx skills add idavidov13/agentic-playwright --skill helpers -a codex`. Or copy the skill folder (.claude/skills/helpers in idavidov13/agentic-playwright) into .agents/skills/helpers 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 helpers -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/helpers, .gemini/skills/helpers, .github/skills/helpers and .opencode/skills/helpers in your project.
Going by SKILL.md and its folder, Helpers needs credentials named ACCESS_TOKEN and APP_PASSWORD. Our summary lists: A credential in ACCESS_TOKEN.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Helpers 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.3k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Helpers: API Testing (fugazi/test-automation-skills-agents, 247 stars), API Testing (petrkindlmann/qa-skills, 165 stars), API Playwright Test Developer (jaktestowac/awesome-copilot-for-testers, 116 stars) and Playwright E2E Testing (fugazi/test-automation-skills-agents, 247 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.