Files
gridpilot.gg/tests/e2e/features/hosted-session-automation.feature

173 lines
7.2 KiB
Gherkin

Feature: Hosted Session Automation
As a league organizer using the GridPilot companion app
I want to automate the iRacing hosted session creation workflow
So that I can quickly set up race sessions without manual data entry
Background:
Given the companion app is running
And I am authenticated with iRacing
And I have a valid session configuration
Scenario: Complete 18-step automation workflow
Given I have a session configuration with:
| field | value |
| sessionName | League Race Week 1 |
| trackId | spa |
| carIds | dallara-f3 |
When I start the automation session
Then the session should be created with state "PENDING"
And the current step should be 1
When the automation progresses through all 18 steps
Then step 1 should navigate to "Hosted Racing"
And step 2 should click "Create a Race"
And step 3 should fill "Race Information"
And step 4 should configure "Server Details"
And step 5 should access "Set Admins"
And step 6 should handle "Add an Admin" modal
And step 7 should set "Time Limits"
And step 8 should access "Set Cars"
And step 9 should handle "Add a Car" modal
And step 10 should configure "Set Car Classes"
And step 11 should access "Set Track"
And step 12 should handle "Add a Track" modal
And step 13 should configure "Track Options"
And step 14 should set "Time of Day"
And step 15 should configure "Weather"
And step 16 should set "Race Options"
And step 17 should configure "Team Driving"
And step 18 should reach "Track Conditions"
And the session should stop at step 18
And the session state should be "STOPPED_AT_STEP_18"
And a manual submit warning should be displayed
Scenario: Modal step handling (step 6 - Add Admin)
Given I have started an automation session
And the automation has reached step 6
When the "Add an Admin" modal appears
Then the automation should detect the modal
And the automation should wait for modal content to load
And the automation should fill admin fields
And the automation should close the modal
And the automation should transition to step 7
Scenario: Modal step handling (step 9 - Add Car)
Given I have started an automation session
And the automation has reached step 9
When the "Add a Car" modal appears
Then the automation should detect the modal
And the automation should select the car "dallara-f3"
And the automation should confirm the selection
And the automation should close the modal
And the automation should transition to step 10
Scenario: Modal step handling (step 12 - Add Track)
Given I have started an automation session
And the automation has reached step 12
When the "Add a Track" modal appears
Then the automation should detect the modal
And the automation should select the track "spa"
And the automation should confirm the selection
And the automation should close the modal
And the automation should transition to step 13
Scenario: Safety checkpoint at step 18
Given I have started an automation session
And the automation has progressed to step 17
When the automation transitions to step 18
Then the automation should automatically stop
And the session state should be "STOPPED_AT_STEP_18"
And the current step should be 18
And no submit action should be executed
And a notification should inform the user to review before submitting
Scenario: Pause and resume automation
Given I have started an automation session
And the automation is at step 5
When I pause the automation
Then the session state should be "PAUSED"
And the current step should remain 5
When I resume the automation
Then the session state should be "IN_PROGRESS"
And the automation should continue from step 5
Scenario: Automation failure handling
Given I have started an automation session
And the automation is at step 8
When a browser automation error occurs
Then the session should transition to "FAILED" state
And an error message should be recorded
And the session should have a completedAt timestamp
And the user should be notified of the failure
Scenario: Invalid configuration rejection
Given I have a session configuration with:
| field | value |
| sessionName | |
| trackId | spa |
| carIds | dallara-f3|
When I attempt to start the automation session
Then the session creation should fail
And an error message should indicate "Session name cannot be empty"
And no session should be persisted
Scenario: Sequential step progression enforcement
Given I have started an automation session
And the automation is at step 5
When I attempt to skip directly to step 7
Then the transition should be rejected
And an error message should indicate "Cannot skip steps"
And the current step should remain 5
Scenario: Backward step prevention
Given I have started an automation session
And the automation has reached step 10
When I attempt to move back to step 9
Then the transition should be rejected
And an error message should indicate "Cannot move backward"
And the current step should remain 10
Scenario: Multiple car selection
Given I have a session configuration with:
| field | value |
| sessionName | Multi-class Race |
| trackId | spa |
| carIds | dallara-f3,porsche-911-gt3,bmw-m4-gt4 |
When I start the automation session
And the automation reaches step 9
Then all three cars should be added via the modal
And the automation should handle the modal three times
And the automation should transition to step 10
Scenario: Session state persistence
Given I have started an automation session
And the automation has reached step 12
When the application restarts
Then the session should be recoverable from storage
And the session state should be "IN_PROGRESS"
And the current step should be 12
And the session configuration should be intact
Scenario: Concurrent session prevention
Given I have started an automation session
And the session is in progress
When I attempt to start another automation session
Then the second session creation should be queued or rejected
And a warning should inform about the active session
Scenario: Elapsed time tracking
Given I have started an automation session
When the automation runs for 5 seconds
And I query the session status
Then the elapsed time should be approximately 5000 milliseconds
And the elapsed time should increase while in progress
Scenario: Complete workflow with realistic timings
Given I have a session configuration
When I start the automation session
Then each step should take between 200ms and 1000ms
And modal steps should take longer than regular steps
And the total workflow should complete in under 30 seconds
And the session should stop at step 18 without submitting