e2e Tests für Verbrauchsausweis Wohnen und Gewerbe vollständig

This commit is contained in:
Moritz Utcke
2025-02-07 14:58:51 +07:00
parent 64fa120ccd
commit 829c176b50
66 changed files with 219 additions and 168 deletions

View File

@@ -2,6 +2,7 @@ import fuelList from "#components/Ausweis/brennstoffListe.js";
import { faker } from "@faker-js/faker";
import { type Enums } from "@ibcornelsen/database/client";
import "cypress-file-upload"
import moment from "moment";
describe("Verbrauchsausweis erstellen Schritt 1", () => {
const ausstellgrund = (["Modernisierung", "Neubau", "Sonstiges", "Verkauf", "Vermietung"] as Enums.Ausstellgrund[]);
@@ -13,15 +14,13 @@ describe("Verbrauchsausweis erstellen Schritt 1", () => {
cy.wait(1000);
// Wir überprüfen, ob alle Ausstelgründe vorhanden sind, diese sollten genau so viele sein wie in der Datenbank vorhanden sind.
cy.get("input[name='ausstellgrund']")
.should("have.length", ausstellgrund.length)
.eq(
cy.get("select[data-cy='ausstellgrund']")
.select(
faker.number.int({
min: 0,
max: ausstellgrund.length - 1,
max: (["Modernisierung", "Neubau", "Sonstiges", "Verkauf", "Vermietung"] as Enums.Ausstellgrund[]).length - 1,
})
)
.check();
// Jetzt Füllen wir das Baujahr vom Gebäude aus.
cy.get("input[name='baujahr_gebaeude']")
@@ -91,9 +90,22 @@ describe("Verbrauchsausweis erstellen Schritt 1", () => {
cy.get("select[name='brennstoff_1']").select(brennstoffKombo[0]);
cy.get("select[name='einheit_1']").select(brennstoffKombo[1]);
let availableDates = [];
const startDate = moment()
.subtract(4, "years")
.subtract(6, "months");
const endDate = moment().subtract(3, "years");
for (let m = moment(startDate); m.isBefore(endDate); m.add(1, "month")) {
availableDates.push({
year: m.year(),
month: m.month(),
});
}
// Verbrauchszeitraum
cy.get("select[name='energieverbrauch_zeitraum_monat']").select(faker.number.int({ min: 1, max: 12 }).toString());
cy.get("select[name='energieverbrauch_zeitraum_jahr']").select(faker.number.int({ min: 2018, max: 2019 }).toString());
cy.get("select[name='energieverbrauch_zeitraum_monat']").select(availableDates[0].month.toString());
cy.get("select[name='energieverbrauch_zeitraum_jahr']").select(availableDates[0].year.toString());
// Verbrauch
cy.get("input[name='verbrauch_1']").type(faker.number.int({ min: 4000, max: 15000 }).toString());
@@ -104,18 +116,18 @@ describe("Verbrauchsausweis erstellen Schritt 1", () => {
const zusaetzlicheHeizquelle = Math.random() > 0.5;
if (zusaetzlicheHeizquelle) {
cy.get("input[name='zusaetzliche_heizquelle']").check();
cy.get("[data-cy='zusaetzliche_heizquelle']").check();
// Brennstoff und Einheit 2
const brennstoffKombo2 = fuelList[faker.number.int({ min: 0, max: fuelList.length - 1 })];
cy.get("select[name='brennstoff_2']").select(brennstoffKombo2[0]);
cy.get("select[name='einheit_2']").select(brennstoffKombo2[1]);
cy.get("[data-cy='brennstoff_2']").select(brennstoffKombo2[0], { force: true });
cy.get("[data-cy='einheit_2']").select(brennstoffKombo2[1], { force: true });
// Verbrauch
cy.get("input[name='verbrauch_4']").type(faker.number.int({ min: 4000, max: 15000 }).toString());
cy.get("input[name='verbrauch_5']").type(faker.number.int({ min: 4000, max: 15000 }).toString());
cy.get("input[name='verbrauch_6']").type(faker.number.int({ min: 4000, max: 15000 }).toString());
cy.get("input[name='verbrauch_4']").type(faker.number.int({ min: 4000, max: 15000 }).toString(), { force: true });
cy.get("input[name='verbrauch_5']").type(faker.number.int({ min: 4000, max: 15000 }).toString(), { force: true });
cy.get("input[name='verbrauch_6']").type(faker.number.int({ min: 4000, max: 15000 }).toString(), { force: true });
}
// Gebäudestrom
@@ -172,7 +184,7 @@ describe("Verbrauchsausweis erstellen Schritt 1", () => {
// Gebäudetyp
cy.get("select[name='gebaeudetyp']").then(($dropdown) => {
const options = $dropdown.find('option');
const options = $dropdown.find('option:not([disabled])');
// Select the option at the random index
cy.get("select[name='gebaeudetyp']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string);
});
@@ -213,7 +225,7 @@ describe("Verbrauchsausweis erstellen Schritt 1", () => {
if (Math.random() > 0.5) cy.get("input[name='warmwasser_rohre_gedaemmt']").check();
if (Math.random() > 0.5) cy.get("input[name='heizungsrohre_gedaemmt']").check();
if (Math.random() > 0.5) cy.get("input[name='zirkulation']").check();
if (Math.random() > 0.5) cy.get("input[name='raum_temperatur_regler']").check();
// if (Math.random() > 0.5) cy.get("input[name='raum_temperatur_regler']").check();
// Heizungsanlage Bilder
cy.get("input[name='heizung_image']").should("have.attr", "type", "file").attachFile("images/heizungsanlage/1.jpeg", { subjectType: "input" });
@@ -250,14 +262,14 @@ describe("Verbrauchsausweis erstellen Schritt 1", () => {
cy.get("input[name='gebaeude_image']").should("have.attr", "type", "file").attachFile("images/gebaeude/1.jpeg", { subjectType: "input" });
// Jetzt können wir den Verbrauchsausweis erstellen.
cy.get("form[name='ausweis'] button[type='submit']").click({ force: true });
cy.get("form[name='ausweis'] button[data-cy='weiter']").click({ force: true });
// Wir sind nicht eingeloggt also sollte jetzt ein Login Screen erscheinen.
// Wir klicken auf registrieren und erstellen einen neuen Benutzer, danach loggen wir uns mit diesem ein.
cy.get("button[name='registrieren']").click();
cy.get("[data-cy='registrieren']").click();
const email = faker.internet.email();
const passwort = faker.internet.password();
const passwort = "test1234";
const vorname = faker.person.firstName();
const nachname = faker.person.lastName();
@@ -275,6 +287,37 @@ describe("Verbrauchsausweis erstellen Schritt 1", () => {
cy.get("form[name='login'] button[type='submit']").click();
// Der Ausweis sollte jetzt schon erstellt worden sein.
// Der Ausweis sollte jetzt schon erstellt worden sein und wir sollten auf die kundendaten seite weitergeleitet worden sein.
cy.url().should("contain", "/kundendaten");
cy.wait(1000)
// Wir füllen jetzt die Kundendaten aus.
// cy.get("select[name='anrede']").select(Math.random() > 0.5 ? "Herr" : "Frau");
cy.get("input[name='vorname']").should("contain.value", vorname);
cy.get("input[name='name']").should("contain.value", nachname);
// cy.get("input[name='email']").should("contain.value", email);
// cy.get("input[name='telefon']").type(faker.phone.number());
cy.get("input[name='rechnung_empfaenger']").type(`${vorname} ${nachname}`);
cy.get("input[name='rechnung_strasse']").type(faker.location.streetAddress());
// TODO: Random Plz generieren, allerdings muss die auch in der Datenbank vorhanden sein...
cy.get("input[name='rechnung_plz']").type("2103");
// Jetzt sollte der PLZ Container erscheinen, dort klicken wir einfach das erste Element an.
cy.get("div[data-test='plz-container']").children().first().click();
// cy.get("input[name='rechnung_telefon']").type(faker.phone.number());
cy.get("input[name='rechnung_email']").should("contain.value", email);
cy.get("input[data-cy='paypal']").click();
// Datenschutz und AGB akzeptieren, dann schicken wir das Formular ab.
// cy.get("input[name='agb-akzeptieren']").check()
// cy.get("input[name='datenschutz-akzeptieren']").check()
cy.get("button[data-cy='bestellen']").click();
cy.origin('https://www.mollie.com', () => {
// Jetzt sind wir auf der Mollie Seite, dort wählen wir den "paid" status aus
cy.get("input[type='radio'][name='final_state'][value='paid']").check();
// Da wird unser Test fehlschlagen, da die localhost domain von Mollie aus nicht erreichbar ist.
})
});
});

View File

@@ -266,11 +266,11 @@ describe("Verbrauchsausweis erstellen Schritt 1", () => {
cy.wait(1000)
// Wir füllen jetzt die Kundendaten aus.
cy.get("select[name='anrede']").select(Math.random() > 0.5 ? "Herr" : "Frau");
// cy.get("select[name='anrede']").select(Math.random() > 0.5 ? "Herr" : "Frau");
cy.get("input[name='vorname']").should("contain.value", vorname);
cy.get("input[name='name']").should("contain.value", nachname);
cy.get("input[name='email']").should("contain.value", email);
cy.get("input[name='telefon']").type(faker.phone.number());
// cy.get("input[name='email']").should("contain.value", email);
// cy.get("input[name='telefon']").type(faker.phone.number());
cy.get("input[name='rechnung_empfaenger']").type(`${vorname} ${nachname}`);
cy.get("input[name='rechnung_strasse']").type(faker.location.streetAddress());
@@ -278,14 +278,14 @@ describe("Verbrauchsausweis erstellen Schritt 1", () => {
cy.get("input[name='rechnung_plz']").type("2103");
// Jetzt sollte der PLZ Container erscheinen, dort klicken wir einfach das erste Element an.
cy.get("div[data-test='plz-container']").children().first().click();
cy.get("input[name='rechnung_telefon']").type(faker.phone.number());
cy.get("input[name='rechnung_email']").type(faker.internet.email());
cy.get("button[data-test='paypal']").click();
// cy.get("input[name='rechnung_telefon']").type(faker.phone.number());
cy.get("input[name='rechnung_email']").should("contain.value", email);
cy.get("input[data-cy='paypal']").click();
// Datenschutz und AGB akzeptieren, dann schicken wir das Formular ab.
cy.get("input[name='agb-akzeptieren']").check()
cy.get("input[name='datenschutz-akzeptieren']").check()
cy.get("button[type='submit']").click();
// cy.get("input[name='agb-akzeptieren']").check()
// cy.get("input[name='datenschutz-akzeptieren']").check()
cy.get("button[data-cy='bestellen']").click();
cy.origin('https://www.mollie.com', () => {
// Jetzt sind wir auf der Mollie Seite, dort wählen wir den "paid" status aus