From 9162b9afd22fb57b0bdac23a80e477fcfc39d2cd Mon Sep 17 00:00:00 2001 From: Kalle <38327916+Sendouc@users.noreply.github.com> Date: Sun, 4 Sep 2022 22:13:36 +0300 Subject: [PATCH] Add user build tab E2E tests Closes #909 --- app/components/AbilitiesSelector.tsx | 1 + app/components/Ability.tsx | 1 + app/components/BuildCard.tsx | 4 +- app/components/layout/index.tsx | 1 + app/routes/u.$identifier/builds/index.tsx | 2 +- app/routes/u.$identifier/builds/new.tsx | 1 + cypress/e2e/builds.cy.ts | 87 +++++++++++++++++++++++ cypress/e2e/misc.cy.ts | 11 +++ 8 files changed, 106 insertions(+), 2 deletions(-) create mode 100644 cypress/e2e/builds.cy.ts diff --git a/app/components/AbilitiesSelector.tsx b/app/components/AbilitiesSelector.tsx index affd4ec32..85d4909c1 100644 --- a/app/components/AbilitiesSelector.tsx +++ b/app/components/AbilitiesSelector.tsx @@ -61,6 +61,7 @@ export function AbilitiesSelector({ className="ability-selector__ability-button" type="button" onClick={() => onButtonClick(ability)} + data-cy={`${ability.name}-ability-button`} > diff --git a/app/components/BuildCard.tsx b/app/components/BuildCard.tsx index 08a3d6dbb..56605c6cf 100644 --- a/app/components/BuildCard.tsx +++ b/app/components/BuildCard.tsx @@ -68,6 +68,7 @@ export function BuildCard({ variant="minimal" tiny to={`new?buildId=${id}&userId=${user!.id}`} + data-cy="edit-build-button" > {t("builds:buildCard.edit")} @@ -83,6 +84,7 @@ export function BuildCard({ variant="minimal-destructive" tiny type="submit" + data-cy="delete-build-button" > {t("common:actions.delete")} @@ -91,7 +93,7 @@ export function BuildCard({ ].filter(Boolean); return ( -
+

{title}

diff --git a/app/components/layout/index.tsx b/app/components/layout/index.tsx index 37ce75807..9030b980c 100644 --- a/app/components/layout/index.tsx +++ b/app/components/layout/index.tsx @@ -57,6 +57,7 @@ export const Layout = React.memo(function Layout({
))} diff --git a/cypress/e2e/builds.cy.ts b/cypress/e2e/builds.cy.ts new file mode 100644 index 000000000..c4da08fb3 --- /dev/null +++ b/cypress/e2e/builds.cy.ts @@ -0,0 +1,87 @@ +import { ADMIN_DISCORD_ID } from "~/constants"; +import { userBuildsPage } from "~/utils/urls"; + +export {}; + +describe("user builds tab", () => { + beforeEach(() => { + cy.seed(); + }); + + it("views builds of other user", () => { + cy.visit(userBuildsPage(ADMIN_DISCORD_ID)); + + cy.getCy("build-card").its("length").should("eq", 50); + + cy.getCy("new-build-button").should("not.exist"); + }); + + it("operates ability selector", () => { + cy.auth(1); + cy.visit(userBuildsPage(ADMIN_DISCORD_ID)); + cy.getCy("new-build-button").click(); + + cy.getCy("UNKNOWN-ability").its("length").should("eq", 12); + + // adding main ability only works once + for (let i = 0; i < 3; i++) { + cy.getCy("DR-ability-button").click(); + } + + cy.getCy("DR-ability").its("length").should("eq", 1); + cy.getCy("UNKNOWN-ability").its("length").should("eq", 11); + + // can delete ability + + cy.getCy("DR-ability").click(); + cy.getCy("UNKNOWN-ability").its("length").should("eq", 12); + }); + + it("adds a new build", () => { + cy.auth(1); + cy.visit(userBuildsPage(ADMIN_DISCORD_ID)); + cy.getCy("new-build-button").click(); + + cy.getCy("weapon-combobox-input").type("Luna Blaster{enter}"); + cy.getCy("HEAD-combobox-input").type("White Headband{enter}"); + cy.getCy("CLOTHES-combobox-input").type("Black Squideye{enter}"); + cy.getCy("SHOES-combobox-input").type("Blue Lo-Tops{enter}"); + + for (let i = 0; i < 12; i++) { + cy.getCy("ISM-ability-button").click(); + } + + cy.getCy("title-input").type("My awesome build"); + cy.getCy("description-textarea").type("Does not run out of ink :-)"); + cy.getCy("SZ-checkbox").click(); + + cy.getCy("submit-button").click(); + + cy.getCy("build-card").first().contains("Luna Blaster"); + }); + + it("edits build", () => { + cy.auth(1); + cy.visit(userBuildsPage(ADMIN_DISCORD_ID)); + + cy.getCy("edit-build-button").first().click(); + + const title = "My edited title"; + + cy.getCy("title-input").clear().type(title); + + cy.getCy("submit-button").click(); + + cy.getCy("build-card").first().contains(title); + }); + + it("deletes build", () => { + cy.auth(1); + cy.visit(userBuildsPage(ADMIN_DISCORD_ID)); + + cy.contains("Builds (50)"); + cy.getCy("delete-build-button").first().click(); + cy.getCy("confirm-button").first().click(); + cy.contains("Builds (49)"); + }); +}); diff --git a/cypress/e2e/misc.cy.ts b/cypress/e2e/misc.cy.ts index 8b1b30ab6..a738de7bc 100644 --- a/cypress/e2e/misc.cy.ts +++ b/cypress/e2e/misc.cy.ts @@ -6,3 +6,14 @@ describe("404 page", () => { cy.contains("404"); }); }); + +describe("theme switcher", () => { + it("should switch to light mode and remember it", () => { + cy.visit("/"); + cy.get(".dark-mode-only").should("be.visible"); // moon svg icon + cy.getCy("theme-switch-button").click(); + cy.get(".light-mode-only").should("be.visible"); // sun svg icon + cy.reload(); + cy.get(".light-mode-only").should("be.visible"); // sun svg icon again + }); +});