Add cypress tests

This commit is contained in:
Daniel Egger 2023-09-15 11:28:49 +02:00
parent e6fbf0d276
commit dbd6b31895
8 changed files with 310 additions and 53 deletions

View File

@ -25,6 +25,7 @@ const getIconName = () => {
<div
class="flex flex-col gap-4 py-8 lg:flex-row lg:items-center lg:gap-0"
:class="{ 'border-b': props.addBorderBottom }"
:data-cy="`assignment-${assignment.slug}`"
>
<component :is="getIconName()" class="mr-4 hidden h-9 w-9 lg:block"></component>
<div class="flex w-[420px] flex-col">

View File

@ -44,7 +44,10 @@ const progressStatusCount = computed(() => {
<template>
<div>
<div class="mb-4 bg-white p-8">
<div
class="mb-4 bg-white p-8"
:data-cy="`certificate-${competenceCertificate.slug}`"
>
<div class="flex flex-col lg:flex-row lg:items-center">
<div
v-if="numAssignmentsEvaluated < numAssignmentsTotal"
@ -89,6 +92,7 @@ const progressStatusCount = computed(() => {
<router-link
:to="competenceCertificate.frontend_url"
class="btn-text mt-4 inline-flex items-center py-2 pl-0"
:data-cy="`certificate-${competenceCertificate.slug}-detail-link`"
>
<span>{{ $t("a.Details anzeigen") }}</span>
<it-icon-arrow-right></it-icon-arrow-right>

View File

@ -61,7 +61,7 @@ onMounted(async () => {
<div class="container-large">
<h2 class="mb-4 lg:py-4">{{ $t("a.Kompetenznachweise") }}</h2>
<div class="mb-4 bg-white p-8">
<div class="mb-4 bg-white p-8" data-cy="certificate-total-points-text">
<div class="flex flex-col lg:flex-row lg:items-center">
<div
v-if="numAssignmentsEvaluated < assignments.length"

View File

@ -63,7 +63,7 @@ const performanceCriteriaStatusCount = computed(() => {
<div class="flex items-center">
<h3>{{ $t("a.Kompetenznachweise") }}</h3>
</div>
<div class="mt-4">
<div class="mt-4" data-cy="certificate-total-points-text">
<div v-if="userPointsEvaluatedAssignments > 0">
{{ $t("a.Zwischenstand") }} {{ $t("a.Gesamtpunktzahl") }}:
<span class="font-bold">
@ -82,6 +82,7 @@ const performanceCriteriaStatusCount = computed(() => {
v-for="certificate in competenceCertificates"
:key="certificate.id"
class="flex flex-col justify-between border-b py-4 first:border-t lg:flex-row lg:items-center"
:data-cy="`certificate-${certificate.slug}`"
>
<div class="text-bold text-xl">
{{ certificate.title }}
@ -120,6 +121,7 @@ const performanceCriteriaStatusCount = computed(() => {
<router-link
:to="`/course/${props.courseSlug}/competence/certificates`"
class="btn-text mt-4 inline-flex items-center py-2 pl-0"
data-cy="certificates-show-all-button"
>
<span>{{ $t("a.Details anzeigen") }}</span>
<it-icon-arrow-right></it-icon-arrow-right>
@ -142,7 +144,10 @@ const performanceCriteriaStatusCount = computed(() => {
<h5 class="mb-4 text-gray-700">«{{ $t("selfEvaluation.no") }}»</h5>
<div class="flex flex-row items-center">
<it-icon-smiley-thinking class="h-16 w-16"></it-icon-smiley-thinking>
<p class="ml-4 inline-block text-7xl font-bold">
<p
class="ml-4 inline-block text-7xl font-bold"
data-cy="self-evaluation-fail"
>
{{ performanceCriteriaStatusCount.FAIL }}
</p>
</div>
@ -153,7 +158,10 @@ const performanceCriteriaStatusCount = computed(() => {
<h5 class="mb-4 text-gray-700">«{{ $t("selfEvaluation.yes") }}»</h5>
<div class="flex flex-row items-center">
<it-icon-smiley-happy class="h-16 w-16"></it-icon-smiley-happy>
<p class="ml-4 inline-block text-7xl font-bold">
<p
class="ml-4 inline-block text-7xl font-bold"
data-cy="self-evaluation-success"
>
{{ performanceCriteriaStatusCount.SUCCESS }}
</p>
</div>
@ -162,7 +170,10 @@ const performanceCriteriaStatusCount = computed(() => {
<h5 class="mb-4 text-gray-700">{{ $t("competences.notAssessed") }}</h5>
<div class="flex flex-row items-center">
<it-icon-smiley-neutral class="h-16 w-16"></it-icon-smiley-neutral>
<p class="ml-4 inline-block text-7xl font-bold">
<p
class="ml-4 inline-block text-7xl font-bold"
data-cy="self-evaluation-unknown"
>
{{ performanceCriteriaStatusCount.UNKNOWN }}
</p>
</div>

View File

@ -25,6 +25,7 @@ const uniqueLearningUnits = computed(() => {
return {
luId: pc.learning_unit.id,
luTitle: pc.learning_unit.title,
luSlug: pc.learning_unit.slug,
circleId: pc.circle.id,
circleTitle: pc.circle.title,
url: pc.learning_unit.evaluate_url,
@ -73,7 +74,7 @@ const criteriaByLearningUnit = computed(() => {
<it-icon-smiley-thinking
class="mr-2 inline-block h-8 w-8"
></it-icon-smiley-thinking>
<div class="w-6">
<div class="w-6" :data-cy="`${selfEvaluation.luSlug}-fail`">
{{ selfEvaluation.countFail }}
</div>
</div>
@ -81,7 +82,7 @@ const criteriaByLearningUnit = computed(() => {
<it-icon-smiley-happy
class="mr-2 inline-block h-8 w-8"
></it-icon-smiley-happy>
<div class="w-6">
<div class="w-6" :data-cy="`${selfEvaluation.luSlug}-success`">
{{ selfEvaluation.countSuccess }}
</div>
</li>
@ -89,14 +90,18 @@ const criteriaByLearningUnit = computed(() => {
<it-icon-smiley-neutral
class="mr-2 inline-block h-8 w-8"
></it-icon-smiley-neutral>
<div class="w-6">
<div class="w-6" :data-cy="`${selfEvaluation.luSlug}-unknown`">
{{ selfEvaluation.countUnknown }}
</div>
</li>
</div>
<div>
<router-link :to="selfEvaluation.url" class="link">
<router-link
:to="selfEvaluation.url"
class="link"
:data-cy="`${selfEvaluation.luSlug}-open`"
>
{{ $t("a.Selbsteinschätzung anschauen") }}
</router-link>
</div>

View File

@ -1,43 +0,0 @@
import { login } from "./helpers";
describe("competence.cy.js", () => {
beforeEach(() => {
cy.manageCommand("cypress_reset");
login("test-student1@example.com", "test");
// test-lehrgang-lp-circle-reisen-lu-reisen ist eine Selbstevaluation
// mit mehreren Schritten
cy.visit("/course/test-lehrgang/learn/reisen");
});
it("self evaluation should be neutral", () => {
cy.get('[data-cy="test-lehrgang-lp-circle-reisen-lu-reisen"]')
.find('[data-cy="unknown"]')
.should("exist");
});
it("should be able to make a happy self evaluation", () => {
cy.get('[data-cy="test-lehrgang-lp-circle-reisen-lu-reisen"]').click();
cy.makeSelfEvaluation([true, true]);
cy.get('[data-cy="test-lehrgang-lp-circle-reisen-lu-reisen"]')
.find('[data-cy="success"]')
.should("exist");
});
it("should be able to make a fail self evaluation", () => {
cy.get('[data-cy="test-lehrgang-lp-circle-reisen-lu-reisen"]').click();
cy.makeSelfEvaluation([false, false]);
cy.get('[data-cy="test-lehrgang-lp-circle-reisen-lu-reisen"]')
.find('[data-cy="fail"]')
.should("exist");
});
it("should be able to make a mixed self evaluation", () => {
cy.get('[data-cy="test-lehrgang-lp-circle-reisen-lu-reisen"]').click();
cy.makeSelfEvaluation([false, true]);
cy.get('[data-cy="test-lehrgang-lp-circle-reisen-lu-reisen"]')
.find('[data-cy="fail"]')
.should("exist");
});
});

View File

@ -0,0 +1,144 @@
import { login } from "../helpers";
describe("competenceCertificate.cy.js", () => {
beforeEach(() => {});
it("check without points", () => {
cy.manageCommand("cypress_reset");
login("test-student1@example.com", "test");
cy.visit("/course/test-lehrgang/competence");
cy.get('[data-cy="certificate-total-points-text"]').contains(
"Der Punktestand wird zu einem späteren Zeitpunkt berechnet."
);
cy.get(
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1"]'
)
.should("contain", "0 von 0 Punkten")
.and("contain", "0 von 2 Kompetenznachweis-Elementen");
// check on certificates page
cy.get('[data-cy="certificates-show-all-button"]').click();
cy.get('[data-cy="certificate-total-points-text"]').contains(
"Der Punktestand wird zu einem späteren Zeitpunkt berechnet."
);
cy.get(
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1"]'
)
.should(
"contain",
"Der Punktestand wird zu einem späteren Zeitpunkt berechnet."
)
.and("contain", "0 von 2 Kompetenznachweis-Elementen");
// check certificate detail page
cy.get(
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1-detail-link"]'
).click();
cy.get(
'[data-cy="assignment-test-lehrgang-assignment-überprüfen-einer-motorfahrzeugs-versicherungspolice"]'
).should("contain", "Höchstpunktzahl");
cy.get(
'[data-cy="assignment-test-lehrgang-assignment-edoniq-wissens-und-verständisfragen-circle-fahrzeug-demo"]'
).should("contain", "Höchstpunktzahl");
});
it("check with finished edoniq test", () => {
cy.manageCommand(
"cypress_reset --create-assignment-completion --create-edoniq-test-results"
);
login("test-student1@example.com", "test");
cy.visit("/course/test-lehrgang/competence");
cy.get('[data-cy="certificate-total-points-text"]').contains(
"Zwischenstand Gesamtpunktzahl: 19 von 24 Punkten"
);
cy.get(
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1"]'
)
.should("contain", "19 von 24 Punkten")
.and("contain", "1 von 2 Kompetenznachweis-Elementen");
// check on certificates page
cy.get('[data-cy="certificates-show-all-button"]').click();
cy.get('[data-cy="certificate-total-points-text"]')
.should("contain", "19")
.and("contain", "Zwischenstand");
cy.get(
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1"]'
)
.should("contain", "19")
.and("contain", "Zwischenstand")
.and("contain", "1 von 2 Kompetenznachweis-Elementen");
// check certificate detail page
cy.get(
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1-detail-link"]'
).click();
cy.get(
'[data-cy="assignment-test-lehrgang-assignment-überprüfen-einer-motorfahrzeugs-versicherungspolice"]'
)
.should("contain", "Höchstpunktzahl")
.and("contain", "Ergebnisse abgegeben");
cy.get(
'[data-cy="assignment-test-lehrgang-assignment-edoniq-wissens-und-verständisfragen-circle-fahrzeug-demo"]'
)
.should("contain", "19")
.and("contain", "Bewertung freigegeben");
});
it("check with finished edoniq test and finished casework", () => {
cy.manageCommand(
"cypress_reset --create-assignment-evaluation --create-edoniq-test-results"
);
login("test-student1@example.com", "test");
cy.visit("/course/test-lehrgang/competence");
cy.get('[data-cy="certificate-total-points-text"]').contains(
"Zwischenstand Gesamtpunktzahl: 43 von 48 Punkten"
);
cy.get(
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1"]'
)
.should("contain", "43 von 48 Punkten")
.and("contain", "2 von 2 Kompetenznachweis-Elementen");
// check on certificates page
cy.get('[data-cy="certificates-show-all-button"]').click();
cy.get('[data-cy="certificate-total-points-text"]')
.should("contain", "43")
.and("not.contain", "Zwischenstand");
cy.get(
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1"]'
)
.should("contain", "43")
.and("not.contain", "Zwischenstand")
.and("contain", "2 von 2 Kompetenznachweis-Elementen");
// check certificate detail page
cy.get(
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1-detail-link"]'
).click();
cy.get(
'[data-cy="assignment-test-lehrgang-assignment-überprüfen-einer-motorfahrzeugs-versicherungspolice"]'
)
.should("contain", "24")
.and("contain", "von 24 Punkten")
.and("contain", "Bewertung freigegeben");
cy.get(
'[data-cy="assignment-test-lehrgang-assignment-edoniq-wissens-und-verständisfragen-circle-fahrzeug-demo"]'
)
.should("contain", "19")
.and("contain", "von 24 Punkten")
.and("contain", "Bewertung freigegeben");
});
});

View File

@ -0,0 +1,135 @@
import { login } from "../helpers";
describe("selfEvaluation.cy.js", () => {
beforeEach(() => {
cy.manageCommand("cypress_reset");
login("test-student1@example.com", "test");
// test-lehrgang-lp-circle-reisen-lu-reisen ist eine Selbstevaluation
// mit mehreren Schritten
cy.visit("/course/test-lehrgang/learn/reisen");
});
it("self evaluation should be neutral", () => {
cy.get('[data-cy="test-lehrgang-lp-circle-reisen-lu-reisen"]')
.find('[data-cy="unknown"]')
.should("exist");
});
it("self evaluation from KompetenzNavi", () => {
cy.get('[data-cy="test-lehrgang-lp-circle-reisen-lu-reisen"]')
.find('[data-cy="unknown"]')
.should("exist");
// data in KompetenzNavi/Übersicht is correct
cy.visit("/course/test-lehrgang/competence");
cy.get('[data-cy="self-evaluation-fail"]').should("have.text", "0");
cy.get('[data-cy="self-evaluation-success"]').should("have.text", "0");
cy.get('[data-cy="self-evaluation-unknown"]').should("have.text", "4");
// data in KompetenzNavi/Selbsteinschätzungen is correct
cy.visit("/course/test-lehrgang/competence/criteria");
cy.get('[data-cy="test-lehrgang-lp-circle-reisen-lu-reisen-fail"]').should(
"have.text",
"0"
);
cy.get(
'[data-cy="test-lehrgang-lp-circle-reisen-lu-reisen-success"]'
).should("have.text", "0");
cy.get(
'[data-cy="test-lehrgang-lp-circle-reisen-lu-reisen-unknown"]'
).should("have.text", "2");
// it can open self evaluation from within KompetenzNavi
cy.get('[data-cy="test-lehrgang-lp-circle-reisen-lu-reisen-open"]').click();
// starting the self evaluation will return to KompetenzNavi
cy.makeSelfEvaluation([true, false]);
cy.url().should("include", "/course/test-lehrgang/competence/criteria");
// check data again on KompetenzNavi
cy.get('[data-cy="test-lehrgang-lp-circle-reisen-lu-reisen-fail"]').should(
"have.text",
"1"
);
cy.get(
'[data-cy="test-lehrgang-lp-circle-reisen-lu-reisen-success"]'
).should("have.text", "1");
cy.get(
'[data-cy="test-lehrgang-lp-circle-reisen-lu-reisen-unknown"]'
).should("have.text", "0");
// data in KompetenzNavi/Übersicht is correct
cy.visit("/course/test-lehrgang/competence");
cy.get('[data-cy="self-evaluation-fail"]').should("have.text", "1");
cy.get('[data-cy="self-evaluation-success"]').should("have.text", "1");
cy.get('[data-cy="self-evaluation-unknown"]').should("have.text", "2");
});
it("should be able to make a happy self evaluation", () => {
cy.get('[data-cy="test-lehrgang-lp-circle-reisen-lu-reisen"]').click();
cy.makeSelfEvaluation([true, true]);
cy.get('[data-cy="test-lehrgang-lp-circle-reisen-lu-reisen"]')
.find('[data-cy="success"]')
.should("exist");
// starting the self evaluation from circle should return to circle
cy.url().should("include", "/course/test-lehrgang/learn/reisen");
// data in KompetenzNavi / Selbsteinschätzungen is correct
cy.visit("/course/test-lehrgang/competence/criteria");
cy.get('[data-cy="test-lehrgang-lp-circle-reisen-lu-reisen-fail"]').should(
"have.text",
"0"
);
cy.get(
'[data-cy="test-lehrgang-lp-circle-reisen-lu-reisen-success"]'
).should("have.text", "2");
cy.get(
'[data-cy="test-lehrgang-lp-circle-reisen-lu-reisen-unknown"]'
).should("have.text", "0");
});
it("should be able to make a fail self evaluation", () => {
cy.get('[data-cy="test-lehrgang-lp-circle-reisen-lu-reisen"]').click();
cy.makeSelfEvaluation([false, false]);
cy.get('[data-cy="test-lehrgang-lp-circle-reisen-lu-reisen"]')
.find('[data-cy="fail"]')
.should("exist");
// data in KompetenzNavi / Selbsteinschätzungen is correct
cy.visit("/course/test-lehrgang/competence/criteria");
cy.get('[data-cy="test-lehrgang-lp-circle-reisen-lu-reisen-fail"]').should(
"have.text",
"2"
);
cy.get(
'[data-cy="test-lehrgang-lp-circle-reisen-lu-reisen-success"]'
).should("have.text", "0");
cy.get(
'[data-cy="test-lehrgang-lp-circle-reisen-lu-reisen-unknown"]'
).should("have.text", "0");
});
it("should be able to make a mixed self evaluation", () => {
cy.get('[data-cy="test-lehrgang-lp-circle-reisen-lu-reisen"]').click();
cy.makeSelfEvaluation([false, true]);
cy.get('[data-cy="test-lehrgang-lp-circle-reisen-lu-reisen"]')
.find('[data-cy="fail"]')
.should("exist");
// data in KompetenzNavi / Selbsteinschätzungen is correct
cy.visit("/course/test-lehrgang/competence/criteria");
cy.get('[data-cy="test-lehrgang-lp-circle-reisen-lu-reisen-fail"]').should(
"have.text",
"1"
);
cy.get(
'[data-cy="test-lehrgang-lp-circle-reisen-lu-reisen-success"]'
).should("have.text", "1");
cy.get(
'[data-cy="test-lehrgang-lp-circle-reisen-lu-reisen-unknown"]'
).should("have.text", "0");
});
});