617 lines
26 KiB
TypeScript
617 lines
26 KiB
TypeScript
/**
|
|
* BDD E2E Test: League Roster
|
|
*
|
|
* Tests the league roster page that displays:
|
|
* - List of league members
|
|
* - Member roles (driver, admin, owner)
|
|
* - Member join dates
|
|
* - Member management (for admins)
|
|
* - Member search and filtering
|
|
*
|
|
* Focus: Final user outcomes - what the driver sees and can verify
|
|
*/
|
|
|
|
import { test, expect } from '@playwright/test';
|
|
|
|
test.describe('League Roster', () => {
|
|
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 a league roster page
|
|
});
|
|
|
|
test('Driver sees list of league members', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views league members
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see a list of league members
|
|
// And each member should display their name
|
|
// And each member should display their role
|
|
});
|
|
|
|
test('Driver sees member roles', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member roles
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see role indicators for each member
|
|
// And owner should be marked as "Owner"
|
|
// And admins should be marked as "Admin"
|
|
// And drivers should be marked as "Driver"
|
|
});
|
|
|
|
test('Driver sees member join dates', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member join dates
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see the join date for each member
|
|
// And the date should be formatted correctly
|
|
});
|
|
|
|
test('Driver can search for members by name', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver searches for members
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// When I enter a driver name in the search field
|
|
// Then I should see members matching the search
|
|
// And I should not see members that don't match
|
|
});
|
|
|
|
test('Driver can filter members by role', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver filters members by role
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// When I select "Admin" role filter
|
|
// Then I should only see admin members
|
|
// And I should not see drivers or owners
|
|
});
|
|
|
|
test('Driver can clear member search and filters', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver clears search and filters
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// And I have entered a search query
|
|
// And I have selected a role filter
|
|
// When I click "Clear Filters"
|
|
// Then I should see all league members again
|
|
// And the search field should be empty
|
|
// And the role filter should be reset
|
|
});
|
|
|
|
test('Driver can view member profile', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member profile
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// When I click on a member name
|
|
// Then I should be navigated to the member's profile page
|
|
// And I should see the member's profile information
|
|
});
|
|
|
|
test('Admin can promote member to admin', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Admin promotes member to admin
|
|
// Given I am a league admin for "European GT League"
|
|
// And I am on the "European GT League" roster page
|
|
// When I select a driver member
|
|
// And I click "Promote to Admin"
|
|
// Then the member should be promoted to admin
|
|
// And I should see a confirmation message
|
|
});
|
|
|
|
test('Admin can demote admin to driver', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Admin demotes admin to driver
|
|
// Given I am a league admin for "European GT League"
|
|
// And I am on the "European GT League" roster page
|
|
// When I select an admin member
|
|
// And I click "Demote to Driver"
|
|
// Then the member should be demoted to driver
|
|
// And I should see a confirmation message
|
|
});
|
|
|
|
test('Admin can remove member from league', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Admin removes member from league
|
|
// Given I am a league admin for "European GT League"
|
|
// And I am on the "European GT League" roster page
|
|
// When I select a driver member
|
|
// And I click "Remove from League"
|
|
// Then the member should be removed from the league
|
|
// And I should see a confirmation message
|
|
});
|
|
|
|
test('Admin cannot remove owner from league', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Admin tries to remove owner
|
|
// Given I am a league admin for "European GT League"
|
|
// And I am on the "European GT League" roster page
|
|
// When I select the owner member
|
|
// Then I should not see the "Remove from League" option
|
|
// And I should see that the owner cannot be removed
|
|
});
|
|
|
|
test('Admin cannot demote owner', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Admin tries to demote owner
|
|
// Given I am a league admin for "European GT League"
|
|
// And I am on the "European GT League" roster page
|
|
// When I select the owner member
|
|
// Then I should not see the "Demote to Driver" option
|
|
// And I should see that the owner cannot be demoted
|
|
});
|
|
|
|
test('Driver cannot manage members if not admin', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Non-admin tries to manage members
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// And I am not an admin of the league
|
|
// Then I should not see member management options
|
|
// And I should only see view-only access
|
|
});
|
|
|
|
test('Driver sees member count', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver sees member count
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see the total number of league members
|
|
// And the count should be accurate
|
|
});
|
|
|
|
test('Driver sees admin count', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver sees admin count
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see the number of admins in the league
|
|
// And the count should be accurate
|
|
});
|
|
|
|
test('Driver sees driver count', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver sees driver count
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see the number of drivers in the league
|
|
// And the count should be accurate
|
|
});
|
|
|
|
test('Driver sees pending membership requests', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Admin views pending membership requests
|
|
// Given I am a league admin for "European GT League"
|
|
// And I am on the "European GT League" roster page
|
|
// And there are pending membership requests
|
|
// Then I should see a section for pending requests
|
|
// And I should see the list of drivers requesting to join
|
|
});
|
|
|
|
test('Admin can approve membership request', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Admin approves membership request
|
|
// Given I am a league admin for "European GT League"
|
|
// And I am on the "European GT League" roster page
|
|
// And there is a pending membership request
|
|
// When I click "Approve" on the request
|
|
// Then the driver should be added to the league
|
|
// And I should see a confirmation message
|
|
});
|
|
|
|
test('Admin can reject membership request', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Admin rejects membership request
|
|
// Given I am a league admin for "European GT League"
|
|
// And I am on the "European GT League" roster page
|
|
// And there is a pending membership request
|
|
// When I click "Reject" on the request
|
|
// Then the request should be rejected
|
|
// And I should see a confirmation message
|
|
});
|
|
|
|
test('Driver sees their own membership status', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver sees their own membership status
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// And I am a member of the league
|
|
// Then I should see myself in the roster
|
|
// And I should see my membership status
|
|
});
|
|
|
|
test('Driver sees member statistics', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member statistics
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see statistics for each member
|
|
// And statistics should include rating, rank, starts, wins, podiums
|
|
});
|
|
|
|
test('Driver sees member recent activity', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member recent activity
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see recent activity for each member
|
|
// And activity should include race results, penalties, protests
|
|
});
|
|
|
|
test('Driver sees member league participation', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member league participation
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see league participation for each member
|
|
// And participation should include races, championships, etc.
|
|
});
|
|
|
|
test('Driver sees member sponsorships', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member sponsorships
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see sponsorships for each member
|
|
// And sponsorships should include sponsor names and amounts
|
|
});
|
|
|
|
test('Driver sees member wallet balance', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member wallet balance
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see wallet balance for each member
|
|
// And the balance should be displayed as currency amount
|
|
});
|
|
|
|
test('Driver sees member pending payouts', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member pending payouts
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see pending payouts for each member
|
|
// And the payouts should be displayed as currency amount
|
|
});
|
|
|
|
test('Driver sees member total revenue', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member total revenue
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see total revenue for each member
|
|
// And the revenue should be displayed as currency amount
|
|
});
|
|
|
|
test('Driver sees member total fees', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member total fees
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see total fees for each member
|
|
// And the fees should be displayed as currency amount
|
|
});
|
|
|
|
test('Driver sees member net balance', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member net balance
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see net balance for each member
|
|
// And the net balance should be displayed as currency amount
|
|
});
|
|
|
|
test('Driver sees member transaction count', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member transaction count
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see transaction count for each member
|
|
// And the count should be accurate
|
|
});
|
|
|
|
test('Driver sees member average transaction amount', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member average transaction amount
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see average transaction amount for each member
|
|
// And the amount should be displayed as currency amount
|
|
});
|
|
|
|
test('Driver sees member total race time', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member total race time
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see total race time for each member
|
|
// And the time should be formatted correctly
|
|
});
|
|
|
|
test('Driver sees member average race time', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member average race time
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see average race time for each member
|
|
// And the time should be formatted correctly
|
|
});
|
|
|
|
test('Driver sees member best lap time', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member best lap time
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see best lap time for each member
|
|
// And the time should be formatted correctly
|
|
});
|
|
|
|
test('Driver sees member average lap time', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member average lap time
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see average lap time for each member
|
|
// And the time should be formatted correctly
|
|
});
|
|
|
|
test('Driver sees member consistency score', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member consistency score
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see consistency score for each member
|
|
// And the score should be displayed as percentage or numeric value
|
|
});
|
|
|
|
test('Driver sees member aggression score', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member aggression score
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see aggression score for each member
|
|
// And the score should be displayed as percentage or numeric value
|
|
});
|
|
|
|
test('Driver sees member safety score', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member safety score
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see safety score for each member
|
|
// And the score should be displayed as percentage or numeric value
|
|
});
|
|
|
|
test('Driver sees member racecraft score', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member racecraft score
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see racecraft score for each member
|
|
// And the score should be displayed as percentage or numeric value
|
|
});
|
|
|
|
test('Driver sees member overall rating', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member overall rating
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see overall rating for each member
|
|
// And the rating should be displayed as stars or numeric value
|
|
});
|
|
|
|
test('Driver sees member rating trend', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member rating trend
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see rating trend for each member
|
|
// And the trend should show improvement or decline
|
|
});
|
|
|
|
test('Driver sees member rank trend', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member rank trend
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see rank trend for each member
|
|
// And the trend should show improvement or decline
|
|
});
|
|
|
|
test('Driver sees member points trend', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member points trend
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see points trend for each member
|
|
// And the trend should show improvement or decline
|
|
});
|
|
|
|
test('Driver sees member win rate trend', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member win rate trend
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see win rate trend for each member
|
|
// And the trend should show improvement or decline
|
|
});
|
|
|
|
test('Driver sees member podium rate trend', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member podium rate trend
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see podium rate trend for each member
|
|
// And the trend should show improvement or decline
|
|
});
|
|
|
|
test('Driver sees member DNF rate trend', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member DNF rate trend
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see DNF rate trend for each member
|
|
// And the trend should show improvement or decline
|
|
});
|
|
|
|
test('Driver sees member incident rate trend', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member incident rate trend
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see incident rate trend for each member
|
|
// And the trend should show improvement or decline
|
|
});
|
|
|
|
test('Driver sees member penalty rate trend', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member penalty rate trend
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see penalty rate trend for each member
|
|
// And the trend should show improvement or decline
|
|
});
|
|
|
|
test('Driver sees member protest rate trend', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member protest rate trend
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see protest rate trend for each member
|
|
// And the trend should show improvement or decline
|
|
});
|
|
|
|
test('Driver sees member stewarding action rate trend', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member stewarding action rate trend
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see stewarding action rate trend for each member
|
|
// And the trend should show improvement or decline
|
|
});
|
|
|
|
test('Driver sees member stewarding time trend', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member stewarding time trend
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see stewarding time trend for each member
|
|
// And the trend should show improvement or decline
|
|
});
|
|
|
|
test('Driver sees member protest resolution time trend', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member protest resolution time trend
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see protest resolution time trend for each member
|
|
// And the trend should show improvement or decline
|
|
});
|
|
|
|
test('Driver sees member penalty appeal success rate trend', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member penalty appeal success rate trend
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see penalty appeal success rate trend for each member
|
|
// And the trend should show improvement or decline
|
|
});
|
|
|
|
test('Driver sees member protest success rate trend', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member protest success rate trend
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see protest success rate trend for each member
|
|
// And the trend should show improvement or decline
|
|
});
|
|
|
|
test('Driver sees member stewarding action success rate trend', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member stewarding action success rate trend
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see stewarding action success rate trend for each member
|
|
// And the trend should show improvement or decline
|
|
});
|
|
|
|
test('Driver sees member stewarding action appeal success rate trend', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member stewarding action appeal success rate trend
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see stewarding action appeal success rate trend for each member
|
|
// And the trend should show improvement or decline
|
|
});
|
|
|
|
test('Driver sees member stewarding action penalty success rate trend', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member stewarding action penalty success rate trend
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see stewarding action penalty success rate trend for each member
|
|
// And the trend should show improvement or decline
|
|
});
|
|
|
|
test('Driver sees member stewarding action protest success rate trend', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member stewarding action protest success rate trend
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see stewarding action protest success rate trend for each member
|
|
// And the trend should show improvement or decline
|
|
});
|
|
|
|
test('Driver sees member stewarding action appeal penalty success rate trend', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member stewarding action appeal penalty success rate trend
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see stewarding action appeal penalty success rate trend for each member
|
|
// And the trend should show improvement or decline
|
|
});
|
|
|
|
test('Driver sees member stewarding action appeal protest success rate trend', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member stewarding action appeal protest success rate trend
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see stewarding action appeal protest success rate trend for each member
|
|
// And the trend should show improvement or decline
|
|
});
|
|
|
|
test('Driver sees member stewarding action penalty protest success rate trend', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member stewarding action penalty protest success rate trend
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see stewarding action penalty protest success rate trend for each member
|
|
// And the trend should show improvement or decline
|
|
});
|
|
|
|
test('Driver sees member stewarding action appeal penalty protest success rate trend', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member stewarding action appeal penalty protest success rate trend
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see stewarding action appeal penalty protest success rate trend for each member
|
|
// And the trend should show improvement or decline
|
|
});
|
|
|
|
test('Driver sees member stewarding action appeal penalty protest resolution time trend', async ({ page }) => {
|
|
// TODO: Implement test
|
|
// Scenario: Driver views member stewarding action appeal penalty protest resolution time trend
|
|
// Given I am a registered driver "John Doe"
|
|
// And I am on the "European GT League" roster page
|
|
// Then I should see stewarding action appeal penalty protest resolution time trend for each member
|
|
// And the trend should show improvement or decline
|
|
});
|
|
});
|