diff --git a/website/src/__tests__/public-marketing-pages.test.tsx b/website/src/__tests__/public-marketing-pages.test.tsx index 7585e3d..56a3e43 100644 --- a/website/src/__tests__/public-marketing-pages.test.tsx +++ b/website/src/__tests__/public-marketing-pages.test.tsx @@ -1036,7 +1036,44 @@ describe('public marketing pages', () => { role: null, accessStatus: null, }, - platforms: [], + platforms: [ + { + platform_key: 'windows', + platform: 'Windows', + subtitle: 'Primary shipping lane', + details: 'Current packaged validation is strongest on the Windows Unreal lane.', + configured: true, + channel: 'candidate', + version: '1.0.0', + build_id: 'win64-1000', + published_at: '2026-06-22T00:00:00.000Z', + file_name: 'HyperTwist-Windows.zip', + file_size_bytes: 1048576, + checksum_sha256: 'abc123', + download_url: null, + download_available: false, + validation_summary: { + lane: 'Windows Unreal packaged validation', + result: 'passed', + generated_at: '2026-06-22T01:43:08.7625247Z', + configuration: 'Development', + skip_build: true, + smoke_map_count: 2, + smoke_maps: [ + { + map_url: '/Game/HyperTwistTraining/Maps/L_HyperTwist_Magic120CellTraining', + label: 'Magic120Cell dedicated-family training map', + result: 'passed', + }, + { + map_url: '/Game/HyperTwistTraining/Maps/L_HyperTwist_MagicCube5DTraining', + label: 'MagicCube5D dedicated-family training map', + result: 'passed', + }, + ], + }, + }, + ], }, }) @@ -1049,6 +1086,8 @@ describe('public marketing pages', () => { expect(screen.getByText('Release rollout checklist')).toBeTruthy() expect(screen.getByText('Read the actual lane that changed')).toBeTruthy() expect(screen.getByText(/Pair the release note with the current packaged-validation summary/i)).toBeTruthy() + expect(screen.getByText('Current packaged desktop proof')).toBeTruthy() + expect(screen.getByText('Packaged validation passed')).toBeTruthy() expect(await screen.findByRole('link', { name: /open release feed/i })).toBeTruthy() expect(document.title).toBe('HyperTwist release notes | HyperTwist') expect(document.head.querySelector('meta[property=\"og:url\"]')?.getAttribute('content')).toBe('https://hypertwist.app/changelog') @@ -1107,13 +1146,52 @@ describe('public marketing pages', () => { role: null, accessStatus: null, }, - platforms: [], + platforms: [ + { + platform_key: 'windows', + platform: 'Windows', + subtitle: 'Primary shipping lane', + details: 'Current packaged validation is strongest on the Windows Unreal lane.', + configured: true, + channel: 'candidate', + version: '1.0.0', + build_id: 'win64-1000', + published_at: '2026-06-22T00:00:00.000Z', + file_name: 'HyperTwist-Windows.zip', + file_size_bytes: 1048576, + checksum_sha256: 'abc123', + download_url: null, + download_available: false, + validation_summary: { + lane: 'Windows Unreal packaged validation', + result: 'passed', + generated_at: '2026-06-22T01:43:08.7625247Z', + configuration: 'Development', + skip_build: true, + smoke_map_count: 2, + smoke_maps: [ + { + map_url: '/Game/HyperTwistTraining/Maps/L_HyperTwist_Magic120CellTraining', + label: 'Magic120Cell dedicated-family training map', + result: 'passed', + }, + { + map_url: '/Game/HyperTwistTraining/Maps/L_HyperTwist_MagicCube5DTraining', + label: 'MagicCube5D dedicated-family training map', + result: 'passed', + }, + ], + }, + }, + ], }, }) - renderWithProviders(, ['/open-source-notices']) - expect(screen.getByText('Distribution doctrine')).toBeTruthy() - expect(screen.getByText('Public pages are distribution surfaces')).toBeTruthy() + const noticesView = renderWithProviders(, ['/open-source-notices']) + expect(within(noticesView.container).getByText('Distribution doctrine')).toBeTruthy() + expect(within(noticesView.container).getByText('Public pages are distribution surfaces')).toBeTruthy() + expect(within(noticesView.container).getByText('Current packaged desktop proof')).toBeTruthy() + expect(within(noticesView.container).getByText('Packaged validation passed')).toBeTruthy() renderWithProviders(, ['/privacy']) expect(screen.getByText('Practical privacy boundary')).toBeTruthy() @@ -1123,8 +1201,10 @@ describe('public marketing pages', () => { expect(screen.getByText('Terms in practice')).toBeTruthy() expect(screen.getByText('Access model')).toBeTruthy() - renderWithProviders(, ['/shipping-payment']) - expect(screen.getByText('Digital delivery workflow')).toBeTruthy() - expect(screen.getByText('Protected entitlement handoff')).toBeTruthy() + const shippingPaymentView = renderWithProviders(, ['/shipping-payment']) + expect(within(shippingPaymentView.container).getByText('Digital delivery workflow')).toBeTruthy() + expect(within(shippingPaymentView.container).getByText('Protected entitlement handoff')).toBeTruthy() + expect(within(shippingPaymentView.container).getByText('Current packaged desktop proof')).toBeTruthy() + expect(within(shippingPaymentView.container).getByText('Packaged validation passed')).toBeTruthy() }) }) diff --git a/website/src/pages/public-pages-commerce.tsx b/website/src/pages/public-pages-commerce.tsx index 5383d5d..550b837 100644 --- a/website/src/pages/public-pages-commerce.tsx +++ b/website/src/pages/public-pages-commerce.tsx @@ -338,6 +338,10 @@ export function OpenSourceNoticesPage() { () => resolveReleaseManifestView(releaseManifestQuery.data?.manifest, buildPublicReleaseManifestFallback()), [releaseManifestQuery.data?.manifest], ) + const windowsValidationPlatform = useMemo( + () => releaseManifest.platforms.find((platform) => platform.platform_key === 'windows' && platform.validation_summary) ?? null, + [releaseManifest], + ) return ( <> @@ -399,6 +403,20 @@ export function OpenSourceNoticesPage() { + {windowsValidationPlatform ? ( +
+ +
+ + Open download center + + + Review release notes + +
+
+ ) : null} +
resolveReleaseManifestView(releaseManifestQuery.data?.manifest, buildPublicReleaseManifestFallback()), + [releaseManifestQuery.data?.manifest], + ) + const windowsValidationPlatform = useMemo( + () => releaseManifest.platforms.find((platform) => platform.platform_key === 'windows' && platform.validation_summary) ?? null, + [releaseManifest], + ) + return ( <>
+ + {windowsValidationPlatform ? ( +
+ +
+ + Open download center + + + Review notices + +
+
+ ) : null} ) diff --git a/website/src/pages/public-pages-marketing.tsx b/website/src/pages/public-pages-marketing.tsx index 59d6256..08b1079 100644 --- a/website/src/pages/public-pages-marketing.tsx +++ b/website/src/pages/public-pages-marketing.tsx @@ -876,6 +876,10 @@ export function ChangelogPage() { () => resolveReleaseManifestView(releaseManifestQuery.data?.manifest, buildPublicReleaseManifestFallback()), [releaseManifestQuery.data?.manifest], ) + const windowsValidationPlatform = useMemo( + () => releaseManifest.platforms.find((platform) => platform.platform_key === 'windows' && platform.validation_summary) ?? null, + [releaseManifest], + ) return ( <> @@ -938,6 +942,20 @@ export function ChangelogPage() { + {windowsValidationPlatform ? ( +
+ +
+ + Open download center + + + Open public manual + +
+
+ ) : null} + {releaseManifest.release_notes_url ? (