const { test, expect } = require('@playwright/test');
const AxeBuilder = require('@axe-core/playwright').default;

test.use({ viewport: { width: 1920, height: 1080 } });

test.describe('home', () => {
  test('home renders Carbon Blue hero + recent projects + zero axe violations', async ({ page }, testInfo) => {
    await page.goto('/');
    await page.screenshot({ path: 'test-results/home.png', fullPage: true });

    // Hero region must be present.
    await expect(page.locator('.homepage-hero')).toBeVisible();

    // Either the grid OR the empty state must be present.
    const grid = page.locator('.home-recent__grid');
    const empty = page.locator('.home-recent__empty');
    await expect(grid.or(empty)).toBeVisible();

    const results = await new AxeBuilder({ page })
      .withTags(['wcag2a', 'wcag2aa', 'wcag21a', 'wcag21aa', 'wcag22a', 'wcag22aa'])
      .analyze();
    await testInfo.attach('axe', {
      body: JSON.stringify(results, null, 2),
      contentType: 'application/json',
    });
    expect(results.violations).toEqual([]);
  });
});
