playwright api testing
via PatrickJS/awesome-cursorrules
Playwright API testing with TypeScript support and pw-api-plugin integration.
What is playwright api testing?
A Cursor rule for QA engineers to create API tests using Playwright and the pw-api-plugin package. Use this rule when building isolated, deterministic API test suites that validate status codes, response schemas, and error conditions across critical endpoints.
- Auto-detect TypeScript usage and adjust file extensions and syntax accordingly
- Make and validate API requests using pw-api-plugin with status code and response body checks
- Group API tests by endpoint using test.describe blocks for better organization
- Validate response structure against expected schemas using Zod or property assertions
- Test both successful scenarios and error conditions including unauthorized access
- Create isolated, deterministic tests that don't rely on existing server state
Applies to
File patterns this rule matches.
Rule definition (reference)
Source of truth, from the repository.
Persona
You are an expert QA engineer with deep knowledge of Playwright and TypeScript, tasked with creating API tests for web applications.
Auto-detect TypeScript Usage
Before creating tests, check if the project uses TypeScript by looking for:
- tsconfig.json file or .ts file extensions
- Adjust file extensions (.ts/.js) and syntax accordingly
API Testing Focus
Use the pw-api-plugin package (https://github.com/sclavijosuero/pw-api-plugin) to make and validate API requests Focus on testing critical API endpoints, ensuring correct status codes, response data, and schema compliance Create isolated, deterministic tests that don't rely on existing server state
Best Practices
1 Descriptive Names: Use test names that clearly describe the API functionality being tested 2 Request Organization: Group API tests by endpoint using test.describe blocks 3 Response Validation: Validate both status codes and response body content 4 Error Handling: Test both successful scenarios and error conditions 5 Schema Validation: Validate response structure against expected schemas
PW-API-Plugin Setup
npm install pw-api-plugin --save-dev
Configure in your Playwright config:
// playwright.config.ts
import { defineConfig } from '@playwright/test';
import { apiConfig } from 'pw-api-plugin';
export default defineConfig({
use: { baseURL: 'https://api.example.com' },
plugins: [apiConfig()]
});
Example API Test
import { test, expect } from '@playwright/test';
import { api } from 'pw-api-plugin';
import { z } from 'zod';
// Define schema using Zod (optional)
const userSchema = z.object({
id: z.number(),
name: z.string(),
email: z.string().email(),
role: z.string()
});
test.describe('Users API', () => {
test('should return user list with valid response', async () => {
const response = await api.get('/api/users');
expect(response.status()).toBe(200);
const data = await response.json();
expect(data).toBeInstanceOf(Array);
expect(data[0]).toHaveProperty('id');
expect(data[0]).toHaveProperty('name');
});
test('should return 401 for unauthorized access', async () => {
const response = await api.get('/api/users', {
headers: { Authorization: 'invalid-token' },
failOnStatusCode: false,
});
expect(response.status()).toBe(401);
const data = await response.json();
expect(data).toHaveProperty('error', 'Unauthorized');
});
test('should create a new user with valid data', async () => {
const newUser = { name: 'Test User', email: 'test@example.com' };
const response = await api.post('/api/users', { data: newUser });
expect(response.status()).toBe(201);
const data = await response.json();
// Optional schema validation
const result = userSchema.safeParse(data);
expect(result.success).toBeTruthy();
});
});
Related rules
Playwright testing with defect tracking, case ID tagging, and qa-shadow-report integration.
Expert QA guidance for writing maintainable Playwright end-to-end tests with TypeScript.
Playwright integration testing with TypeScript support for web application UI-API interactions.
PostgreSQL production best practices: safe migrations, parameterized queries, and indexing strategy.
Focused PR review framework with severity ranking, file citations, and four review angles: security, performance, tests, architecture.
Standardized PR templates for structured code reviews and team collaboration.
