@tagplus/playwright-api-client
v3.2.0
Published
Fixture de API para Playwright, pronta para reuso
Keywords
Readme
🎭 Playwright API Client
Um plugin para Playwright que facilita chamadas de APIs nos testes automatizados, fornecendo um cliente HTTP simples e tipado, além de um expect customizado para asserções mais flexíveis.
🚀 Instalação
npm install playwright-api-client
# ou
yarn add playwright-api-client📦 O que esse plugin faz?
- Fornece um cliente de API pronto para usar em testes Playwright.
- Suporte aos métodos:
GET,POST,PUT,PATCH,DELETE. - Retorno padronizado:
{ status, body }. - Integração automática com variáveis de ambiente (
API_BASE_URL,TOKEN). expectcustomizado com matcher para ignorar chaves notoMatchObject.
🧑💻 Uso
1. Importando o test e expect
import { test, expect, apiClient } from 'playwright-api-client'2. Criando um cliente de API
test('exemplo de chamada de API', async () => {
const api = await apiClient()
const { status, body } = await api.get('/users')
expect(status).toBe(200)
expect(body).toMatchObject([{ id: expect.any(Number), name: expect.any(String) }])
})3. Usando failOnStatusCode
Se quiser que a request falhe automaticamente em status diferente de 2xx, ative a opção:
const api = await apiClient({ failOnStatusCode: true })
await api.get('/rota-invalida')
// ❌ Lança erro automaticamente se não for 200-2994. Expect customizado (toMatchObjectIgnoringKeys)
Permite comparar objetos ignorando chaves específicas:
test('comparando objetos ignorando chave', () => {
const received = { id: 123, nome: 'ldonato', criadoEm: '2025-08-25' }
const expected = { id: expect.any(Number), nome: 'ldonato' }
expect(received).toMatchObjectIgnoringKeys(expected, ['criadoEm'])
})🛠 API
apiClient(options?)
Cria um cliente de API.
- Parâmetros
failOnStatusCode?: boolean→ (default:false) Setrue, lança erro em respostas não-2xx.
- Retorno
ApiClientcom métodos:get,post,put,patch,delete.
📖 Exemplo Completo
import { test, expect, apiClient } from 'playwright-api-client'
test.describe('API Users', () => {
test('deve listar usuários', async () => {
const api = await apiClient()
const { status, body } = await api.get('/users')
expect(status).toBe(200)
expect(body.length).toBeGreaterThan(0)
})
test('deve criar usuário', async () => {
const api = await apiClient()
const { status, body } = await api.post('/users', {
data: { name: 'ldonato', email: '[email protected]' }
})
expect(status).toBe(201)
expect(body).toMatchObject({ name: 'ldonato', email: '[email protected]' })
})
})