api-testing
This skill enables API testing for REST and GraphQL endpoints using Playwright's request fixture with TypeScript or REST Assured with Java.
Community author
- Agents
- Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode
- License
- MIT (permissive)
- Pin
- 65a72d5pinned Oct 9, 2026
- Context cost
- about 1,400 tokenswhen the skill loads
- GitHub stars
- 247on fugazi/test-automation-skills-agents
- Scripts
- 2 scripts
What it does
“Test REST and GraphQL endpoint contracts using Playwright request fixture (TypeScript) or REST Assured (Java). Use for standalone API tests covering schemas, auth, status/error handling, pagination, idempotency, rate limits, or contract checks; not for browser E2E specs. Keywords: REST, GraphQL, API contract, schema validation, REST Assured.”
Generated summary from the skill's own text
This skill enables API testing for REST and GraphQL endpoints using Playwright's request fixture with TypeScript or REST Assured with Java. It covers schema validation, authentication flows, error handling, pagination, and contract testing between services.
When to use it
- Testing REST or GraphQL endpoint contracts and responses
- Validating authentication and error handling across status codes
- Verifying pagination, filtering, sorting, and idempotency behavior
- Contract testing between microservices or API versions
When not to
- Browser-driven UI flows or end-to-end journeys across pages
- Visual or layout regression testing without API focus
Install
These commands install from the publisher's repository and need no account.
skills CLI
npx skills add fugazi/test-automation-skills-agents --skill api-testingInstalls from the repository's default branch, which may have changed since the commit we checked.
GitHub CLI 2.90 or later
gh skill install fugazi/test-automation-skills-agents api-testing@65a72d5e74def3c23143bef8757e72cb68e91032Installs the commit we checked (65a72d5).
Copy by hand
Download the folder at 65a72d5 and put it in .claude/skills/api-testing for Claude Code and in .agents/skills/api-testing for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode.
Copy for your agent
A prompt for any coding agent. It installs this skill from GitHub at the pinned commit, copies the files as they are, and runs nothing unless you ask.
Prompt
Install the agent skill "api-testing" by fugazi. Source, pinned to commit 65a72d5e74def3c23143bef8757e72cb68e91032: https://github.com/fugazi/test-automation-skills-agents/tree/65a72d5e74def3c23143bef8757e72cb68e91032/skills/api-testing 1. Download that folder at exactly this commit. Do not use the default branch. 2. Copy every file unchanged, keeping the folder structure, into .claude/skills/api-testing/ for Claude Code and .agents/skills/api-testing/ for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode. Create the folders if they do not exist. 3. Do not edit the files, and do not run any script in the folder unless I ask you to. 4. When you are done, list the files you copied and where you put them. Listing and checks: https://www.agentnative.dev/skills/fugazi/api-testing
SKILL.md at the pin
---
name: api-testing
description: 'Test REST and GraphQL endpoint contracts using Playwright request fixture (TypeScript) or REST Assured (Java). Use for standalone API tests covering schemas, auth, status/error handling, pagination, idempotency, rate limits, or contract checks; not for browser E2E specs. Keywords: REST, GraphQL, API contract, schema validation, REST Assured.'
license: 'Complete terms in LICENSE.txt'
---
# API Testing (Playwright + REST Assured)
Comprehensive API testing skill covering both Playwright TypeScript (request fixture, Supertest, Zod) and Java (REST Assured, AssertJ, JSON Schema Validator).
## When to Use This Skill
- Create API tests for REST or GraphQL endpoints
- Validate request/response schemas (Zod, JSON Schema)
- Test authentication flows (OAuth2, JWT, API keys, Bearer tokens)
- Verify error handling (400, 401, 403, 404, 409, 422, 500)
- Test pagination, filtering, sorting edge cases
- Validate idempotency for PUT/DELETE operations
- Contract testing between services
- Rate limiting validation
### Do NOT Use For
- Browser-driven UI flows (use `playwright-e2e-testing` for Playwright specs, or `webapp-selenium-testing` for Selenium)
- Live interactive browser sessions or snapshots (use `playwright-cli`)
- Visual/layout regression (out of scope — no DOM)
- End-to-end journeys that must drive a real browser across pages
## Prerequisites
| Stack | Requirements |
| ---------- | --------------------------------------------------------------------- |
| TypeScript | Node.js 18+, `@playwright/test` or `supertest`, `zod` |
| Java | Java 21+, REST Assured 5.x, AssertJ, Jackson, `json-schema-validator` |
## Core Principles
1. **Schema validation on every response** — never trust an unvalidated response
2. **Test all HTTP status codes** — happy path AND error states
3. **Auth testing is mandatory** — verify 401/403 for protected endpoints
4. **Data-driven** — test with valid, invalid, boundary, and empty values
5. **Stateless where possible** — each test cleans up or uses unique data
## Quick Reference — Playwright
```typescript
import { test, expect } from "@playwright/test";
test("GET /api/users returns 200 with valid schema", async ({ request }) => {
const response = await request.get("/api/users");
expect(response.ok()).toBeTruthy();
const body = await response.json();
expect(body).toMatchObject({ data: expect.any(Array) });
});
```
## Quick Reference — REST Assured
```java
import static io.restassured.RestAssured.*;
import static org.hamcrest.Matchers.*;
import java.util.List;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
@Test
@DisplayName("GET /api/users returns 200 with valid schema")
void getUsers() {
String token = "test-token";
given()
.header("Authorization", "Bearer " + token)
.when()
.get("/api/users")
.then()
.statusCode(200)
.body("data", is(instanceOf(List.class)))
.body("data.size()", greaterThan(0));
}
```
---
## Red Flags
Stop and reconsider if you see any of these in generated API tests:
- Assertions only on status code with no body/schema validation — an unvalidated response hides contract drift.
- Hardcoded secrets/tokens committed to the test file — read from env or a secrets manager.
- Tests sharing mutable state with no cleanup — flaky and order-dependent.
- Skipping auth tests (no 401/403 assertions on protected endpoints) — security regression risk.
- No coverage of error states (only happy-path 200s) — error handling is untested.
---
## References
| Document | Content |
| ---------------------------------------------------------------- | --------------------------------------------------- |
| [REST API Patterns](./references/rest-api-patterns.md) | CRUD, pagination, filtering, error patterns |
| [Playwright API Testing](./references/playwright-api-testing.md) | Request fixture, Supertest, TypeScript patterns |
| [REST Assured Testing](./references/rest-assured-testing.md) | REST Assured, AssertJ, Java patterns |
| [Schema Validation](./references/schema-validation.md) | Zod (TS), JSON Schema (Java), strict vs loose |
| [Contract Testing](./references/contract-testing.md) | Request/response contracts, idempotency, versioning |
## Templates
- [Playwright API Spec](./templates/playwright-api-spec.ts) — starter test file for API testing
- [REST Assured Test](./templates/rest-assured-test.java) — starter Java test class
## Scripts
- [API Health Check](./scripts/api-health-check.sh) — validate API endpoints respond correctly
## Troubleshooting
| Issue | Solution |
| ------------------------------ | ------------------------------------------------------------------------------ |
| 401 on authenticated endpoints | Verify token is fresh; check expiry; re-authenticate |
| Flaky API tests | Add retry logic; check for rate limiting; use unique test data |
| Schema validation too strict | Use `.passthrough()` (Zod) or `additionalProperties: true` for flexible fields |
| Timeout on slow endpoints | Increase `timeout` in request options; check for server load |
---
## Verification
- [ ] **Schema validation in place** — Every response validated against a schema (Zod or JSON Schema)
- [ ] **Authentication tested** — 401 returned for protected endpoints without valid credentials
- [ ] **Idempotency verified** — PUT/DELETE produce same result when called multiple times
- [ ] **Edge cases covered** — Empty payloads, invalid types, boundary values, SQL injection attempts
From fugazi/test-automation-skills-agents at 65a72d5, shown as plain text under its license: MIT (permissive). The license text is in skills/api-testing/LICENSE.txt.
View SKILL.md on GitHub at 65a72d5Files
- SKILL.md6.0 KB · d3ba019779c1
- LICENSE.txt1.1 KB · 7f06446a6778
- references/
- contract-testing.md3.5 KB · 111465f4f8d4
- playwright-api-testing.md4.0 KB · f5b9b050d029
- rest-api-patterns.md3.1 KB · f679484b2d4e
- rest-assured-testing.md4.5 KB · c950447e404b
- schema-validation.md3.2 KB · dddad4c2def8
- scripts/
- api-health-check.sh913 B · 17660bb6deed
- templates/
- playwright-api-spec.ts1.6 KB · e38eedbfd545
- rest-assured-test.java1.9 KB · 96f94815cc67
10 files, 30 KB in total. Each file has a sha256 in the pin's manifest; the first 12 characters are shown.
Skill folder on GitHub at 65a72d5Related in Testing and QA
playwright-best-practices
This skill provides comprehensive guidance for writing, debugging, and maintaining Playwright test suites across E2E, component, API, visual, and…
by currents-devCommunity
Claude Code, Codex, Cursor +4 · about 6.1K tokens · pinned 6 days ago
triaging-visual-review-runs
Inspects PostHog Visual Review screenshot regression runs that gate pull requests, helping engineers triage diff results, identify flaky stories, and decide…
by PostHogOfficial publisher
Claude Code, Codex, Cursor +4 · about 8.9K tokens · pinned 6 days ago
webapp-testing
This skill enables agents to test local web applications using Playwright by writing Python automation scripts.
by SnykOfficial publisher
Contains scripts
Claude Code, Codex, Cursor +3 · about 890 tokens · pinned 6 days ago
linear
This skill emulates the Linear GraphQL API locally for development and testing, providing stateful simulation of organizations, teams, issues, comments…
by VercelOfficial publisher
Claude Code, Codex, Cursor +4 · about 1.3K tokens · pinned 6 days ago
browser-probe
This skill probes a URL with escalating headless browser configurations to detect CDN bot protection systems like Akamai and Cloudflare, then generates a…
by Adobe, Inc.Official publisher
Contains scripts
Claude Code · about 1K tokens · pinned 6 days ago
browser-navigation
This skill enables agents to automate browser interactions including navigation, form filling, element clicking, screenshots, and data extraction from web…
by FactoryOfficial publisher
Claude Code, Codex, Cursor +3 · about 2.5K tokens · pinned 6 days ago