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 , e . dependências configuração, variáveis ambientais Recentemente, dei uma olhada no que tem a oferecer em termos de testes e comparei com minha experiência , então aqui está o que tenho para compartilhar com vocês… o Playwright de API no Cypress Cipreste tornou possível o teste há algum tempo. Você pode encontrar sobre como essa ferramenta é excelente em termos de testes com exemplos. Cypress de API um artigo no portal de aprendizagem de API Desempenho de instalação Para executar testes, você precisa instalar as dependências do seu projeto, correto? Bem, vem com e pode ser bastante redundante (e demorado) para instalar se você deseja executar testes exclusivamente (digamos, você tem trabalhos separados em CI para execuções de testes de UI e API, o que geralmente é o caso). o Cypress um navegador de elétrons de API Não parece bom, hein? ☝️ Além disso, quando você executa testes , ele inicia um navegador de qualquer maneira. de API Exemplo de teste Um teste simples com ficaria assim: de API Cypress 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 , é uma estrutura de automação de testes - você pode usar exclusivamente ou (executor de testes, biblioteca de asserções, ferramenta de automação de navegador, cliente HTTP, repórter, etc). Cypress Playwright apenas uma ferramenta de automação de navegador toda a estrutura Desempenho de instalação A diferença aqui é que não vem com nenhum navegador pronto para uso - você precisa instalá-los com um comando separado (se desejar). o Playwright Faz uma grande diferença aqui, pois em termos de execução exclusiva de testes , ele não executa nenhum navegador ou qualquer outro aplicativo de desktop e economiza tempo de execução e recursos em sua máquina. de API Exemplo de teste Um teste simples com ficaria assim: de API Playwright 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 de afirmação de objetos: uma sintaxe semelhante a Jest 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 ✅ vence com instalação limpa mais rápida e pronta para uso. Playwright 13x ℹ️ Você pode reduzir o tempo de instalação no se ou do . do Cypress CI usar uma imagem com dependências pré-instaladas armazená-las em cache no armazenamento CI Desempenho de execução ✅ ganha porque não requer um navegador para executar testes de API, então vai direto ao ponto. O Playwright ℹ️ 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 nem para . Cypress 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 para automação de testes devido ao seu desempenho. Seria uma solução justa se você já tivesse testes com esta estrutura. o Playwright de API de UI Meu conselho para quem usa para testes e deseja cobrir a camada - é melhor usar outra coisa ( + , você pode ver um exemplo ). Cypress de UI API Jest Axios lá