Mock HTML Fixtures
Simplified HTML fixtures for E2E testing of the iRacing hosted session automation workflow.
Purpose
These fixtures replace full-page iRacing dumps with lightweight, testable HTML pages that simulate the iRacing hosted session wizard. They are designed for use with the FixtureServer to test browser automation adapters in isolation.
Files
| File | Step | Description |
|---|---|---|
step-02-hosted-racing.html |
2 | Landing page with "Create a Race" button |
step-03-create-race.html |
3 | Race Information - session name, password, description |
step-04-race-information.html |
4 | Server Details - region, start time |
step-05-server-details.html |
5 | Set Admins - admin list management |
step-06-set-admins.html |
7 | Time Limits - practice, qualify, race durations |
step-07-add-admin.html |
6 | Add Admin Modal - search and select admin |
step-08-time-limits.html |
8 | Set Cars - car list management |
step-09-set-cars.html |
10 | Set Car Classes - multi-class configuration |
step-10-add-car.html |
9 | Add Car Modal - search and select cars |
step-11-set-car-classes.html |
11 | Set Track - track selection |
step-12-set-track.html |
13 | Track Options - configuration, dynamic track |
step-13-add-track.html |
12 | Add Track Modal - search and select track |
step-14-track-options.html |
14 | Time of Day - time slider, date, simulated time |
step-15-time-of-day.html |
15 | Weather - type, temperature, humidity |
step-16-weather.html |
16 | Race Options - max drivers, start type, cautions |
step-17-race-options.html |
17 | Team Driving - enable teams, min/max drivers |
step-18-track-conditions.html |
18 | Track Conditions - track state, marbles, rubber |
common.css |
- | Shared styles for all fixtures |
Data Attributes
All fixtures use consistent data-* attributes for reliable automation:
Navigation
data-action="create"- Create a Race button (step 2)data-action="next"- Next step buttondata-action="back"- Previous step buttondata-action="confirm"- Confirm modal actiondata-action="cancel"- Cancel modal actiondata-action="select"- Select item from list
Step Identification
data-step="N"- Step number on body elementdata-indicator="name"- Step indicator element
Form Fields
data-field="name"- Text/number inputs and textareasdata-dropdown="name"- Select dropdownsdata-toggle="name"- Checkbox togglesdata-slider="name"- Range slider inputs
Modals
data-modal="true"- Modal container (on body)data-modal-trigger="type"- Button that opens a modal
Lists
data-list="name"- List containerdata-item="id"- Selectable list item
Usage with FixtureServer
import { FixtureServer } from '@infrastructure/adapters/automation/FixtureServer';
const server = new FixtureServer({ fixturesPath: 'resources/mock-fixtures' });
await server.start();
// Navigate to step 2
await page.goto(`${server.baseUrl}/step-02-hosted-racing.html`);
// Use data attributes for automation
await page.click('[data-action="create"]');
await page.fill('[data-field="sessionName"]', 'My Race');
await page.click('[data-action="next"]');
Selector Strategy
Use attribute selectors for reliable automation:
const SELECTORS = {
stepContainer: (step: number) => `[data-step="${step}"]`,
nextButton: '[data-action="next"]',
backButton: '[data-action="back"]',
field: (name: string) => `[data-field="${name}"]`,
dropdown: (name: string) => `[data-dropdown="${name}"]`,
toggle: (name: string) => `[data-toggle="${name}"]`,
slider: (name: string) => `[data-slider="${name}"]`,
modal: '[data-modal="true"]',
modalTrigger: (type: string) => `[data-modal-trigger="${type}"]`,
};
Design Principles
- Explicit Test Attributes: Every interactive element has stable
data-*attributes - Minimal HTML: Only essential structure, no framework artifacts
- Self-Contained: Each fixture includes shared CSS via
common.css - Navigation-Aware: Buttons link to appropriate next/previous fixtures
- Form Fields Match Domain: Field names align with
HostedSessionConfigentity
Testing Verification
For each fixture, verify:
data-stepattribute present on bodydata-indicatorpresent for step identification- All navigation buttons have
data-action - All form fields have appropriate
data-*attributes - Modal fixtures have
data-modal="true" - Navigation links point to correct fixtures