-
Notifications
You must be signed in to change notification settings - Fork 1
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
test: 신청폼 희망분야 페이지 e2e 테스트 작성 #166
Changes from 8 commits
6ea413b
aa4e60f
4331b41
5e75016
8a632b0
f4154af
bd49dcc
ba878f4
6cfa910
66ee0cb
f41c310
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,121 @@ | ||
describe("chapter", () => { | ||
beforeEach(() => { | ||
cy.clearAllCookies(); | ||
cy.clearLocalStorage(); | ||
cy.clearAllSessionStorage(); | ||
|
||
cy.viewport(1920, 1080); | ||
cy.visit("http://localhost:3000/application"); | ||
}); | ||
|
||
describe("초기 상태(처음 진입시, 로컬 데이터가 없는 상태)에서", () => { | ||
it("질문 제목 네비게이션 클릭시 “필수 질문을 작성해주세요.” 알람창이 뜬다. ", () => { | ||
cy.get("button").contains("기본 인적 사항을 입력해주세요.").click(); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 테스트 없이 개발할 때는 몰랐지만, 여기서 "기본 인적 사항을 입력해주세요"와 같은 string들은 constants라는 폴더에 한번에 다룬다면 나중에 2군데, 3군데 수정 없이 작동할 것 같다라는 생각이 드네요(이래서 따로 빼는거였나...?) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 맞아요 조금 반복되는 부분이 있는 것 같습니다..! |
||
|
||
cy.checkAlert("필수 질문을 작성해주세요."); | ||
}); | ||
it("다음 버튼 클릭시 “필수 질문을 작성해주세요.” alert창이 뜬다. ", () => { | ||
cy.get("button").contains("다음").should("exist").click(); | ||
|
||
cy.checkAlert("필수 질문을 작성해주세요."); | ||
}); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 오... false에 대한 내용을 작성하시는 꼼꼼함까지... ㄷㄷㄷㄷ |
||
describe("개발자(디자이너/기획)를 누르면", () => { | ||
beforeEach(() => { | ||
cy.get("label").contains("개발자").click(); | ||
}); | ||
it("질문 제목 네이게이션에서 개발자(디자이너/기획자)에 대한 질문들을 볼 수 있다.", () => { | ||
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("button").contains("기본 인적 사항을 입력해주세요.").click(); | ||
|
||
cy.checkAlert("필수 질문을 작성해주세요."); | ||
}); | ||
it("다음 버튼 클릭시 “필수 질문을 작성해주세요.” alert창이 뜬다. ", () => { | ||
cy.get("button").contains("다음").should("exist").click(); | ||
|
||
cy.checkAlert("필수 질문을 작성해주세요."); | ||
}); | ||
|
||
describe("1순위 분야를 선택하면", () => { | ||
beforeEach(() => { | ||
cy.get("label").contains("APP").click(); | ||
}); | ||
it("2순위로는 동일한 분야를 선택할 수 없다.", () => { | ||
const secondChapterAPPButton = cy.get(".bg-gray-200"); | ||
secondChapterAPPButton.click(); | ||
|
||
cy.checkLocalStorage("field2", '""'); | ||
}); | ||
describe("2순위를 선택한 후", () => { | ||
beforeEach(() => { | ||
const secondChapterAPPButton = cy.get('[for=":r1:"]'); | ||
secondChapterAPPButton.click(); | ||
}); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 흑흑... 이게 무엇을 의미하는건가요...? label을 기점으로 button에 대한 설명이 부족한가요?? 추가로 next 것을 사용할 수 있답니다.(물론 input이 무조건 label뒤에 있어야하지만, 일반적으로 그렇게 짜니깐요...?) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 하하... next의 존재를 모르고 있어서 이런 코드가 나왔던 것 같습니다.. 🥲 |
||
it("2순위와 동일한 분야를 1순위에서 선택할 수 없다.", () => { | ||
cy.checkLocalStorage("field1", '"APP"'); | ||
|
||
cy.get(":nth-child(2) > .bg-gray-200").click(); | ||
|
||
cy.checkLocalStorage("field1", '"APP"'); | ||
}); | ||
|
||
it("선택하지 않는 분야를 1순위에서 선택시 2순위 선택이 풀린다", () => { | ||
cy.get("label").contains("AI").click(); | ||
|
||
cy.checkLocalStorage("field2", '""'); | ||
}); | ||
it("다음 버튼을 누르면 다음 질문(기본 인적사항)으로 넘어간다.", () => { | ||
cy.get("button").contains("다음").should("exist").click(); | ||
|
||
cy.contains("기본 인적 사항을 입력해주세요.").should("exist"); | ||
}); | ||
}); | ||
}); | ||
}); | ||
}); | ||
}); |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,37 +1,24 @@ | ||
/// <reference types="cypress" /> | ||
// *********************************************** | ||
// 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<void> | ||
// drag(subject: string, options?: Partial<TypeOptions>): Chainable<Element> | ||
// dismiss(subject: string, options?: Partial<TypeOptions>): Chainable<Element> | ||
// visit(originalFn: CommandOriginalFn, url: string, options: Partial<VisitOptions>): Chainable<Element> | ||
// } | ||
// } | ||
// } | ||
|
||
declare namespace Cypress { | ||
interface Chainable<Subject> { | ||
checkLocalStorage(key: string, expectedValue: string): Chainable<void>; | ||
checkAlert(expectedValue: string): Chainable<void>; | ||
} | ||
} | ||
|
||
Cypress.Commands.add( | ||
"checkLocalStorage", | ||
(key: string, expectedValue: string) => { | ||
cy.window().then((win) => { | ||
const actualValue = win.localStorage.getItem(key); | ||
expect(actualValue).to.equal(expectedValue); | ||
}); | ||
} | ||
); | ||
Comment on lines
+11
to
+19
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 로컬 스토리지를 확인하는 코드 좋네요. 저도 merge후에 사용하겠습니다 ! There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 좋습니다! There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 좋은 추상화네요 👍 |
||
|
||
Cypress.Commands.add("checkAlert", (expectedValue: string) => { | ||
cy.on("window:alert", (str) => { | ||
expect(str).to.equal(expectedValue); | ||
}); | ||
Comment on lines
+11
to
+24
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 오... 먼가 flux 패턴같은 느낌.... redux같은 느낌의 코드이군요 ㅋㅋㅋ
Comment on lines
+21
to
+24
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 저는 alert 창의 내용을 콘솔창에 출력되도록만 했는데 alert 창의 내용까지 검증하는 코드 굉장히 좋은 것 같아요. |
||
}); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
먼가... 이 또한 어떤 것임을 알려주는 describe면 좋겠군요...(저는 사실 회의를 참여 하지 않아서 제 3자라고 생각하고 보십쇼)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
아 해당 부분은 수정이 필요한게 맞습니다.. 저만 올바르게 작성하지 않았네요