import { describe, it, expect, beforeEach, afterEach } from 'vitest';
import type { StepHarness } from '../support/StepHarness';
import { createStepHarness } from '../support/StepHarness';

describe('Step 11 – track', () => {
  describe('state validation', () => {
    let harness: StepHarness;

    beforeEach(async () => {
      harness = await createStepHarness();
    });

    afterEach(async () => {
      await harness.dispose();
    });

    it('fails validation when executed on Cars page instead of Track page', async () => {
      await harness.navigateToFixtureStep(8);
      await harness.adapter.getPage()?.waitForLoadState('domcontentloaded');

      await expect(async () => {
        await harness.executeStep(11, {});
      }).rejects.toThrow(/Step 11 FAILED validation/i);
    });

    it('passes validation when on Track page', async () => {
      await harness.navigateToFixtureStep(11);
      await harness.adapter.getPage()?.waitForLoadState('domcontentloaded');

      const result = await harness.executeStep(11, {});

      expect(result.success).toBe(true);
    });
  });
});