Hallo zusammen! Ich habe Testautomatisierungs-Frameworks mit einem doppelten Zweck – UI- und API-Testabdeckung – immer skeptisch betrachtet. Normalerweise führen Sie verschiedene Testebenen in verschiedenen Testläufen (oder Ereignisprojekten) aus, da wahrscheinlich jede davon ihre eigene hat , Und . Abhängigkeiten Aufbau, Umgebungsvariablen Kürzlich habe ich einen Blick darauf geworfen, was in Bezug auf Tests zu bieten hat, und es mit meiner Erfahrung verglichen. Hier ist also, was ich mit euch allen teilen muss … Playwright API- Cypress- Zypresse hat Tests vor einiger Zeit ermöglicht. darüber, wie großartig dieses Tool in Bezug auf Tests ist, mit Beispielen. Cypress API- Auf dem Lernportal finden Sie einen Artikel API- Installationsleistung Um Tests auszuführen, müssen Sie Ihre Projektabhängigkeiten installieren, richtig? Nun, wird mit geliefert, dessen Installation möglicherweise ziemlich überflüssig (und zeitaufwändig) ist, wenn Sie ausschließlich Tests ausführen möchten (sagen wir, Sie haben separate Jobs in CI für UI- und API-Testläufe). was normalerweise der Fall ist). Cypress einem Elektronenbrowser API- Sieht nicht gut aus, oder? ☝️ Wenn Sie Tests ausführen, wird außerdem trotzdem ein Browser gestartet. API- Testbeispiel Ein einfacher Test mit würde so aussehen: 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) }) }) Sieht ziemlich einfach und unkompliziert aus, oder? An dieser Stelle ist es wichtig zu sagen, dass es sich um eine gängige Syntax handelt – , anstatt jede Ausgabe in eine Variable zu schreiben (obwohl ). Cypress- also das Verketten von Dingen dies mit einigen Optimierungen möglich ist Dramatiker Genau wie ist ein Testautomatisierungs-Framework – Sie können oder (Testläufer, Assertionsbibliothek, Browser-Automatisierungstool, HTTP-Client, Reporter usw.) verwenden. Cypress Playwright ausschließlich ein Browser-Automatisierungstool das gesamte Framework Installationsleistung Der Unterschied besteht darin, dass keine standardmäßigen Browser mitbringt – Sie müssen diese mit einem separaten Befehl installieren (wenn Sie möchten). Playwright Hier macht es einen großen Unterschied, da es im Hinblick auf die ausschließliche Ausführung Tests keinen Browser oder eine andere Desktop-App ausführt und dadurch Laufzeit und Ressourcen auf Ihrem Computer spart. von API- Testbeispiel Ein einfacher Test mit würde so aussehen: 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), }) }) Ich möchte zum Bestätigen von Objekten hervorheben: eine Jest-ähnliche Syntax expect(await response.json()).toEqual({ token: expect.any(String), }) Mit dieser Syntax können Sie die gesamte Struktur des Objekts mit nur einem einzigen Aufruf überprüfen ☝️ expect Abschluss API-Tests sollten klein und leicht sein, da ihre Ausführung nicht allzu viel erfordert. Fassen wir das obige Material zusammen ... Installationsleistung ✅ überzeugt mit einer schnelleren, sauberen Installation nach dem Auspacken. Playwright 13-mal ℹ️ Sie können die Installationszeit in verkürzen, indem oder zwischenspeichern. von Cypress CI Sie ein Image mit vorinstallierten Abhängigkeiten verwenden diese in Ihrem CI- Speicher Laufleistung ✅ gewinnt, da für die Ausführung von API-Tests kein Browser erforderlich ist, sodass es direkt zur Sache geht. Playwright ℹ️ Es gibt keine Möglichkeit, den Browser in API-Tests „nicht auszuführen“, da dies Teil der Logik des Frameworks ist. Testsyntax Hier kann kein Gewinner ermittelt werden, da es weder für noch für einen objektiven Vorteil gibt. Cypress Playwright Beide haben eine ziemlich einfache Syntax mit geringfügigen Unterschieden. Ich würde sagen, es ist die Entscheidung des Testers, auszuwählen, was ihm hier gefällt. Gesamt Ich kann definitiv sagen, dass es aufgrund seiner Leistung sicher genug ist, für Testautomatisierung zu verwenden. Es wäre eine faire Lösung, wenn Sie bereits Tests mit diesem Framework hätten. Playwright die API- UI- Mein Rat für diejenigen, die für Tests verwenden und die Ebene abdecken möchten – verwenden Sie besser etwas anderes ( + , ein Beispiel können Sie sehen). Cypress UI- API- Jest Axios dort