diff --git a/e2e/cucumber/features/home-page.feature b/e2e/cucumber/features/home-page.feature new file mode 100644 index 0000000..da902cc --- /dev/null +++ b/e2e/cucumber/features/home-page.feature @@ -0,0 +1,27 @@ +Feature: Home Page + As a visitor + I want to see the home page + So that I can learn about the club and view player rankings + + @happy-path @public @home + Scenario: Home page displays Top 10 Players + Given I am on the home page + Then I should see "Top 10 Players" + And I should see a rankings table + + @happy-path @public @home + Scenario: Home page displays club information + Given I am on the home page + Then I should see "Club Information" + And I should see "Club President" + + @happy-path @public @home + Scenario: Home page displays most recent tournament + Given I am on the home page + Then I should see "Most Recent Tournament" + + @happy-path @public @home + Scenario: Home page has sign in and create account links + Given I am on the home page + Then I should see "Sign In" + And I should see "Create Account" diff --git a/e2e/cucumber/features/rankings.feature b/e2e/cucumber/features/rankings.feature new file mode 100644 index 0000000..d94b235 --- /dev/null +++ b/e2e/cucumber/features/rankings.feature @@ -0,0 +1,23 @@ +Feature: Rankings Page + As a visitor + I want to view player rankings + So that I can see top players and their statistics + + @happy-path @public @rankings + Scenario: Rankings page loads and displays rankings table + When I go to the rankings page + Then I should see "Player Rankings" in the page heading + And I should see a rankings table + + @happy-path @public @rankings + Scenario: Rankings table displays player columns + When I go to the rankings page + Then I should see a rankings table with columns + And the table should have column headers + + @happy-path @public @rankings + Scenario: Rankings page is publicly accessible (no login required) + Given I am not logged in + When I go to the rankings page + Then I should be on the rankings page + And I should see the rankings table diff --git a/e2e/cucumber/step-definitions/common-steps.ts b/e2e/cucumber/step-definitions/common-steps.ts index e7808aa..1478ef6 100644 --- a/e2e/cucumber/step-definitions/common-steps.ts +++ b/e2e/cucumber/step-definitions/common-steps.ts @@ -551,3 +551,51 @@ Then('the settings should be saved successfully', async function () { await expect(world.page.locator('text=Settings saved successfully')).toBeVisible(); console.log('🌍 Verified settings were saved successfully'); }); + +// Rankings Page Steps +When('I go to the rankings page', async function () { + console.log('🌍 Going to rankings page'); + await world.page.goto(`${world.baseURL}/rankings`); + await world.page.waitForLoadState('domcontentloaded'); +}); + +Then('I should see {string} in the page heading', async function (heading: string) { + // Use a more flexible selector that matches text content + await expect(world.page.locator(`text=${heading}`)).toBeVisible(); + console.log(`🌍 Verified heading "${heading}" is visible`); +}); + +Then('I should see a rankings table', async function () { + await expect(world.page.locator('table')).toBeVisible(); + console.log('🌍 Verified rankings table is visible'); +}); + +Then('I should see a rankings table with columns', async function () { + const table = world.page.locator('table'); + await expect(table).toBeVisible(); + const headerCount = await world.page.locator('th').count(); + expect(headerCount).toBeGreaterThan(0); + console.log(`🌍 Verified rankings table has ${headerCount} columns`); +}); + +Then('the table should have column headers', async function () { + const headerCount = await world.page.locator('th').count(); + expect(headerCount).toBeGreaterThan(0); + console.log(`🌍 Verified table has ${headerCount} column headers`); +}); + +Given('I am not logged in', async function () { + // This is just a documentation step - the test environment starts fresh + console.log('🌍 User is not logged in (fresh session)'); +}); + +Then('I should be on the rankings page', async function () { + const currentUrl = world.page.url(); + console.log(`🌍 Checking current URL: ${currentUrl}`); + expect(currentUrl).toContain('/rankings'); +}); + +Then('I should see the rankings table', async function () { + await expect(world.page.locator('table')).toBeVisible(); + console.log('🌍 Verified rankings table is visible'); +});