api-testing
Skill268 starsChanged 8 days agoMITView on GitHub
Use when writing or updating an API spec under tests/**/api/**, planning coverage for an endpoint, building a response schema from the API contract, or deciding whether API setup/teardown becomes a helper fixture. Not for Zod syntax and type inference (see `type-safety`) or fixture mechanics (see `fixtures`).
- Reads credentials
17 other projects use a version of this.
Adopted by
Most recently taken up by
- jason0971/skillstheir own version, first seen Nov 8, 2026
- petrkindlmann/qa-skillstheir own version, first seen Oct 25, 2026
- fugazi/test-automation-skills-agentstheir own version, first seen Oct 21, 2026
- fishzjp/qa-skillstheir own version, first seen Oct 21, 2026
- int2t05/engineering-skillstheir own version, first seen Oct 15, 2026
- testified-oss/agent-skillstheir own version, first seen Oct 13, 2026
Used with
Projects with it also use analytics-tracking-testing, database-testing and 9 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
petrkindlmannSkillanalytics-tracking-testing
Validate that analytics and marketing tracking fire CORRECTLY: GA4/GTM dataLayer events, Meta/TikTok/LinkedIn pixels, and ad-tech tags. Covers building a tracking plan as the contract, intercepting collect-endpoint beacons and dataLayer.push in Playwright, asserting event name + params + values + timing + de-duplication, Consent Mode v2 gating, CI regression gating, and news-media events (article-view, scroll-depth, paywall). Use when: "test analytics tracking," "GA4 event test," "verify the pixel fires," "dataLayer test," "tracking plan," "Meta Pixel dedup," "scroll-depth tracking test," "gate tracking in CI." Not for: whether tracking is ALLOWED to fire under consent law (GDPR/CMP) — that is compliance-testing; this skill checks the data is CORRECT. SEO meta tags / structured data — out of scope. Related: compliance-testing, playwright-automation, api-testing, qa-project-context.
Also in 3 projects that use this
petrkindlmannSkilldatabase-testing
Validate database integrity, test migrations forward and backward, verify schema constraints, manage seed data, detect migration drift, and identify query performance issues. Covers PostgreSQL, MySQL, MongoDB with Prisma, TypeORM, Drizzle, and SQLAlchemy, plus Testcontainers test databases. Use when: "database test," "migration test," "migration rollback," "rollback test," "data integrity," "SQL test," "schema validation," "seed data," "query performance," "Testcontainers." Not for: synthetic data generation/masking at scale — use test-data-management; Docker/IaC test-environment provisioning — use test-environments; SQL injection — use security-testing. Related: test-data-management, test-environments, security-testing, ci-cd-integration.
Also in 4 projects that use this
testified-ossSkillexploratory-testing
Guide exploratory testing sessions including charter creation, session-based testing, heuristics application, and finding documentation. Use when planning exploratory testing, conducting test sessions, or documenting discoveries.
Also in 5 projects that use this
conorluddySkillaccessibility-testing
WCAG compliance testing and accessibility quality assurance workflows for iOS apps. Use when validating accessibility labels, testing VoiceOver compatibility, checking contrast ratios, or ensuring WCAG 2.1 compliance. Covers accessibility tree analysis, semantic validation, and automated accessibility testing patterns.
Also in 4 projects that use this
mmondoraSkillsecurity-testing
Automated security testing in CI. SAST, DAST, dependency scanning, authorization testing, secret detection. Use when adding security scans to pipelines, writing tenant isolation tests, or configuring vulnerability scanning.
Also in 3 projects that use this
etewiahSkille2e-testing
Playwright E2E testing and Lighthouse performance auditing. Use when setting up E2E tests, running Playwright tests, performing Lighthouse audits, or debugging E2E test failures.
Also in 4 projects that use this
- +4 more from petrkindlmann
Other versions17 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 17
- fugazi/test-automation-skills-agents★ 256same name
- petrkindlmann/qa-skills★ 209same name
- Strategic-Automation/violin★ 159same name
- fishzjp/qa-skills★ 62same name
- mindfortai/security-skills★ 16same name
- nek1987/auto-agent-harness★ 4same name
- vikisingh23/neuraforge-ai★ 4same name
- int2t05/engineering-skills★ 3same name
- HACK-WU/skills★ 2same name
- aiqualitylab/agent-skills★ 1same name
7 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository35 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- ai-native-workflowSkill
- common-tasksSkill
- configSkill
- data-strategySkill
- debuggingSkill
- enumsSkill
- fixturesSkill
- helpersSkill
- page-objectsSkill
- playwright-cliSkill
- pr-reviewerSkill
- refactor-valuesSkill
- selectorsSkill
- skill-creatorSkill
- test-standardsSkill
- type-safetySkill
- ai-native-workflowSkill
- api-testingSkill
- common-tasksSkill
- configSkill
- data-strategySkill
- debuggingSkill
- enumsSkill
- fixturesSkill
- helpersSkill
- page-objectsSkill
- playwright-cliSkill
- pr-reviewerSkill
- refactor-valuesSkill
- selectorsSkill
- skill-creatorSkill
- test-standardsSkill
- type-safetySkill
The file
We split this skill into the rules it gives an agent
10 rules. 0 are common, 1 is distinctive, and 9 are very specific to this project.
0
Common
Most of the 13 edited versions we read keep these.
1
Distinctive
This author's own choices. Worth a look.
9
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 10
Never hardcode API URLs, access tokens, emails, passwords or endpoint paths: only process.env.API_URL, process.env.ACCESS_TOKEN, …
- Very specific: line 22
Never change an expected status, loosen a schema or drop a test: keep it as the contract says, wrapped in test.skip with // FIXME: …
- Very specific: line 32
Every request-body endpoint gets an empty-body test, a per-field omission loop and a per-field invalid-type for...of loop over the …
- Distinctive: line 33
Always fuzz path parameters with the invalid-format loop, documented or not.
- Very specific: line 34
Call apiRequest directly in tests and hooks.
- Very specific: line 39
Write the response schema in fixtures/api/schemas/{area}/ per type-safety (ls fixtures/api/schemas/ resolves {area}).
- Very specific: line 40
Add a new path to ApiEndpoints per enums.
- Very specific: line 41
Write the happy path: apiRequest<SchemaType>({ method, url: ApiEndpoints.X, baseUrl: process.env.API_URL, headers: …
- Very specific: line 43
Add the negative loops from references/negative-testing.md.
- Very specific: line 45
Run npx playwright test <file> and npm run lint.
“Common” is measured: kept by at least 6 in 10 of the 13 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
API Testing
Critical
- Never hardcode API URLs, access tokens, emails, passwords or endpoint paths: only
process.env.API_URL,process.env.ACCESS_TOKEN,process.env.APP_EMAIL/APP_PASSWORDandApiEndpointsfromenums/{area}/*. - Schemas and tests come from the documented contract (OpenAPI / Swagger), never from a request made first; no document found: stop and ask.
Assert every response body with
expect(SchemaName.parse(body)).toBeTruthy();, not a generic or a bare parse; in fixture code, with no test to assert in,const x = SchemaName.parse(body);. Neveras-cast.// CORRECT expect(UserResponseSchema.parse(body)).toBeTruthy(); // WRONG const user = body as UserResponse;- A test with more than one API call wraps each call in its own
test.step(), assertions inside the step. Never change an expected status, loosen a schema or drop a test: keep it as the contract says, wrapped in
test.skipwith// FIXME: <ticket-url>. 422 where the spec says 400 is still a mismatch; only a human confirming the spec is stale changes the expectation.// CORRECT // FIXME: <ticket-url> spec 422, API 500 test.skip('returns 422 for bad price', { tag: '@api' }, async () => {}); // WRONG expect(status).toBe(500);- Every request-body endpoint gets an empty-body test, a per-field omission loop and a per-field invalid-type
for...ofloop over theINVALID_*arrays; never empty-body-only. - Always fuzz path parameters with the invalid-format loop, documented or not.
- Call
apiRequestdirectly in tests and hooks; promote to a helper fixture infixtures/helper/helper-fixture.tsonly when the same setup/teardown is copy-pasted into 3+ test files (canonical threshold, other skills point here).
Procedure
- Locate the contract: a spec file in the repo, the API host's documentation route, or a document from the human. Nothing found: ask. Partial or absent:
references/contract-sourcing.md. - Write the response schema in
fixtures/api/schemas/{area}/pertype-safety(ls fixtures/api/schemas/resolves{area}); error bodies usefixtures/api/schemas/util/errorResponseSchema.ts. - Add a new path to
ApiEndpointsperenums. - Write the happy path:
apiRequest<SchemaType>({ method, url: ApiEndpoints.X, baseUrl: process.env.API_URL, headers: process.env.ACCESS_TOKEN, body })in atest.describeper method + path, tag@api, payload from a factory perdata-strategy. - List every status code the contract documents plus the baseline rows in
references/coverage-matrix.md; present the plan before writing those tests. - Add the negative loops from
references/negative-testing.md; a test with several calls followsreferences/multi-call-steps.md. - Setup or teardown past the threshold goes to
references/helper-fixtures.md; below it,beforeAll/afterAllin the spec withapiRequest. - Run
npx playwright test <file>andnpm run lint. A response that disagrees with the contract:test.skip+// FIXME; red for another reason:debugging.
References
references/contract-sourcing.md: open when the contract is partial, missing or unversioned.references/coverage-matrix.md: the status-code rows every endpoint × method needs, the describe structure, the token conventions.references/negative-testing.md: the per-field invalid-type, omission, path-parameter and query-parameter loops.references/multi-call-steps.md: the create → readtest.step()pattern with cleanup.references/helper-fixtures.md: the setup →use()→ teardown pattern for promoted API setup.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

