Skip to content
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

E2E : 로그인, 회원가입, 비밀번호 찾기 E2E 테스트 #77

Merged
merged 7 commits into from
Sep 12, 2024
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,5 @@ dist-ssr
# Local Netlify folder
.netlify

# Rollup Bundle Analyzer
.stats
7 changes: 7 additions & 0 deletions cypress.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,12 @@ export default defineConfig({
// implement node event listeners here
},
baseUrl: "http://localhost:5173",
env: {
PEOPLE_ID: "[email protected]",
PEOPLE_PW: "qwer1234!",

CLIENT_ID: "[email protected]",
CLIENT_PW: "qwer1234!",
},
},
});
8 changes: 8 additions & 0 deletions cypress/e2e/auth/findpw.cy.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
describe("사용자는 비밀번호 찾기를 할 수 있다", () => {
it("로그인 페이지에서 '비밀번호 찾기' 링크를 통해 비밀번호 찾기 페이지로 이동할 수 있다", () => {
cy.visit("/auth/signin");
cy.get("button").contains("비밀번호 찾기").click();

cy.url().should("include", "/auth/findpw");
});
});
27 changes: 24 additions & 3 deletions cypress/e2e/auth/signin.cy.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,34 @@
describe("사용자는 로그인을 할 수 있다", () => {
it("사용자는 아이디와 비밀번호를 입력하면 로그인을 할 수 있다", () => {
beforeEach(() => {
cy.visit("/");
cy.contains("로그인").click();

cy.url().should("include", "/auth/signin");
});

it("피플 사용자는 아이디와 비밀번호를 입력하면 로그인을 할 수 있다", () => {
cy.get("#id").type(Cypress.env("PEOPLE_ID") as string);
cy.get("#pw").type(Cypress.env("PEOPLE_PW") as string);

cy.get("button").contains("로그인").click();
});

cy.get("#id").type("[email protected]");
cy.get("#pw").type("qwer1234!");
it("의뢰자 사용자는 아이디와 비밀번호를 입력하면 로그인을 할 수 있다", () => {
cy.get("#id").type(Cypress.env("CLIENT_ID") as string);
cy.get("#pw").type(Cypress.env("CLIENT_PW") as string);

cy.get("button").contains("로그인").click();
});

it("아이디와 비밀번호가 올바르지 않을시 에러 토스트를 출력한다", () => {
cy.get("#id").type("not_registered");
cy.get("#pw").type("not_registered");

cy.get("button").contains("로그인").click();

cy.on("uncaught:exception", (err) => {
expect(err.message).to.include("아이디 혹은 비밀번호가 일치하지 않습니다");
return false;
});
});
});
60 changes: 60 additions & 0 deletions cypress/e2e/auth/signup.cy.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
describe("사용자는 회원가입을 할 수 있다", () => {
beforeEach(() => {
cy.visit("/auth/signup");
});

describe("사용자는 회원타입 버튼을 클릭해 회원 타입을 고를 수 있다", () => {
it("의뢰자 회원 타입을 선택할 수 있다", () => {
cy.get("button").contains("의뢰자 회원").click();
cy.get("button").contains("완료하기").click();
});

it("피플 회원 타입을 선택할 수 있다", () => {
cy.get("button").contains("피플 회원").click();
cy.get("button").contains("완료하기").click();
});

it("회원 타입을 선택하지 않으면 '회원 타입을 선택해주세요' 토스트를 출력한다", () => {
cy.get("button").contains("완료하기").click();
cy.get(".Toastify__toast-body")
.children("div:nth-child(2)")
.should("have.text", "회원 타입을 선택해주세요!");
});
});

describe("사용자는 이메일을 통해 인증번호를 받을 수 있다", () => {
it("이미 가입한 사용자에게는 '이미 인증된 이메일이거나 가입된 이메일입니다' 토스트를 출력한다", () => {
cy.get("button").contains("피플 회원").click();
cy.get("button").contains("완료하기").click();

cy.get("#id").type(Cypress.env("PEOPLE_ID") as string);
cy.get("button").contains("인증").click();

cy.get(".Toastify__toast-body")
.children("div:nth-child(2)")
.should("have.text", "이미 인증된 이메일이거나 가입된 이메일입니다");

cy.on("uncaught:exception", (err) => {
expect(err.message).to.include("이미 인증된 이메일이거나 가입된 이메일입니다");
return false;
});
});
});

describe("사용자는 회원가입시 비밀번호가 일치해야한다", () => {
it("비밀번호가 서로 다르면 '비밀번호가 일치하지 않습니다!' 토스트를 출력한다", () => {
cy.get("button").contains("의뢰자 회원").click();
cy.get("button").contains("완료하기").click();

cy.get("#id").type("[email protected]");
cy.get("#pw").type("qwer1234!");
cy.get("#pw-verify").type("qwer1234@");

cy.get("button").contains("다음으로").click();

cy.get(".Toastify__toast-body")
.children("div:nth-child(2)")
.should("have.text", "비밀번호가 일치하지 않습니다!");
});
});
});
Loading