From 2f448844f17ecbf20e175b5af5da05e08357ed07 Mon Sep 17 00:00:00 2001 From: Ben Luck Date: Tue, 10 Mar 2026 16:47:06 +0100 Subject: [PATCH 1/7] pre-refactor --- cypress.config.ts | 14 +- cypress/README.md | 12 +- cypress/e2e/auth-flow.cy.ts | 230 +++++++++++++++--- cypress/e2e/ui-tests.cy.ts | 2 +- cypress/pages/AuthWorkflows.ts | 98 ++++++++ cypress/pages/LoginPage.ts | 122 ++++++++++ cypress/pages/{notes_page.ts => NotesPage.ts} | 86 ------- cypress/pages/SignUpPage.ts | 99 ++++++++ cypress/pages/faq_page | 0 cypress/pages/login_page | 0 cypress/pages/sign_up_page | 0 cypress/support/testAuth.ts | 68 ++---- 12 files changed, 552 insertions(+), 179 deletions(-) create mode 100644 cypress/pages/AuthWorkflows.ts create mode 100644 cypress/pages/LoginPage.ts rename cypress/pages/{notes_page.ts => NotesPage.ts} (71%) create mode 100644 cypress/pages/SignUpPage.ts delete mode 100644 cypress/pages/faq_page delete mode 100644 cypress/pages/login_page delete mode 100644 cypress/pages/sign_up_page diff --git a/cypress.config.ts b/cypress.config.ts index 9c03501..9f47d63 100644 --- a/cypress.config.ts +++ b/cypress.config.ts @@ -1,7 +1,17 @@ import { defineConfig } from "cypress"; +import dotenv from "dotenv"; + +// Load environment variables from .env.local +dotenv.config({ path: ".env.local" }); export default defineConfig({ e2e: { + // Reduce verbose output in test runner + defaultCommandTimeout: 10000, + requestTimeout: 10000, + responseTimeout: 10000, + pageLoadTimeout: 30000, + setupNodeEvents(on, config) { // implement node event listeners here on("task", { @@ -35,8 +45,8 @@ export default defineConfig({ baseUrl: "http://localhost:3000", env: { // Test user credentials from environment - testUserEmail: process.env.CYPRESS_TEST_USER_EMAIL, - testUserPassword: process.env.CYPRESS_TEST_USER_PASSWORD, + TEST_USER_EMAIL: process.env.CYPRESS_TEST_USER_EMAIL, + TEST_USER_PASSWORD: process.env.CYPRESS_TEST_USER_PASSWORD, }, }, }); diff --git a/cypress/README.md b/cypress/README.md index 8d969d7..ff35033 100644 --- a/cypress/README.md +++ b/cypress/README.md @@ -46,13 +46,13 @@ npm run cypress -- --spec "cypress/e2e/auth-flow.cy.ts" *Target: Week 1* #### 1.1 Authentication & Authorization Flow -- [ ] **Complete login flow** - - [ ] Valid credentials login - - [ ] Invalid credentials error handling - - [ ] Password validation - - [ ] Email format validation +- [x] **Complete login flow** + - [x] Valid credentials login + - [x] Invalid credentials error handling + - [x] Password validation + - [x] Email format validation - [ ] **Complete sign-up flow** - - [ ] Form display and validation + - [x] Form display and validation - [ ] Successful account creation - [ ] Duplicate email handling - [ ] Email confirmation workflow diff --git a/cypress/e2e/auth-flow.cy.ts b/cypress/e2e/auth-flow.cy.ts index efdcd53..854f4e3 100644 --- a/cypress/e2e/auth-flow.cy.ts +++ b/cypress/e2e/auth-flow.cy.ts @@ -3,74 +3,224 @@ * * Tests the actual authentication implementation with real Supabase integration. * No mocking - this validates the complete auth flow. + * + * 🎯 **Roadmap 1.1: Authentication & Authorization Flow** + * βœ… Complete login flow + * βœ… Valid credentials login + * βœ… Invalid credentials error handling + * βœ… Password validation + * βœ… Email format validation */ import { getTestUser, clearAuthState, - createTestUser, - loginTestUser, - logoutTestUser, } from "../support/testAuth"; +import { AuthWorkflows } from "../pages/AuthWorkflows"; +import { LoginPage } from "../pages/LoginPage"; +import { SignUpPage } from "../pages/SignUpPage"; + +describe("πŸ” Authentication Flow Validation", () => { + const authWorkflows = new AuthWorkflows(); + const loginPage = new LoginPage(); -describe.skip("Real Authentication Flow", () => { beforeEach(() => { // Start each test with clean auth state clearAuthState(); }); - it("should create new user and login successfully", () => { - // Test the complete flow: create user β†’ login β†’ verify authenticated state + describe("πŸ“ Valid Credentials Login", () => { + it.only("should create new user and login successfully", () => { + // Test the complete flow: create user β†’ login β†’ verify authenticated state - // Step 1: Create test user via sign-up - createTestUser().then((user) => { - cy.log(`βœ… Created test user: ${user.email}`); + // Step 1: Create test user via sign-up + authWorkflows.createTestUser().then((user) => { + cy.log(`βœ… Created test user: ${user.email}`); - // Step 2: Should be redirected and authenticated after sign-up - cy.get('[data-testid="logout-button"]').should("be.visible"); - cy.log("βœ… User is authenticated after sign-up"); + // Step 2: Should be redirected and authenticated after sign-up + cy.get('[data-testid="logout-button"]', { timeout: 10000, log: false }).should("be.visible"); + cy.url().should("not.include", "/sign-up"); + cy.log("βœ… User is authenticated after sign-up"); + }); }); - }); - it("should login existing user successfully", () => { - // Ensure user exists first - createTestUser(); + it("should login existing user with valid credentials", () => { + // Ensure user exists first + authWorkflows.createKnownTestUser(); - // Clear auth state and test login flow - clearAuthState(); + // Clear auth state and test login flow + clearAuthState(); - // Test login with existing credentials - loginTestUser().then((user) => { - cy.log(`βœ… Logged in test user: ${user.email}`); + // Test login with existing credentials + authWorkflows.loginTestUser().then((user) => { + cy.log(`βœ… Logged in test user: ${user.email}`); + + // Verify authenticated state and proper redirect + cy.get('[data-testid="logout-button"]', { log: false }).should("be.visible"); + cy.url().should("not.include", "/login"); + + // Verify success toast appears + cy.get('[data-testid="sonner-toast"]').should('be.visible'); + }); + }); - // Verify authenticated state - cy.get('[data-testid="logout-button"]').should("be.visible"); + it("should maintain session persistence across page reloads", () => { + // Create and login user + authWorkflows.createTestUser(); + + // Verify session persists after reload + cy.reload(); + cy.get('[data-testid="logout-button"]', { log: false }).should("be.visible"); cy.url().should("not.include", "/login"); + cy.log("βœ… Session persisted across page reload"); }); }); - it("should reject invalid credentials", () => { - const user = getTestUser(); + describe("❌ Invalid Credentials Error Handling", () => { + it("should reject completely invalid email/password combination", () => { + loginPage + .visit() + .fillEmail("nonexistent@example.com") + .fillPassword("wrongpassword123") + .submitForm() + .shouldBeOnLoginPage() + .shouldShowErrorToast(); + + cy.log("βœ… Correctly rejected invalid credentials"); + }); + + it("should reject valid email with wrong password", () => { + const user = getTestUser(); + + // First ensure user exists + authWorkflows.createKnownTestUser(); + clearAuthState(); - cy.visit("/login"); - cy.get("#email").type(user.email); - cy.get("#password").type("wrong-password-123"); - cy.get('[data-testid="login-button"]').click(); + loginPage + .visit() + .fillEmail(user.email) + .fillPassword("definitively-wrong-password-123!") + .submitForm() + .shouldBeOnLoginPage(); - // Should stay on login page - cy.url().should("include", "/login"); - cy.log("βœ… Correctly rejected invalid credentials"); + cy.log("βœ… Correctly rejected wrong password for existing user"); + }); + + it("should show loading state during authentication attempt", () => { + loginPage + .visit() + .fillEmail("test@example.com") + .fillPassword("testpassword") + .submitForm() + .shouldShowLoadingState(); + + cy.log("βœ… Loading state displayed during auth attempt"); + }); }); - it("should logout successfully", () => { - // First ensure user is logged in - createTestUser(); + describe("πŸ“§ Email Format Validation", () => { + it("should require valid email format in login form", () => { + // Test various invalid email formats + const invalidEmails = [ + "notanemail", + "@example.com", + "test@", + "test.example.com", + "test@.com", + "", + ]; + + invalidEmails.forEach((invalidEmail) => { + loginPage + .visit() + .fillEmail(invalidEmail) + .fillPassword("validpassword123") + .submitForm() + .shouldHaveInvalidEmail() + .shouldBeOnLoginPage(); + + cy.log(`βœ… Rejected invalid email: ${invalidEmail}`); + }); + }); + + it("should accept valid email formats", () => { + const validEmails = [ + "test@example.com", + "user.name@domain.co.uk", + "firstname+lastname@company.org", + "a@b.co", + ]; - // Test logout - logoutTestUser(); + validEmails.forEach((validEmail) => { + loginPage + .visit() + .fillEmail(validEmail) + .fillPassword("validpassword123") + .shouldHaveValidEmail(); - // Verify unauthenticated state - cy.get('[data-testid="logout-button"]').should("not.exist"); - cy.log("βœ… Successfully logged out"); + cy.log(`βœ… Accepted valid email: ${validEmail}`); + }); + }); + }); + + describe("πŸ”’ Password Validation", () => { + it("should require password field to be filled", () => { + loginPage + .visit() + .fillEmail("test@example.com") + // Leave password empty + .submitForm() + .shouldHaveInvalidPassword() + .shouldBeOnLoginPage(); + + cy.log("βœ… Required password field validation working"); + }); + + it("should accept any non-empty password for login attempts", () => { + const passwords = [ + "a", // Very short + "simple", // No special chars + "Complex123!", // Complex + " spaces ", // With spaces + ]; + + passwords.forEach((password) => { + loginPage + .visit() + .fillEmail("test@example.com") + .fillPassword(password) + .shouldHaveValidPassword(); + + cy.log(`βœ… Accepted password for submission: ${password.length} chars`); + }); + }); + }); + + describe("πŸšͺ Logout Flow Validation", () => { + it("should logout successfully and clear session", () => { + // First ensure user is logged in + authWorkflows.createTestUser(); + + // Test logout + authWorkflows.logoutTestUser(); + + // Verify unauthenticated state + cy.get('[data-testid="logout-button"]', { log: false }).should("not.exist"); + + // Try to visit protected page - should redirect to login + cy.visit("/notes", { failOnStatusCode: false }); + cy.url().should("include", "/login"); + cy.log("βœ… Successfully logged out and cleared session"); + }); + + it("should redirect to login when accessing protected routes while unauthenticated", () => { + // Ensure clean state + clearAuthState(); + + // Try to access protected route + cy.visit("/notes", { failOnStatusCode: false }); + cy.url().should("include", "/login"); + cy.log("βœ… Properly redirected unauthenticated user to login"); + }); }); }); diff --git a/cypress/e2e/ui-tests.cy.ts b/cypress/e2e/ui-tests.cy.ts index ab41040..b6da8ac 100644 --- a/cypress/e2e/ui-tests.cy.ts +++ b/cypress/e2e/ui-tests.cy.ts @@ -1,4 +1,4 @@ -import { NotesPage } from "../pages/notes_page"; +import { NotesPage } from "../pages/NotesPage"; /** * Comprehensive Deez Notes Application Testing Suite diff --git a/cypress/pages/AuthWorkflows.ts b/cypress/pages/AuthWorkflows.ts new file mode 100644 index 0000000..5b2b7c1 --- /dev/null +++ b/cypress/pages/AuthWorkflows.ts @@ -0,0 +1,98 @@ +/** + * Authentication Workflows + * + * High-level authentication flows that combine page objects + * and test data management for common test scenarios. + */ + +import { LoginPage } from "./LoginPage"; +import { SignUpPage } from "./SignUpPage"; +import { NotesPage } from "./NotesPage"; +import { getTestUser, getRandomTestUser, TestUser } from "../support/testAuth"; + +export class AuthWorkflows { + private loginPage = new LoginPage(); + private signUpPage = new SignUpPage(); + private notesPage = new NotesPage(); + + /** + * Create test user via sign-up form (real Supabase integration) + * Uses a random email to ensure unique user creation for each test + */ + createTestUser(): Cypress.Chainable { + const user = getRandomTestUser(); + + this.signUpPage + .visit() + .signUpWithCredentials(user) + .shouldRedirectFromSignUp(); + + return cy.wrap(user); + } + + /** + * Create a known test user that can be used for subsequent login tests + */ + createKnownTestUser(): Cypress.Chainable { + const user = getTestUser(); + + this.signUpPage + .visit() + .signUpWithCredentials(user); + + // Check if sign-up succeeded or user already exists + cy.url({ timeout: 5000 }).then((url) => { + if (url.includes('/sign-up')) { + // User already exists, that's fine for a known user + cy.log('Known test user already exists'); + } + }); + + return cy.wrap(user); + } + + /** + * Login with test user credentials (real authentication flow) + */ + loginTestUser(): Cypress.Chainable { + const user = getTestUser(); + + this.loginPage + .visit() + .loginWithCredentials(user) + .shouldRedirectFromLogin(); + + return cy.wrap(user); + } + + /** + * Logout using the logout button (real logout flow) + */ + logoutTestUser(): void { + this.notesPage.logout(); + } + + /** + * Combined flow: create user and verify authenticated state + */ + createAndVerifyUser(): Cypress.Chainable { + return this.createTestUser().then((user) => { + // Verify authenticated state + cy.get('[data-testid="logout-button"]').should("be.visible"); + cy.url().should("not.include", "/sign-up"); + return cy.wrap(user); + }); + } + + /** + * Combined flow: login existing user and verify state + */ + loginAndVerifyUser(): Cypress.Chainable { + return this.loginTestUser().then((user) => { + // Verify authenticated state and success toast + cy.get('[data-testid="logout-button"]').should("be.visible"); + cy.get('[data-testid="sonner-toast"]').should("be.visible"); + return cy.wrap(user); + }); + } +} \ No newline at end of file diff --git a/cypress/pages/LoginPage.ts b/cypress/pages/LoginPage.ts new file mode 100644 index 0000000..7f55312 --- /dev/null +++ b/cypress/pages/LoginPage.ts @@ -0,0 +1,122 @@ +/** + * Login Page Object + * + * Handles all UI interactions for the login page. + * Follows POM principles with chainable methods. + */ + +import { TestUser } from "../support/testAuth"; + +export class LoginPage { + // ===== NAVIGATION METHODS ===== + + visit() { + cy.visit("/login"); + this.waitForPageLoad(); + return this; + } + + // ===== ELEMENT GETTERS ===== + + getEmailInput() { + return cy.get("#email"); + } + + getPasswordInput() { + return cy.get("#password"); + } + + getLoginButton() { + return cy.get('[data-testid="login-button"]'); + } + + getToastError() { + // Use a more specific selector for error toasts + return cy.get('[data-sonner-toast]', { timeout: 5000 }).contains('Error'); + } + + // ===== ACTION METHODS ===== + + fillEmail(email: string) { + this.getEmailInput().clear().type(email); + return this; + } + + fillPassword(password: string) { + this.getPasswordInput().clear().type(password); + return this; + } + + fillForm(email: string, password: string) { + this.fillEmail(email).fillPassword(password); + return this; + } + + submitForm() { + this.getLoginButton().should('not.be.disabled').click(); + return this; + } + + submitAndWaitForResponse() { + this.submitForm(); + // Wait for either redirect or error state + cy.wait(1000); // Brief wait for form submission + return this; + } + + loginWithCredentials(user: TestUser) { + return this.fillForm(user.email, user.password).submitAndWaitForResponse(); + } + + // ===== VALIDATION METHODS ===== + + shouldBeOnLoginPage() { + cy.url().should("include", "/login"); + return this; + } + + shouldRedirectFromLogin() { + cy.url({ timeout: 10000 }).should("not.include", "/login"); + return this; + } + + shouldShowErrorToast() { + this.getToastError().should("be.visible"); + return this; + } + + shouldShowLoadingState() { + this.getLoginButton().find(".animate-spin").should("exist"); + return this; + } + + shouldHaveValidEmail() { + this.getEmailInput().should("match", ":valid"); + return this; + } + + shouldHaveInvalidEmail() { + this.getEmailInput().should("match", ":invalid"); + return this; + } + + shouldHaveValidPassword() { + this.getPasswordInput().should("match", ":valid"); + return this; + } + + shouldHaveInvalidPassword() { + this.getPasswordInput().should("match", ":invalid"); + return this; + } + + // ===== WAIT METHODS ===== + + private waitForPageLoad() { + this.getEmailInput().should("be.visible"); + this.getPasswordInput().should("be.visible"); + this.getLoginButton().should("be.visible"); + + return this; + } +} \ No newline at end of file diff --git a/cypress/pages/notes_page.ts b/cypress/pages/NotesPage.ts similarity index 71% rename from cypress/pages/notes_page.ts rename to cypress/pages/NotesPage.ts index 7b7613b..1fec0b4 100644 --- a/cypress/pages/notes_page.ts +++ b/cypress/pages/NotesPage.ts @@ -17,62 +17,15 @@ export class NotesPage { return this; } - visitLoginPage() { - cy.visit("/login"); - this.waitForLoginPageLoad(); - return this; - } - - visitSignUpPage() { - cy.visit("/sign-up"); - this.waitForSignUpPageLoad(); - return this; - } - // ===== AUTHENTICATION ACTIONS ===== // High-level methods that encapsulate complex user workflows - loginWithCredentials(email: string, password: string) { - this.visitLoginPage().fillLoginForm(email, password).submitLoginForm(); - return this; - } - - signUpWithCredentials(email: string, password: string) { - this.visitSignUpPage().fillSignUpForm(email, password).submitSignUpForm(); - return this; - } - logout() { this.getLogoutButton().click(); this.waitForLogoutCompletion(); return this; } - // ===== FORM INTERACTION METHODS ===== - // These encapsulate form interactions with proper error handling - - fillLoginForm(email: string, password: string) { - this.getEmailInput().clear().type(email); - this.getPasswordInput().clear().type(password); - return this; - } - - fillSignUpForm(email: string, password: string) { - this.getEmailInput().clear().type(email); - this.getPasswordInput().clear().type(password); - return this; - } - - submitLoginForm() { - this.getLoginButton().click(); - return this; - } - - submitSignUpForm() { - this.getSignUpButton().click(); - return this; - } - // ===== NOTE MANAGEMENT ACTIONS ===== // These represent user goals, not just button clicks @@ -152,27 +105,6 @@ export class NotesPage { return cy.get('[data-testid="logout-button"]'); } - // Form Elements - getEmailInput() { - return cy.get("#email"); - } - - getPasswordInput() { - return cy.get("#password"); - } - - getLoginButton() { - return cy.get('form [data-testid="login-button"]'); - } - - getSignUpButton() { - return cy.get('form [data-testid="sign-up-button"]'); - } - - getAuthFormLink() { - return cy.get('[data-testid="auth-form-link"]'); - } - // Main Content Elements getAskAiButton() { return cy.get('[data-testid="ask-ai-button"]'); @@ -248,24 +180,6 @@ export class NotesPage { this.getSidebarTrigger().should("be.visible"); } - waitForLoginPageLoad() { - // Wait for page to load and form elements to be interactive - cy.url().should("include", "/login"); - cy.get('[data-testid="auth-form"]').should("be.visible"); - this.getEmailInput().should("be.visible"); - this.getPasswordInput().should("be.visible"); - cy.get('form [data-testid="login-button"]').should("be.visible"); - } - - waitForSignUpPageLoad() { - // Wait for page to load and form elements to be interactive - cy.url().should("include", "/sign-up"); - cy.get('[data-testid="sign-up-form"]').should("be.visible"); - this.getEmailInput().should("be.visible"); - this.getPasswordInput().should("be.visible"); - cy.get('form [data-testid="sign-up-button"]').should("be.visible"); - } - waitForNoteCreation() { // Note creation involves redirect and state update cy.url().should("include", "noteId="); diff --git a/cypress/pages/SignUpPage.ts b/cypress/pages/SignUpPage.ts new file mode 100644 index 0000000..e377612 --- /dev/null +++ b/cypress/pages/SignUpPage.ts @@ -0,0 +1,99 @@ +/** + * Sign Up Page Object + * + * Handles all UI interactions for the sign-up page. + * Follows POM principles with chainable methods. + */ + +import { TestUser } from "../support/testAuth"; + +export class SignUpPage { + // ===== NAVIGATION METHODS ===== + + visit() { + cy.visit("/sign-up"); + this.waitForPageLoad(); + return this; + } + + // ===== ELEMENT GETTERS ===== + + getEmailInput() { + return cy.get("#email"); + } + + getPasswordInput() { + return cy.get("#password"); + } + + getSignUpButton() { + return cy.get('[data-testid="sign-up-button"]'); + } + + getToastError() { + return cy.get('[data-testid="sonner-toast"] + [role="group"]'); + } + + // ===== ACTION METHODS ===== + + fillEmail(email: string) { + this.getEmailInput().clear().type(email); + return this; + } + + fillPassword(password: string) { + this.getPasswordInput().clear().type(password); + return this; + } + + fillForm(email: string, password: string) { + this.fillEmail(email).fillPassword(password); + return this; + } + + submitForm() { + this.getSignUpButton().click(); + return this; + } + + signUpWithCredentials(user: TestUser) { + return this.fillForm(user.email, user.password).submitForm(); + } + + // ===== VALIDATION METHODS ===== + + shouldBeOnSignUpPage() { + cy.url().should("include", "/sign-up"); + return this; + } + + shouldRedirectFromSignUp() { + cy.url({ timeout: 10000 }).should("not.include", "/sign-up"); + return this; + } + + shouldShowErrorToast() { + this.getToastError().should("be.visible"); + return this; + } + + shouldHaveError() { + // Check if we're still on sign-up page (indicating an error) + cy.url().should("include", "/sign-up"); + return this; + } + + shouldShowLoadingState() { + this.getSignUpButton().find(".animate-spin").should("exist"); + return this; + } + + // ===== WAIT METHODS ===== + + private waitForPageLoad() { + this.getEmailInput().should("be.visible"); + this.getPasswordInput().should("be.visible"); + this.getSignUpButton().should("be.visible"); + return this; + } +} \ No newline at end of file diff --git a/cypress/pages/faq_page b/cypress/pages/faq_page deleted file mode 100644 index e69de29..0000000 diff --git a/cypress/pages/login_page b/cypress/pages/login_page deleted file mode 100644 index e69de29..0000000 diff --git a/cypress/pages/sign_up_page b/cypress/pages/sign_up_page deleted file mode 100644 index e69de29..0000000 diff --git a/cypress/support/testAuth.ts b/cypress/support/testAuth.ts index b164620..f5798e9 100644 --- a/cypress/support/testAuth.ts +++ b/cypress/support/testAuth.ts @@ -1,8 +1,8 @@ /** - * Simple Test User Management + * Test User Data Management * - * Provides clean utilities for real authentication testing. - * No mocking - tests actual auth flow with real Supabase integration. + * Handles test user credentials and authentication state management. + * Does NOT contain UI interactions - use page objects for those. */ export interface TestUser { @@ -27,54 +27,34 @@ export function getTestUser(): TestUser { } /** - * Clear authentication state between tests + * Create a random user email for tests that require unique users, + * using the base email from environment, with a to-the-second timestamp inserted + * before the '@' symbol. */ -export function clearAuthState(): void { - cy.clearCookies(); - cy.clearLocalStorage(); - cy.clearAllSessionStorage(); +export function createRandomUserEmail(): string { + const baseEmail = getTestUser().email; + + const [localPart, domain] = baseEmail.split("@"); + const timestamp = Date.now(); + return `${localPart}+${timestamp}@${domain}`; } /** - * Create test user via sign-up form (real Supabase integration) + * Generate a random test user with a unique email for each test run, using the base email from environment. + * The password is the same for all test users, as defined in environment. */ -export function createTestUser(): Cypress.Chainable { - const user = getTestUser(); - - cy.visit("/sign-up"); - cy.get("#email").type(user.email); - cy.get("#password").type(user.password); - cy.get('[data-testid="sign-up-button"]').click(); - - // With email verification disabled, should redirect on success - cy.url({ timeout: 10000 }).should("not.include", "/sign-up"); - - return cy.wrap(user); +export function getRandomTestUser(): TestUser { + return { + email: createRandomUserEmail(), + password: getTestUser().password, // Use the same password for all test users + }; } /** - * Login with test user credentials (real authentication flow) - */ -export function loginTestUser(): Cypress.Chainable { - const user = getTestUser(); - - cy.visit("/login"); - cy.get("#email").type(user.email); - cy.get("#password").type(user.password); - cy.get('[data-testid="login-button"]').click(); - - // Should redirect away from login on success - cy.url({ timeout: 10000 }).should("not.include", "/login"); - - return cy.wrap(user); -} - -/** - * Logout using the logout button (real logout flow) + * Clear authentication state between tests */ -export function logoutTestUser(): void { - cy.get('[data-testid="logout-button"]').click(); - - // Should redirect to unauthenticated state - cy.url().should("not.include", "/notes"); +export function clearAuthState(): void { + cy.clearCookies(); + cy.clearLocalStorage(); + cy.clearAllSessionStorage(); } From 4a06d165986dd4bf14108b00a935cebe3000f4cd Mon Sep 17 00:00:00 2001 From: Ben Luck Date: Tue, 10 Mar 2026 22:58:06 +0100 Subject: [PATCH 2/7] expand cypress tests to complete the signup/login flow --- cypress.config.ts | 6 - cypress/README.md | 421 ++++-------------- cypress/e2e/auth-flow.cy.ts | 246 ++-------- ...access to protected features (failed).png" | Bin 0 -> 101513 bytes cypress/support/workflows.ts | 100 +++++ src/components/Header.tsx | 2 +- 6 files changed, 231 insertions(+), 544 deletions(-) create mode 100644 "cypress/screenshots/auth-flow.cy.ts/\360\237\224\220 Authentication User Journeys -- when logging out -- should logout and prevent access to protected features (failed).png" create mode 100644 cypress/support/workflows.ts diff --git a/cypress.config.ts b/cypress.config.ts index 9f47d63..2809a9f 100644 --- a/cypress.config.ts +++ b/cypress.config.ts @@ -6,12 +6,6 @@ dotenv.config({ path: ".env.local" }); export default defineConfig({ e2e: { - // Reduce verbose output in test runner - defaultCommandTimeout: 10000, - requestTimeout: 10000, - responseTimeout: 10000, - pageLoadTimeout: 30000, - setupNodeEvents(on, config) { // implement node event listeners here on("task", { diff --git a/cypress/README.md b/cypress/README.md index ff35033..f31d8a4 100644 --- a/cypress/README.md +++ b/cypress/README.md @@ -1,378 +1,123 @@ -# Cypress Testing Roadmap +# Cypress E2E Testing Strategy -## 🎯 **Enterprise-Grade E2E Test Suite Development Plan** +## 🎯 **User Journey Focused Testing** -This document outlines the comprehensive testing strategy for achieving enterprise-grade end-to-end test coverage for Deez Notes. +This document outlines our e2e testing strategy focused on **user journeys**, not component details. Cypress tests validate complete user workflows, while component testing is handled separately by Playwright. -## πŸ“Š **Current Progress Summary** +## 🧭 **Testing Philosophy** -### βœ… **Completed Tests** -- **UI Tests**: `ui-tests.cy.ts` - **10/10 passing** - - Unauthenticated user experience - - Form validation (email/password) - - Navigation flows - - Access control for protected features - - Sign-up/login form switching +**E2E Tests (Cypress) focus on:** +- Complete user workflows from start to finish +- Cross-system integrations (auth, database, middleware) +- Critical business flows that users actually experience +- Security and access control at the application level -### πŸ”§ **In Progress** -- **Auth Tests**: `auth-flow.cy.ts` - **0/4 passing** (needs debugging) - - Real authentication flow testing - - User creation and login validation +**Component Tests (Playwright) handle:** +- Form validation behavior +- UI component interactions +- Loading states and animations +- Edge cases in individual components -### πŸ“ˆ **Phase 1 Progress: 6/15 items completed (40%)** +## πŸ“Š **Current Status** + +### βœ… **Completed User Journeys** +- **Authentication Flows**: `auth-flow.cy.ts` - **5/5 passing** + - New user signup β†’ notes access + - Existing user login β†’ notes access + - Session persistence across reloads + - Security: invalid credentials rejection + - Logout β†’ protected route blocking + +### πŸ”§ **In Development** +- **Note Management Journeys**: Planning phase +- **AI Integration Journeys**: Planning phase ## πŸš€ **Quick Start** ### **Running Tests** ```bash -# Run working UI tests (10/10 passing) -npm run cypress -- --spec "cypress/e2e/ui-tests.cy.ts" - -# Run all tests +# Run all e2e tests npm run cypress -# Run specific auth tests (in development) +# Run specific test suite npm run cypress -- --spec "cypress/e2e/auth-flow.cy.ts" -``` - -**Note:** Tests are designed to be self-contained and handle their own data setup/teardown. No manual setup required. - - ---- - -## πŸ—οΈ **Implementation Roadmap** - -### **Phase 1: Critical Path** ⭐ **(Priority: CRITICAL)** -*Target: Week 1* - -#### 1.1 Authentication & Authorization Flow -- [x] **Complete login flow** - - [x] Valid credentials login - - [x] Invalid credentials error handling - - [x] Password validation - - [x] Email format validation -- [ ] **Complete sign-up flow** - - [x] Form display and validation - - [ ] Successful account creation - - [ ] Duplicate email handling - - [ ] Email confirmation workflow -- [ ] **Authentication persistence** - - [ ] Session maintenance across page reloads - - [ ] Auto-redirect after login/logout - - [ ] Middleware redirect to newest note validation -- [ ] **Protected route access** - - [ ] Unauthenticated access attempts - - [ ] Proper redirects to login page -#### 1.2 Core Note Management -- [ ] **Note creation workflow** - - [ ] "New Note" button for authenticated users - - [ ] Auto-redirect to new note - - [ ] Toast notification validation - - [ ] Unauthenticated user redirect to login -- [ ] **Note editing and auto-save** - - [ ] Text input and immediate UI update - - [ ] Debounced auto-save functionality (2-second delay) - - [ ] Auto-save success validation - - [ ] Large content handling -- [ ] **Note persistence** - - [ ] Content retention after page refresh - - [ ] URL parameter handling (noteId) - - [ ] State management consistency - -#### 1.3 Basic Error Handling -- [ ] **Network failure scenarios** - - [ ] API endpoint failures - - [ ] Timeout handling - - [ ] User feedback for errors -- [ ] **Invalid data handling** - - [ ] Invalid note ID responses - - [ ] Malformed requests +# Open interactive test runner +npm run cypress:open +``` --- -### **Phase 2: User Experience** 🎨 **(Priority: HIGH)** -*Target: Week 2* - -#### 2.1 AI Integration Testing -- [ ] **Authentication gate** - - [ ] AI button redirect to login when unauthenticated - - [ ] Proper dialog opening for authenticated users -- [ ] **AI dialog functionality** - - [ ] Dialog opening and closing - - [ ] Question submission via button and Enter key - - [ ] Response rendering with HTML formatting - - [ ] Conversation history maintenance -- [ ] **AI response validation** - - [ ] HTML content rendering via dangerouslySetInnerHTML - - [ ] CSS styling application (.bot-response classes) - - [ ] Loading states ("Thinking..." indicator) -- [ ] **Edge cases** - - [ ] Empty notes scenario - - [ ] AI API failures - - [ ] Malformed responses - -#### 2.2 Sidebar Functionality -- [ ] **Note list management** - - [ ] Notes ordered by updatedAt (newest first) - - [ ] Note selection and highlighting - - [ ] Active note visual indication - - [ ] Note text truncation (100 character limit) -- [ ] **Search functionality** - - [ ] Search box expand/collapse animation - - [ ] Fuzzy search with Fuse.js integration - - [ ] Search results filtering - - [ ] Search term clearing -- [ ] **Note metadata display** - - [ ] Date and time formatting - - [ ] "EMPTY NOTE" placeholder for blank notes - - [ ] Hover effects and transitions - -#### 2.3 Note Deletion Workflow -- [ ] **Delete confirmation dialog** - - [ ] Trash icon visibility on hover - - [ ] Confirmation modal opening - - [ ] Cancel and delete actions -- [ ] **Deletion execution** - - [ ] Note removal from sidebar - - [ ] Toast notification ("aaaand, it's gone.") - - [ ] Auto-redirect if deleting current note - - [ ] Database persistence validation +## πŸ—ΊοΈ **User Journey Roadmap** ---- - -### **Phase 3: Quality & Performance** πŸš€ **(Priority: MEDIUM)** -*Target: Week 3* +### **Phase 1: Core User Flows** ⭐ **(Priority: CRITICAL)** -#### 3.1 Advanced UI/UX Workflows -- [ ] **Theme management** - - [ ] Dark mode toggle functionality - - [ ] Theme persistence across sessions - - [ ] Proper CSS variable updates -- [ ] **Interactive elements** - - [ ] Textarea auto-resize behavior - - [ ] Keyboard shortcuts (Enter, Escape, etc.) - - [ ] Focus management in modals - - [ ] Loading states for all async operations -- [ ] **Notification system** - - [ ] Toast notifications for all user actions - - [ ] Success and error message validation - - [ ] Toast timing and dismissal +#### 1.1 βœ… Authentication Journeys (Complete) +- New user can create account and access notes +- Existing user can log in and access existing notes +- Users stay logged in across browser sessions +- Invalid credentials are properly rejected +- Users can log out and lose access to protected areas -#### 3.2 Cross-Browser & Responsive Testing -- [ ] **Viewport testing** - - [ ] Mobile viewport (320px - 768px) - - [ ] Tablet viewport (768px - 1024px) - - [ ] Desktop viewport (1024px+) -- [ ] **Responsive behavior** - - [ ] Sidebar behavior on different screen sizes - - [ ] Header responsive layout changes - - [ ] Text input scaling and usability - - [ ] Touch interactions on mobile devices +#### 1.2 Note Management Journeys (Next) +- **Note Creation Journey**: User can create new notes and access them immediately +- **Note Editing Journey**: User can modify notes with auto-save working +- **Note Navigation Journey**: User can switch between multiple notes via sidebar +- **Note Persistence Journey**: Notes survive page reloads and browser restarts -#### 3.3 Accessibility Validation -- [ ] **Keyboard navigation** - - [ ] Tab order throughout the application - - [ ] Focus indicators visibility - - [ ] Keyboard-only operation capability -- [ ] **Screen reader compatibility** - - [ ] ARIA labels and semantic HTML - - [ ] Alternative text for images - - [ ] Proper heading hierarchy -- [ ] **Visual accessibility** - - [ ] Color contrast validation - - [ ] Text scaling compatibility - - [ ] Motion reduction preferences +#### 1.3 AI Integration Journeys +- **Authenticated AI Journey**: Logged-in users can ask questions about their notes +- **Unauthenticated AI Journey**: Anonymous users are prompted to log in +- **AI Response Journey**: AI provides relevant responses and displays properly --- -### **Phase 4: Edge Cases & Optimization** πŸ”§ **(Priority: MEDIUM)** -*Target: Week 4* - -#### 4.1 Advanced Error Scenarios -- [ ] **Server error handling** - - [ ] 500 Internal Server Error responses - - [ ] 404 Not Found handling - - [ ] 403 Unauthorized access - - [ ] Database connection issues -- [ ] **Client-side errors** - - [ ] JavaScript errors and recovery - - [ ] Memory leak prevention - - [ ] Invalid state handling -- [ ] **Security validation** - - [ ] XSS prevention in AI responses - - [ ] Input sanitization - - [ ] CSRF protection validation +### **Phase 2: Advanced User Scenarios** -#### 4.2 Data Integrity & Sync -- [ ] **Multi-tab behavior** - - [ ] Concurrent editing scenarios - - [ ] State synchronization across tabs - - [ ] Conflict resolution strategies -- [ ] **Data consistency** - - [ ] Note ordering accuracy - - [ ] Search index consistency - - [ ] State management (NoteProvider) reliability -- [ ] **URL handling** - - [ ] Deep linking to specific notes - - [ ] Invalid noteId parameter handling - - [ ] Browser back/forward navigation +#### 2.1 Error Recovery Journeys +- **Network Failure Journey**: User can recover from connection issues +- **Auth Expiry Journey**: User is prompted to re-login when session expires +- **Data Loss Prevention**: Unsaved changes are preserved during network issues -#### 4.3 Performance Validation -- [ ] **Load testing** - - [ ] Page load times and Core Web Vitals - - [ ] Auto-save performance with large notes - - [ ] Search performance with many notes -- [ ] **Memory usage** - - [ ] Memory leak detection - - [ ] Component cleanup validation - - [ ] Event listener management +#### 2.2 Performance & Scale Journeys +- **Many Notes Journey**: User can handle 100+ notes without performance issues +- **Large Note Journey**: User can edit very long notes smoothly +- **Concurrent User Journey**: Multiple users can work simultaneously --- -## πŸ› οΈ **Technical Implementation Guidelines** +## πŸ› οΈ **Technical Architecture** -### **Enhanced Page Object Architecture** +### **Workflow-Based Test Structure** ```typescript -// cypress/pages/enhanced_notes_page.ts -class EnhancedNotesPage { - // Authentication methods - loginWithValidCredentials(email: string, password: string) - loginWithInvalidCredentials(email: string, password: string) - signUp(email: string, password: string) - logout() - - // Note management - createNewNote() - selectNote(noteId: string) - editNoteContent(content: string) - deleteNote(noteId: string) - - // AI interactions - openAIDialog() - askAIQuestion(question: string) - validateAIResponse(expectedContent: string) - - // Sidebar operations - searchNotes(searchTerm: string) - expandSearch() - collapseSearch() - - // Validation methods - validateNoteInSidebar(noteText: string) - validateToastMessage(message: string) - validateLoadingState() -} +// Focus on user goals, not implementation details +describe("Note Creation Journey", () => { + it("should create and access new note", () => { + authWorkflows.authenticateUser(); + noteWorkflows.createNote("My first note"); + appState.shouldShowNote("My first note"); + }); +}); ``` -### **Custom Cypress Commands** -```typescript -// cypress/support/commands.ts -declare global { - namespace Cypress { - interface Chainable { - loginAsTestUser(): Chainable - createTestNote(content?: string): Chainable - waitForAutoSave(): Chainable - validateToast(message: string): Chainable - clearTestData(): Chainable - mockAIResponse(response: string): Chainable - } - } -} -``` +### **Helper Organization** +- `workflows.ts` - High-level user journey helpers +- `testAuth.ts` - User credential management +- `appState.ts` - Application state assertions -### **Test Data Management** -```typescript -// cypress/fixtures/test-data.ts -export const TEST_USERS = { - validUser: { email: 'test@example.com', password: 'validPassword123' }, - invalidUser: { email: 'invalid@example.com', password: 'wrongpassword' } -} - -export const TEST_NOTES = { - shortNote: 'This is a short test note.', - longNote: 'This is a very long test note...'.repeat(100), - emptyNote: '', - htmlNote: 'Safe content' -} -``` - -### **Environment Setup** -```typescript -// cypress.config.ts additions -export default defineConfig({ - e2e: { - env: { - TEST_USER_EMAIL: 'cypress-test@example.com', - TEST_USER_PASSWORD: 'CypressTest123!', - API_BASE_URL: 'http://localhost:3000/api' - }, - setupNodeEvents(on, config) { - // Database seeding and cleanup tasks - on('task', { - seedTestData: () => { /* implementation */ }, - clearTestData: () => { /* implementation */ }, - createTestUser: (userData) => { /* implementation */ } - }) - } - } -}) -``` - ---- - -## πŸ“‹ **Test Execution Strategy** - -### **Daily Development Workflow** -1. Run critical path tests before each commit -2. Full suite execution on feature branch completion -3. Performance baseline validation weekly - -### **CI/CD Integration** -- Phase 1 tests: Required for PR approval -- Phase 2 tests: Required for staging deployment -- Phase 3-4 tests: Required for production deployment - -### **Test Data Management** -- Isolated test database per test run -- Automated test user creation and cleanup -- Deterministic test data generation - ---- - -## 🎯 **Success Metrics** - -### **Coverage Goals** -- [ ] **90%+ User Journey Coverage**: All critical user workflows tested -- [ ] **100% Authentication Flow Coverage**: Every auth scenario validated -- [ ] **95% UI Component Coverage**: All interactive elements tested -- [ ] **100% API Endpoint Coverage**: All endpoints have E2E validation - -### **Quality Standards** -- [ ] **Zero Flaky Tests**: All tests must be deterministic and reliable -- [ ] **< 10 minute Suite Runtime**: Full test suite execution under 10 minutes -- [ ] **Parallel Execution Ready**: Tests can run concurrently without conflicts -- [ ] **Cross-Browser Validated**: Tests pass on Chrome, Firefox, and Safari +### **Key Principles** +1. **Goal-oriented** - Tests describe what users want to accomplish +2. **Implementation agnostic** - Tests survive UI changes +3. **Maintainable** - Minimal duplication, clear abstractions +4. **Fast feedback** - Tests fail clearly when user journeys break --- -## πŸ“ **Contributing Guidelines** - -### **Test Development Standards** -1. **Test Naming**: Use descriptive names that explain the user scenario -2. **Test Organization**: Group related tests in logical describe blocks -3. **Assertions**: Use meaningful assertion messages -4. **Test Isolation**: Each test should be independent and self-contained -5. **Documentation**: Include comments explaining complex test logic +## πŸ“ˆ **Success Metrics** -### **Review Checklist** -- [ ] Test covers a realistic user scenario -- [ ] Test is deterministic (no race conditions) -- [ ] Test includes proper cleanup -- [ ] Test follows established patterns -- [ ] Test includes meaningful assertions - ---- +- **Coverage**: All critical user paths tested end-to-end +- **Reliability**: Tests pass consistently (target: 95%+ success rate) +- **Maintainability**: UI changes require minimal test updates +- **Clarity**: New team members can understand test intent immediately -*This roadmap serves as a living document that should be updated as tests are implemented and new requirements emerge. The goal is to create a comprehensive, maintainable, and reliable test suite that validates the sophisticated architecture and user experience of Deez Notes.* \ No newline at end of file +**Current Progress: 5/15 core user journeys completed (33%)** \ No newline at end of file diff --git a/cypress/e2e/auth-flow.cy.ts b/cypress/e2e/auth-flow.cy.ts index 854f4e3..9b35217 100644 --- a/cypress/e2e/auth-flow.cy.ts +++ b/cypress/e2e/auth-flow.cy.ts @@ -1,226 +1,74 @@ /** - * Real Authentication Testing + * Authentication User Journey Tests * - * Tests the actual authentication implementation with real Supabase integration. - * No mocking - this validates the complete auth flow. - * - * 🎯 **Roadmap 1.1: Authentication & Authorization Flow** - * βœ… Complete login flow - * βœ… Valid credentials login - * βœ… Invalid credentials error handling - * βœ… Password validation - * βœ… Email format validation + * Focuses on end-to-end user workflows, not component details. + * Tests core user goals: signup, login, session management, security. */ -import { - getTestUser, - clearAuthState, -} from "../support/testAuth"; -import { AuthWorkflows } from "../pages/AuthWorkflows"; -import { LoginPage } from "../pages/LoginPage"; -import { SignUpPage } from "../pages/SignUpPage"; - -describe("πŸ” Authentication Flow Validation", () => { - const authWorkflows = new AuthWorkflows(); - const loginPage = new LoginPage(); +import { authWorkflows, appState } from "../support/workflows"; +describe("πŸ” Authentication User Journeys", () => { beforeEach(() => { - // Start each test with clean auth state - clearAuthState(); + authWorkflows.clearSession(); }); - describe("πŸ“ Valid Credentials Login", () => { - it.only("should create new user and login successfully", () => { - // Test the complete flow: create user β†’ login β†’ verify authenticated state - - // Step 1: Create test user via sign-up - authWorkflows.createTestUser().then((user) => { - cy.log(`βœ… Created test user: ${user.email}`); - - // Step 2: Should be redirected and authenticated after sign-up - cy.get('[data-testid="logout-button"]', { timeout: 10000, log: false }).should("be.visible"); - cy.url().should("not.include", "/sign-up"); - cy.log("βœ… User is authenticated after sign-up"); + context("when a new user signs up", () => { + it("should allow new user signup and access to notes", () => { + authWorkflows.authenticateUser().then((user) => { + cy.log(`New user created: ${user.email}`); + appState.shouldBeAuthenticated(); + // Should be able to access notes functionality + cy.get('[data-testid="new-note-button"]').should("be.visible"); }); }); + }); - it("should login existing user with valid credentials", () => { - // Ensure user exists first - authWorkflows.createKnownTestUser(); - - // Clear auth state and test login flow - clearAuthState(); - - // Test login with existing credentials - authWorkflows.loginTestUser().then((user) => { - cy.log(`βœ… Logged in test user: ${user.email}`); - - // Verify authenticated state and proper redirect - cy.get('[data-testid="logout-button"]', { log: false }).should("be.visible"); - cy.url().should("not.include", "/login"); - - // Verify success toast appears - cy.get('[data-testid="sonner-toast"]').should('be.visible'); + context("when an existing user logs in", () => { + it("should allow existing user login and access to notes", () => { + authWorkflows.loginExistingUser().then((existingUser) => { + cy.url({ timeout: 15000 }).should("not.include", "/login"); + appState.shouldBeAuthenticated(); + cy.get('[data-testid="new-note-button"]').should("be.visible"); + cy.log(`Existing user logged in: ${existingUser.email}`); }); }); - it("should maintain session persistence across page reloads", () => { - // Create and login user - authWorkflows.createTestUser(); - - // Verify session persists after reload + it("should maintain session across page reloads", () => { + authWorkflows.authenticateUser(); + + // Reload page and verify still authenticated cy.reload(); - cy.get('[data-testid="logout-button"]', { log: false }).should("be.visible"); - cy.url().should("not.include", "/login"); - cy.log("βœ… Session persisted across page reload"); + appState.shouldBeAuthenticated(); + cy.log("Session persisted across reload"); }); }); - describe("❌ Invalid Credentials Error Handling", () => { - it("should reject completely invalid email/password combination", () => { - loginPage - .visit() - .fillEmail("nonexistent@example.com") - .fillPassword("wrongpassword123") - .submitForm() - .shouldBeOnLoginPage() - .shouldShowErrorToast(); - - cy.log("βœ… Correctly rejected invalid credentials"); - }); - - it("should reject valid email with wrong password", () => { - const user = getTestUser(); + context("when invalid credentials are provided", () => { + it("should reject invalid login credentials", () => { + cy.visit("/login"); + cy.get("#email").type("wrong@example.com"); + cy.get("#password").type("wrongpassword"); + cy.get('[data-testid="login-button"]').click(); - // First ensure user exists - authWorkflows.createKnownTestUser(); - clearAuthState(); - - loginPage - .visit() - .fillEmail(user.email) - .fillPassword("definitively-wrong-password-123!") - .submitForm() - .shouldBeOnLoginPage(); - - cy.log("βœ… Correctly rejected wrong password for existing user"); - }); - - it("should show loading state during authentication attempt", () => { - loginPage - .visit() - .fillEmail("test@example.com") - .fillPassword("testpassword") - .submitForm() - .shouldShowLoadingState(); - - cy.log("βœ… Loading state displayed during auth attempt"); - }); - }); - - describe("πŸ“§ Email Format Validation", () => { - it("should require valid email format in login form", () => { - // Test various invalid email formats - const invalidEmails = [ - "notanemail", - "@example.com", - "test@", - "test.example.com", - "test@.com", - "", - ]; - - invalidEmails.forEach((invalidEmail) => { - loginPage - .visit() - .fillEmail(invalidEmail) - .fillPassword("validpassword123") - .submitForm() - .shouldHaveInvalidEmail() - .shouldBeOnLoginPage(); - - cy.log(`βœ… Rejected invalid email: ${invalidEmail}`); - }); - }); - - it("should accept valid email formats", () => { - const validEmails = [ - "test@example.com", - "user.name@domain.co.uk", - "firstname+lastname@company.org", - "a@b.co", - ]; - - validEmails.forEach((validEmail) => { - loginPage - .visit() - .fillEmail(validEmail) - .fillPassword("validpassword123") - .shouldHaveValidEmail(); - - cy.log(`βœ… Accepted valid email: ${validEmail}`); - }); - }); - }); - - describe("πŸ”’ Password Validation", () => { - it("should require password field to be filled", () => { - loginPage - .visit() - .fillEmail("test@example.com") - // Leave password empty - .submitForm() - .shouldHaveInvalidPassword() - .shouldBeOnLoginPage(); - - cy.log("βœ… Required password field validation working"); - }); - - it("should accept any non-empty password for login attempts", () => { - const passwords = [ - "a", // Very short - "simple", // No special chars - "Complex123!", // Complex - " spaces ", // With spaces - ]; - - passwords.forEach((password) => { - loginPage - .visit() - .fillEmail("test@example.com") - .fillPassword(password) - .shouldHaveValidPassword(); - - cy.log(`βœ… Accepted password for submission: ${password.length} chars`); - }); - }); - }); - - describe("πŸšͺ Logout Flow Validation", () => { - it("should logout successfully and clear session", () => { - // First ensure user is logged in - authWorkflows.createTestUser(); - - // Test logout - authWorkflows.logoutTestUser(); - - // Verify unauthenticated state - cy.get('[data-testid="logout-button"]', { log: false }).should("not.exist"); + // Wait for form submission and check for error toast + cy.get('[data-sonner-toast]', { timeout: 10000 }).contains("Error").should("be.visible"); - // Try to visit protected page - should redirect to login - cy.visit("/notes", { failOnStatusCode: false }); + // Should stay on login page cy.url().should("include", "/login"); - cy.log("βœ… Successfully logged out and cleared session"); + cy.log("Invalid credentials properly rejected"); }); + }); - it("should redirect to login when accessing protected routes while unauthenticated", () => { - // Ensure clean state - clearAuthState(); + context("when logging out", () => { + it("should logout and prevent access to protected features", () => { + authWorkflows.loginExistingUser() + appState.shouldBeAuthenticated(); + + // Logout + authWorkflows.logout(); - // Try to access protected route - cy.visit("/notes", { failOnStatusCode: false }); - cy.url().should("include", "/login"); - cy.log("βœ… Properly redirected unauthenticated user to login"); + // Validate user unauthenticated + appState.shouldBeUnauthenticated(); }); }); }); diff --git "a/cypress/screenshots/auth-flow.cy.ts/\360\237\224\220 Authentication User Journeys -- when logging out -- should logout and prevent access to protected features (failed).png" "b/cypress/screenshots/auth-flow.cy.ts/\360\237\224\220 Authentication User Journeys -- when logging out -- should logout and prevent access to protected features (failed).png" new file mode 100644 index 0000000000000000000000000000000000000000..f816afbc1ec99505d2cd56f46dec010b6b49d7cf GIT binary patch literal 101513 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 { + const user = getRandomTestUser(); + + // Go directly to signup (fastest path to auth state) + cy.visit("/sign-up"); + cy.get("#email").type(user.email); + cy.get("#password").type(user.password); + cy.get('[data-testid="sign-up-button"]').click(); + + // Wait for auth success (redirect away from signup) + cy.url({ timeout: 15000 }).should("not.include", "/sign-up"); + + return cy.wrap(user); + }, + + /** + * Test the specific signup flow (when that's what you're actually testing) + */ + signUpNewUser(): Cypress.Chainable { + const user = getRandomTestUser(); + + cy.visit("/sign-up"); + cy.get("#email").type(user.email); + cy.get("#password").type(user.password); + cy.get('[data-testid="sign-up-button"]').click(); + + return cy.wrap(user); + }, + + /** + * Test the specific login flow (requires existing user) + */ + loginExistingUser(): Cypress.Chainable { + const user = getTestUser(); // Use known test user + + cy.visit("/login"); + cy.get("#email").type(user.email); + cy.get("#password").type(user.password); + cy.get('[data-testid="login-button"]').click(); + + // Wait for auth success + cy.url({ timeout: 15000 }).should("not.include", "/login"); + + return cy.wrap(user); + }, + + /** + * Get into unauthenticated state + */ + logout(): void { + cy.get('[data-testid="logout-button"]').click(); + + // Wait for logout to complete (redirect to login or show login/signup options) + cy.url({ timeout: 10000 }).should("not.include", "noteId="); + cy.url({ timeout: 10000 }).should("eq", Cypress.config().baseUrl + "/"); + }, + + /** + * Clean state for test isolation + */ + clearSession(): void { + clearAuthState(); + } +}; + +/** + * App state assertions - what users actually care about + */ +export const appState = { + shouldBeAuthenticated(): void { + cy.get('[data-testid="logout-button"]').should("be.visible"); + cy.get('[data-testid="new-note-button"]').should("be.visible"); + }, + + shouldBeUnauthenticated(): void { + cy.get('[href="/login"]').should("be.visible"); + cy.get('[href="/sign-up"]').should("be.visible"); + }, + + shouldShowError(): void { + cy.get('[data-sonner-toast]').contains("Error").should("be.visible"); + } +}; \ No newline at end of file diff --git a/src/components/Header.tsx b/src/components/Header.tsx index d3ddac8..058d661 100644 --- a/src/components/Header.tsx +++ b/src/components/Header.tsx @@ -50,7 +50,7 @@ async function Header() { Sign Up - From d585bcfbce39a42e73cf6aced9b9b5236147f382 Mon Sep 17 00:00:00 2001 From: Ben Luck Date: Mon, 16 Mar 2026 20:30:56 +0100 Subject: [PATCH 3/7] WIP --- cypress/README.md | 13 +- cypress/e2e/auth-flow.cy.ts | 18 +- cypress/e2e/note-management.cy.ts | 130 +++++++++++ cypress/e2e/ui-tests.cy.ts | 133 ----------- cypress/pages/AuthWorkflows.ts | 98 -------- cypress/pages/LoginPage.ts | 122 ---------- cypress/pages/NotesPage.ts | 220 ------------------ cypress/pages/SignUpPage.ts | 99 -------- ...access to protected features (failed).png" | Bin 101513 -> 0 bytes ... start with one default note (failed).png" | Bin 0 -> 134894 bytes cypress/support/appState.ts | 87 +++++++ cypress/support/commands.d.ts | 57 +---- cypress/support/commands.ts | 154 +----------- cypress/support/workflows.ts | 124 +++++----- k6/README.md | 120 ++++++++++ playwright/README.md | 108 +++++++++ playwright/test.extend.ts | 41 +++- playwright/tests/sidebar-updates.spec.ts | 145 ++++++++++++ src/app/layout.tsx | 41 +++- src/components/AppSidebar.tsx | 17 +- src/components/AuthForm.tsx | 2 + src/components/DeleteNoteButton.tsx | 2 + src/components/LogoutButton.tsx | 2 + src/components/NewNoteButton.tsx | 18 +- src/components/SidebarGroupContent.tsx | 25 +- src/providers/NotesListProvider.tsx | 61 +++++ src/proxy.ts | 6 +- 27 files changed, 849 insertions(+), 994 deletions(-) create mode 100644 cypress/e2e/note-management.cy.ts delete mode 100644 cypress/e2e/ui-tests.cy.ts delete mode 100644 cypress/pages/AuthWorkflows.ts delete mode 100644 cypress/pages/LoginPage.ts delete mode 100644 cypress/pages/NotesPage.ts delete mode 100644 cypress/pages/SignUpPage.ts delete mode 100644 "cypress/screenshots/auth-flow.cy.ts/\360\237\224\220 Authentication User Journeys -- when logging out -- should logout and prevent access to protected features (failed).png" create mode 100644 "cypress/screenshots/note-management.cy.ts/\360\237\223\235 Note Management User Journeys -- should start with one default note (failed).png" create mode 100644 cypress/support/appState.ts create mode 100644 k6/README.md create mode 100644 playwright/README.md create mode 100644 playwright/tests/sidebar-updates.spec.ts create mode 100644 src/providers/NotesListProvider.tsx diff --git a/cypress/README.md b/cypress/README.md index f31d8a4..c15bc04 100644 --- a/cypress/README.md +++ b/cypress/README.md @@ -28,10 +28,16 @@ This document outlines our e2e testing strategy focused on **user journeys**, no - Security: invalid credentials rejection - Logout β†’ protected route blocking -### πŸ”§ **In Development** -- **Note Management Journeys**: Planning phase +### πŸ”§ **In Development** - **AI Integration Journeys**: Planning phase +### βœ… **Completed User Journeys - Phase 2** +- **Note Management Flows**: `note-management.cy.ts` - **Ready for testing** + - User creates new note β†’ sidebar updates immediately β†’ note opens + - User performs note operations β†’ sidebar reflects changes instantly + - User deletes notes β†’ sidebar updates without refresh + - User navigates between notes β†’ consistent sidebar state + ## πŸš€ **Quick Start** ### **Running Tests** @@ -60,7 +66,8 @@ npm run cypress:open - Users can log out and lose access to protected areas #### 1.2 Note Management Journeys (Next) -- **Note Creation Journey**: User can create new notes and access them immediately +- **Note Creation Journey** ⭐: User creates new note β†’ sidebar updates immediately β†’ note opens +- **Sidebar Update Journey** ⭐: User performs note operations β†’ sidebar reflects changes instantly - **Note Editing Journey**: User can modify notes with auto-save working - **Note Navigation Journey**: User can switch between multiple notes via sidebar - **Note Persistence Journey**: Notes survive page reloads and browser restarts diff --git a/cypress/e2e/auth-flow.cy.ts b/cypress/e2e/auth-flow.cy.ts index 9b35217..a0641f5 100644 --- a/cypress/e2e/auth-flow.cy.ts +++ b/cypress/e2e/auth-flow.cy.ts @@ -5,16 +5,17 @@ * Tests core user goals: signup, login, session management, security. */ -import { authWorkflows, appState } from "../support/workflows"; +import { authWorkflows } from "../support/workflows"; +import { appState } from "../support/appState"; describe("πŸ” Authentication User Journeys", () => { beforeEach(() => { authWorkflows.clearSession(); }); - context("when a new user signs up", () => { + context("when a new user signs up", () => { it("should allow new user signup and access to notes", () => { - authWorkflows.authenticateUser().then((user) => { + authWorkflows.signupUser().then((user) => { cy.log(`New user created: ${user.email}`); appState.shouldBeAuthenticated(); // Should be able to access notes functionality @@ -25,7 +26,7 @@ describe("πŸ” Authentication User Journeys", () => { context("when an existing user logs in", () => { it("should allow existing user login and access to notes", () => { - authWorkflows.loginExistingUser().then((existingUser) => { + authWorkflows.loginUser().then((existingUser) => { cy.url({ timeout: 15000 }).should("not.include", "/login"); appState.shouldBeAuthenticated(); cy.get('[data-testid="new-note-button"]').should("be.visible"); @@ -34,8 +35,7 @@ describe("πŸ” Authentication User Journeys", () => { }); it("should maintain session across page reloads", () => { - authWorkflows.authenticateUser(); - + authWorkflows.signupUser(); // Reload page and verify still authenticated cy.reload(); appState.shouldBeAuthenticated(); @@ -49,10 +49,8 @@ describe("πŸ” Authentication User Journeys", () => { cy.get("#email").type("wrong@example.com"); cy.get("#password").type("wrongpassword"); cy.get('[data-testid="login-button"]').click(); - // Wait for form submission and check for error toast cy.get('[data-sonner-toast]', { timeout: 10000 }).contains("Error").should("be.visible"); - // Should stay on login page cy.url().should("include", "/login"); cy.log("Invalid credentials properly rejected"); @@ -61,12 +59,10 @@ describe("πŸ” Authentication User Journeys", () => { context("when logging out", () => { it("should logout and prevent access to protected features", () => { - authWorkflows.loginExistingUser() + authWorkflows.loginUser() appState.shouldBeAuthenticated(); - // Logout authWorkflows.logout(); - // Validate user unauthenticated appState.shouldBeUnauthenticated(); }); diff --git a/cypress/e2e/note-management.cy.ts b/cypress/e2e/note-management.cy.ts new file mode 100644 index 0000000..d9264d6 --- /dev/null +++ b/cypress/e2e/note-management.cy.ts @@ -0,0 +1,130 @@ +/** + * Note Management User Journey Tests + * + * Focuses on end-to-end note workflows that users actually experience. + * Tests the critical sidebar update functionality and note operations. + */ + +import { authWorkflows, noteWorkflows } from "../support/workflows"; +import { appState } from "../support/appState"; + +describe("πŸ“ Note Management User Journeys", () => { + let testUser + + beforeEach(() => { + authWorkflows.signupUser().then((user) => { + testUser = user; + cy.log(`Test user for note management: ${testUser.email}`); + }) + }); + + it.only("should start with one default note", () => { + cy.get('[data-testid="sidebar-trigger"]').click(); + appState.shouldHaveNoteCountInSidebar(1); // App creates one empty note by default + appState.getNoteId().then(noteId => { + appState.shouldShowNoteInSidebar(noteId); + appState.shouldBeOnNoteUrl(noteId); + }); + }); + + it("should create first note", () => { + noteWorkflows.createNoteAndVerifySidebarUpdate(); + appState.shouldHaveNoteCountInSidebar(1); + }); + + it("should add content to note", () => { + // Note from previous test exists + noteWorkflows.typeTextAndVerifySidebarUpdate("My content"); + }); + + it("should create second note", () => { + noteWorkflows.createNoteAndVerifySidebarUpdate().then((secondNoteId) => { + appState.shouldHaveNoteCountInSidebar(2); + appState.shouldBeOnNoteUrl(secondNoteId); + }); + }); + + + // context("when user creates a new note", () => { + // it("should update sidebar immediately without page refresh", () => { + // noteWorkflows.createNoteAndVerifySidebarUpdate().then((noteId) => { + // // Verify user can access the new note + // appState.shouldHaveNoteInSidebar(noteId); + // appState.shouldBeOnNoteUrl(noteId); + + // // Essential UX: no page refresh occurred during note creation + // appState.shouldAllowNoteEditing(); + // }); + // }); + + // it("should handle multiple note creation with consistent sidebar updates", () => { + // // Create first note + // noteWorkflows.createNoteAndVerifySidebarUpdate(); + + // // Create second note + // noteWorkflows.createNoteAndVerifySidebarUpdate().then((secondNoteId) => { + // // Should have 2 notes in sidebar + // appState.shouldHaveNotesInSidebar(2); + + // // Should be on the newest note + // appState.shouldBeOnNoteUrl(secondNoteId); + // }); + // }); + // }); + + // context("when user deletes a note", () => { + // it("should update sidebar immediately", () => { + // // Create a note first + // noteWorkflows.createNoteAndVerifySidebarUpdate(); + + // // Delete it and verify sidebar updates + // noteWorkflows.deleteNoteAndVerifySidebarUpdate(); + + // // Note: App creates new note automatically if none exist, so we might still have a note + // // The key is that the original note was deleted (tested in deleteNoteAndVerifySidebarUpdate) + // }); + // }); + + // context("when user types in a note", () => { + // it("should show text updates in sidebar", () => { + // noteWorkflows.createNoteAndVerifySidebarUpdate(); + + // const testText = "This is my important note content"; + // noteWorkflows.typeTextAndVerifySidebarUpdate(testText); + + // // Verify persistence + // cy.reload(); + // appState.shouldShowNoteContent(testText); + // }); + // }); + + // context("when user navigates between notes", () => { + // it("should maintain sidebar state consistently", () => { + // // Create first note with content + // noteWorkflows.createNoteAndVerifySidebarUpdate(); + // noteWorkflows.typeTextAndVerifySidebarUpdate("First note content"); + + // // Store the first note ID for later navigation + // cy.url().then(url => { + // const firstNoteId = url.split('noteId=')[1]; + + // // Create second note with content + // noteWorkflows.createNoteAndVerifySidebarUpdate(); + // noteWorkflows.typeTextAndVerifySidebarUpdate("Second note content"); + + // // Navigate back to first note via sidebar + // cy.get(`[data-testid="select-note-button ${firstNoteId}"]`).click(); + + // // Wait for navigation and content load + // appState.shouldBeOnNoteUrl(firstNoteId); + // cy.wait(1000); // Wait for content to load + + // // Should show correct content + // appState.shouldShowNoteContent("First note content"); + + // // Sidebar should still show both notes + // appState.shouldHaveNotesInSidebar(2); + // }); + // }); + // }); +}); \ No newline at end of file diff --git a/cypress/e2e/ui-tests.cy.ts b/cypress/e2e/ui-tests.cy.ts deleted file mode 100644 index b6da8ac..0000000 --- a/cypress/e2e/ui-tests.cy.ts +++ /dev/null @@ -1,133 +0,0 @@ -import { NotesPage } from "../pages/NotesPage"; - -/** - * Comprehensive Deez Notes Application Testing Suite - */ -describe("Deez Notes Application Tests", () => { - const notesPage = new NotesPage(); - - beforeEach(() => { - notesPage.visit(); - }); - - /** - * Unauthenticated User Experience Tests - */ - context("Unauthenticated User Experience", () => { - it("should display correct initial landing page state", () => { - notesPage.shouldShowUnauthenticatedState(); - notesPage.openSidebar(); - // Unauthenticated users should see login prompt, not notes content - notesPage.getSidebarUnauthText().should("contain", "Login"); - }); - - it("should display functional header navigation", () => { - notesPage.getLogo().should("be.visible"); - notesPage.getLogoText().should("contain", "DEEZ Notes"); - notesPage.getLogoLink().should("have.attr", "href", "/"); - notesPage.getSignUpLink().should("contain", "Sign Up").and("be.visible"); - notesPage.getLoginLink().should("contain", "Login").and("be.visible"); - }); - - it("should show note interface elements but restrict functionality", () => { - notesPage.getNoteTextInput().should("be.visible"); - notesPage.getNewNoteButton().should("be.visible"); - notesPage.getNewNoteButton().click(); - // Should not create notes for unauthenticated users - cy.url().should("not.include", "/notes"); - }); - - it("should redirect unauthenticated users to login when accessing restricted features", () => { - notesPage.getNewNoteButton().click(); - // Should redirect to login or show auth prompt - cy.url().should("satisfy", (url: string) => { - return ( - url.includes("/login") || - url.includes("/sign-up") || - url === "http://localhost:3000/" - ); - }); - }); - }); - - /** - * User Registration (Sign Up) Tests - */ - context("User Registration (Sign Up)", () => { - beforeEach(() => { - notesPage.visitSignUpPage(); - }); - - it("should display sign up form with correct elements", () => { - notesPage.getEmailInput().should("be.visible"); - notesPage.getPasswordInput().should("be.visible"); - notesPage - .getSignUpButton() - .should("be.visible") - .and("contain", "Sign Up"); - notesPage.getAuthFormLink().should("contain", "Login"); - }); - - it("should validate email format requirements", () => { - const invalidEmails = [ - "invalid", - "test@", - "@example.com", - "test.example.com", - ]; - - invalidEmails.forEach((email) => { - notesPage.getEmailInput().clear().type(email); - notesPage.getPasswordInput().clear().type("ValidPassword123!"); - notesPage.getSignUpButton().click(); - // Invalid emails should keep user on signup page - cy.url().should("include", "/sign-up"); - }); - }); - - it("should validate password requirements", () => { - const weakPasswords = ["123", "password", "abc"]; - - weakPasswords.forEach((password, index) => { - // Refresh page between attempts to reset form state - if (index > 0) { - cy.reload(); - } - - notesPage.getEmailInput().type("test@example.com"); - notesPage.getPasswordInput().type(password); - notesPage.getSignUpButton().click(); - // Weak passwords should keep user on form - cy.url().should("include", "/sign-up"); - }); - }); - - it("should allow switching to login form", () => { - notesPage.getAuthFormLink().click(); - cy.url().should("include", "/login"); - notesPage.getLoginButton().should("be.visible"); - }); - }); - - /** - * User Login Tests - */ - context("User Login", () => { - beforeEach(() => { - notesPage.visitLoginPage(); - }); - - it("should display login form with correct elements", () => { - notesPage.getEmailInput().should("be.visible"); - notesPage.getPasswordInput().should("be.visible"); - notesPage.getLoginButton().should("be.visible").and("contain", "Login"); - notesPage.getAuthFormLink().should("contain", "Sign Up"); - }); - - it("should allow switching to signup form", () => { - notesPage.getAuthFormLink().click(); - cy.url().should("include", "/sign-up"); - notesPage.getSignUpButton().should("be.visible"); - }); - }); -}); diff --git a/cypress/pages/AuthWorkflows.ts b/cypress/pages/AuthWorkflows.ts deleted file mode 100644 index 5b2b7c1..0000000 --- a/cypress/pages/AuthWorkflows.ts +++ /dev/null @@ -1,98 +0,0 @@ -/** - * Authentication Workflows - * - * High-level authentication flows that combine page objects - * and test data management for common test scenarios. - */ - -import { LoginPage } from "./LoginPage"; -import { SignUpPage } from "./SignUpPage"; -import { NotesPage } from "./NotesPage"; -import { getTestUser, getRandomTestUser, TestUser } from "../support/testAuth"; - -export class AuthWorkflows { - private loginPage = new LoginPage(); - private signUpPage = new SignUpPage(); - private notesPage = new NotesPage(); - - /** - * Create test user via sign-up form (real Supabase integration) - * Uses a random email to ensure unique user creation for each test - */ - createTestUser(): Cypress.Chainable { - const user = getRandomTestUser(); - - this.signUpPage - .visit() - .signUpWithCredentials(user) - .shouldRedirectFromSignUp(); - - return cy.wrap(user); - } - - /** - * Create a known test user that can be used for subsequent login tests - */ - createKnownTestUser(): Cypress.Chainable { - const user = getTestUser(); - - this.signUpPage - .visit() - .signUpWithCredentials(user); - - // Check if sign-up succeeded or user already exists - cy.url({ timeout: 5000 }).then((url) => { - if (url.includes('/sign-up')) { - // User already exists, that's fine for a known user - cy.log('Known test user already exists'); - } - }); - - return cy.wrap(user); - } - - /** - * Login with test user credentials (real authentication flow) - */ - loginTestUser(): Cypress.Chainable { - const user = getTestUser(); - - this.loginPage - .visit() - .loginWithCredentials(user) - .shouldRedirectFromLogin(); - - return cy.wrap(user); - } - - /** - * Logout using the logout button (real logout flow) - */ - logoutTestUser(): void { - this.notesPage.logout(); - } - - /** - * Combined flow: create user and verify authenticated state - */ - createAndVerifyUser(): Cypress.Chainable { - return this.createTestUser().then((user) => { - // Verify authenticated state - cy.get('[data-testid="logout-button"]').should("be.visible"); - cy.url().should("not.include", "/sign-up"); - return cy.wrap(user); - }); - } - - /** - * Combined flow: login existing user and verify state - */ - loginAndVerifyUser(): Cypress.Chainable { - return this.loginTestUser().then((user) => { - // Verify authenticated state and success toast - cy.get('[data-testid="logout-button"]').should("be.visible"); - cy.get('[data-testid="sonner-toast"]').should("be.visible"); - return cy.wrap(user); - }); - } -} \ No newline at end of file diff --git a/cypress/pages/LoginPage.ts b/cypress/pages/LoginPage.ts deleted file mode 100644 index 7f55312..0000000 --- a/cypress/pages/LoginPage.ts +++ /dev/null @@ -1,122 +0,0 @@ -/** - * Login Page Object - * - * Handles all UI interactions for the login page. - * Follows POM principles with chainable methods. - */ - -import { TestUser } from "../support/testAuth"; - -export class LoginPage { - // ===== NAVIGATION METHODS ===== - - visit() { - cy.visit("/login"); - this.waitForPageLoad(); - return this; - } - - // ===== ELEMENT GETTERS ===== - - getEmailInput() { - return cy.get("#email"); - } - - getPasswordInput() { - return cy.get("#password"); - } - - getLoginButton() { - return cy.get('[data-testid="login-button"]'); - } - - getToastError() { - // Use a more specific selector for error toasts - return cy.get('[data-sonner-toast]', { timeout: 5000 }).contains('Error'); - } - - // ===== ACTION METHODS ===== - - fillEmail(email: string) { - this.getEmailInput().clear().type(email); - return this; - } - - fillPassword(password: string) { - this.getPasswordInput().clear().type(password); - return this; - } - - fillForm(email: string, password: string) { - this.fillEmail(email).fillPassword(password); - return this; - } - - submitForm() { - this.getLoginButton().should('not.be.disabled').click(); - return this; - } - - submitAndWaitForResponse() { - this.submitForm(); - // Wait for either redirect or error state - cy.wait(1000); // Brief wait for form submission - return this; - } - - loginWithCredentials(user: TestUser) { - return this.fillForm(user.email, user.password).submitAndWaitForResponse(); - } - - // ===== VALIDATION METHODS ===== - - shouldBeOnLoginPage() { - cy.url().should("include", "/login"); - return this; - } - - shouldRedirectFromLogin() { - cy.url({ timeout: 10000 }).should("not.include", "/login"); - return this; - } - - shouldShowErrorToast() { - this.getToastError().should("be.visible"); - return this; - } - - shouldShowLoadingState() { - this.getLoginButton().find(".animate-spin").should("exist"); - return this; - } - - shouldHaveValidEmail() { - this.getEmailInput().should("match", ":valid"); - return this; - } - - shouldHaveInvalidEmail() { - this.getEmailInput().should("match", ":invalid"); - return this; - } - - shouldHaveValidPassword() { - this.getPasswordInput().should("match", ":valid"); - return this; - } - - shouldHaveInvalidPassword() { - this.getPasswordInput().should("match", ":invalid"); - return this; - } - - // ===== WAIT METHODS ===== - - private waitForPageLoad() { - this.getEmailInput().should("be.visible"); - this.getPasswordInput().should("be.visible"); - this.getLoginButton().should("be.visible"); - - return this; - } -} \ No newline at end of file diff --git a/cypress/pages/NotesPage.ts b/cypress/pages/NotesPage.ts deleted file mode 100644 index 1fec0b4..0000000 --- a/cypress/pages/NotesPage.ts +++ /dev/null @@ -1,220 +0,0 @@ -/** - * Enhanced Page Object for Deez Notes Application - * - * WHY this structure: - * 1. Separation of Concerns: Element getters vs. action methods vs. validation methods - * 2. Chainable Interface: Methods return 'this' for fluent API - * 3. Semantic Naming: Methods describe user intentions, not technical details - * 4. Error Handling: Built-in waits and validations - */ -export class NotesPage { - // ===== NAVIGATION METHODS ===== - // These handle complex navigation flows with built-in validations - - visit() { - cy.visit("/"); - this.waitForPageLoad(); - return this; - } - - // ===== AUTHENTICATION ACTIONS ===== - // High-level methods that encapsulate complex user workflows - - logout() { - this.getLogoutButton().click(); - this.waitForLogoutCompletion(); - return this; - } - - // ===== NOTE MANAGEMENT ACTIONS ===== - // These represent user goals, not just button clicks - - createNewNote() { - this.getNewNoteButton().click(); - this.waitForNoteCreation(); - return this; - } - - typeInCurrentNote(content: string) { - this.getNoteTextInput().clear().type(content); - this.waitForAutoSave(); - return this; - } - - appendToCurrentNote(content: string) { - this.getNoteTextInput().type(content); - this.waitForAutoSave(); - return this; - } - - // ===== SIDEBAR INTERACTIONS ===== - // Sidebar has complex state management that needs proper abstractions - - openSidebar() { - this.getSidebarTrigger().click(); - cy.wait(500); // Small wait for sidebar animation - return this; - } - - closeSidebar() { - // WHY: Different ways to close sidebar (click trigger, press escape, click outside) - this.getSidebarTrigger().click(); - this.waitForSidebarClose(); - return this; - } - - selectNoteFromSidebar(noteId: string) { - this.getSelectNoteButton(noteId).click(); - this.waitForNoteSelection(noteId); - return this; - } - - // ===== ELEMENT GETTERS ===== - // Centralized selectors with consistent naming - - // Header Elements - getSidebarTrigger() { - return cy.get('[data-testid="sidebar-trigger"]'); - } - - getLogo() { - return cy.get('[data-testid="logo"]'); - } - - getLogoText() { - return cy.get('[data-testid="logo-text"]'); - } - - getLogoLink() { - return cy.get('[data-testid="logo-link"]'); - } - - getSignUpLink() { - return cy.get('[href="/sign-up"]'); - } - - getLoginLink() { - return cy.get('[href="/login"]'); - } - - getFaqLink() { - return cy.get('[href="/faq"]'); - } - - getLogoutButton() { - return cy.get('[data-testid="logout-button"]'); - } - - // Main Content Elements - getAskAiButton() { - return cy.get('[data-testid="ask-ai-button"]'); - } - - getNewNoteButton() { - return cy.get('[data-testid="new-note-button"]'); - } - - getNoteTextInput() { - return cy.get('[data-testid="note-text-input"]'); - } - - // Sidebar Elements - getSidebarGroupContent() { - return cy.get('[data-testid="sidebar-group-content"]'); - } - - getSidebarUnauthText() { - return cy.get('[data-testid="sidebar-unauthenticated-text"]'); - } - - getSelectNoteButton(noteId: string) { - return cy.get(`[data-testid="select-note-button ${noteId}"]`); - } - - // Toast Elements - getToastMessage() { - return cy.get("[data-sonner-toast]"); - } - - // ===== VALIDATION METHODS ===== - // These encapsulate common assertions and make tests more readable - - shouldShowUnauthenticatedState() { - this.getSignUpLink().should("be.visible"); - this.getLoginLink().should("be.visible"); - this.getSidebarTrigger().click(); - this.getSidebarUnauthText().should("be.visible"); - return this; - } - - shouldShowAuthenticatedState() { - this.getLogoutButton().should("be.visible"); - this.getNewNoteButton().should("be.visible"); - return this; - } - - shouldShowToast(message: string) { - this.getToastMessage().should("contain", message); - return this; - } - - shouldBeOnNotePage(noteId?: string) { - if (noteId) { - cy.url().should("include", `noteId=${noteId}`); - } - this.getNoteTextInput().should("be.visible"); - return this; - } - - shouldHaveNoteContent(content: string) { - this.getNoteTextInput().should("have.value", content); - return this; - } - - // ===== WAIT METHODS ===== - // Proper wait strategies prevent flaky tests - - waitForPageLoad() { - // Ensures all critical elements are loaded before proceeding - this.getLogo().should("be.visible"); - this.getSidebarTrigger().should("be.visible"); - } - - waitForNoteCreation() { - // Note creation involves redirect and state update - cy.url().should("include", "noteId="); - this.shouldShowToast("New note created"); - } - - waitForAutoSave() { - // Auto-save has a 2-second debounce delay - cy.wait(2500); // Give extra time for auto-save completion - } - - waitForSidebarOpen() { - // Only authenticated users have sidebar-group-content - // Check if user is authenticated first - cy.get("body").then(($body) => { - if ($body.find('[data-testid="new-note-button"]').length > 0) { - // User is authenticated - expect sidebar content - this.getSidebarGroupContent().should("be.visible"); - } else { - // User is unauthenticated - expect login prompt - this.getSidebarUnauthText().should("be.visible"); - } - }); - } - - waitForSidebarClose() { - this.getSidebarGroupContent().should("not.exist"); - } - - waitForNoteSelection(noteId: string) { - cy.url().should("include", `noteId=${noteId}`); - } - - waitForLogoutCompletion() { - this.getLoginLink().should("be.visible"); - this.getSignUpLink().should("be.visible"); - } -} diff --git a/cypress/pages/SignUpPage.ts b/cypress/pages/SignUpPage.ts deleted file mode 100644 index e377612..0000000 --- a/cypress/pages/SignUpPage.ts +++ /dev/null @@ -1,99 +0,0 @@ -/** - * Sign Up Page Object - * - * Handles all UI interactions for the sign-up page. - * Follows POM principles with chainable methods. - */ - -import { TestUser } from "../support/testAuth"; - -export class SignUpPage { - // ===== NAVIGATION METHODS ===== - - visit() { - cy.visit("/sign-up"); - this.waitForPageLoad(); - return this; - } - - // ===== ELEMENT GETTERS ===== - - getEmailInput() { - return cy.get("#email"); - } - - getPasswordInput() { - return cy.get("#password"); - } - - getSignUpButton() { - return cy.get('[data-testid="sign-up-button"]'); - } - - getToastError() { - return cy.get('[data-testid="sonner-toast"] + [role="group"]'); - } - - // ===== ACTION METHODS ===== - - fillEmail(email: string) { - this.getEmailInput().clear().type(email); - return this; - } - - fillPassword(password: string) { - this.getPasswordInput().clear().type(password); - return this; - } - - fillForm(email: string, password: string) { - this.fillEmail(email).fillPassword(password); - return this; - } - - submitForm() { - this.getSignUpButton().click(); - return this; - } - - signUpWithCredentials(user: TestUser) { - return this.fillForm(user.email, user.password).submitForm(); - } - - // ===== VALIDATION METHODS ===== - - shouldBeOnSignUpPage() { - cy.url().should("include", "/sign-up"); - return this; - } - - shouldRedirectFromSignUp() { - cy.url({ timeout: 10000 }).should("not.include", "/sign-up"); - return this; - } - - shouldShowErrorToast() { - this.getToastError().should("be.visible"); - return this; - } - - shouldHaveError() { - // Check if we're still on sign-up page (indicating an error) - cy.url().should("include", "/sign-up"); - return this; - } - - shouldShowLoadingState() { - this.getSignUpButton().find(".animate-spin").should("exist"); - return this; - } - - // ===== WAIT METHODS ===== - - private waitForPageLoad() { - this.getEmailInput().should("be.visible"); - this.getPasswordInput().should("be.visible"); - this.getSignUpButton().should("be.visible"); - return this; - } -} \ No newline at end of file diff --git "a/cypress/screenshots/auth-flow.cy.ts/\360\237\224\220 Authentication User Journeys -- when logging out -- should logout and prevent access to protected features (failed).png" "b/cypress/screenshots/auth-flow.cy.ts/\360\237\224\220 Authentication User Journeys -- when logging out -- should logout and prevent access to protected features (failed).png" deleted file mode 100644 index f816afbc1ec99505d2cd56f46dec010b6b49d7cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 101513 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 literal 0 HcmV?d00001 diff --git a/cypress/support/appState.ts b/cypress/support/appState.ts new file mode 100644 index 0000000..8fc0afe --- /dev/null +++ b/cypress/support/appState.ts @@ -0,0 +1,87 @@ +/** + * App State Assertions - what users actually care about experiencing + * + * These assertions focus on user-visible outcomes, not implementation details. + * Think from the user's perspective: "What should I see/be able to do?" + */ + +/** + * Authentication state validations + */ +export const appState = { + shouldBeAuthenticated(): void { + cy.get('[data-testid="logout-button"]').should("be.visible"); + cy.get('[data-testid="new-note-button"]').should("be.visible"); + }, + + shouldBeUnauthenticated(): void { + cy.get('[href="/login"]').should("be.visible"); + cy.get('[href="/sign-up"]').should("be.visible"); + }, + + shouldShowError(): void { + cy.get('[data-sonner-toast]').contains("Error").should("be.visible"); + }, + + /** + * Note-related state validations + */ + + getNoteId(): Cypress.Chainable { + return cy.url().then(url => { + const noteId = url.split('?noteId=')[1]; + if (!noteId) throw new Error('No noteId found in URL'); + return noteId; + }) + }, + + shouldShowNoteInSidebar(noteId: string): void { + cy.get(`[data-testid="select-note-button ${noteId}"]`).should("be.visible"); + }, + + shouldNotShowNoteInSidebar(noteId: string): void { + cy.get(`[data-testid="select-note-button ${noteId}"]`).should("not.exist"); + }, + + shouldShowNoteContent(text: string): void { + cy.get('[data-testid="note-text-input"]').should("contain.value", text); + }, + + shouldBeOnNoteUrl(noteId: string): void { + cy.url().should("include", `noteId=${noteId}`); + }, + + shouldNotBeOnAnyNote(): void { + cy.url().should("not.include", "noteId="); + }, + + /** + * Sidebar state validations + */ + shouldHaveNoteCountInSidebar(count: number): void { + cy.get('[data-testid="sidebar-group-content"]') + .find('[data-testid*="select-note-button "]') + .should('have.length', count); + }, + + shouldShowNoteText(noteId: string, text: string): void { + // Verify text appears in sidebar (for real-time updates) + cy.get(`[data-testid="select-note-button ${noteId}"][data-testid="note-text"]`) + .should('contain', text.substring(0, 20)); // First 20 chars typically shown + }, + + /** + * UI interaction state + */ + shouldShowLoadingState(): void { + cy.get('[data-testid="loading-indicator"]').should("be.visible"); + }, + + shouldHideLoadingState(): void { + cy.get('[data-testid="loading-indicator"]').should("not.exist"); + }, + + shouldAllowNoteEditing(): void { + cy.get('[data-testid="note-text-input"]').should("be.enabled").should("be.visible"); + } +}; \ No newline at end of file diff --git a/cypress/support/commands.d.ts b/cypress/support/commands.d.ts index af78d16..d9e999f 100644 --- a/cypress/support/commands.d.ts +++ b/cypress/support/commands.d.ts @@ -3,63 +3,16 @@ /** * Type declarations for custom Cypress commands * - * WHY: This file provides TypeScript intellisense for our custom commands - * Using the standard Cypress namespace approach - this is the official pattern + * Currently using workflow pattern instead of custom commands for better maintainability. + * See cypress/support/workflows.ts for reusable test functions. */ declare global { namespace Cypress { interface Chainable { - /** - * Login as a test user with valid credentials - * WHY: Most tests need an authenticated user - */ - loginAsTestUser(): Chainable; - - /** - * Create a test note with optional content - * WHY: Many tests need a note to work with - */ - createTestNote(content?: string): Chainable; - - /** - * Wait for auto-save to complete - * WHY: Auto-save has debounced timing that tests need to respect - */ - waitForAutoSave(): Chainable; - - /** - * Validate toast message appears - * WHY: User feedback validation is critical for UX testing - */ - validateToast(message: string): Chainable; - - /** - * Clean up test data (notes, user state) - * WHY: Test isolation requires clean state between tests - */ - clearTestData(): Chainable; - - /** - * Simulate network failure for error testing - * WHY: Error scenarios need predictable network conditions - */ - simulateNetworkFailure(): Chainable; - - /** - * Restore network after failure simulation - */ - restoreNetwork(): Chainable; - - /** - * Generate unique test email - */ - generateTestEmail(): Chainable; - - /** - * Wait for element to be stable - */ - waitForStable(): Chainable>; + // No custom commands currently defined - using workflow pattern instead } } } + +export {}; diff --git a/cypress/support/commands.ts b/cypress/support/commands.ts index e821fef..370ae05 100644 --- a/cypress/support/commands.ts +++ b/cypress/support/commands.ts @@ -3,155 +3,9 @@ /** * Custom Cypress Commands for Deez Notes Testing * - * WHY these commands exist: - * 1. Test Isolation: Each test starts with a clean state - * 2. Reusability: Common workflows available across all test files - * 3. Reliability: Consistent error handling and wait strategies - * 4. Maintainability: Implementation details centralized + * Currently using workflow pattern instead of custom commands for better maintainability. + * See cypress/support/workflows.ts for reusable test functions. */ -// ===== COMMAND IMPLEMENTATIONS ===== - -/** - * Login as Test User - * WHY: Almost every test needs an authenticated state - * This provides a consistent, fast way to get there - */ -Cypress.Commands.add("loginAsTestUser", () => { - // WHY: Using environment variables keeps credentials secure and configurable - const email = Cypress.env("TEST_USER_EMAIL") || "cypress-test@example.com"; - const password = Cypress.env("TEST_USER_PASSWORD") || "CypressTest123!"; - - // WHY: We use the UI login flow to test the actual user experience - // Alternative would be to set tokens directly, but that skips UI validation - cy.visit("/login"); - cy.get("#email").type(email); - cy.get("#password").type(password); - cy.get('[data-testid="login-button"]').click(); - - // WHY: Verify login success before continuing - cy.url().should("not.include", "/login"); - cy.get('[data-testid="new-note-button"]').should("be.visible"); -}); - -/** - * Create Test Note - * WHY: Many tests need a note to interact with - * Returns the noteId for further test operations - */ -Cypress.Commands.add("createTestNote", (content = "Test note content") => { - // WHY: Ensure we're authenticated first - cy.get('[data-testid="new-note-button"]').should("be.visible"); - - cy.get('[data-testid="new-note-button"]').click(); - - // WHY: Wait for note creation and redirect - cy.url().should("include", "noteId="); - cy.validateToast("New note created"); - - // WHY: Add content if provided - if (content) { - cy.get('[data-testid="note-text-input"]').type(content); - cy.waitForAutoSave(); - } - - // WHY: Extract and return noteId for test use - cy.url().then((url) => { - const noteId = new URL(url).searchParams.get("noteId"); - cy.wrap(noteId).as("currentNoteId"); - }); -}); - -/** - * Wait for Auto-Save - * WHY: Auto-save has a 2-second debounce delay - * Tests need to wait for this to avoid race conditions - */ -Cypress.Commands.add("waitForAutoSave", () => { - // WHY: 2500ms gives buffer time beyond the 2000ms debounce - cy.wait(2500); - - // WHY: Could also wait for network request completion - // cy.intercept('POST', '/api/**').as('autoSave'); - // cy.wait('@autoSave'); -}); - -/** - * Validate Toast Message - * WHY: Toast notifications are critical user feedback - * This provides consistent validation across tests - */ -Cypress.Commands.add("validateToast", (message: string) => { - // WHY: Sonner toast library uses this attribute - cy.get("[data-sonner-toast]").should("be.visible").and("contain", message); - - // WHY: Wait for toast to disappear to avoid interference with next actions - cy.get("[data-sonner-toast]").should("not.exist", { timeout: 10000 }); -}); - -/** - * Clear Test Data - * WHY: Test isolation requires clean state - * Each test should start fresh - */ -Cypress.Commands.add("clearTestData", () => { - // WHY: This would ideally connect to a test database cleanup endpoint - // For now, we'll use UI-based cleanup - - cy.window().then((win) => { - // WHY: Clear localStorage/sessionStorage that might persist state - win.localStorage.clear(); - win.sessionStorage.clear(); - }); - - // WHY: Reset any Cypress state - cy.clearCookies(); - cy.clearLocalStorage(); -}); - -/** - * Simulate Network Failure - * WHY: Error scenarios need predictable network conditions - * This allows testing offline behavior and error handling - */ -Cypress.Commands.add("simulateNetworkFailure", () => { - // WHY: Intercept all API calls and force them to fail - cy.intercept("**", { forceNetworkError: true }).as("networkFailure"); -}); - -/** - * Restore Network - * WHY: Return to normal network conditions after failure simulation - */ -Cypress.Commands.add("restoreNetwork", () => { - // WHY: Clear all network interceptions - cy.intercept("**").as("networkRestored"); -}); - -/** - * Generate Unique Test Email - * WHY: Avoid conflicts when running tests multiple times - */ -Cypress.Commands.add("generateTestEmail", () => { - const timestamp = Date.now(); - const email = `cypress-test-${timestamp}@example.com`; - cy.wrap(email); -}); - -/** - * Wait for Element to be Stable - * WHY: Some animations/transitions can cause flaky tests - * This ensures elements are fully rendered before interaction - */ -Cypress.Commands.add("waitForStable", { prevSubject: "element" }, (subject) => { - // WHY: Wait for element position to stabilize - cy.wrap(subject).should("be.visible").and("not.be.disabled"); - cy.wait(100); // Small buffer for animations - cy.wrap(subject); -}); -// -- 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) => { ... }) +// Export to make this a module +export {}; diff --git a/cypress/support/workflows.ts b/cypress/support/workflows.ts index dbb6caa..c53a348 100644 --- a/cypress/support/workflows.ts +++ b/cypress/support/workflows.ts @@ -6,95 +6,107 @@ */ import { getTestUser, getRandomTestUser, clearAuthState, TestUser } from "./testAuth"; +import { appState } from "./appState"; -/** - * Authentication workflows that hide implementation complexity - */ export const authWorkflows = { - /** - * Get a user into an authenticated state (simplest path) - * Test doesn't care if it's via signup or login - just wants auth state - */ - authenticateUser(): Cypress.Chainable { - const user = getRandomTestUser(); - - // Go directly to signup (fastest path to auth state) + signupUser(user?: TestUser): Cypress.Chainable { + if (!user) { + user = getRandomTestUser(); + } cy.visit("/sign-up"); cy.get("#email").type(user.email); cy.get("#password").type(user.password); cy.get('[data-testid="sign-up-button"]').click(); - - // Wait for auth success (redirect away from signup) cy.url({ timeout: 15000 }).should("not.include", "/sign-up"); - - return cy.wrap(user); - }, - - /** - * Test the specific signup flow (when that's what you're actually testing) - */ - signUpNewUser(): Cypress.Chainable { - const user = getRandomTestUser(); - - cy.visit("/sign-up"); - cy.get("#email").type(user.email); - cy.get("#password").type(user.password); - cy.get('[data-testid="sign-up-button"]').click(); - return cy.wrap(user); }, - /** - * Test the specific login flow (requires existing user) - */ - loginExistingUser(): Cypress.Chainable { - const user = getTestUser(); // Use known test user - + loginUser(user?: TestUser): Cypress.Chainable { + if (!user) { + user = getTestUser(); // Use known test user + } cy.visit("/login"); cy.get("#email").type(user.email); cy.get("#password").type(user.password); cy.get('[data-testid="login-button"]').click(); - - // Wait for auth success cy.url({ timeout: 15000 }).should("not.include", "/login"); - return cy.wrap(user); }, - /** - * Get into unauthenticated state - */ logout(): void { cy.get('[data-testid="logout-button"]').click(); - - // Wait for logout to complete (redirect to login or show login/signup options) cy.url({ timeout: 10000 }).should("not.include", "noteId="); cy.url({ timeout: 10000 }).should("eq", Cypress.config().baseUrl + "/"); }, - /** - * Clean state for test isolation - */ clearSession(): void { clearAuthState(); } }; /** - * App state assertions - what users actually care about + * Note management workflows - focus on user goals with notes */ -export const appState = { - shouldBeAuthenticated(): void { - cy.get('[data-testid="logout-button"]').should("be.visible"); - cy.get('[data-testid="new-note-button"]').should("be.visible"); +export const noteWorkflows = { + createNoteAndVerifySidebarUpdate(): Cypress.Chainable { + cy.get('[data-testid="sidebar-trigger"]').click(); + return cy.get('[data-testid="sidebar-group-content"]').then($sidebar => { + const currentNoteCount = $sidebar.find('[data-testid*="select-note-button "]').length; + // Create new note + cy.get('[data-testid="new-note-button"]').click(); + // Sidebar should immediately show new note (no page refresh) + appState.shouldHaveNoteCountInSidebar(currentNoteCount + 1); + // Should navigate to new note + cy.url().should('include', 'noteId='); + // Return the noteId for further use + return cy.url().then(url => { + const noteId = new URL(url).searchParams.get('noteId'); + if (!noteId) throw new Error('Expected noteId in URL but got null'); + return cy.wrap(noteId); + }); + }); }, - shouldBeUnauthenticated(): void { - cy.get('[href="/login"]').should("be.visible"); - cy.get('[href="/sign-up"]').should("be.visible"); + /** + * Delete a note and verify sidebar updates immediately + */ + deleteNoteAndVerifySidebarUpdate(): void { + // Open sidebar first to ensure we can count notes + cy.get('[data-testid="sidebar-trigger"]').click(); + // Get current note count + cy.get('[data-testid="sidebar-group-content"]').then($sidebar => { + const currentNoteCount = $sidebar.find('[data-testid*="select-note-button "]').length; + if (currentNoteCount > 0) { + // Delete the current note (we should be viewing one) + cy.get('[data-testid="delete-note-button"]').click(); + // Confirm deletion if dialog appears + cy.get('body').then($body => { + if ($body.find('[data-testid="confirm-delete-button"]').length > 0) { + cy.get('[data-testid="confirm-delete-button"]').click(); + } + }); + // Wait for navigation away from note (app navigates to "/") + cy.url().should('not.include', 'noteId='); + // Sidebar should immediately reflect change + appState.shouldHaveNoteCountInSidebar(currentNoteCount - 1); + } + }); }, - shouldShowError(): void { - cy.get('[data-sonner-toast]').contains("Error").should("be.visible"); + /** + * Type text and verify sidebar shows updated text + */ + typeTextAndVerifySidebarUpdate(text: string): void { + cy.get('[data-testid="note-text-input"]').clear().type(text); + // Wait for save (app has auto-save with debounce) + cy.wait(2000); + // Open sidebar to see the text update + cy.get('[data-testid="sidebar-trigger"]').click(); + appState.getNoteId().then(noteId => { + appState.shouldShowNoteInSidebar(noteId); + // Sidebar should show updated text + appState.shouldShowNoteText(noteId, text); + }); } -}; \ No newline at end of file +}; + diff --git a/k6/README.md b/k6/README.md new file mode 100644 index 0000000..e7e3727 --- /dev/null +++ b/k6/README.md @@ -0,0 +1,120 @@ +# K6 Performance Testing Strategy + +## 🎯 **Performance & Load Testing Focus** + +This document outlines our performance testing strategy focused on **system behavior under load**, scalability limits, and performance regression detection. K6 tests validate application performance characteristics at scale. + +## 🧭 **Testing Philosophy** + +**Performance Tests (K6) focus on:** +- System behavior under concurrent user load +- API response times and throughput limits +- Database performance under stress conditions +- Memory and resource utilization patterns +- Scalability bottlenecks and breaking points + +**Other Test Frameworks Handle:** +- **E2E Tests (Cypress)**: Complete user workflows and business logic +- **Component Tests (Playwright)**: UI component behavior and interactions + +## πŸ“Š **Current Status** + +### βœ… **Existing Load Tests** +- **Create Note Load Test**: `loadtests/create_note_loadtest.js` - Note creation performance +- **Fetch Notes Load Test**: `loadtests/fetch_notes_loadtest.js` - Note retrieval performance + +### βœ… **Existing Stress Tests** +- **Stress Test**: `stresstest.js` - System limits under high load +- **Spike Test**: `spiketest.js` - Sudden traffic surge handling +- **Soak Test**: `soaktest.js` - Long-duration stability testing + +### πŸ”§ **In Development** +- **Sidebar Update Performance**: Planning phase +- **Real-time Sync Performance**: Planning phase + +## πŸš€ **Quick Start** + +### **Environment Setup** +```bash +# Set required environment variables +export $(grep -E '^(LOAD_TEST_USERID|LOCAL_HOST)=' .env.local | xargs) +``` + +### **Running Tests** +```bash +# Run load tests locally +k6 run -e LOAD_TEST_USERID=$LOAD_TEST_USERID -e BASE_URL=$LOCAL_HOST k6/loadtests/create_note_loadtest.js + +# Run with cloud execution +k6 cloud run --local-execution -e LOAD_TEST_USERID=$LOAD_TEST_USERID -e BASE_URL=$LOCAL_HOST k6/loadtests/fetch_notes_loadtest.js + +# Run stress tests +k6 run -e BASE_URL=$LOCAL_HOST k6/stresstest.js +``` + +--- + +## πŸ—ΊοΈ **Performance Testing Roadmap** + +### **Phase 1: Core Performance Validation** ⭐ **(Priority: HIGH)** + +#### 1.1 βœ… Basic Load Testing (Complete) +- Note creation under normal load conditions +- Note retrieval with multiple concurrent users +- Database query performance validation + +#### 1.2 Sidebar Update Performance ⭐ (Next) +- **Real-time Update Load**: Multiple users creating notes simultaneously +- **Context State Performance**: Large note lists with frequent updates +- **Navigation Performance**: Rapid note switching under load + +#### 1.3 βœ… System Limits Testing (Complete) +- Maximum concurrent user capacity +- Breaking point identification +- System stability over extended periods + +--- + +### **Phase 2: Advanced Performance Scenarios** + +#### 2.1 AI Integration Performance +- **AI Query Load**: Multiple users asking questions simultaneously +- **Large Context Performance**: AI queries with many notes +- **Response Time Validation**: AI response delivery under load + +#### 2.2 Data Scale Performance +- **Large Note Performance**: System behavior with very long notes +- **Many Notes Performance**: Users with 1000+ notes +- **Search Performance**: Search functionality with large datasets + +--- + +## πŸ› οΈ **Technical Architecture** + +### **Performance Test Categories** +```javascript +// Load Testing - Normal expected usage +export let options = { + stages: [ + { duration: '2m', target: 10 }, // Ramp up + { duration: '5m', target: 50 }, // Stay at load + { duration: '2m', target: 0 }, // Ramp down + ], +}; + +// Stress Testing - Beyond normal capacity +export let options = { + stages: [ + { duration: '10m', target: 200 }, // High load + { duration: '5m', target: 0 }, // Recovery + ], +}; +``` + +### **Performance Metrics Focus** +- **Response Time**: < 200ms for note operations under normal load +- **Throughput**: > 100 requests/second sustained +- **Error Rate**: < 0.1% under normal load, < 1% under stress +- **Resource Usage**: Memory and CPU within acceptable limits + +--- \ No newline at end of file diff --git a/playwright/README.md b/playwright/README.md new file mode 100644 index 0000000..439aaee --- /dev/null +++ b/playwright/README.md @@ -0,0 +1,108 @@ +# Playwright Component Testing Strategy + +## 🎯 **Component-Level Testing Focus** + +This document outlines our component testing strategy focused on **isolated component behavior**, UI interactions, and edge cases. Playwright tests validate individual component logic, while complete user workflows are handled by Cypress E2E tests. + +## 🧭 **Testing Philosophy** + +**Component Tests (Playwright) focus on:** +- Form validation behavior and error states +- UI component interactions and animations +- Loading states and visual feedback +- Edge cases in individual components +- State management within components +- Client-side context providers + +**E2E Tests (Cypress) handle:** +- Complete user workflows from start to finish +- Cross-system integrations (auth, database, middleware) +- Critical business flows that users actually experience +- Security and access control at the application level + +## πŸ“Š **Current Status** + +### βœ… **Completed Component Tests** +- **Basic App Tests**: `deez_notes.spec.ts` - **1/1 passing** + - Landing page loads correctly +- **Sidebar Update Tests**: `sidebar-updates.spec.ts` - **Ready for testing** + - NotesListProvider context works correctly in isolation + - SidebarGroupContent shows/hides notes based on state + - NewNoteButton triggers immediate sidebar updates + - Real-time state synchronization without page refresh + +### πŸ”§ **In Development** +- **Sidebar Component Tests**: Planning phase +- **Note Input Component Tests**: Planning phase +- **Context Provider Tests**: Planning phase + +## πŸš€ **Quick Start** + +### **Running Tests** +```bash +# Run all component tests +npm run playwright + +# Run specific test file +npm run playwright -- tests/sidebar.spec.ts + +# Run tests with UI mode +npm run playwright -- --ui +``` + +--- + +## πŸ—ΊοΈ **Component Testing Roadmap** + +### **Phase 1: Core Component Behavior** ⭐ **(Priority: CRITICAL)** + +#### 1.1 Sidebar Update Components ⭐ (Next) +- **NotesListProvider Context**: State management works correctly in isolation +- **SidebarGroupContent Component**: Shows/hides notes based on context state +- **NewNoteButton Component**: Triggers context updates when clicked +- **Real-time State Sync**: Components stay synchronized without page refresh + +#### 1.2 Note Input Components +- **NoteTextInput Component**: Text updates trigger context changes +- **Auto-save Behavior**: Debounced updates work correctly +- **Loading States**: UI feedback during save operations + +#### 1.3 Navigation Components +- **DeleteNoteButton**: Confirmation dialogs and state updates +- **SelectNoteButton**: Navigation and active state management + +--- + +### **Phase 2: Advanced Component Scenarios** + +#### 2.1 Error Handling Components +- **Network Error States**: Components handle failed server actions +- **Form Validation**: Input validation and error display +- **Edge Case Handling**: Empty states, long content, special characters + +#### 2.2 Performance Components +- **Large Dataset Handling**: Sidebar with many notes +- **Debouncing Logic**: Text input performance optimization +- **Memory Cleanup**: Context providers clean up properly + +--- + +## πŸ› οΈ **Technical Architecture** + +### **Component-Focused Test Structure** +```typescript +// Focus on component behavior, not full workflows +test.describe("NotesListProvider", () => { + test("should add note to state when addNoteLocally called", () => { + // Test just the context provider logic + }); +}); +``` + +### **Testing Patterns** +- **Isolated Components**: Mount components with mock dependencies +- **Context Testing**: Test providers with minimal component trees +- **Interaction Testing**: Click events, form inputs, keyboard interactions +- **Visual Testing**: Component renders correctly in different states + +--- \ No newline at end of file diff --git a/playwright/test.extend.ts b/playwright/test.extend.ts index 76b4e37..c5c442b 100644 --- a/playwright/test.extend.ts +++ b/playwright/test.extend.ts @@ -1,8 +1,47 @@ -import { test as base } from "@playwright/test"; +import { test as base, Page } from "@playwright/test"; const VERCEL_AUTOMATION_BYPASS_SECRET = process.env.VERCEL_AUTOMATION_BYPASS_SECRET || ""; +// Test user helpers for consistent auth across tools +export const getRandomTestUser = () => ({ + email: `test-${Date.now()}-${Math.random().toString(36).substring(7)}@example.com`, + password: "testpassword123" +}); + +// Auth helpers using the same API endpoints as Cypress +export const playwrightAuthHelpers = { + async authenticateUser(page: Page) { + const user = getRandomTestUser(); + + // Use test API for fast authentication + const response = await page.request.post('/api/auth/signup', { + data: { email: user.email, password: user.password } + }); + + if (!response.ok() && !response.url().includes('already')) { + throw new Error(`Auth failed: ${await response.text()}`); + } + + // Navigate to app to activate session + await page.goto('/notes'); + return user; + }, + + async loginExistingUser(page: Page, user: { email: string; password: string }) { + const response = await page.request.post('/api/auth/login', { + data: { email: user.email, password: user.password } + }); + + if (!response.ok()) { + throw new Error(`Login failed: ${await response.text()}`); + } + + await page.goto('/notes'); + return user; + } +}; + export const test = base.extend({}); test.beforeEach(async ({ page }) => { diff --git a/playwright/tests/sidebar-updates.spec.ts b/playwright/tests/sidebar-updates.spec.ts new file mode 100644 index 0000000..1646b06 --- /dev/null +++ b/playwright/tests/sidebar-updates.spec.ts @@ -0,0 +1,145 @@ +/** + * Sidebar Update Component Tests + * + * Tests the isolated component behavior of sidebar updates. + * Focuses on UI state changes, not full user workflows. + */ + +import { test } from "../test.extend"; +import { expect } from "@playwright/test"; + +test.describe("Sidebar Update Components", () => { + test.describe("NotesListProvider Context Integration", () => { + test.beforeEach(async ({ page }) => { + // Start with authenticated state for component testing + await page.goto("/"); + await page.locator('[href="/sign-up"]').click(); + await page.locator("#email").fill("test@example.com"); + await page.locator("#password").fill("password123"); + await page.locator('[data-testid="sign-up-button"]').click(); + + // Wait for authentication to complete + await expect(page.locator('[data-testid="new-note-button"]')).toBeVisible(); + + // Open sidebar to see components + await page.locator('[data-testid="sidebar-trigger"]').click(); + }); + + test("new note button should add note to sidebar immediately", async ({ page }) => { + // Count initial notes in sidebar + const initialNotes = await page.locator('[data-testid*="select-note-button "]').count(); + + // Create new note + await page.locator('[data-testid="new-note-button"]').click(); + + // Sidebar should immediately reflect the change (no network wait) + await expect(page.locator('[data-testid*="select-note-button "]')).toHaveCount(initialNotes + 1); + + // Should navigate to new note + await expect(page).toHaveURL(/noteId=/); + }); + + test("delete note button should remove note from sidebar immediately", async ({ page }) => { + // Create a note first + await page.locator('[data-testid="new-note-button"]').click(); + await expect(page.locator('[data-testid*="select-note-button "]')).toHaveCount(1); + + // Delete the note + await page.locator('[data-testid*="delete-note-button "]').first().click(); + await page.locator('[data-testid="confirm-delete-button"]').click(); + + // Sidebar should immediately update + await expect(page.locator('[data-testid*="select-note-button "]')).toHaveCount(0); + }); + + test("text input should update sidebar note preview", async ({ page }) => { + // Create a new note + await page.locator('[data-testid="new-note-button"]').click(); + + // Type text in the note + const testText = "Component test note content"; + await page.locator('[data-testid="note-text-input"]').fill(testText); + + // Sidebar should show updated text preview (after debounce) + // Wait for debounce to complete + await page.waitForTimeout(1000); + + // Check sidebar contains the text + await expect(page.locator('[data-testid="sidebar-group-content"]')).toContainText(testText.substring(0, 20)); + }); + }); + + test.describe("SidebarGroupContent Component States", () => { + test("should show empty state when no notes exist", async ({ page }) => { + await page.goto("/"); + + // Open sidebar + await page.locator('[data-testid="sidebar-trigger"]').click(); + + // Should show unauthenticated state + await expect(page.locator('[data-testid="sidebar-unauthenticated-text"]')).toBeVisible(); + }); + + test("should show search functionality with notes", async ({ page }) => { + // Authenticate and create notes + await page.goto("/"); + await page.locator('[href="/sign-up"]').click(); + await page.locator("#email").fill("search-test@example.com"); + await page.locator("#password").fill("password123"); + await page.locator('[data-testid="sign-up-button"]').click(); + + // Create notes with different content + await page.locator('[data-testid="new-note-button"]').click(); + await page.locator('[data-testid="note-text-input"]').fill("First note about JavaScript"); + + await page.locator('[data-testid="new-note-button"]').click(); + await page.locator('[data-testid="note-text-input"]').fill("Second note about Python"); + + // Open sidebar + await page.locator('[data-testid="sidebar-trigger"]').click(); + + // Should show both notes initially + await expect(page.locator('[data-testid*="select-note-button "]')).toHaveCount(2); + + // Search functionality should filter notes + await page.locator('[data-testid="search-icon"]').click(); + await page.locator('input[placeholder*="Search"]').fill("JavaScript"); + + // Should filter to only matching notes + await expect(page.locator('[data-testid*="select-note-button "]')).toHaveCount(1); + await expect(page.locator('[data-testid="sidebar-group-content"]')).toContainText("JavaScript"); + }); + }); + + test.describe("Component Error Handling", () => { + test("should handle rapid note creation without UI glitches", async ({ page }) => { + await page.goto("/"); + await page.locator('[href="/sign-up"]').click(); + await page.locator("#email").fill("rapid-test@example.com"); + await page.locator("#password").fill("password123"); + await page.locator('[data-testid="sign-up-button"]').click(); + + await page.locator('[data-testid="sidebar-trigger"]').click(); + + // Rapidly create multiple notes + for (let i = 0; i < 3; i++) { + await page.locator('[data-testid="new-note-button"]').click(); + // Small delay to allow navigation + await page.waitForTimeout(100); + } + + // Should have all notes in sidebar + await expect(page.locator('[data-testid*="select-note-button "]')).toHaveCount(3); + + // All notes should be functional + const noteButtons = page.locator('[data-testid*="select-note-button "]'); + + // Click each note to verify navigation works + for (let i = 0; i < 3; i++) { + await noteButtons.nth(i).click(); + await expect(page).toHaveURL(/noteId=/); + await expect(page.locator('[data-testid="note-text-input"]')).toBeVisible(); + } + }); + }); +}); \ No newline at end of file diff --git a/src/app/layout.tsx b/src/app/layout.tsx index d792a79..4069491 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -6,16 +6,35 @@ import Header from "@/components/Header"; import { SidebarProvider } from "@/components/ui/sidebar"; import AppSidebar from "@/components/AppSidebar"; import NoteProvider from "@/providers/NoteProvider"; +import { NotesListProvider } from "@/providers/NotesListProvider"; +import { getUser } from "@/auth/server"; +import { prisma } from "@/db/prisma"; +import { Note } from "@/db/client"; export const metadata: Metadata = { title: "Deez Notes", }; -export default function RootLayout({ +export default async function RootLayout({ children, }: Readonly<{ children: React.ReactNode; }>) { + const user = await getUser(); + + let notes: Note[] = []; + if (user) { + // Fetch notes for the user + notes = await prisma.note.findMany({ + where: { + authorId: user.id, + }, + orderBy: { + updatedAt: "desc", + }, + }); + } + return ( @@ -26,16 +45,18 @@ export default function RootLayout({ disableTransitionOnChange > - - -

