Talking About TestingATT</>
Básico de Testes de API com Playwright

Acerte 100% do quiz para continuar

Aula
Prévia gratuita

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 importar test e expect de @playwright/test no 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 com npx playwright test para 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

Pergunta 1 de 2
Pontuação: 0

Qual fixture do Playwright você usa para enviar requisições HTTP em um teste de API?

Acerte 100% do quiz para continuar