173 lines
7.2 KiB
Gherkin
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 |