From 9db7920f80ab056d5036a6878f3233362f5886f6 Mon Sep 17 00:00:00 2001 From: Yisroel Baum Date: Wed, 6 May 2026 23:25:01 +0300 Subject: [PATCH] add cypress login spec --- .../blog_portal/cypress/e2e/login_page.cy.ts | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 frontend/blog_portal/cypress/e2e/login_page.cy.ts diff --git a/frontend/blog_portal/cypress/e2e/login_page.cy.ts b/frontend/blog_portal/cypress/e2e/login_page.cy.ts new file mode 100644 index 0000000..56b7370 --- /dev/null +++ b/frontend/blog_portal/cypress/e2e/login_page.cy.ts @@ -0,0 +1,41 @@ +describe("login page", function () { + beforeEach(function () { + cy.resetDb(); + cy.clearMail(); + cy.seedConfirmedUser({ + email: "alice@example.com", + displayName: "alice", + password: "longenoughpassword", + }); + }); + + it("logs in with valid credentials and shows the user in the header", function () { + cy.visit("/login"); + cy.get('input[type="email"]').type("alice@example.com"); + cy.get('input[type="password"]').type("longenoughpassword"); + cy.contains("button", "Log in").click(); + + cy.location("pathname").should("eq", "/"); + cy.get(".app-header").contains("alice").should("be.visible"); + }); + + it("shows an error on wrong password", function () { + cy.visit("/login"); + cy.get('input[type="email"]').type("alice@example.com"); + cy.get('input[type="password"]').type("wrongpassword"); + cy.contains("button", "Log in").click(); + + cy.location("pathname").should("eq", "/login"); + cy.contains(".error", "invalid credentials").should("be.visible"); + }); + + it("redirects authenticated users away from /login", function () { + cy.loginViaApi({ + email: "alice@example.com", + password: "longenoughpassword", + }); + + cy.visit("/login"); + cy.location("pathname").should("eq", "/"); + }); +});