import { expect, test } from '@playwright/test';

import {
    expectDisclosureLayer,
    expectFooterLinks,
    expectNavigationVsCtaDifferentiation,
    expectPageFamily,
    expectPrimaryNavigation,
    expectShell,
    visitPage,
} from './smoke-helpers';

test('changelog publishes dated progress without displacing the contact path', async ({ page }) => {
    await visitPage(page, '/changelog');
    await expectShell(page, /changelog|product progress|visible progress/i);
    await expectPageFamily(page, 'content');
    await expectDisclosureLayer(page, '1');
    await expectDisclosureLayer(page, '2');
    await expectPrimaryNavigation(page);
    await expectNavigationVsCtaDifferentiation(page);
    await expectFooterLinks(page);
    await expect(page.getByText('Initial core pages and IA realignment')).toBeVisible();
    await expect(page.getByRole('main').getByRole('link', { name: 'Start the working session' }).first()).toBeVisible();
});

test('core IA keeps optional and deferred surfaces out of the published navigation contract', async ({ page }) => {
    await visitPage(page, '/');

    const header = page.getByRole('banner');
    const footer = page.getByRole('contentinfo');

    await expect(header.getByRole('link', { name: 'Resources' })).toHaveCount(0);
    await expect(header.getByRole('link', { name: 'Solutions' })).toHaveCount(0);
    await expect(header.getByRole('link', { name: 'Integrations' })).toHaveCount(0);
    await expect(header.getByRole('link', { name: 'Security & Trust' })).toHaveCount(0);

    await expect(footer.getByRole('link', { name: 'Resources' })).toHaveCount(0);
    await expect(footer.getByRole('link', { name: 'Articles' })).toHaveCount(0);
    await expect(footer.getByRole('link', { name: 'Security & Trust' })).toHaveCount(0);
});
