Bonjour à tous! J'ai toujours regardé avec scepticisme les cadres d'automatisation des tests avec un double objectif : la couverture des tests d'interface utilisateur et d'API. Habituellement, vous exécuterez différentes couches de tests dans différentes exécutions de tests (ou projets d'événements), car chacune d'entre elles a probablement la sienne. , et . dépendances configuration, Variables d'environnement Récemment, j'ai jeté un œil à ce que a à offrir en termes de tests et je l'ai comparé à mon expérience , alors voici ce que j'ai à partager avec vous tous… Playwright d'API Cypress Cyprès a rendu possible les tests il y a quelque temps. Vous pouvez trouver expliquant à quel point cet outil est performant en termes de tests avec des exemples. Cypress d'API un article sur le portail d'apprentissage d'API Performances d'installation Pour exécuter des tests, vous devez installer les dépendances de votre projet, n'est-ce pas ? Eh bien, est livré avec , et son installation peut être assez redondante (et longue) si vous souhaitez exécuter exclusivement des tests (disons que vous avez des tâches distinctes dans CI pour les tests d'interface utilisateur et d'API, ce qui est habituellement le cas). Cypress un navigateur électronique d'API Ça n'a pas l'air bien, hein ? ☝️ De plus, lorsque vous exécutez des tests , il lance quand même un navigateur. API Exemple de test Un simple test avec ressemblerait à ceci : 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) }) }) C'est joli Dramaturge Tout comme , est un framework d'automatisation de tests - vous pouvez utiliser exclusivement, ou (exécuteur de test, bibliothèque d'assertions, outil d'automatisation de navigateur, client HTTP, reporter, etc.). Cypress Playwright uniquement un outil d'automatisation de navigateur l'ensemble du framework Performances d'installation La différence ici est que n'est fourni avec aucun navigateur prêt à l'emploi - vous devez les installer avec une commande distincte (si vous le souhaitez). Playwright Cela fait une énorme différence ici, car en termes d'exécution exclusive de tests , il n'exécutera aucun navigateur ni aucune autre application de bureau et n'économisera pas de temps d'exécution et de ressources sur votre machine. d'API Exemple de test Un simple test avec ressemblerait à ceci : 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), }) }) Je voudrais mettre en évidence pour affirmer des objets : une syntaxe de type Jest expect(await response.json()).toEqual({ token: expect.any(String), }) Cette syntaxe vous permet de vérifier toute la structure de l'objet avec un seul appel ☝️ expect Conclusion Les tests API sont censés être petits et légers car ils ne nécessitent pas trop de choses pour être exécutés. Résumons le matériel ci-dessus… Performances d'installation ✅ gagne avec une installation propre plus rapide, prête à l'emploi. Playwright 13 fois ℹ️ Vous pouvez réduire le temps d'installation dans si ou . de Cypress CI vous utilisez une image avec des dépendances préinstallées si vous les mettez en cache dans votre stockage CI Performances d'exécution ✅ gagne car il ne nécessite pas de navigateur pour exécuter les tests API, il va donc droit au but. Playwright ℹ️ Il n'y a aucun moyen de « ne pas exécuter » le navigateur dans les tests API, car cela fait partie de la logique du framework. Syntaxe du test Je ne peux pas choisir un gagnant ici, car il n'y a aucun avantage objectif ni pour ni pour . Cypress Playwright Ils ont tous deux une syntaxe assez simple avec de légères différences. Je dirais que c'est la décision du testeur de choisir ce qu'il aime ici. Dans l'ensemble Je peux certainement dire qu'il est suffisamment sûr d'utiliser pour l'automatisation des tests en raison de ses performances. Ce serait une solution équitable si vous avez déjà effectué des tests avec ce framework. Playwright API d'interface utilisateur Mon conseil pour ceux qui utilisent pour les tests et souhaitent couvrir la couche : mieux vaut utiliser autre chose ( + , vous pouvez voir un exemple ). Cypress d'interface utilisateur API Jest Axios ici