From 6ea413bf494c5b7184ccdc6380ae264b9fed9d1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=87=E1=85=A1=E1=86=A8=E1=84=80=E1=85=A5=E1=86=AB?= =?UTF-8?q?=E1=84=80=E1=85=B2?= Date: Wed, 21 Aug 2024 22:01:13 +0900 Subject: [PATCH 01/10] =?UTF-8?q?test:=20=EC=9C=A0=EC=A0=80=20=EC=8B=9C?= =?UTF-8?q?=EB=82=98=EB=A6=AC=EC=98=A4=EB=A5=BC=20=EB=B0=94=ED=83=95?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=BC=80?= =?UTF-8?q?=EC=9D=B4=EC=8A=A4=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #160" --- .../cypress/e2e/application.chapter.cy.ts | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 frontend/cypress/e2e/application.chapter.cy.ts diff --git a/frontend/cypress/e2e/application.chapter.cy.ts b/frontend/cypress/e2e/application.chapter.cy.ts new file mode 100644 index 00000000..876e8c3a --- /dev/null +++ b/frontend/cypress/e2e/application.chapter.cy.ts @@ -0,0 +1,27 @@ +describe("chaoter", () => { + beforeEach(() => { + cy.clearAllCookies(); + cy.clearLocalStorage(); + cy.clearAllSessionStorage(); + + cy.visit("http://localhost:3000/application"); + }); + describe("초기 상태(처음 진입시, 로컬 데이터가 없는 상태)에서", () => { + it("질문 제목 네비게이션 클릭시 “필수 질문을 작성해주세요.” 알람창이 뜬다. ", async () => {}); + it("질문 제목 네이게이션 클릭 시 “필수 질문을 작성해주세요.” alert창이 뜬다. ", () => {}); + it("다음 버튼 클릭시 “필수 질문을 작성해주세요.” alert창이 뜬다. ", () => {}); + describe("개발자(디자이너/기획)을 누르면", () => { + it("질문 제목 네이게이션에서 개발자(디자이너/기획자)에 대한 질문들을 볼 수 있다.", () => {}); + it("질문 제목 네이게이션 클릭 시 “필수 질문을 작성해주세요.” alert창이 뜬다. ", () => {}); + it("다음 버튼 클릭시 “필수 질문을 작성해주세요.” alert창이 뜬다. ", () => {}); + describe("1순위 분야를 선택하면", () => { + it("2순위로는 동일한 분야를 선택할 수 없다.", () => {}); + describe("2순위를 선택한 후", () => { + it("2순위와 동일한 분야를 1순위에서 선택할 수 없다.", () => {}); + it("선택하지 않는 분야를 1순위에서 선택시 2순위 선택이 풀린다", () => {}); + it("다음 버튼을 누르면 다음 질문(기본 인적사항)으로 넘어간다.", () => {}); + }); + }); + }); + }); +}); From aa4e60ff3fdbcfdc24e30a0deceb1b3ea6dfb5f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=87=E1=85=A1=E1=86=A8=E1=84=80=E1=85=A5=E1=86=AB?= =?UTF-8?q?=E1=84=80=E1=85=B2?= Date: Wed, 21 Aug 2024 22:09:37 +0900 Subject: [PATCH 02/10] =?UTF-8?q?test:=20=EC=B4=88=EA=B8=B0=EC=83=81?= =?UTF-8?q?=ED=83=9C=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #160 --- .../cypress/e2e/application.chapter.cy.ts | 39 ++++++++++++------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/frontend/cypress/e2e/application.chapter.cy.ts b/frontend/cypress/e2e/application.chapter.cy.ts index 876e8c3a..89feb904 100644 --- a/frontend/cypress/e2e/application.chapter.cy.ts +++ b/frontend/cypress/e2e/application.chapter.cy.ts @@ -7,21 +7,32 @@ describe("chaoter", () => { cy.visit("http://localhost:3000/application"); }); describe("초기 상태(처음 진입시, 로컬 데이터가 없는 상태)에서", () => { - it("질문 제목 네비게이션 클릭시 “필수 질문을 작성해주세요.” 알람창이 뜬다. ", async () => {}); - it("질문 제목 네이게이션 클릭 시 “필수 질문을 작성해주세요.” alert창이 뜬다. ", () => {}); - it("다음 버튼 클릭시 “필수 질문을 작성해주세요.” alert창이 뜬다. ", () => {}); - describe("개발자(디자이너/기획)을 누르면", () => { - it("질문 제목 네이게이션에서 개발자(디자이너/기획자)에 대한 질문들을 볼 수 있다.", () => {}); - it("질문 제목 네이게이션 클릭 시 “필수 질문을 작성해주세요.” alert창이 뜬다. ", () => {}); - it("다음 버튼 클릭시 “필수 질문을 작성해주세요.” alert창이 뜬다. ", () => {}); - describe("1순위 분야를 선택하면", () => { - it("2순위로는 동일한 분야를 선택할 수 없다.", () => {}); - describe("2순위를 선택한 후", () => { - it("2순위와 동일한 분야를 1순위에서 선택할 수 없다.", () => {}); - it("선택하지 않는 분야를 1순위에서 선택시 2순위 선택이 풀린다", () => {}); - it("다음 버튼을 누르면 다음 질문(기본 인적사항)으로 넘어간다.", () => {}); - }); + it("질문 제목 네비게이션 클릭시 “필수 질문을 작성해주세요.” 알람창이 뜬다. ", async () => { + cy.get(".pl-12 > :nth-child(2) > .text-base").click(); + + cy.on("window:alert", (str) => { + expect(str).to.equal("필수 질문을 작성해주세요."); + }); + }); + it("다음 버튼 클릭시 “필수 질문을 작성해주세요.” alert창이 뜬다. ", async () => { + cy.get("button").contains("다음").should("exist").click(); + + cy.on("window:alert", (str) => { + expect(str).to.equal("필수 질문을 작성해주세요."); }); }); + // describe("개발자(디자이너/기획)을 누르면", () => { + // it("질문 제목 네이게이션에서 개발자(디자이너/기획자)에 대한 질문들을 볼 수 있다.", () => {}); + // it("질문 제목 네이게이션 클릭 시 “필수 질문을 작성해주세요.” alert창이 뜬다. ", () => {}); + // it("다음 버튼 클릭시 “필수 질문을 작성해주세요.” alert창이 뜬다. ", () => {}); + // describe("1순위 분야를 선택하면", () => { + // it("2순위로는 동일한 분야를 선택할 수 없다.", () => {}); + // describe("2순위를 선택한 후", () => { + // it("2순위와 동일한 분야를 1순위에서 선택할 수 없다.", () => {}); + // it("선택하지 않는 분야를 1순위에서 선택시 2순위 선택이 풀린다", () => {}); + // it("다음 버튼을 누르면 다음 질문(기본 인적사항)으로 넘어간다.", () => {}); + // }); + // }); + // }); }); }); From 4331b4109c015e313b202b6a2b0b1f93a3757bf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=87=E1=85=A1=E1=86=A8=E1=84=80=E1=85=A5=E1=86=AB?= =?UTF-8?q?=E1=84=80=E1=85=B2?= Date: Wed, 21 Aug 2024 22:23:01 +0900 Subject: [PATCH 03/10] =?UTF-8?q?test:=20=EA=B0=9C=EB=B0=9C=EC=9E=90(?= =?UTF-8?q?=EB=94=94=EC=9E=90=EC=9D=B4=EB=84=88/=EA=B8=B0=ED=9A=8D)?= =?UTF-8?q?=EB=A5=BC=20=EB=88=84=EB=A5=B4=EB=A9=B4=20=EC=A7=88=EB=AC=B8=20?= =?UTF-8?q?=EC=A0=9C=EB=AA=A9=20=EB=84=A4=EC=9D=B4=EA=B2=8C=EC=9D=B4?= =?UTF-8?q?=EC=85=98=EC=97=90=EC=84=9C=20=EA=B0=9C=EB=B0=9C=EC=9E=90(?= =?UTF-8?q?=EB=94=94=EC=9E=90=EC=9D=B4=EB=84=88/=EA=B8=B0=ED=9A=8D?= =?UTF-8?q?=EC=9E=90)=EC=97=90=20=EB=8C=80=ED=95=9C=20=EC=A7=88=EB=AC=B8?= =?UTF-8?q?=EB=93=A4=EC=9D=84=20=EB=B3=BC=20=EC=88=98=20=EC=9E=88=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #160 --- .../cypress/e2e/application.chapter.cy.ts | 71 +++++++++++++++---- 1 file changed, 58 insertions(+), 13 deletions(-) diff --git a/frontend/cypress/e2e/application.chapter.cy.ts b/frontend/cypress/e2e/application.chapter.cy.ts index 89feb904..7c38e2ec 100644 --- a/frontend/cypress/e2e/application.chapter.cy.ts +++ b/frontend/cypress/e2e/application.chapter.cy.ts @@ -21,18 +21,63 @@ describe("chaoter", () => { expect(str).to.equal("필수 질문을 작성해주세요."); }); }); - // describe("개발자(디자이너/기획)을 누르면", () => { - // it("질문 제목 네이게이션에서 개발자(디자이너/기획자)에 대한 질문들을 볼 수 있다.", () => {}); - // it("질문 제목 네이게이션 클릭 시 “필수 질문을 작성해주세요.” alert창이 뜬다. ", () => {}); - // it("다음 버튼 클릭시 “필수 질문을 작성해주세요.” alert창이 뜬다. ", () => {}); - // describe("1순위 분야를 선택하면", () => { - // it("2순위로는 동일한 분야를 선택할 수 없다.", () => {}); - // describe("2순위를 선택한 후", () => { - // it("2순위와 동일한 분야를 1순위에서 선택할 수 없다.", () => {}); - // it("선택하지 않는 분야를 1순위에서 선택시 2순위 선택이 풀린다", () => {}); - // it("다음 버튼을 누르면 다음 질문(기본 인적사항)으로 넘어간다.", () => {}); - // }); - // }); - // }); + describe("개발자(디자이너/기획)을 누르면", () => { + beforeEach(async () => { + cy.get('[for=":R7dmlllkq:"]').click(); + }); + + it("질문 제목 네이게이션에서 개발자(디자이너/기획자)에 대한 질문들을 볼 수 있다.", async () => { + cy.get(":nth-child(5) > .text-base").should( + "have.text", + "자기소개 및 에코노베이션에 지원하게 된 계기를 서술해 주세요." + ); + cy.get(":nth-child(6) > .text-base").should( + "have.text", + "개발자를 희망하는 이유는 무엇인가요?" + ); + cy.get(":nth-child(7) > .text-base").should( + "have.text", + "소프트웨어 프로젝트에서 주도적으로 개발한 경험이 있나요?" + ); + cy.get(":nth-child(8) > .text-base").should( + "have.text", + "어떤 일에 도전하고 실패해 본 경험이 있나요?" + ); + cy.get(":nth-child(9) > .text-base").should( + "have.text", + "무언가에 깊게 빠지거나 파고 들어본 적이 있나요?" + ); + cy.get(":nth-child(10) > .text-base").should( + "have.text", + "협업(프로젝트, 팀 활동)에 있어서 가장 중요하다고 생각되는 것은 무엇인지 서술해 주세요." + ); + cy.get(":nth-child(11) > .text-base").should( + "have.text", + "에코노베이션에 들어오게 된다면 어떤 목표와 학습 계획을 바탕으로 활동하고 싶나요?" + ); + cy.get(":nth-child(12) > .text-base").should( + "have.text", + "자신을 어필할 수 있는 포트폴리오를 업로드해주세요." + ); + cy.get(":nth-child(13) > .text-base").should( + "have.text", + "개인정보 수집에 관한 안내 및 개인정보 수집" + ); + cy.get(":nth-child(14) > .text-base").should( + "have.text", + "면접 가능시간을 선택해주세요.(중복 선택 가능)" + ); + }); + // it("질문 제목 네이게이션 클릭 시 “필수 질문을 작성해주세요.” alert창이 뜬다. ", () => {}); + // it("다음 버튼 클릭시 “필수 질문을 작성해주세요.” alert창이 뜬다. ", () => {}); + // describe("1순위 분야를 선택하면", () => { + // it("2순위로는 동일한 분야를 선택할 수 없다.", () => {}); + // describe("2순위를 선택한 후", () => { + // it("2순위와 동일한 분야를 1순위에서 선택할 수 없다.", () => {}); + // it("선택하지 않는 분야를 1순위에서 선택시 2순위 선택이 풀린다", () => {}); + // it("다음 버튼을 누르면 다음 질문(기본 인적사항)으로 넘어간다.", () => {}); + // }); + // }); + }); }); }); From 5e7501609b6924c35f25682a3335d8f785485c9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=87=E1=85=A1=E1=86=A8=E1=84=80=E1=85=A5=E1=86=AB?= =?UTF-8?q?=E1=84=80=E1=85=B2?= Date: Wed, 21 Aug 2024 22:29:11 +0900 Subject: [PATCH 04/10] =?UTF-8?q?test:=20=EA=B0=9C=EB=B0=9C=EC=9E=90(?= =?UTF-8?q?=EB=94=94=EC=9E=90=EC=9D=B4=EB=84=88/=EA=B8=B0=ED=9A=8D)?= =?UTF-8?q?=EB=A5=BC=20=EB=88=8C=EB=A0=80=EC=9D=84=20=EB=95=8C=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #160 --- frontend/cypress/e2e/application.chapter.cy.ts | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/frontend/cypress/e2e/application.chapter.cy.ts b/frontend/cypress/e2e/application.chapter.cy.ts index 7c38e2ec..e47bfc16 100644 --- a/frontend/cypress/e2e/application.chapter.cy.ts +++ b/frontend/cypress/e2e/application.chapter.cy.ts @@ -21,7 +21,7 @@ describe("chaoter", () => { expect(str).to.equal("필수 질문을 작성해주세요."); }); }); - describe("개발자(디자이너/기획)을 누르면", () => { + describe("개발자(디자이너/기획)를 누르면", () => { beforeEach(async () => { cy.get('[for=":R7dmlllkq:"]').click(); }); @@ -68,8 +68,20 @@ describe("chaoter", () => { "면접 가능시간을 선택해주세요.(중복 선택 가능)" ); }); - // it("질문 제목 네이게이션 클릭 시 “필수 질문을 작성해주세요.” alert창이 뜬다. ", () => {}); - // it("다음 버튼 클릭시 “필수 질문을 작성해주세요.” alert창이 뜬다. ", () => {}); + it("질문 제목 네이게이션 클릭 시 “필수 질문을 작성해주세요.” alert창이 뜬다. ", async () => { + cy.get(".pl-12 > :nth-child(2) > .text-base").click(); + + cy.on("window:alert", (str) => { + expect(str).to.equal("필수 질문을 작성해주세요."); + }); + }); + it("다음 버튼 클릭시 “필수 질문을 작성해주세요.” alert창이 뜬다. ", () => { + cy.get("button").contains("다음").should("exist").click(); + + cy.on("window:alert", (str) => { + expect(str).to.equal("필수 질문을 작성해주세요."); + }); + }); // describe("1순위 분야를 선택하면", () => { // it("2순위로는 동일한 분야를 선택할 수 없다.", () => {}); // describe("2순위를 선택한 후", () => { From 8a632b0880e429cd6f572314e3ce469233dd1f32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=87=E1=85=A1=E1=86=A8=E1=84=80=E1=85=A5=E1=86=AB?= =?UTF-8?q?=E1=84=80=E1=85=B2?= Date: Fri, 23 Aug 2024 22:24:43 +0900 Subject: [PATCH 05/10] =?UTF-8?q?test:=201=EC=88=9C=EC=9C=84=20=EB=B6=84?= =?UTF-8?q?=EC=95=BC=EB=A5=BC=20=EC=84=A0=ED=83=9D=ED=96=88=EC=9D=84=20?= =?UTF-8?q?=EB=95=8C=202=EC=88=9C=EC=9C=84=EB=A1=9C=20=EB=8F=99=EC=9D=BC?= =?UTF-8?q?=ED=95=9C=20=EB=B6=84=EC=95=BC=EB=A5=BC=20=EC=84=A0=ED=83=9D?= =?UTF-8?q?=ED=95=A0=20=EC=88=98=20=EC=97=86=EB=8A=94=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #160 --- .../cypress/e2e/application.chapter.cy.ts | 45 ++++++++++++------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/frontend/cypress/e2e/application.chapter.cy.ts b/frontend/cypress/e2e/application.chapter.cy.ts index e47bfc16..3b47697c 100644 --- a/frontend/cypress/e2e/application.chapter.cy.ts +++ b/frontend/cypress/e2e/application.chapter.cy.ts @@ -6,15 +6,16 @@ describe("chaoter", () => { cy.visit("http://localhost:3000/application"); }); + describe("초기 상태(처음 진입시, 로컬 데이터가 없는 상태)에서", () => { - it("질문 제목 네비게이션 클릭시 “필수 질문을 작성해주세요.” 알람창이 뜬다. ", async () => { + it("질문 제목 네비게이션 클릭시 “필수 질문을 작성해주세요.” 알람창이 뜬다. ", () => { cy.get(".pl-12 > :nth-child(2) > .text-base").click(); cy.on("window:alert", (str) => { expect(str).to.equal("필수 질문을 작성해주세요."); }); }); - it("다음 버튼 클릭시 “필수 질문을 작성해주세요.” alert창이 뜬다. ", async () => { + it("다음 버튼 클릭시 “필수 질문을 작성해주세요.” alert창이 뜬다. ", () => { cy.get("button").contains("다음").should("exist").click(); cy.on("window:alert", (str) => { @@ -22,11 +23,10 @@ describe("chaoter", () => { }); }); describe("개발자(디자이너/기획)를 누르면", () => { - beforeEach(async () => { - cy.get('[for=":R7dmlllkq:"]').click(); + beforeEach(() => { + cy.get('[for=":R1rdlddda:"]').click(); }); - - it("질문 제목 네이게이션에서 개발자(디자이너/기획자)에 대한 질문들을 볼 수 있다.", async () => { + it("질문 제목 네이게이션에서 개발자(디자이너/기획자)에 대한 질문들을 볼 수 있다.", () => { cy.get(":nth-child(5) > .text-base").should( "have.text", "자기소개 및 에코노베이션에 지원하게 된 계기를 서술해 주세요." @@ -68,8 +68,10 @@ describe("chaoter", () => { "면접 가능시간을 선택해주세요.(중복 선택 가능)" ); }); - it("질문 제목 네이게이션 클릭 시 “필수 질문을 작성해주세요.” alert창이 뜬다. ", async () => { - cy.get(".pl-12 > :nth-child(2) > .text-base").click(); + it("질문 제목 네이게이션 클릭 시 “필수 질문을 작성해주세요.” alert창이 뜬다. ", () => { + cy.get(".pl-12 > :nth-child(3) > .text-base").click({ + force: true, + }); cy.on("window:alert", (str) => { expect(str).to.equal("필수 질문을 작성해주세요."); @@ -82,14 +84,25 @@ describe("chaoter", () => { expect(str).to.equal("필수 질문을 작성해주세요."); }); }); - // describe("1순위 분야를 선택하면", () => { - // it("2순위로는 동일한 분야를 선택할 수 없다.", () => {}); - // describe("2순위를 선택한 후", () => { - // it("2순위와 동일한 분야를 1순위에서 선택할 수 없다.", () => {}); - // it("선택하지 않는 분야를 1순위에서 선택시 2순위 선택이 풀린다", () => {}); - // it("다음 버튼을 누르면 다음 질문(기본 인적사항)으로 넘어간다.", () => {}); - // }); - // }); + + describe("1순위 분야를 선택하면", () => { + beforeEach(() => { + cy.get('[for=":R2tdlddda:"]').click(); + }); + it("2순위로는 동일한 분야를 선택할 수 없다.", () => { + cy.get(".bg-gray-200").click(); + + cy.window().then((win) => { + const SelectedSecondChapter = win.localStorage.getItem("field2"); + expect(SelectedSecondChapter).to.equal('""'); + }); + }); + // describe("2순위를 선택한 후", () => { + // it("2순위와 동일한 분야를 1순위에서 선택할 수 없다.", () => {}); + // it("선택하지 않는 분야를 1순위에서 선택시 2순위 선택이 풀린다", () => {}); + // it("다음 버튼을 누르면 다음 질문(기본 인적사항)으로 넘어간다.", () => {}); + // }); + }); }); }); }); From f4154af163ce876898f5ff9167e8edde2cad03a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=87=E1=85=A1=E1=86=A8=E1=84=80=E1=85=A5=E1=86=AB?= =?UTF-8?q?=E1=84=80=E1=85=B2?= Date: Fri, 23 Aug 2024 23:37:48 +0900 Subject: [PATCH 06/10] =?UTF-8?q?test:=201,=202=EC=88=9C=EC=9C=84=20?= =?UTF-8?q?=EB=B6=84=EC=95=BC=EB=A5=BC=20=EC=98=AC=EB=B0=94=EB=A5=B4?= =?UTF-8?q?=EA=B2=8C=20=EC=84=A0=ED=83=9D=ED=96=88=EC=9D=84=20=EB=95=8C=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #160 --- .../cypress/e2e/application.chapter.cy.ts | 44 ++++++++++++++++--- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/frontend/cypress/e2e/application.chapter.cy.ts b/frontend/cypress/e2e/application.chapter.cy.ts index 3b47697c..84fadec9 100644 --- a/frontend/cypress/e2e/application.chapter.cy.ts +++ b/frontend/cypress/e2e/application.chapter.cy.ts @@ -97,11 +97,45 @@ describe("chaoter", () => { expect(SelectedSecondChapter).to.equal('""'); }); }); - // describe("2순위를 선택한 후", () => { - // it("2순위와 동일한 분야를 1순위에서 선택할 수 없다.", () => {}); - // it("선택하지 않는 분야를 1순위에서 선택시 2순위 선택이 풀린다", () => {}); - // it("다음 버튼을 누르면 다음 질문(기본 인적사항)으로 넘어간다.", () => {}); - // }); + describe("2순위를 선택한 후", () => { + beforeEach(() => { + cy.get('[for=":r1:"]').click(); + }); + it("2순위와 동일한 분야를 1순위에서 선택할 수 없다.", () => { + cy.window() + .then((win) => { + const 첫번째_순위_직군을_선택하였을_때_1순위_데이터가_담긴_로컬스토리지 = + win.localStorage.getItem("field1"); + expect( + 첫번째_순위_직군을_선택하였을_때_1순위_데이터가_담긴_로컬스토리지 + ).to.equal('"APP"'); + }) + .then(() => { + cy.get(":nth-child(2) > .bg-gray-200").click(); + + cy.window().then((win) => { + const 두번째_순위_직군을_선택한_이후_1순위_데이터가_담긴_로컬스토리지 = + win.localStorage.getItem("field1"); + expect( + 두번째_순위_직군을_선택한_이후_1순위_데이터가_담긴_로컬스토리지 + ).to.equal('"APP"'); + }); + }); + }); + it("선택하지 않는 분야를 1순위에서 선택시 2순위 선택이 풀린다", () => { + cy.get('[for=":R6tdlddda:"]').click(); + + cy.window().then((win) => { + const SelectedSecondChapter = win.localStorage.getItem("field2"); + expect(SelectedSecondChapter).to.equal('""'); + }); + }); + it("다음 버튼을 누르면 다음 질문(기본 인적사항)으로 넘어간다.", () => { + cy.get("button").contains("다음").should("exist").click(); + + cy.contains("기본 인적 사항을 입력해주세요.").should("exist"); + }); + }); }); }); }); From bd49dcc41a716d0472c526f59b4648312fa47842 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=87=E1=85=A1=E1=86=A8=E1=84=80=E1=85=A5=E1=86=AB?= =?UTF-8?q?=E1=84=80=E1=85=B2?= Date: Sat, 24 Aug 2024 17:31:26 +0900 Subject: [PATCH 07/10] =?UTF-8?q?refactor:=20=EB=AA=85=EC=8B=9C=EC=A0=81?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20get=ED=95=98=EA=B8=B0=20=EC=9C=84=ED=95=9C?= =?UTF-8?q?=20comtains=20=EC=82=AC=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #160 --- .../cypress/e2e/application.chapter.cy.ts | 138 ++++++++---------- frontend/cypress/support/commands.ts | 59 +++----- 2 files changed, 86 insertions(+), 111 deletions(-) diff --git a/frontend/cypress/e2e/application.chapter.cy.ts b/frontend/cypress/e2e/application.chapter.cy.ts index 84fadec9..083125ba 100644 --- a/frontend/cypress/e2e/application.chapter.cy.ts +++ b/frontend/cypress/e2e/application.chapter.cy.ts @@ -1,15 +1,16 @@ -describe("chaoter", () => { +describe("chapter", () => { beforeEach(() => { cy.clearAllCookies(); cy.clearLocalStorage(); cy.clearAllSessionStorage(); + cy.viewport(1920, 1080); cy.visit("http://localhost:3000/application"); }); describe("초기 상태(처음 진입시, 로컬 데이터가 없는 상태)에서", () => { it("질문 제목 네비게이션 클릭시 “필수 질문을 작성해주세요.” 알람창이 뜬다. ", () => { - cy.get(".pl-12 > :nth-child(2) > .text-base").click(); + cy.get("button").contains("기본 인적 사항을 입력해주세요.").click(); cy.on("window:alert", (str) => { expect(str).to.equal("필수 질문을 작성해주세요."); @@ -24,54 +25,57 @@ describe("chaoter", () => { }); describe("개발자(디자이너/기획)를 누르면", () => { beforeEach(() => { - cy.get('[for=":R1rdlddda:"]').click(); + cy.get("label").contains("개발자").click(); }); it("질문 제목 네이게이션에서 개발자(디자이너/기획자)에 대한 질문들을 볼 수 있다.", () => { - cy.get(":nth-child(5) > .text-base").should( - "have.text", - "자기소개 및 에코노베이션에 지원하게 된 계기를 서술해 주세요." - ); - cy.get(":nth-child(6) > .text-base").should( - "have.text", - "개발자를 희망하는 이유는 무엇인가요?" - ); - cy.get(":nth-child(7) > .text-base").should( - "have.text", - "소프트웨어 프로젝트에서 주도적으로 개발한 경험이 있나요?" - ); - cy.get(":nth-child(8) > .text-base").should( - "have.text", - "어떤 일에 도전하고 실패해 본 경험이 있나요?" - ); - cy.get(":nth-child(9) > .text-base").should( - "have.text", - "무언가에 깊게 빠지거나 파고 들어본 적이 있나요?" - ); - cy.get(":nth-child(10) > .text-base").should( - "have.text", - "협업(프로젝트, 팀 활동)에 있어서 가장 중요하다고 생각되는 것은 무엇인지 서술해 주세요." - ); - cy.get(":nth-child(11) > .text-base").should( - "have.text", - "에코노베이션에 들어오게 된다면 어떤 목표와 학습 계획을 바탕으로 활동하고 싶나요?" - ); - cy.get(":nth-child(12) > .text-base").should( - "have.text", - "자신을 어필할 수 있는 포트폴리오를 업로드해주세요." - ); - cy.get(":nth-child(13) > .text-base").should( - "have.text", - "개인정보 수집에 관한 안내 및 개인정보 수집" - ); - cy.get(":nth-child(14) > .text-base").should( - "have.text", - "면접 가능시간을 선택해주세요.(중복 선택 가능)" - ); + cy.get("span") + .contains( + "자기소개 및 에코노베이션에 지원하게 된 계기를 서술해 주세요." + ) + .should("exist"); + + cy.get("span") + .contains("개발자를 희망하는 이유는 무엇인가요?") + .should("exist"); + + cy.get("span") + .contains("소프트웨어 프로젝트에서 주도적으로 개발한 경험이 있나요?") + .should("exist"); + + cy.get("span") + .contains("어떤 일에 도전하고 실패해 본 경험이 있나요?") + .should("exist"); + + cy.get("span") + .contains("무언가에 깊게 빠지거나 파고 들어본 적이 있나요?") + .should("exist"); + + cy.get("span") + .contains( + "협업(프로젝트, 팀 활동)에 있어서 가장 중요하다고 생각되는 것은 무엇인지 서술해 주세요." + ) + .should("exist"); + + cy.get("span") + .contains( + "에코노베이션에 들어오게 된다면 어떤 목표와 학습 계획을 바탕으로 활동하고 싶나요?" + ) + .should("exist"); + + cy.get("span") + .contains("자신을 어필할 수 있는 포트폴리오를 업로드해주세요.") + .should("exist"); + + cy.get("span") + .contains("개인정보 수집에 관한 안내 및 개인정보 수집") + .should("exist"); + + cy.get("span") + .contains("개인정보 수집에 관한 안내 및 개인정보 수집") + .should("exist"); }); it("질문 제목 네이게이션 클릭 시 “필수 질문을 작성해주세요.” alert창이 뜬다. ", () => { - cy.get(".pl-12 > :nth-child(3) > .text-base").click({ - force: true, - }); + cy.get("button").contains("기본 인적 사항을 입력해주세요.").click(); cy.on("window:alert", (str) => { expect(str).to.equal("필수 질문을 작성해주세요."); @@ -87,48 +91,32 @@ describe("chaoter", () => { describe("1순위 분야를 선택하면", () => { beforeEach(() => { - cy.get('[for=":R2tdlddda:"]').click(); + cy.get("label").contains("APP").click(); }); it("2순위로는 동일한 분야를 선택할 수 없다.", () => { cy.get(".bg-gray-200").click(); - cy.window().then((win) => { - const SelectedSecondChapter = win.localStorage.getItem("field2"); - expect(SelectedSecondChapter).to.equal('""'); - }); + cy.checkLocalStorage("field2", '""'); }); describe("2순위를 선택한 후", () => { beforeEach(() => { cy.get('[for=":r1:"]').click(); }); it("2순위와 동일한 분야를 1순위에서 선택할 수 없다.", () => { - cy.window() - .then((win) => { - const 첫번째_순위_직군을_선택하였을_때_1순위_데이터가_담긴_로컬스토리지 = - win.localStorage.getItem("field1"); - expect( - 첫번째_순위_직군을_선택하였을_때_1순위_데이터가_담긴_로컬스토리지 - ).to.equal('"APP"'); - }) - .then(() => { - cy.get(":nth-child(2) > .bg-gray-200").click(); - - cy.window().then((win) => { - const 두번째_순위_직군을_선택한_이후_1순위_데이터가_담긴_로컬스토리지 = - win.localStorage.getItem("field1"); - expect( - 두번째_순위_직군을_선택한_이후_1순위_데이터가_담긴_로컬스토리지 - ).to.equal('"APP"'); - }); - }); + const expectedField = '"APP"'; + const secondFieldSelector = ":nth-child(2) > .bg-gray-200"; + + cy.checkLocalStorage("field1", expectedField); + + cy.get(secondFieldSelector).click(); + + cy.checkLocalStorage("field1", expectedField); }); + it("선택하지 않는 분야를 1순위에서 선택시 2순위 선택이 풀린다", () => { - cy.get('[for=":R6tdlddda:"]').click(); + cy.get("label").contains("AI").click(); - cy.window().then((win) => { - const SelectedSecondChapter = win.localStorage.getItem("field2"); - expect(SelectedSecondChapter).to.equal('""'); - }); + cy.checkLocalStorage("field2", '""'); }); it("다음 버튼을 누르면 다음 질문(기본 인적사항)으로 넘어간다.", () => { cy.get("button").contains("다음").should("exist").click(); diff --git a/frontend/cypress/support/commands.ts b/frontend/cypress/support/commands.ts index 698b01a4..1defec0a 100644 --- a/frontend/cypress/support/commands.ts +++ b/frontend/cypress/support/commands.ts @@ -1,37 +1,24 @@ /// -// *********************************************** -// This example commands.ts shows you how to -// create various custom commands and overwrite -// existing commands. -// -// For more comprehensive examples of custom -// commands please read more here: -// https://on.cypress.io/custom-commands -// *********************************************** -// -// -// -- This is a parent command -- -// Cypress.Commands.add('login', (email, password) => { ... }) -// -// -// -- This is a child command -- -// Cypress.Commands.add('drag', { prevSubject: 'element'}, (subject, options) => { ... }) -// -// -// -- This is a dual command -- -// Cypress.Commands.add('dismiss', { prevSubject: 'optional'}, (subject, options) => { ... }) -// -// -// -- This will overwrite an existing command -- -// Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... }) -// -// declare global { -// namespace Cypress { -// interface Chainable { -// login(email: string, password: string): Chainable -// drag(subject: string, options?: Partial): Chainable -// dismiss(subject: string, options?: Partial): Chainable -// visit(originalFn: CommandOriginalFn, url: string, options: Partial): Chainable -// } -// } -// } \ No newline at end of file + +declare namespace Cypress { + interface Chainable { + checkLocalStorage(key: string, expectedValue: string): Chainable; + checkAlert(expectedValue: string): Chainable; + } +} + +Cypress.Commands.add( + "checkLocalStorage", + (key: string, expectedValue: string) => { + cy.window().then((win) => { + const actualValue = win.localStorage.getItem(key); + expect(actualValue).to.equal(expectedValue); + }); + } +); + +Cypress.Commands.add("checkAlert", (expectedValue: string) => { + cy.on("window:alert", (str) => { + expect(str).to.equal(expectedValue); + }); +}); From ba878f4fe8710d4e1aec16d45f9c759e49a8514f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=87=E1=85=A1=E1=86=A8=E1=84=80=E1=85=A5=E1=86=AB?= =?UTF-8?q?=E1=84=80=E1=85=B2?= Date: Sat, 24 Aug 2024 17:48:26 +0900 Subject: [PATCH 08/10] =?UTF-8?q?test:=20=EB=B0=98=EB=B3=B5=EB=90=98?= =?UTF-8?q?=EB=8A=94=20=EB=A1=9C=EC=A7=81=20commands=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cypress/e2e/application.chapter.cy.ts | 31 +++++++------------ 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/frontend/cypress/e2e/application.chapter.cy.ts b/frontend/cypress/e2e/application.chapter.cy.ts index 083125ba..c1405563 100644 --- a/frontend/cypress/e2e/application.chapter.cy.ts +++ b/frontend/cypress/e2e/application.chapter.cy.ts @@ -12,16 +12,12 @@ describe("chapter", () => { it("질문 제목 네비게이션 클릭시 “필수 질문을 작성해주세요.” 알람창이 뜬다. ", () => { cy.get("button").contains("기본 인적 사항을 입력해주세요.").click(); - cy.on("window:alert", (str) => { - expect(str).to.equal("필수 질문을 작성해주세요."); - }); + cy.checkAlert("필수 질문을 작성해주세요."); }); it("다음 버튼 클릭시 “필수 질문을 작성해주세요.” alert창이 뜬다. ", () => { cy.get("button").contains("다음").should("exist").click(); - cy.on("window:alert", (str) => { - expect(str).to.equal("필수 질문을 작성해주세요."); - }); + cy.checkAlert("필수 질문을 작성해주세요."); }); describe("개발자(디자이너/기획)를 누르면", () => { beforeEach(() => { @@ -77,16 +73,12 @@ describe("chapter", () => { it("질문 제목 네이게이션 클릭 시 “필수 질문을 작성해주세요.” alert창이 뜬다. ", () => { cy.get("button").contains("기본 인적 사항을 입력해주세요.").click(); - cy.on("window:alert", (str) => { - expect(str).to.equal("필수 질문을 작성해주세요."); - }); + cy.checkAlert("필수 질문을 작성해주세요."); }); it("다음 버튼 클릭시 “필수 질문을 작성해주세요.” alert창이 뜬다. ", () => { cy.get("button").contains("다음").should("exist").click(); - cy.on("window:alert", (str) => { - expect(str).to.equal("필수 질문을 작성해주세요."); - }); + cy.checkAlert("필수 질문을 작성해주세요."); }); describe("1순위 분야를 선택하면", () => { @@ -94,23 +86,22 @@ describe("chapter", () => { cy.get("label").contains("APP").click(); }); it("2순위로는 동일한 분야를 선택할 수 없다.", () => { - cy.get(".bg-gray-200").click(); + const secondChapterAPPButton = cy.get(".bg-gray-200"); + secondChapterAPPButton.click(); cy.checkLocalStorage("field2", '""'); }); describe("2순위를 선택한 후", () => { beforeEach(() => { - cy.get('[for=":r1:"]').click(); + const secondChapterAPPButton = cy.get('[for=":r1:"]'); + secondChapterAPPButton.click(); }); it("2순위와 동일한 분야를 1순위에서 선택할 수 없다.", () => { - const expectedField = '"APP"'; - const secondFieldSelector = ":nth-child(2) > .bg-gray-200"; - - cy.checkLocalStorage("field1", expectedField); + cy.checkLocalStorage("field1", '"APP"'); - cy.get(secondFieldSelector).click(); + cy.get(":nth-child(2) > .bg-gray-200").click(); - cy.checkLocalStorage("field1", expectedField); + cy.checkLocalStorage("field1", '"APP"'); }); it("선택하지 않는 분야를 1순위에서 선택시 2순위 선택이 풀린다", () => { From 6cfa910de0bc1d9bcf93b8b088b77ca1c2c951f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=87=E1=85=A1=E1=86=A8=E1=84=80=E1=85=A5=E1=86=AB?= =?UTF-8?q?=E1=84=80=E1=85=B2?= Date: Sun, 25 Aug 2024 12:51:04 +0900 Subject: [PATCH 09/10] =?UTF-8?q?test:=20alias=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #160 --- .../cypress/e2e/application.chapter.cy.ts | 68 ++++++++++++------- 1 file changed, 45 insertions(+), 23 deletions(-) diff --git a/frontend/cypress/e2e/application.chapter.cy.ts b/frontend/cypress/e2e/application.chapter.cy.ts index c1405563..948bc7ea 100644 --- a/frontend/cypress/e2e/application.chapter.cy.ts +++ b/frontend/cypress/e2e/application.chapter.cy.ts @@ -6,111 +6,133 @@ describe("chapter", () => { cy.viewport(1920, 1080); cy.visit("http://localhost:3000/application"); + + cy.get("label").contains("개발자").parent().as("occupation"); + cy.contains("1순위").parent().as("firstChapter"); + cy.get("nav").as("questionTitleNavbar"); + cy.get("button").contains("다음").as("nextButton"); + cy.get("button").contains("이전").as("prevButton"); }); describe("초기 상태(처음 진입시, 로컬 데이터가 없는 상태)에서", () => { it("질문 제목 네비게이션 클릭시 “필수 질문을 작성해주세요.” 알람창이 뜬다. ", () => { - cy.get("button").contains("기본 인적 사항을 입력해주세요.").click(); + cy.get("@questionTitleNavbar") + .find("button") + .contains("기본 인적 사항을 입력해주세요.") + .click(); cy.checkAlert("필수 질문을 작성해주세요."); }); it("다음 버튼 클릭시 “필수 질문을 작성해주세요.” alert창이 뜬다. ", () => { - cy.get("button").contains("다음").should("exist").click(); + cy.get("@nextButton").should("exist").click(); cy.checkAlert("필수 질문을 작성해주세요."); }); describe("개발자(디자이너/기획)를 누르면", () => { beforeEach(() => { - cy.get("label").contains("개발자").click(); + cy.get("@occupation").find("label").contains("개발자").click(); }); it("질문 제목 네이게이션에서 개발자(디자이너/기획자)에 대한 질문들을 볼 수 있다.", () => { - cy.get("span") + cy.get("@questionTitleNavbar") + .find("button") .contains( "자기소개 및 에코노베이션에 지원하게 된 계기를 서술해 주세요." ) .should("exist"); - cy.get("span") + cy.get("@questionTitleNavbar") + .find("button") .contains("개발자를 희망하는 이유는 무엇인가요?") .should("exist"); - cy.get("span") + cy.get("@questionTitleNavbar") + .find("button") .contains("소프트웨어 프로젝트에서 주도적으로 개발한 경험이 있나요?") .should("exist"); - cy.get("span") + cy.get("@questionTitleNavbar") + .find("button") .contains("어떤 일에 도전하고 실패해 본 경험이 있나요?") .should("exist"); - cy.get("span") + cy.get("@questionTitleNavbar") + .find("button") .contains("무언가에 깊게 빠지거나 파고 들어본 적이 있나요?") .should("exist"); - cy.get("span") + cy.get("@questionTitleNavbar") + .find("button") .contains( "협업(프로젝트, 팀 활동)에 있어서 가장 중요하다고 생각되는 것은 무엇인지 서술해 주세요." ) .should("exist"); - cy.get("span") + cy.get("@questionTitleNavbar") + .find("button") .contains( "에코노베이션에 들어오게 된다면 어떤 목표와 학습 계획을 바탕으로 활동하고 싶나요?" ) .should("exist"); - cy.get("span") + cy.get("@questionTitleNavbar") + .find("button") .contains("자신을 어필할 수 있는 포트폴리오를 업로드해주세요.") .should("exist"); - cy.get("span") + cy.get("@questionTitleNavbar") + .find("button") .contains("개인정보 수집에 관한 안내 및 개인정보 수집") .should("exist"); - cy.get("span") + cy.get("@questionTitleNavbar") + .find("button") .contains("개인정보 수집에 관한 안내 및 개인정보 수집") .should("exist"); }); it("질문 제목 네이게이션 클릭 시 “필수 질문을 작성해주세요.” alert창이 뜬다. ", () => { - cy.get("button").contains("기본 인적 사항을 입력해주세요.").click(); + cy.get("@questionTitleNavbar") + .find("button") + .contains("기본 인적 사항을 입력해주세요.") + .click(); cy.checkAlert("필수 질문을 작성해주세요."); }); it("다음 버튼 클릭시 “필수 질문을 작성해주세요.” alert창이 뜬다. ", () => { - cy.get("button").contains("다음").should("exist").click(); + cy.get("@nextButton").should("exist").click(); cy.checkAlert("필수 질문을 작성해주세요."); }); describe("1순위 분야를 선택하면", () => { beforeEach(() => { - cy.get("label").contains("APP").click(); + cy.get("@firstChapter").find("label").contains("APP").click(); + + cy.contains("선택없음").parent().as("secondChapter"); }); it("2순위로는 동일한 분야를 선택할 수 없다.", () => { - const secondChapterAPPButton = cy.get(".bg-gray-200"); - secondChapterAPPButton.click(); + cy.get("@secondChapter").find("label").contains("APP"); cy.checkLocalStorage("field2", '""'); }); describe("2순위를 선택한 후", () => { beforeEach(() => { - const secondChapterAPPButton = cy.get('[for=":r1:"]'); - secondChapterAPPButton.click(); + cy.get("@secondChapter").find("label").contains("WEB").click(); }); it("2순위와 동일한 분야를 1순위에서 선택할 수 없다.", () => { cy.checkLocalStorage("field1", '"APP"'); - cy.get(":nth-child(2) > .bg-gray-200").click(); + cy.get("@secondChapter").find("label").contains("APP").click(); cy.checkLocalStorage("field1", '"APP"'); }); it("선택하지 않는 분야를 1순위에서 선택시 2순위 선택이 풀린다", () => { - cy.get("label").contains("AI").click(); + cy.get("@firstChapter").find("label").contains("AI").click(); cy.checkLocalStorage("field2", '""'); }); it("다음 버튼을 누르면 다음 질문(기본 인적사항)으로 넘어간다.", () => { - cy.get("button").contains("다음").should("exist").click(); + cy.get("@nextButton").should("exist").click(); cy.contains("기본 인적 사항을 입력해주세요.").should("exist"); }); From 66ee0cb8e6938bddd9aa6159d711d2a00eecec9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=87=E1=85=A1=E1=86=A8=E1=84=80=E1=85=A5=E1=86=AB?= =?UTF-8?q?=E1=84=80=E1=85=B2?= Date: Sun, 25 Aug 2024 22:44:14 +0900 Subject: [PATCH 10/10] =?UTF-8?q?test:=20describe=20=EC=84=A4=EB=AA=85=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 조금 더 명확한 설명으로 변경 #160 --- frontend/cypress/e2e/application.chapter.cy.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/cypress/e2e/application.chapter.cy.ts b/frontend/cypress/e2e/application.chapter.cy.ts index 948bc7ea..bb066ca5 100644 --- a/frontend/cypress/e2e/application.chapter.cy.ts +++ b/frontend/cypress/e2e/application.chapter.cy.ts @@ -1,4 +1,4 @@ -describe("chapter", () => { +describe("첫 번째 인적사항 입력 검증 테스트:", () => { beforeEach(() => { cy.clearAllCookies(); cy.clearLocalStorage();