import { describe, it, expect, beforeEach, afterEach } from 'vitest';
import type { StepHarness } from '../support/StepHarness';
import { createStepHarness } from '../support/StepHarness';
import { IRACING_SELECTORS } from 'core/automation/infrastructure//automation/dom/IRacingSelectors';

describe('Step 2 – create race', () => {
  let harness: StepHarness;

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

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

  it('opens the real Create Race confirmation modal with Last Settings / New Race options', async () => {
    await harness.navigateToFixtureStep(2);
    const page = harness.adapter.getPage();
    expect(page).not.toBeNull();
  
    const bodyTextBefore = await page!.textContent('body');
    expect(bodyTextBefore).toContain('Create a Race');
  
    const result = await harness.executeStep(2, {});
  
    expect(result.success).toBe(true);
    expect(result.error).toBeUndefined();
  
    await page!.waitForSelector(
      IRACING_SELECTORS.hostedRacing.createRaceModal,
    );
  
    const modalText = await page!.textContent(
      IRACING_SELECTORS.hostedRacing.createRaceModal,
    );
    expect(modalText).toMatch(/Last Settings/i);
    expect(modalText).toMatch(/New Race/i);
  
    const lastSettingsButton = await page!.$(
      IRACING_SELECTORS.hostedRacing.lastSettingsButton,
    );
    const newRaceButton = await page!.$(
      IRACING_SELECTORS.hostedRacing.newRaceButton,
    );
  
    expect(lastSettingsButton).not.toBeNull();
    expect(newRaceButton).not.toBeNull();
  });
});