import { expect, test } from '@playwright/test';
import { expectNoA11yViolations } from './support/axe';

/**
 * História 09 — Widgets e banners (ADR-016): um widget colocado por **perfil de URL** aparece no
 * slot do portal, renderizado no servidor (sem import entre módulos) e acessível.
 *
 * Pré-condição: `php artisan db:seed` (perfil global `*` com `demo.status` em `main.right` e o grupo
 * `noticias` vazio).
 */
test.describe('Widgets e banners', () => {
  test('o widget do perfil aparece no slot do portal', async ({ page }) => {
    await page.goto('/');

    const widget = page.locator('[data-widget="demo.status"]');

    await expect(widget).toBeVisible();
    await expect(widget.getByRole('heading')).toBeVisible();

    await expectNoA11yViolations(page);
  });

  test('o perfil por grupo de URL vence o global e colapsa a região vazia', async ({ page }) => {
    // O grupo sem prefixo de locale é servido por nomes `default.*` (ADR-012): se o resolvedor não
    // normalizasse, o perfil de `noticias` sumiria em `/noticias` e só apareceria em `/en/noticias`.
    await page.goto('/noticias');

    const grid = page.locator('.layout-grid');

    // O perfil do grupo vence o global: sem widget e com a coluna direita colapsada.
    await expect(grid).toHaveAttribute('data-right', 'false');
    await expect(page.locator('[data-widget="demo.status"]')).toHaveCount(0);

    await expectNoA11yViolations(page);
  });
});
