Um End-To-End-Tests mit Cypress und Angular zu schreiben, können Sie folgende Schritte ausführen:
- Stellen Sie sicher, dass Sie die neueste Version von Cypress und Angular installiert haben. Sie können Cypress mit dem Befehl
npm install -D cypress
installieren. - Öffnen Sie Cypress mit dem Befehl
npx cypress open
im Hauptverzeichnis Ihres Projekts. Cypress öffnet eine Benutzeroberfläche, in der Sie Ihre Tests aufzeichnen und ausführen können. - Erstellen Sie eine neue Testdatei, indem Sie auf „Add test file“ in der Cypress-Benutzeroberfläche klicken. Sie können die Testdatei auch manuell im Verzeichnis „cypress/integration“ erstellen.
- Fügen Sie den folgenden Code in Ihre Testdatei ein, um sicherzustellen, dass Cypress Ihre Angular-Anwendung erfolgreich geladen hat:
describe('My First Test', () => { it('Does not do much!', () => { cy.visit('http://localhost:4200'); cy.contains('app-root h1', 'Welcome to my-app!'); }); });
- Führen Sie den Test aus, indem Sie auf die Testdatei in der Cypress-Benutzeroberfläche klicken. Wenn alles erfolgreich war, sollte der Test grün markiert werden.
- Erstellen Sie weitere Tests, indem Sie Schritte und Assertions hinzufügen. Sie können Elemente auf der Seite auswählen und auf sie interagieren, indem Sie die Methoden von Cypress verwenden, z.B.
cy.get()
,cy.click()
undcy.type()
.
Um Cypress mit einem Docker-Container zu verwenden, können Sie folgende Schritte ausführen:
- Erstellen Sie eine
Dockerfile
in Ihrem Projektverzeichnis mit den folgenden Inhalten:
FROM cypress/browsers:node18.6.0-chrome105-ff104 # Install your application's dependencies COPY package.json yarn.lock ./ RUN yarn # Add your application code COPY . ./ # Run the tests CMD ["yarn", "cy:run"]
- Erstellen Sie ein Docker-Image mit dem Befehl
docker build -t my-app .
- Führen Sie einen Container auf Basis des Images mit dem Befehl
docker run -it --rm -v $(pwd):/app my-app
aus. Dies führt die Cypress-Tests innerhalb des Containers aus.
Durch das Hinzufügen von -v $(pwd):/app
werden Ihre Projektdateien in den Container gemountet und Cypress kann auf sie zugreifen.