paint-brush
Playwright vs Cypress para testes automatizados de API REST: quem sai por cima?por@bormando
8,617 leituras
8,617 leituras

Playwright vs Cypress para testes automatizados de API REST: quem sai por cima?

por Dmitrii Bormotov3m2023/09/05
Read on Terminal Reader

Muito longo; Para ler

Cypress é uma estrutura de automação de teste com dupla finalidade - cobertura de teste de UI e API. O Playwright tem exatamente o mesmo propósito, mas não vem com nenhum navegador pronto para uso - você deve instalá-los com um comando separado (se desejar). Quando se trata de uma ferramenta leve e rápida - com certeza será o Playwright, pois leva menos tempo para instalar e não consome recursos adicionais para a execução dos navegadores, pois é desnecessário em testes de API.
featured image - Playwright vs Cypress para testes automatizados de API REST: quem sai por cima?
Dmitrii Bormotov HackerNoon profile picture

Olá pessoal!


Sempre olhei com ceticismo para estruturas de automação de teste com dupla finalidade - cobertura de teste de UI e API. Normalmente, você executará diferentes camadas de testes em diferentes execuções de testes (ou projetos de eventos), pois cada um deles provavelmente tem seu próprio dependências , configuração, e variáveis ambientais .


Recentemente, dei uma olhada no que o Playwright tem a oferecer em termos de testes de API e comparei com minha experiência no Cypress , então aqui está o que tenho para compartilhar com vocês…

Cipreste

Cypress tornou possível o teste de API há algum tempo. Você pode encontrar um artigo no portal de aprendizagem sobre como essa ferramenta é excelente em termos de testes de API com exemplos.

Desempenho de instalação

Para executar testes, você precisa instalar as dependências do seu projeto, correto? Bem, o Cypress vem com um navegador de elétrons e pode ser bastante redundante (e demorado) para instalar se você deseja executar testes de API exclusivamente (digamos, você tem trabalhos separados em CI para execuções de testes de UI e API, o que geralmente é o caso).


Tempo de instalação limpa do Cypress


Não parece bom, hein? ☝️


Além disso, quando você executa testes de API , ele inicia um navegador de qualquer maneira.


Cypress executa sessão do navegador com base nas especificações da API


Registro de especificações de testes de API no navegador

Exemplo de teste

Um teste de API simples com Cypress ficaria assim:


 it('Sign in with valid credentials', () => { cy.request('POST', '/auth', { login: Cypress.env('username'), password: Cypress.env('password'), }).should(response => { expect(response.body.token).to.be.a('string') expect(response.status).to.eq(200) }) })


Parece bonito

Dramaturgo

Assim como Cypress , Playwright é uma estrutura de automação de testes - você pode usar apenas uma ferramenta de automação de navegador exclusivamente ou toda a estrutura (executor de testes, biblioteca de asserções, ferramenta de automação de navegador, cliente HTTP, repórter, etc).

Desempenho de instalação

A diferença aqui é que o Playwright não vem com nenhum navegador pronto para uso - você precisa instalá-los com um comando separado (se desejar).


Tempo de instalação limpo do dramaturgo


Faz uma grande diferença aqui, pois em termos de execução exclusiva de testes de API , ele não executa nenhum navegador ou qualquer outro aplicativo de desktop e economiza tempo de execução e recursos em sua máquina.

Exemplo de teste

Um teste de API simples com Playwright ficaria assim:


 import {test, expect} from '@playwright/test' test('Sign in with valid credentials', async ({request}) => { const response = await request.post('/auth', { data: { login: process.env.USERNAME, password: process.env.PASSWORD, }, }) expect(response.status()).toEqual(200) expect(await response.json()).toEqual({ token: expect.any(String), }) })


Gostaria de destacar uma sintaxe semelhante a Jest de afirmação de objetos:


 expect(await response.json()).toEqual({ token: expect.any(String), })


Esta sintaxe permite verificar toda a estrutura do objeto com apenas uma única chamada expect ☝️

Conclusão

Os testes de API devem ser pequenos e leves, pois não exigem muito para serem executados.


Vamos resumir o material acima…

Desempenho de instalação

Playwright vence com instalação limpa 13x mais rápida e pronta para uso.


ℹ️ Você pode reduzir o tempo de instalação do Cypress no CI se usar uma imagem com dependências pré-instaladas ou armazená-las em cache no armazenamento do CI .

Desempenho de execução

O Playwright ganha porque não requer um navegador para executar testes de API, então vai direto ao ponto.


ℹ️ Não há como “não rodar” o navegador nos testes da API, pois faz parte da lógica do framework.

Sintaxe de teste

Não é possível escolher um vencedor aqui, pois não há vantagem objetiva nem para Cypress nem para Playwright .


Ambos têm uma sintaxe bastante direta, com pequenas diferenças. Eu diria que é decisão do testador escolher o que gosta aqui.

Geral

Posso dizer com certeza que é seguro usar o Playwright para automação de testes de API devido ao seu desempenho. Seria uma solução justa se você já tivesse testes de UI com esta estrutura.


Meu conselho para quem usa Cypress para testes de UI e deseja cobrir a camada API - é melhor usar outra coisa ( Jest + Axios , você pode ver um exemplo ).