import { describe, it, expect, beforeEach, afterEach } from 'vitest'; import type { StepHarness } from '../support/StepHarness'; import { createStepHarness } from '../support/StepHarness'; import { IRACING_SELECTORS } from 'packages/automation/infrastructure/adapters/automation/dom/IRacingSelectors'; describe('Step 4 – server details', () => { let harness: StepHarness; beforeEach(async () => { harness = await createStepHarness(); }); afterEach(async () => { await harness.dispose(); }); it('executes on Server Details page, applies region/start toggle, and progresses toward Admins', async () => { await harness.navigateToFixtureStep(4); const page = harness.adapter.getPage(); expect(page).not.toBeNull(); const sidebarServerDetails = await page! .locator(IRACING_SELECTORS.wizard.sidebarLinks.serverDetails) .first() .innerText(); expect(sidebarServerDetails).toMatch(/Server Details/i); const serverDetailsContainer = page! .locator(IRACING_SELECTORS.wizard.stepContainers.serverDetails) .first(); expect(await serverDetailsContainer.count()).toBeGreaterThan(0); const config = { region: 'US-East-OH', startNow: true, }; const result = await harness.executeStep(4, config); expect(result.success).toBe(true); expect(result.error).toBeUndefined(); const currentServerHeader = await page! .locator('#set-server-details button:has-text("Current Server")') .first() .innerText(); expect(currentServerHeader.toLowerCase()).toContain('us-east'); const startToggle = page! .locator(IRACING_SELECTORS.steps.startNow) .first(); const startNowChecked = (await startToggle.getAttribute('checked')) !== null || (await startToggle.getAttribute('aria-checked')) === 'true'; expect(startNowChecked).toBe(true); const footerText = await page!.textContent('.wizard-footer'); expect(footerText).toMatch(/Admins/i); }); });