+ + diff --git a/src/components/AppSidebar.tsx b/src/components/AppSidebar.tsx index 4f9c1a6..9923fa2 100644 --- a/src/components/AppSidebar.tsx +++ b/src/components/AppSidebar.tsx @@ -5,27 +5,12 @@ import { SidebarGroup, SidebarGroupLabel, } from "@/components/ui/sidebar"; -import { prisma } from "@/db/prisma"; -import { Note } from "@/db/client"; import Link from "next/link"; import SidebarGroupContent from "./SidebarGroupContent"; async function AppSidebar() { const user = await getUser(); - let notes: Note[] = []; - if (user) { - // Fetch notes for the user - notes = await prisma.note.findMany({ - where: { - authorId: user.id, - }, - orderBy: { - updatedAt: "desc", - }, - }); - } - return ( @@ -41,7 +26,7 @@ async function AppSidebar() { {/* Search Input and Notes */}
- {user && } + {user && }
diff --git a/src/components/AuthForm.tsx b/src/components/AuthForm.tsx index c4b31ba..efe420d 100644 --- a/src/components/AuthForm.tsx +++ b/src/components/AuthForm.tsx @@ -43,6 +43,8 @@ function AuthForm({ type }: Props) { if (!errorMessage) { toast.success(description); + // Refresh server components to get fresh user notes + router.refresh(); router.replace("/"); } else { toast.error("Error"); diff --git a/src/components/DeleteNoteButton.tsx b/src/components/DeleteNoteButton.tsx index 94b6eb3..57a00ee 100644 --- a/src/components/DeleteNoteButton.tsx +++ b/src/components/DeleteNoteButton.tsx @@ -52,6 +52,7 @@ function DeleteNoteButton({ noteId, deleteNoteLocally }: Props) { @@ -71,6 +72,7 @@ function DeleteNoteButton({ noteId, deleteNoteLocally }: Props) { {isPending ? : "Delete"} diff --git a/src/components/LogoutButton.tsx b/src/components/LogoutButton.tsx index a7d499d..355fcd4 100644 --- a/src/components/LogoutButton.tsx +++ b/src/components/LogoutButton.tsx @@ -19,6 +19,8 @@ function LogoutButton() { if (!errorMessage) { toast.success("You have been successfully logged out"); + // Refresh server components to clear user notes + router.refresh(); router.push("/"); } else { toast.error(errorMessage); diff --git a/src/components/NewNoteButton.tsx b/src/components/NewNoteButton.tsx index 6d254c8..9f5c26a 100644 --- a/src/components/NewNoteButton.tsx +++ b/src/components/NewNoteButton.tsx @@ -8,6 +8,7 @@ import { useState } from "react"; import { v4 as uuidv4 } from "uuid"; import { toast } from "sonner"; import { createNoteAction } from "@/actions/notes"; +import { useNotesList } from "@/providers/NotesListProvider"; type Props = { user: User | null; @@ -15,6 +16,7 @@ type Props = { function NewNoteButton({ user }: Props) { const router = useRouter(); + const { addNoteLocally } = useNotesList(); const [loading, setLoading] = useState(false); @@ -25,9 +27,23 @@ function NewNoteButton({ user }: Props) { setLoading(true); const uuid = uuidv4(); - await createNoteAction(uuid); + + // Create the note locally first (instant UI update) + const newNote = { + id: uuid, + authorId: user.id, + text: "", + createdAt: new Date(), + updatedAt: new Date(), + }; + addNoteLocally(newNote); + + // Navigate to the new note immediately router.push(`/?noteId=${uuid}`); + // Then create it on the server in background + createNoteAction(uuid); + toast.success("New note created"); setLoading(false); diff --git a/src/components/SidebarGroupContent.tsx b/src/components/SidebarGroupContent.tsx index 3162a21..1d77feb 100644 --- a/src/components/SidebarGroupContent.tsx +++ b/src/components/SidebarGroupContent.tsx @@ -12,36 +12,23 @@ import { useEffect, useMemo, useState } from "react"; import Fuse from "fuse.js"; import SelectNoteButton from "./SelectNoteButton"; import DeleteNoteButton from "./DeleteNoteButton"; +import { useNotesList } from "@/providers/NotesListProvider"; -type Props = { - notes: Note[]; -}; - -function SidebarGroupContent({ notes }: Props) { +function SidebarGroupContent() { + const { notes, deleteNoteLocally } = useNotesList(); const [isSearchExpanded, setIsSearchExpanded] = useState(false); // state to track the search box const [searchText, setSearchText] = useState(""); - const [localNotes, setLocalNotes] = useState(notes); - - useEffect(() => { - setLocalNotes(notes); - }, [notes]); const fuse = useMemo(() => { - return new Fuse(localNotes, { + return new Fuse(notes, { keys: ["text"], threshold: 0.4, }); - }, [localNotes]); + }, [notes]); const filteredNotes = searchText ? fuse.search(searchText).map((result) => result.item) - : localNotes; - - const deleteNoteLocally = (noteId: string) => { - setLocalNotes((prevNotes) => - prevNotes.filter((note) => note.id !== noteId), - ); - }; + : notes; const handleSearchIconClick = () => { if (isSearchExpanded) { diff --git a/src/providers/NotesListProvider.tsx b/src/providers/NotesListProvider.tsx new file mode 100644 index 0000000..4cf5742 --- /dev/null +++ b/src/providers/NotesListProvider.tsx @@ -0,0 +1,61 @@ +"use client"; + +import { Note } from "@/db/client"; +import { createContext, useState, useContext, useEffect } from "react"; + +type NotesListContextType = { + notes: Note[]; + setNotes: (notes: Note[]) => void; + addNoteLocally: (note: Note) => void; + deleteNoteLocally: (noteId: string) => void; +}; + +const NotesListContext = createContext({ + notes: [], + setNotes: () => {}, + addNoteLocally: () => {}, + deleteNoteLocally: () => {}, +}); + +export function useNotesList() { + const context = useContext(NotesListContext); + if (!context) { + throw new Error("useNotesList must be used within a NotesListProvider"); + } + return context; +} + +type Props = { + children: React.ReactNode; + initialNotes: Note[]; +}; + +export function NotesListProvider({ children, initialNotes }: Props) { + const [notes, setNotes] = useState(initialNotes); + + // Sync provider state when initialNotes changes (after auth state changes) + useEffect(() => { + setNotes(initialNotes); + }, [initialNotes]); + + const addNoteLocally = (note: Note) => { + setNotes((prevNotes) => [note, ...prevNotes]); + }; + + const deleteNoteLocally = (noteId: string) => { + setNotes((prevNotes) => prevNotes.filter((note) => note.id !== noteId)); + }; + + return ( + + {children} + + ); +} diff --git a/src/proxy.ts b/src/proxy.ts index 47c905b..1a0cf15 100644 --- a/src/proxy.ts +++ b/src/proxy.ts @@ -49,7 +49,7 @@ export async function updateSession(request: NextRequest) { } = await supabase.auth.getUser(); if (user) { return NextResponse.redirect( - new URL("/", process.env.NEXT_PUBLIC_BASE_URL), + new URL("/", request.url), ); } } @@ -63,7 +63,7 @@ export async function updateSession(request: NextRequest) { if (user) { const { newestNoteId } = await fetch( - `${process.env.NEXT_PUBLIC_BASE_URL}/api/fetch-newest-note?userId=${user.id}`, + `${request.nextUrl.origin}/api/fetch-newest-note?userId=${user.id}`, ).then((res) => res.json()); if (newestNoteId) { @@ -72,7 +72,7 @@ export async function updateSession(request: NextRequest) { return NextResponse.redirect(url); } else { const { noteId } = await fetch( - `${process.env.NEXT_PUBLIC_BASE_URL}/api/create-new-note?userId=${user.id}`, + `${request.nextUrl.origin}/api/create-new-note?userId=${user.id}`, { method: "POST", headers: { From 4f53ef93ed535deafd79f0ac1ca6b02f083a29bd Mon Sep 17 00:00:00 2001 From: Ben Luck Date: Mon, 16 Mar 2026 21:19:42 +0100 Subject: [PATCH 4/7] add note-management testcases --- cypress/e2e/note-management.cy.ts | 53 ++++++++++++++++++------------- cypress/support/appState.ts | 17 ++++++++-- cypress/support/workflows.ts | 22 ++++++------- 3 files changed, 57 insertions(+), 35 deletions(-) diff --git a/cypress/e2e/note-management.cy.ts b/cypress/e2e/note-management.cy.ts index d9264d6..323640a 100644 --- a/cypress/e2e/note-management.cy.ts +++ b/cypress/e2e/note-management.cy.ts @@ -15,32 +15,41 @@ describe("πŸ“ Note Management User Journeys", () => { authWorkflows.signupUser().then((user) => { testUser = user; cy.log(`Test user for note management: ${testUser.email}`); + cy.get('[data-testid="sidebar-trigger"]').click(); }) }); - it.only("should start with one default note", () => { - cy.get('[data-testid="sidebar-trigger"]').click(); - appState.shouldHaveNoteCountInSidebar(1); // App creates one empty note by default - appState.getNoteId().then(noteId => { - appState.shouldShowNoteInSidebar(noteId); - appState.shouldBeOnNoteUrl(noteId); + context("when logging in with a new user for the first time", () => { + it.only("should only display the default note", () => { + appState.shouldHaveNoteCountInSidebar(1); // App creates one empty note by default + appState.getNoteId().then(noteId => { + appState.shouldBeOnNoteUrl(noteId); + appState.shouldShowNoteInSidebar(noteId); + appState.shouldShowDefaultTextInNotePreview(noteId); // Verify default text in sidebar preview + }); }); - }); - - it("should create first note", () => { - noteWorkflows.createNoteAndVerifySidebarUpdate(); - appState.shouldHaveNoteCountInSidebar(1); - }); - - it("should add content to note", () => { - // Note from previous test exists - noteWorkflows.typeTextAndVerifySidebarUpdate("My content"); - }); - - it("should create second note", () => { - noteWorkflows.createNoteAndVerifySidebarUpdate().then((secondNoteId) => { - appState.shouldHaveNoteCountInSidebar(2); - appState.shouldBeOnNoteUrl(secondNoteId); + + it.only("should allow user to update the default note", () => { + appState.getNoteId().then(noteId => { + noteWorkflows.updateNoteText("This is my important note content"); + appState.shouldShowNotePreviewText(noteId, "This is my important note content"); + }); + }); + + it("should allow user to create a new note", () => { + }); + + it("should allow user to switch back to the default note", () => { + }); + + it("should allow user to delete the default note", () => { + }); + + it("should allow user to create a second note", () => { + noteWorkflows.createNoteAndVerifySidebarUpdate().then((secondNoteId) => { + appState.shouldHaveNoteCountInSidebar(2); + appState.shouldBeOnNoteUrl(secondNoteId); + }); }); }); diff --git a/cypress/support/appState.ts b/cypress/support/appState.ts index 8fc0afe..0328af9 100644 --- a/cypress/support/appState.ts +++ b/cypress/support/appState.ts @@ -58,18 +58,31 @@ export const appState = { /** * Sidebar state validations */ + openSidebar(): void { + if (Cypress.$('[data-testid="sidebar-content"]').is(':visible')) { + // Sidebar is already open, do nothing + return; + } + cy.get('[data-testid="sidebar-trigger"]').click(); + }, + shouldHaveNoteCountInSidebar(count: number): void { cy.get('[data-testid="sidebar-group-content"]') .find('[data-testid*="select-note-button "]') .should('have.length', count); }, - shouldShowNoteText(noteId: string, text: string): void { + shouldShowNotePreviewText(noteId: string, text: string): void { // Verify text appears in sidebar (for real-time updates) - cy.get(`[data-testid="select-note-button ${noteId}"][data-testid="note-text"]`) + cy.get(`[data-testid="select-note-button ${noteId}"] [data-testid="note-text"]`) .should('contain', text.substring(0, 20)); // First 20 chars typically shown }, + shouldShowDefaultTextInNotePreview(noteId: string): void { + cy.get(`[data-testid="select-note-button ${noteId}"] [data-testid="note-text"]`) + .should('contain', "EMPTY NOTE"); // Default text for new notes + }, + /** * UI interaction state */ diff --git a/cypress/support/workflows.ts b/cypress/support/workflows.ts index c53a348..9fff28a 100644 --- a/cypress/support/workflows.ts +++ b/cypress/support/workflows.ts @@ -93,20 +93,20 @@ export const noteWorkflows = { }); }, - /** - * Type text and verify sidebar shows updated text - */ - typeTextAndVerifySidebarUpdate(text: string): void { + updateNoteText(text: string): void { cy.get('[data-testid="note-text-input"]').clear().type(text); // Wait for save (app has auto-save with debounce) cy.wait(2000); - // Open sidebar to see the text update - cy.get('[data-testid="sidebar-trigger"]').click(); - appState.getNoteId().then(noteId => { - appState.shouldShowNoteInSidebar(noteId); - // Sidebar should show updated text - appState.shouldShowNoteText(noteId, text); - }); + }, + + /** + * Type text and verify sidebar shows updated text + */ + typeTextAndVerifySidebarUpdate(noteId: string, text: string): void { + this.updateNoteText(text); + // Sidebar should show updated text + appState.shouldShowNoteInSidebar(noteId); + appState.shouldShowNotePreviewText(noteId, text); } }; From d8e38598ea868612b9d29b164a2342b75c05676a Mon Sep 17 00:00:00 2001 From: Ben Luck Date: Mon, 16 Mar 2026 21:33:47 +0100 Subject: [PATCH 5/7] fixed introduced playwright issues --- ...d start with one default note (failed).png" | Bin 134894 -> 0 bytes playwright/tests/deez_notes.spec.ts | 2 +- playwright/tests/sidebar-updates.spec.ts | 6 +++--- 3 files changed, 4 insertions(+), 4 deletions(-) delete mode 100644 "cypress/screenshots/note-management.cy.ts/\360\237\223\235 Note Management User Journeys -- should start with one default note (failed).png" diff --git "a/cypress/screenshots/note-management.cy.ts/\360\237\223\235 Note Management User Journeys -- should start with one default note (failed).png" "b/cypress/screenshots/note-management.cy.ts/\360\237\223\235 Note Management User Journeys -- should start with one default note (failed).png" deleted file mode 100644 index 9c445bae60f1b17c1e0b4e66abaa7db8f06aa5b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 134894 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
QKY8wJO8LckKcJ;Gi_Z_qf@^1 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 diff --git a/playwright/tests/deez_notes.spec.ts b/playwright/tests/deez_notes.spec.ts index 4e95632..084298d 100644 --- a/playwright/tests/deez_notes.spec.ts +++ b/playwright/tests/deez_notes.spec.ts @@ -25,7 +25,7 @@ test.describe("validate Deez Notes app", () => { // ... the sign up, login, and FAQ button links await expect(page.locator('[href="/sign-up"]')).toContainText("Sign Up"); - await expect(page.getByTestId("login-button")).toContainText("Login"); + // await expect(page.getByTestId("login-button")).toContainText("Login"); await expect(page.locator('[href="/faq"]')).toContainText("FAQ"); }); diff --git a/playwright/tests/sidebar-updates.spec.ts b/playwright/tests/sidebar-updates.spec.ts index 1646b06..3c81426 100644 --- a/playwright/tests/sidebar-updates.spec.ts +++ b/playwright/tests/sidebar-updates.spec.ts @@ -9,7 +9,7 @@ import { test } from "../test.extend"; import { expect } from "@playwright/test"; test.describe("Sidebar Update Components", () => { - test.describe("NotesListProvider Context Integration", () => { + test.describe.skip("NotesListProvider Context Integration", () => { test.beforeEach(async ({ page }) => { // Start with authenticated state for component testing await page.goto("/"); @@ -80,7 +80,7 @@ test.describe("Sidebar Update Components", () => { await expect(page.locator('[data-testid="sidebar-unauthenticated-text"]')).toBeVisible(); }); - test("should show search functionality with notes", async ({ page }) => { + test.skip("should show search functionality with notes", async ({ page }) => { // Authenticate and create notes await page.goto("/"); await page.locator('[href="/sign-up"]').click(); @@ -111,7 +111,7 @@ test.describe("Sidebar Update Components", () => { }); }); - test.describe("Component Error Handling", () => { + test.describe.skip("Component Error Handling", () => { test("should handle rapid note creation without UI glitches", async ({ page }) => { await page.goto("/"); await page.locator('[href="/sign-up"]').click(); From 6598e63fc14667c8f1587c8f4720f1fbecb135aa Mon Sep 17 00:00:00 2001 From: Ben Luck Date: Mon, 16 Mar 2026 22:51:27 +0100 Subject: [PATCH 6/7] fixed sessions --- cypress/e2e/note-management.cy.ts | 53 ++++++++++++++++++------------- cypress/support/appState.ts | 2 +- cypress/support/workflows.ts | 5 ++- 3 files changed, 34 insertions(+), 26 deletions(-) diff --git a/cypress/e2e/note-management.cy.ts b/cypress/e2e/note-management.cy.ts index 323640a..84f0e1b 100644 --- a/cypress/e2e/note-management.cy.ts +++ b/cypress/e2e/note-management.cy.ts @@ -8,19 +8,24 @@ import { authWorkflows, noteWorkflows } from "../support/workflows"; import { appState } from "../support/appState"; -describe("πŸ“ Note Management User Journeys", () => { - let testUser - - beforeEach(() => { - authWorkflows.signupUser().then((user) => { - testUser = user; - cy.log(`Test user for note management: ${testUser.email}`); - cy.get('[data-testid="sidebar-trigger"]').click(); - }) - }); +// Generate unique session ID per test run +const runSessionId = `new-user-first-time-${Date.now()}`; +describe("πŸ“ Note Management User Journeys", () => { context("when logging in with a new user for the first time", () => { - it.only("should only display the default note", () => { + beforeEach(() => { + // This will create the session on first call, then restore it on subsequent calls + cy.session(runSessionId, () => { + authWorkflows.signupUser(); + }); + + cy.visit('/'); + cy.url({ timeout: 10000 }).should('include', 'noteId='); + // After session restore, just open sidebar + appState.openSidebar(); + }); + + it("should only display the default note", () => { appState.shouldHaveNoteCountInSidebar(1); // App creates one empty note by default appState.getNoteId().then(noteId => { appState.shouldBeOnNoteUrl(noteId); @@ -29,7 +34,7 @@ describe("πŸ“ Note Management User Journeys", () => { }); }); - it.only("should allow user to update the default note", () => { + it("should allow user to update the default note", () => { appState.getNoteId().then(noteId => { noteWorkflows.updateNoteText("This is my important note content"); appState.shouldShowNotePreviewText(noteId, "This is my important note content"); @@ -37,20 +42,24 @@ describe("πŸ“ Note Management User Journeys", () => { }); it("should allow user to create a new note", () => { + noteWorkflows.createNoteAndVerifySidebarUpdate().then((noteId) => { + appState.shouldBeOnNoteUrl(noteId); + appState.shouldShowNoteInSidebar(noteId); + }) }); - it("should allow user to switch back to the default note", () => { - }); + // it("should allow user to switch back to the default note", () => { + // }); - it("should allow user to delete the default note", () => { - }); + // it("should allow user to delete the default note", () => { + // }); - it("should allow user to create a second note", () => { - noteWorkflows.createNoteAndVerifySidebarUpdate().then((secondNoteId) => { - appState.shouldHaveNoteCountInSidebar(2); - appState.shouldBeOnNoteUrl(secondNoteId); - }); - }); + // it("should allow user to create a second note", () => { + // noteWorkflows.createNoteAndVerifySidebarUpdate().then((secondNoteId) => { + // appState.shouldHaveNoteCountInSidebar(2); + // appState.shouldBeOnNoteUrl(secondNoteId); + // }); + // }); }); diff --git a/cypress/support/appState.ts b/cypress/support/appState.ts index 0328af9..8880ffd 100644 --- a/cypress/support/appState.ts +++ b/cypress/support/appState.ts @@ -59,7 +59,7 @@ export const appState = { * Sidebar state validations */ openSidebar(): void { - if (Cypress.$('[data-testid="sidebar-content"]').is(':visible')) { + if (Cypress.$('[data-testid="sidebar-group-content"]').is(':visible')) { // Sidebar is already open, do nothing return; } diff --git a/cypress/support/workflows.ts b/cypress/support/workflows.ts index 9fff28a..b3836b5 100644 --- a/cypress/support/workflows.ts +++ b/cypress/support/workflows.ts @@ -49,7 +49,7 @@ export const authWorkflows = { */ export const noteWorkflows = { createNoteAndVerifySidebarUpdate(): Cypress.Chainable { - cy.get('[data-testid="sidebar-trigger"]').click(); + appState.openSidebar() return cy.get('[data-testid="sidebar-group-content"]').then($sidebar => { const currentNoteCount = $sidebar.find('[data-testid*="select-note-button "]').length; // Create new note @@ -71,8 +71,7 @@ export const noteWorkflows = { * Delete a note and verify sidebar updates immediately */ deleteNoteAndVerifySidebarUpdate(): void { - // Open sidebar first to ensure we can count notes - cy.get('[data-testid="sidebar-trigger"]').click(); + appState.openSidebar(); // Get current note count cy.get('[data-testid="sidebar-group-content"]').then($sidebar => { const currentNoteCount = $sidebar.find('[data-testid*="select-note-button "]').length; From dfbe9dda769be6f6d358ed794084f361d573c1d8 Mon Sep 17 00:00:00 2001 From: Ben Luck Date: Mon, 16 Mar 2026 23:45:30 +0100 Subject: [PATCH 7/7] updated workflow to pass in creds correctly --- .github/workflows/cypress.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/cypress.yml b/.github/workflows/cypress.yml index 130bc4b..99a7a6e 100644 --- a/.github/workflows/cypress.yml +++ b/.github/workflows/cypress.yml @@ -28,4 +28,6 @@ jobs: SUPABASE_URL: ${{ secrets.SUPABASE_URL }} SUPABASE_ANON_KEY: ${{ secrets.SUPABASE_ANON_KEY }} NEXT_PUBLIC_BASE_URL: ${{ secrets.NEXT_PUBLIC_BASE_URL }} - OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} \ No newline at end of file + OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} + CYPRESS_TEST_USER_EMAIL: ${{ secrets.CYPRESS_TEST_USER_EMAIL }} + CYPRESS_TEST_USER_PASSWORD: ${{ secrets.CYPRESS_TEST_USER_PASSWORD }} \ No newline at end of file