Introduction
Beaucoup de développeurs et QA ne savent pas que Playwright intègre un client HTTP puissant pour tester les APIs. Découvrons comment l'utiliser efficacement.
Pourquoi tester les APIs avec Playwright ?
- Un seul outil : Pas besoin de maintenir Postman + Playwright
- Partage du contexte : Réutilisez l'authentification entre tests E2E et API
- Assertions puissantes : Les mêmes matchers pour tout
Configuration
Playwright fournit request dans les fixtures de test :
typescript
import { test, expect } from '@playwright/test';
test('GET users returns 200', async ({ request }) => {
const response = await request.get('/api/users');
expect(response.ok()).toBeTruthy();
});Exemples pratiques
Test GET avec validation du body
typescript
test('GET user by ID', async ({ request }) => {
const response = await request.get('/api/users/1');
expect(response.status()).toBe(200);
const user = await response.json();
expect(user).toHaveProperty('id', 1);
expect(user).toHaveProperty('email');
});Test POST avec body JSON
typescript
test('POST create user', async ({ request }) => {
const response = await request.post('/api/users', {
data: {
name: 'John Doe',
email: 'john@example.com'
}
});
expect(response.status()).toBe(201);
const user = await response.json();
expect(user.name).toBe('John Doe');
});Test avec authentification
typescript
test('protected endpoint requires auth', async ({ request }) => {
// Sans auth
const unauthorized = await request.get('/api/admin');
expect(unauthorized.status()).toBe(401);
// Avec auth
const authorized = await request.get('/api/admin', {
headers: {
'Authorization': 'Bearer valid-token'
}
});
expect(authorized.status()).toBe(200);
});Fixtures personnalisées
Créez une fixture pour un client API authentifié :
typescript
// fixtures.ts
import { test as base } from '@playwright/test';
export const test = base.extend({
authenticatedRequest: async ({ request }, use) => {
// Login et récupération du token
const loginResponse = await request.post('/api/login', {
data: { email: 'test@test.com', password: 'password' }
});
const { token } = await loginResponse.json();
// Créer un nouveau contexte avec le token
const authRequest = await request.newContext({
extraHTTPHeaders: {
'Authorization': `Bearer ${token}`
}
});
await use(authRequest);
}
});Conclusion
Les tests API avec Playwright sont simples, puissants et s'intègrent parfaitement avec vos tests E2E. C'est une compétence essentielle pour tout QA automaticien.