TenantAtlas/apps/website/tests/smoke/changelog-core-ia.spec.ts
ahmido be314c577f Spec 400: rebuild Tenantial homepage visuals (#387)
## Summary
- rebuild the public Tenantial homepage around an evidence-first Microsoft tenant governance narrative
- replace the old hero visual with a new static dashboard preview and add dedicated Trust Bar and Feature Pillars sections
- update the shared public shell, navigation, footer, dark design tokens, assets, and homepage content to match the new brand direction
- align website smoke coverage and Spec 400 artifacts with the rebuilt homepage

## Testing
- not run in this pass
- updated website smoke specs under apps/website/tests/smoke

## Note
- `website-dev` was pushed to `origin` so the requested PR base exists remotely
- the remote `website-dev` branch is an ancestor of `origin/dev`, so this PR may also show upstream `dev` history relative to that base

Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de>
Reviewed-on: #387
2026-05-18 14:38:11 +00:00

48 lines
2.4 KiB
TypeScript

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 publishes Tenantial homepage navigation without dead template routes', async ({ page }) => {
await visitPage(page, '/');
const header = page.getByRole('banner');
const footer = page.getByRole('contentinfo');
await expect(header.getByRole('link', { name: 'Platform', exact: true })).toHaveAttribute('href', '/product');
await expect(header.getByRole('link', { name: 'Solutions', exact: true })).toHaveAttribute('href', '/solutions');
await expect(header.getByRole('link', { name: 'Resources', exact: true })).toHaveAttribute('href', '/changelog');
await expect(header.getByRole('link', { name: 'Pricing', exact: true })).toHaveAttribute('href', '/contact');
await expect(header.getByRole('link', { name: 'Company', exact: true })).toHaveAttribute('href', '/contact');
await expect(header.getByRole('link', { name: 'Book a demo', exact: true })).toHaveAttribute('href', '/contact');
await expect(header.locator('[data-nav-state="deferred"]').filter({ hasText: 'Sign in' }).first()).toBeVisible();
await expect(header.getByRole('link', { name: 'Security & Trust' })).toHaveCount(0);
for (const group of ['Platform', 'Solutions', 'Resources', 'Pricing', 'Company', 'Contact', 'Legal', 'Privacy', 'Security']) {
await expect(footer.getByText(group, { exact: true }).first()).toBeVisible();
}
await expect(footer.getByRole('link', { name: 'Articles' })).toHaveCount(0);
await expect(footer.getByRole('link', { name: 'Security & Trust' })).toHaveCount(0);
});