From c1520a90412698df787ae592aa066b3e6dafb07e Mon Sep 17 00:00:00 2001 From: Kalle <38327916+Sendouc@users.noreply.github.com> Date: Sat, 13 Aug 2022 13:42:49 +0300 Subject: [PATCH] E2E tests to report results --- TODO.md | 47 ---------------------- app/db/seed.ts | 3 +- app/routes/calendar/$id/report-winners.tsx | 9 ++++- cypress/e2e/calendar.cy.ts | 44 ++++++++++++++++++++ 4 files changed, 54 insertions(+), 49 deletions(-) delete mode 100644 TODO.md diff --git a/TODO.md b/TODO.md deleted file mode 100644 index fe0ea2a0e..000000000 --- a/TODO.md +++ /dev/null @@ -1,47 +0,0 @@ -# Focus - -Calendar - -## Features - -- [x] Add badges to the seed -- [x] Implement badge prizes -- [x] Implement tags -- [x] Add initial tags.json -- [x] Add tags to the seed -- [x] Page to add a new event -- [x] Edit page -- [x] E2E test form controls (adding/removing date, adding/removing tags) etc. -- [x] E2E test browsing events + event page -- [x] E2E test adding and editing event -- [x] Add winners page -- [ ] E2E test add winners page -- [x] Winners on the event info page -- [x] There should be a banner on the list page if you have past tournaments to report -- [x] On the user page tab showing past results -- [x] Translations - -## Other - -- [x] can submit results with one invalid linked user -- [x] Redirect to event page after submitting results -- [x] date input take in account time zone difference between server and client -- [x] User selector allow passing users from top level -- [x] Constants use CALENDAR_EVENT object -- [x] New unfriendly crash if omits dates -- [x] badges inside tag? -- [x] Tags selector can remove -- [x] Calendar new title -- [x] Sort tags so that they are always in same order -- [x] Maybe make bracket URL mandatory? -- [x] components render twice on state change? -- [x] If week has no events show some text + don't show time zone text -- [x] flatMap -> React.fragment -- [x] Event page layout shift with time not taking space before mount (only if one day) -- [x] WeekLinks make opaque blocks not take space on mobile -- [x] Type problem with Avatar -- [x] Maybe classNames that do nothing on calendar event page? -- [x] refactor global.css/common.css -> variables.css / utils.css / common.css -- [x] addTagArray get tags type from constant -- [x] Rename model events -> calendarEvents -- [x] On the event page should not say Day 1 if only one day diff --git a/app/db/seed.ts b/app/db/seed.ts index 7277b15a6..f47afb68c 100644 --- a/app/db/seed.ts +++ b/app/db/seed.ts @@ -456,7 +456,8 @@ function calendarEventResults() { ); for (const eventId of eventIdsOfPast) { - if (Math.random() < 0.3) continue; + // event id = 1 needs to be without results for e2e tests + if (Math.random() < 0.3 || eventId === 1) continue; db.calendarEvents.upsertReportedScores({ eventId, diff --git a/app/routes/calendar/$id/report-winners.tsx b/app/routes/calendar/$id/report-winners.tsx index ffa6238ba..574f836fb 100644 --- a/app/routes/calendar/$id/report-winners.tsx +++ b/app/routes/calendar/$id/report-winners.tsx @@ -164,7 +164,7 @@ export default function ReportWinnersPage() { {t("calendar:forms.reportResultsInfo")} - @@ -233,6 +233,7 @@ function TeamInputs() { @@ -309,6 +310,7 @@ function Team({ onChange={handleTeamNameChange} required maxLength={CALENDAR_EVENT_RESULT.MAX_TEAM_NAME_LENGTH} + data-cy="team-name-input" />
@@ -321,6 +323,7 @@ function Team({ required max={CALENDAR_EVENT_RESULT.MAX_TEAM_PLACEMENT} className="w-24" + data-cy="placing-input" />
@@ -387,6 +390,7 @@ function Players({ tiny variant="minimal" onClick={() => handlePlayerInputTypeChange(i)} + data-cy="change-input-type-button" > {asPlainInput ? t("forms.team.player.addAsUser") @@ -399,6 +403,7 @@ function Players({ value={player} onChange={(e) => handleInputChange(i, e.target.value)} max={CALENDAR_EVENT_RESULT.MAX_PLAYER_NAME_LENGTH} + data-cy="plain-player-name-input" /> ) : ( {t("forms.team.player.add")} {" "} @@ -430,6 +436,7 @@ function Players({ variant="destructive" onClick={handleRemovePlayer} disabled={players.length === 1} + data-cy="remove-player-button" > {t("forms.team.player.remove")} diff --git a/cypress/e2e/calendar.cy.ts b/cypress/e2e/calendar.cy.ts index 030c41098..6cf09fa50 100644 --- a/cypress/e2e/calendar.cy.ts +++ b/cypress/e2e/calendar.cy.ts @@ -103,4 +103,48 @@ describe("New calendar event page", () => { cy.url().should("include", "/1"); // we should have been redirected to the new event's page cy.contains("Edited Event"); }); + + describe("Results", () => { + it("Adds results to tournament", () => { + cy.auth(2); + + cy.visit(calendarEventPage(1)); + cy.getCy("report-winners-button").click(); + + cy.getCy("participants-count-input").type("24"); + + cy.getCy("team-name-input").type("Team Olive"); + + for (let i = 0; i < 4; i++) { + cy.getCy("change-input-type-button").eq(i).click(); + cy.getCy("plain-player-name-input") + .eq(i) + .type(`Player ${i + 1}`); + } + + cy.getCy("add-player-button").first().click(); + cy.getCy("team-player-combobox-input").clear().type("Sendou{enter}"); + + cy.getCy("add-team-button").click(); + + cy.getCy("team-name-input").eq(1).type("NSTC"); + cy.getCy("placing-input").eq(1).clear().type("8"); + + for (let i = 0; i < 3; i++) { + cy.getCy("remove-player-button").eq(1).click(); + } + cy.getCy("change-input-type-button").eq(5).click(); + cy.getCy("plain-player-name-input").eq(4).type(`fuzzy`); + + cy.getCy("submit-button").click(); + + // checking that added results show + + cy.contains("8th"); + cy.contains("Sendou").click(); + + cy.contains("Results").click(); + cy.contains("Player 1"); + }); + }); });