Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Testfälle für CI & Produktion #23

Open
cgawron opened this issue Apr 25, 2024 · 7 comments
Open

Testfälle für CI & Produktion #23

cgawron opened this issue Apr 25, 2024 · 7 comments
Assignees
Labels
enhancement New feature or request

Comments

@cgawron
Copy link
Member

cgawron commented Apr 25, 2024

Wir brauchen (die gleichen) Tests für zwei Szenarien:

  • In der CI Umgebung
    Dort laufen die Testfälle gegen einen Dev-Server auf http://localhost:5173.
    Alle anderen APIs müssen per cy.intercept() abgefangen werden.

  • In der produktiven Umgebung
    Alle Request laufen gegen den produktiven Server (aktuell https://openai.ki.fh-swf.de).
    Zu Beginn jedes Tests muss ein Login erfolgen bzw. auf anderem Wege ein gültiges Token als Cookie gesetzt werden.

Da der übrige Teil der Tests identisch ist, können die Unterschiede in eine Funktion setupTest() o.ä. ausgelagert werden, die jeweils in beforeEach() aufgerufen wird.

@cgawron cgawron added the enhancement New feature or request label Apr 25, 2024
@cgawron
Copy link
Member Author

cgawron commented Apr 29, 2024

@bryanlewicki Diskussion zum Projekt bitte jeweils in den Issues führen ...

Gibt es denn noch irgendwelche API's, die abgefangen werden müssen, außer der Login und das senden einer Nachricht? Ich habe noch versucht die GET Anfrage die auf diese URL geht zu intercepten:

https://www.gravatar.com/96f0dd2282a11de0145f55760a2f84f60b621627ff3ef811eec2d9631228c334

aber leider hat dies nicht geklappt.

Grundsätzlich wäre es gut, alle Anfragen an www.gravatar.com abzufangen.
Der Dienst liefert aktuell die Benutzer-Icons.

Was genau funktioniert denn nicht?

Auch habe ich eine Frage zur produktiven Umgebung. 
Da wollen sie, dass ein Login gemacht wird über Cypress. 
Wie genau soll ich die Benutzerdaten für den Login speichern?  
Soll ich diesen einfach in den Code schreiben oder sollte man das irgendwie sicherer machen? 

Bitte Umgebungsvariablen nutzen. Diese können wir im CI-Job dann über Secrets setzen.

Oder gibt es vielleicht einen anderen Weg, den gültigen Token zu kriegen?

Grundsätzlich ja (etwa per fetch), aber der Weg über das UI ist besser.

@bryanlewicki
Copy link
Collaborator

Grundsätzlich wäre es gut, alle Anfragen an www.gravatar.com abzufangen.
Der Dienst liefert aktuell die Benutzer-Icons.

Was genau funktioniert denn nicht?

Das hat sich heute erledigt. Ich habe heute nochmal rumprobiert und nun konnte ich intercepten und auch prüfen ob der entsprechende StatusCode da war. War wohl nicht so mein Tag gewesen. Bei einer Anfrage aber kam ein 404 zurück. Ist dies gewollt?

statuscode404

Ich habe alle URL's die in dem Screenshot zu sehen sind mit intercept abgefangen. Wären da noch mehr oder sind dies schon alle?

Bitte Umgebungsvariablen nutzen. Diese können wir im CI-Job dann über Secrets setzen.

Gut ich werde das dann über Umgebungsvariablen probieren.

@cgawron
Copy link
Member Author

cgawron commented May 2, 2024

Für ein Beispiel zum Login s. hier

@bryanlewicki
Copy link
Collaborator

Leider bekomme ich ein 404, wenn ich versuche ihren link aufzurufen. Kann es sein, dass es doch kein öffenliches Repository ist?

@cgawron
Copy link
Member Author

cgawron commented May 3, 2024

Leider bekomme ich ein 404, wenn ich versuche ihren link aufzurufen. Kann es sein, dass es doch kein öffenliches Repository ist?

Das Repo ist internal. Habe Sie gerade in die Organisation fhswf eingeladen, dann sollten Sie Zugriff haben.

@bryanlewicki
Copy link
Collaborator

Ich habe ihre Einladung angenommen und nun kann ich darauf zugreifen. Jetzt hätte ich noch eine andere bitte, denn ich kann leider selbst nicht einsehen im Projekt, wie genau die secrets heißen. Da ich jetzt grade probleme habe, diese in cypress zu nutzen, teilen sie mir hier bitte kurz mit, wie genau die secrets lauten.

Ein wenig überfordert bin ich auch mit dem yml Dateien in den Workflows. Kann ich diese secrets dann in der main.yml unter env speichern, wo auch schon ein GITHUB_TOKEN und ein NPM_TOKEN ist?

@cgawron
Copy link
Member Author

cgawron commented May 10, 2024

Die Secrets sind in GitHub gespeichert und heißen CYPRESS_USER_NAME und CYPRESS_USER_PASSWORD:
image

Die Secrets sind für die Builds auf GitHub über .github/workflows/cypress.yml gedacht. Bei eigenen Tests müssen Sie entsprechende Umgebungsvariablen lokal setzen, entweder "von Hand" oder indem Sie dotenv in den Tests verwenden. S. auch stackoverflow.com/questions/70333682/how-to-use-env-variables-inside-cypress-json-file

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants