typescript - Konfigurieren des cypress-cucumber-preprocessor mit Cypress 10 in Angular
Cypress 10 wurde erst vor wenigen Tagen mit einer Menge großer, brechender Änderungen veröffentlicht. Als Erstbenutzer von Cypress (der von Protractor mit Cucumber wechselt), war mir das nicht bewusst. Ich versuche, Cypress mit Cucumber zu installieren, aber die gesamte Dokumentation (und vielleicht auch das cypress-cucumber-preprocessor-Plugin selbst) ist alle für Cypress 9 geschrieben/konfiguriert.
Hat jemand cypress-cucumber-preprocessor erfolgreich für Cypress 10 in einem Angular-Projekt konfiguriert oder migriert, und falls ja, welche Schritte sind erforderlich?
Antwort #1
Es gibt ein Problem, das unter Update-Plugin, um mit Cypress 10 kompatibel zu sein #722, aufgeführt ist, das noch läuft und das Cypress-Team und Badeball einschließt.
Meine Erfahrung ist, dass die Plugin-Migration ein Problem ist, laut Danbord
Die Funktionen werden von Cypress erkannt, aber beim Ausführen erhalte ich einen "TypeError [ERR_INVALID_ARG_TYPE]: Das Argument "path" muss vom Typ String sein. Empfangen: undefined"
aber andere behaupten, es funktioniere, einschließlich far11ven, der hier ein Repository teilt.
Ich verwende "cypress-cucumber-preprocessor": "^4.2.0"
was eine ziemlich alte Version ist und von TheBrainFamily stammt und nicht mehr in ihren Repositories aufgeführt wird.
Jetzt gelöst
Unter RC-Status, siehe 722#issuecomment-1153256645
Antwort #2
Sie können mit den Standardschritten fortfahren, die während der Installation von Cypress 10 und höheren Versionen für die Migration verlangt werden. Allerdings wird unter einigen wenigen Ordner-/Dateinamenänderungen der Ordnername 'integration' in 'e2e' geändert, was den Testlauf fehlschlagen lässt, wenn Sie cypress-cucumber-preprocessor/BDD-Setup im Framework verwenden.
Um es zum Laufen zu bringen, können Sie die folgenden Schritte befolgen:
- Gehe zu node_modules in deinem Projektordner
- Und navigieren Sie zum Pfad -> /node_modules/cypress-cucumber-preprocessor/lib/stepDefinitionPath.js
- Ändern Sie die folgende Codezeile
Vor der Änderung: const relativePath=confStepDefinitions || cypress$ {path.sep}integration;
Nach der Änderung: const relativePath=confStepDefinitions || cypress$ {path.sep}e2e;
End-to-End-Änderung
Sobald dies erledigt ist, sollte es funktionieren, wenn Sie Ihren Test auslösen.
Hinweis: Es gibt andere Lib-Dateien, die immer noch den Ordnerpfad 'integration' enthalten, und Sie können diese bei Bedarf ändern. Ich habe hier nur die Anfrage beantwortet.