Acerte 100% do quiz para continuar
Escrevendo um teste de caminho feliz
Envie uma requisição GET e faça asserções sobre o código de status e a estrutura do corpo.
Vamos começar com o caso de teste mais importante, o caminho feliz: enviar uma requisição GET para o endpoint /customers e fazer asserção de que ele responde com sucesso, com um código de status 200 e um corpo que tem a estrutura esperada.
Diferentemente dos testes web, os testes de API não controlam um navegador. Em vez disso, o Playwright fornece uma fixture request que envia requisições HTTP diretamente e retorna a resposta para você fazer asserções.
Visão geral dos comandos 📖
import { test, expect } from '@playwright/test'
Todo arquivo de teste (spec) começa importando a função test do Playwright (usada para declarar casos de teste e hooks) e o expect (usado para escrever asserções) do executor de testes.
Sintaxe:
import { test, expect } from '@playwright/test'test.describe
Agrupa casos de teste relacionados sob um título compartilhado, o que mantém a suíte organizada e o relatório mais fácil de ler.
Sintaxe:
test.describe(title, () => { /* tests */ })Exemplo:
test.describe('GET /customers', () => {
// hooks e testes vão aqui
})test
Declara um único caso de teste. Ele recebe um título e um callback assíncrono, e o Playwright injeta suas fixtures (como o request) como argumento do callback.
Sintaxe:
test(title, async ({ request }) => { /* ... */ })Exemplo:
test('gets customers successfully', async ({ request }) => {
// arrange, act e assert aqui
})A fixture request
O Playwright expõe uma fixture request (um APIRequestContext) que pode enviar requisições HTTP. Você a recebe como argumento do seu teste.
Sintaxe:
test('...', async ({ request }) => { /* ... */ })request.get
Envia uma requisição GET e retorna a resposta.
Sintaxe:
const response = await request.get(url)Exemplo:
// Com o baseURL configurado, um caminho relativo é suficiente
const response = await request.get('/customers')response.status e response.ok
Retornam o código de status HTTP e se ele está na faixa 2xx.
Exemplo:
expect(response.status()).toBe(200)
expect(response.ok()).toBeTruthy()response.json
Faz o parse do corpo da resposta como JSON.
Exemplo:
const body = await response.json()
expect(body).toHaveProperty('customers')
expect(body).toHaveProperty('pageInfo')Conteúdo sugerido 📚 e links da documentação 🔗
Exercício 🎯
Crie um arquivo de teste (por exemplo, tests/customers.spec.ts). Envolva seus testes em um bloco test.describe (por exemplo, com o título GET /customers) para organizar a suíte. Depois, dentro de um test, envie uma requisição GET para /customers. Faça asserção de que o status da resposta é 200 e de que o corpo já parseado tem um array customers e um objeto pageInfo com as propriedades currentPage, totalPages e totalCustomers.
👨🏫 Lembre-se de importartesteexpectde@playwright/testno topo do seu arquivo de teste. Sem essa importação, seu teste não vai rodar e suas asserções não vão funcionar.
Certifique-se de que a API está rodando localmente com o Docker antes de executar seu teste.
Execute o teste comnpx playwright testpara garantir que sua implementação funciona.
Mostre ao mundo o que você aprendeu 🌎
Para mostrar à sua rede profissional o que você aprendeu nesta aula, publique o seguinte no LinkedIn.
Estou fazendo o curso "Básico de Testes de API com Playwright" com @Walmyr Lima e Silva Filho na @Talking About Testing School, e acabei de implementar meu primeiro teste de API, enviando uma requisição GET e fazendo asserção sobre o código de status e a estrutura do corpo da resposta usando a fixture request do Playwright. #TalkingAboutTesting #TATSchool #BasicsOfAPITestingWithPlaywright #Playwright #APITesting #TestAutomation
👨🏫 Lembre-se de me marcar na sua publicação. Aqui está o meu perfil no LinkedIn.
Quiz
Qual fixture do Playwright você usa para enviar requisições HTTP em um teste de API?
Acerte 100% do quiz para continuar