import { describe, it, expect, beforeEach, afterEach } from 'vitest'; import type { StepHarness } from '../support/StepHarness'; import { createStepHarness } from '../support/StepHarness'; import { CheckoutConfirmation } from 'packages/domain/value-objects/CheckoutConfirmation'; describe('Step 17 – team driving', () => { let harness: StepHarness; beforeEach(async () => { harness = await createStepHarness(); }); afterEach(async () => { await harness.dispose(); }); it('executes on Team Driving page and completes without checkout', async () => { await harness.navigateToFixtureStep(17); const page = harness.adapter.getPage(); expect(page).not.toBeNull(); const bodyText = await page!.textContent('body'); expect(bodyText).toMatch(/Team Driving|Track Conditions/i); const result = await harness.executeStep(17, { trackState: 'medium', }); expect(result.success).toBe(true); expect(result.error).toBeUndefined(); }); it('requests checkout confirmation and uses the user decision', async () => { await harness.navigateToFixtureStep(17); let called = false; harness.adapter.setCheckoutConfirmationCallback(async (price, state) => { called = true; expect(price).toBeDefined(); expect(state).toBeDefined(); return CheckoutConfirmation.create('confirmed'); }); const result = await harness.executeStep(17, { trackState: 'medium', }); expect(result.success).toBe(true); expect(result.error).toBeUndefined(); expect(called).toBe(true); }); });