From fa31def0b59ff95d82dad2148f9b8aa2bd00c62b Mon Sep 17 00:00:00 2001 From: Christian Cueni Date: Tue, 5 Dec 2023 15:54:25 +0100 Subject: [PATCH] wip: Add user tests --- .../feedback/FeedbackBase.vue | 2 +- cypress/e2e/feedback/feedbackStudent.cy.js | 413 ++++++++++++------ 2 files changed, 276 insertions(+), 139 deletions(-) diff --git a/client/src/pages/learningPath/learningContentPage/feedback/FeedbackBase.vue b/client/src/pages/learningPath/learningContentPage/feedback/FeedbackBase.vue index f80269b0..d346edcb 100644 --- a/client/src/pages/learningPath/learningContentPage/feedback/FeedbackBase.vue +++ b/client/src/pages/learningPath/learningContentPage/feedback/FeedbackBase.vue @@ -176,7 +176,7 @@ onMounted(async () => { @next="nextStep()" >
-

+

{{ introduction }}

diff --git a/cypress/e2e/feedback/feedbackStudent.cy.js b/cypress/e2e/feedback/feedbackStudent.cy.js index 8c77ae26..7fe74a9d 100644 --- a/cypress/e2e/feedback/feedbackStudent.cy.js +++ b/cypress/e2e/feedback/feedbackStudent.cy.js @@ -8,150 +8,287 @@ describe("feedbackStudent.cy.js", () => { cy.visit("/course/test-lehrgang/learn/fahrzeug/feedback"); }); - it("can open feedback page", () => { - cy.testLearningContentTitle("Kursfeedback"); - cy.testLearningContentSubtitle("Feedback"); + describe("Feedback UK", () => { + beforeEach(() => { + cy.visit("/course/test-lehrgang/learn/fahrzeug/feedback"); + }); + + it("can open feedback page", () => { + cy.testLearningContentTitle("Kursfeedback"); + cy.testLearningContentSubtitle("Feedback"); + }); + + it("can create feedback by giving answers to all steps", () => { + // initial wait for step 0 (or none with step==0) is required for pipelines + cy.url().should((url) => { + expect(url).to.match(/\/fahrzeug\/feedback(\?step=0)?$/); + }); + + cy.wait(200); + cy.learningContentMultiLayoutNextStep(); + cy.wait(200); + + // fill feedback form + // step 1 + cy.url().should("include", "step=1"); + cy.get('[data-cy="next-step"]').should("be.disabled"); + cy.get('[data-cy="radio-4"]').click(); + cy.wait(200); + cy.learningContentMultiLayoutNextStep(); + cy.wait(200); + + // step 2 + cy.url().should("include", "step=2"); + cy.get('[data-cy="next-step"]').should("be.disabled"); + // the system should store after every step -> check stored data + cy.loadFeedbackResponse("feedback_user_id", TEST_STUDENT1_USER_ID).then( + (ac) => { + expect(ac.submitted).to.be.false; + expect(ac.data.satisfaction).to.equal(4); + expect(ac.data.instructor_competence).to.equal(null); + } + ); + cy.get('[data-cy="radio-3"]').click(); + cy.wait(200); + cy.learningContentMultiLayoutNextStep(); + cy.wait(200); + + // step 3 + cy.url().should("include", "step=3"); + cy.get('[data-cy="next-step"]').should("be.disabled"); + cy.get('[data-cy="radio-80"]').click(); + cy.wait(200); + cy.learningContentMultiLayoutNextStep(); + cy.wait(200); + + // step 4 + cy.url().should("include", "step=4"); + cy.get('[data-cy="next-step"]').should("be.disabled"); + cy.get('[data-cy="radio-false"]').click(); + cy.wait(200); + cy.learningContentMultiLayoutNextStep(); + cy.wait(200); + + // step 5 + cy.url().should("include", "step=5"); + cy.get('[data-cy="next-step"]').should("be.disabled"); + cy.get('[data-cy="radio-2"]').click(); + cy.wait(200); + cy.learningContentMultiLayoutNextStep(); + cy.wait(200); + + // step 6 + cy.url().should("include", "step=6"); + cy.get('[data-cy="next-step"]').should("be.disabled"); + cy.get('[data-cy="radio-1"]').click(); + cy.wait(200); + cy.learningContentMultiLayoutNextStep(); + cy.wait(200); + + // step 7 + cy.url().should("include", "step=7"); + cy.get('[data-cy="next-step"]').should("be.disabled"); + cy.get('[data-cy="it-textarea-instructor_open_feedback"]').type( + "Der Kursleiter ist eigentlich ganz nett." + ); + cy.wait(200); + cy.learningContentMultiLayoutNextStep(); + cy.wait(200); + + // step 8 + cy.url().should("include", "step=8"); + cy.get('[data-cy="next-step"]').should("be.disabled"); + cy.get('[data-cy="radio-true"]').click(); + cy.wait(200); + cy.learningContentMultiLayoutNextStep(); + cy.wait(200); + + // step 9 + cy.url().should("include", "step=9"); + cy.get('[data-cy="next-step"]').should("be.disabled"); + cy.get('[data-cy="it-textarea-course_positive_feedback"]').type( + "Ich bin zufrieden mit den meisten Dingen." + ); + cy.wait(200); + cy.learningContentMultiLayoutNextStep(); + cy.wait(200); + + // step 10 + cy.url().should("include", "step=10"); + cy.get('[data-cy="next-step"]').should("be.disabled"); + cy.get('[data-cy="it-textarea-course_negative_feedback"]').type( + "Ich bin unzufrieden mit einigen Sachen." + ); + cy.wait(200); + cy.learningContentMultiLayoutNextStep(); + cy.wait(200); + + cy.url().should("include", "step=11"); + cy.get('[data-cy="sendFeedbackButton"]').click(); + cy.get('[data-cy="complete-and-continue"]').click({ force: true }); + + // marked complete in circle + cy.url().should((url) => { + expect(url).to.match(/\/fahrzeug#lu-transfer?$/); + }); + cy.reload(); + cy.get( + '[data-cy="test-lehrgang-lp-circle-fahrzeug-lc-feedback-checkbox"]' + ).should("have.class", "cy-checked"); + + // reopening page should get directly to last step + cy.visit("/course/test-lehrgang/learn/fahrzeug/feedback"); + cy.url().should("include", "step=11"); + + // check stored data + cy.loadFeedbackResponse("feedback_user_id", TEST_STUDENT1_USER_ID).then( + (ac) => { + expect(ac.submitted).to.be.true; + expect(ac.data).to.deep.equal({ + course_negative_feedback: "Ich bin unzufrieden mit einigen Sachen.", + course_positive_feedback: + "Ich bin zufrieden mit den meisten Dingen.", + goal_attainment: 3, + instructor_competence: 2, + instructor_open_feedback: + "Der Kursleiter ist eigentlich ganz nett.", + instructor_respect: 1, + preparation_task_clarity: false, + proficiency: 80, + satisfaction: 4, + would_recommend: true, + }); + } + ); + }); }); - it("can create feedback by giving answers to all steps", () => { - // initial wait for step 0 (or none with step==0) is required for pipelines - cy.url().should((url) => { - expect(url).to.match(/\/fahrzeug\/feedback(\?step=0)?$/); + describe("Feedback VV", () => { + beforeEach(() => { + cy.visit("/course/test-lehrgang/learn/reisen/feedback"); }); - cy.wait(200); - cy.learningContentMultiLayoutNextStep(); - cy.wait(200); - - // fill feedback form - // step 1 - cy.url().should("include", "step=1"); - cy.get('[data-cy="next-step"]').should("be.disabled"); - cy.get('[data-cy="radio-4"]').click(); - cy.wait(200); - cy.learningContentMultiLayoutNextStep(); - cy.wait(200); - - // step 2 - cy.url().should("include", "step=2"); - cy.get('[data-cy="next-step"]').should("be.disabled"); - // the system should store after every step -> check stored data - cy.loadFeedbackResponse("feedback_user_id", TEST_STUDENT1_USER_ID).then( - (ac) => { - expect(ac.submitted).to.be.false; - expect(ac.data.satisfaction).to.equal(4); - expect(ac.data.instructor_competence).to.equal(null); - } - ); - cy.get('[data-cy="radio-3"]').click(); - cy.wait(200); - cy.learningContentMultiLayoutNextStep(); - cy.wait(200); - - // step 3 - cy.url().should("include", "step=3"); - cy.get('[data-cy="next-step"]').should("be.disabled"); - cy.get('[data-cy="radio-80"]').click(); - cy.wait(200); - cy.learningContentMultiLayoutNextStep(); - cy.wait(200); - - // step 4 - cy.url().should("include", "step=4"); - cy.get('[data-cy="next-step"]').should("be.disabled"); - cy.get('[data-cy="radio-false"]').click(); - cy.wait(200); - cy.learningContentMultiLayoutNextStep(); - cy.wait(200); - - // step 5 - cy.url().should("include", "step=5"); - cy.get('[data-cy="next-step"]').should("be.disabled"); - cy.get('[data-cy="radio-2"]').click(); - cy.wait(200); - cy.learningContentMultiLayoutNextStep(); - cy.wait(200); - - // step 6 - cy.url().should("include", "step=6"); - cy.get('[data-cy="next-step"]').should("be.disabled"); - cy.get('[data-cy="radio-1"]').click(); - cy.wait(200); - cy.learningContentMultiLayoutNextStep(); - cy.wait(200); - - // step 7 - cy.url().should("include", "step=7"); - cy.get('[data-cy="next-step"]').should("be.disabled"); - cy.get('[data-cy="it-textarea-instructor_open_feedback"]').type( - "Der Kursleiter ist eigentlich ganz nett." - ); - cy.wait(200); - cy.learningContentMultiLayoutNextStep(); - cy.wait(200); - - // step 8 - cy.url().should("include", "step=8"); - cy.get('[data-cy="next-step"]').should("be.disabled"); - cy.get('[data-cy="radio-true"]').click(); - cy.wait(200); - cy.learningContentMultiLayoutNextStep(); - cy.wait(200); - - // step 9 - cy.url().should("include", "step=9"); - cy.get('[data-cy="next-step"]').should("be.disabled"); - cy.get('[data-cy="it-textarea-course_positive_feedback"]').type( - "Ich bin zufrieden mit den meisten Dingen." - ); - cy.wait(200); - cy.learningContentMultiLayoutNextStep(); - cy.wait(200); - - // step 10 - cy.url().should("include", "step=10"); - cy.get('[data-cy="next-step"]').should("be.disabled"); - cy.get('[data-cy="it-textarea-course_negative_feedback"]').type( - "Ich bin unzufrieden mit einigen Sachen." - ); - cy.wait(200); - cy.learningContentMultiLayoutNextStep(); - cy.wait(200); - - cy.url().should("include", "step=11"); - cy.get('[data-cy="sendFeedbackButton"]').click(); - cy.get('[data-cy="complete-and-continue"]').click({ force: true }); - - // marked complete in circle - cy.url().should((url) => { - expect(url).to.match(/\/fahrzeug#lu-transfer?$/); + it("can open feedback page", () => { + cy.testLearningContentTitle("Feedback"); + cy.testLearningContentSubtitle("Feedback"); }); - cy.reload(); - cy.get( - '[data-cy="test-lehrgang-lp-circle-fahrzeug-lc-feedback-checkbox"]' - ).should("have.class", "cy-checked"); - // reopening page should get directly to last step - cy.visit("/course/test-lehrgang/learn/fahrzeug/feedback"); - cy.url().should("include", "step=11"); + it("can create feedback by giving answers to all steps", () => { + // initial wait for step 0 (or none with step==0) is required for pipelines + cy.url().should((url) => { + expect(url).to.match(/\/reisen\/feedback(\?step=0)?$/); + }); + cy.get('[data-cy="introduction"]').should( + "contain", + "Wir bitten dich um dein Feedback. Es hilft uns, damit wir deine Lernerlebnisse verbessern können." + ); - // check stored data - cy.loadFeedbackResponse("feedback_user_id", TEST_STUDENT1_USER_ID).then( - (ac) => { - expect(ac.submitted).to.be.true; - expect(ac.data).to.deep.equal({ - course_negative_feedback: "Ich bin unzufrieden mit einigen Sachen.", - course_positive_feedback: "Ich bin zufrieden mit den meisten Dingen.", - goal_attainment: 3, - instructor_competence: 2, - instructor_open_feedback: "Der Kursleiter ist eigentlich ganz nett.", - instructor_respect: 1, - preparation_task_clarity: false, - proficiency: 80, - satisfaction: 4, - would_recommend: true, - }); - } - ); + cy.wait(200); + cy.learningContentMultiLayoutNextStep(); + cy.wait(200); + + // fill feedback form + // step 1 + cy.url().should("include", "step=1"); + cy.get('[data-cy="next-step"]').should("be.disabled"); + cy.get('[data-cy="radio-4"]').click(); + cy.wait(200); + cy.learningContentMultiLayoutNextStep(); + cy.wait(200); + + // step 2 + cy.url().should("include", "step=2"); + cy.get('[data-cy="next-step"]').should("be.disabled"); + // the system should store after every step -> check stored data + cy.loadFeedbackResponse("feedback_user_id", TEST_STUDENT1_USER_ID).then( + (ac) => { + expect(ac.submitted).to.be.false; + expect(ac.data.satisfaction).to.equal(4); + expect(ac.data.instructor_competence).to.equal(null); + } + ); + cy.get('[data-cy="radio-3"]').click(); + cy.wait(200); + cy.learningContentMultiLayoutNextStep(); + cy.wait(200); + + // step 3 + cy.url().should("include", "step=3"); + cy.get('[data-cy="next-step"]').should("be.disabled"); + cy.get('[data-cy="radio-80"]').click(); + cy.wait(200); + cy.learningContentMultiLayoutNextStep(); + cy.wait(200); + + // step 4 + cy.url().should("include", "step=4"); + cy.get('[data-cy="next-step"]').should("be.disabled"); + cy.get('[data-cy="radio-false"]').click(); + cy.wait(200); + cy.learningContentMultiLayoutNextStep(); + cy.wait(200); + + // step 5 + cy.url().should("include", "step=5"); + cy.get('[data-cy="next-step"]').should("be.disabled"); + cy.get('[data-cy="radio-false"]').click(); + cy.wait(200); + cy.learningContentMultiLayoutNextStep(); + cy.wait(200); + + // step 6 + cy.url().should("include", "step=6"); + cy.get('[data-cy="next-step"]').should("be.disabled"); + cy.get('[data-cy="it-textarea-course_positive_feedback"]').type( + "Der Circle ist eigentlich ganz nett." + ); + cy.wait(200); + cy.learningContentMultiLayoutNextStep(); + cy.wait(200); + + // step 7 + cy.url().should("include", "step=7"); + cy.get('[data-cy="next-step"]').should("be.disabled"); + cy.get('[data-cy="it-textarea-course_negative_feedback"]').type( + "Ich bin unzufrieden mit einigen Sachen." + ); + cy.wait(200); + cy.learningContentMultiLayoutNextStep(); + cy.wait(200); + + cy.url().should("include", "step=8"); + cy.get('[data-cy="sendFeedbackButton"]').click(); + cy.get('[data-cy="complete-and-continue"]').click({ force: true }); + + // marked complete in circle + cy.url().should((url) => { + expect(url).to.match(/\/reisen#lu-transfer?$/); + }); + cy.reload(); + cy.get( + '[data-cy="test-lehrgang-lp-circle-reisen-lc-feedback-checkbox"]' + ).should("have.class", "cy-checked"); + + // reopening page should get directly to last step + cy.visit("/course/test-lehrgang/learn/reisen/feedback"); + cy.url().should("include", "step=8"); + + // check stored data + cy.loadFeedbackResponse("feedback_user_id", TEST_STUDENT1_USER_ID).then( + (ac) => { + expect(ac.submitted).to.be.true; + expect(ac.data).to.deep.equal({ + course_negative_feedback: "Ich bin unzufrieden mit einigen Sachen.", + course_positive_feedback: + "Ich bin zufrieden mit den meisten Dingen.", + goal_attainment: 3, + preparation_task_clarity: false, + proficiency: 80, + satisfaction: 4, + would_recommend: true, + }); + } + ); + }); }); });