131 lines
5.4 KiB
TypeScript
131 lines
5.4 KiB
TypeScript
/**
|
|
* BDD E2E Test: Driver Dashboard View
|
|
*
|
|
* Tests the main dashboard view that displays:
|
|
* - Current driver statistics (rating, rank, starts, wins, podiums, leagues)
|
|
* - Next race information (track, car, scheduled time, time until)
|
|
* - Upcoming races (list of 3 races)
|
|
* - Championship standings (league name, position, points)
|
|
* - Recent activity feed (race results, other events)
|
|
*
|
|
* Focus: Final user outcomes - what the driver sees and can verify
|
|
*/
|
|
|
|
import { test, expect } from '@playwright/test';
|
|
|
|
test.describe('Driver Dashboard View', () => {
|
|
test.beforeEach(async ({ page }) => {
|
|
// TODO: Implement authentication setup for a registered driver
|
|
// - Navigate to login page
|
|
// - Enter credentials for "John Doe" or similar test driver
|
|
// - Verify successful login
|
|
// - Navigate to dashboard page
|
|
});
|
|
|
|
test('Driver sees their current statistics on the dashboard', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views their personal stats
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the Dashboard page
|
|
// Then I should see my current rating displayed
|
|
// And I should see my current rank displayed
|
|
// And I should see my total race starts displayed
|
|
// And I should see my total wins displayed
|
|
// And I should see my total podiums displayed
|
|
// And I should see my active leagues count displayed
|
|
});
|
|
|
|
test('Driver sees next race information when a race is scheduled', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views next race details
|
|
// Given I am a registered driver "John Doe"
|
|
// And I have an upcoming race scheduled
|
|
// When I am on the Dashboard page
|
|
// Then I should see the "Next Event" section
|
|
// And I should see the track name (e.g., "Monza")
|
|
// And I should see the car type (e.g., "GT3")
|
|
// And I should see the scheduled date and time
|
|
// And I should see the time until the race (e.g., "2 days 4 hours")
|
|
});
|
|
|
|
test('Driver sees upcoming races list on the dashboard', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views upcoming races
|
|
// Given I am a registered driver "John Doe"
|
|
// And I have multiple upcoming races scheduled
|
|
// When I am on the Dashboard page
|
|
// Then I should see the "Upcoming Schedule" section
|
|
// And I should see up to 3 upcoming races
|
|
// And each race should show track name, car type, date, and time until
|
|
});
|
|
|
|
test('Driver sees championship standings on the dashboard', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views their championship standings
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am participating in active championships
|
|
// When I am on the Dashboard page
|
|
// Then I should see the "Championship Standings" section
|
|
// And I should see each league name I'm participating in
|
|
// And I should see my current position in each league
|
|
// And I should see my current points in each league
|
|
// And I should see the total number of drivers in each league
|
|
});
|
|
|
|
test('Driver sees recent activity feed on the dashboard', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views recent activity
|
|
// Given I am a registered driver "John Doe"
|
|
// And I have recent race results or other events
|
|
// When I am on the Dashboard page
|
|
// Then I should see the "Recent Activity" section
|
|
// And I should see activity items with type, description, and timestamp
|
|
// And race results should be marked with success status
|
|
// And other events should be marked with info status
|
|
});
|
|
|
|
test('Driver sees empty state when no upcoming races exist', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver with no upcoming races
|
|
// Given I am a registered driver "John Doe"
|
|
// And I have no upcoming races scheduled
|
|
// When I am on the Dashboard page
|
|
// Then I should see the "Upcoming Schedule" section
|
|
// And I should see a message indicating no upcoming races
|
|
});
|
|
|
|
test('Driver sees empty state when no championship standings exist', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver with no active championships
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am not participating in any active championships
|
|
// When I am on the Dashboard page
|
|
// Then I should see the "Championship Standings" section
|
|
// And I should see a message indicating no active championships
|
|
});
|
|
|
|
test('Driver sees empty state when no recent activity exists', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver with no recent activity
|
|
// Given I am a registered driver "John Doe"
|
|
// And I have no recent race results or events
|
|
// When I am on the Dashboard page
|
|
// Then I should see the "Recent Activity" section
|
|
// And I should see a message indicating no recent activity
|
|
});
|
|
|
|
test('Dashboard displays KPI overview with correct values', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views KPI overview
|
|
// Given I am a registered driver "John Doe"
|
|
// When I am on the Dashboard page
|
|
// Then I should see a KPI row with 6 items:
|
|
// - Rating (primary intent)
|
|
// - Rank (warning intent)
|
|
// - Starts (default intent)
|
|
// - Wins (success intent)
|
|
// - Podiums (warning intent)
|
|
// - Leagues (default intent)
|
|
});
|
|
});
|