diff --git a/app/apps/shell-super-app/shared/ultramodern-build.ts b/app/apps/shell-super-app/shared/ultramodern-build.ts index 94ee4f1c4..93519a289 100644 --- a/app/apps/shell-super-app/shared/ultramodern-build.ts +++ b/app/apps/shell-super-app/shared/ultramodern-build.ts @@ -55,3 +55,4 @@ const ultramodernBuildArtifact = resolveUltramodernBuildArtifact( ); export const ultramodernDeliveryUnit = ultramodernBuildArtifact.deliveryUnit; +export const ultramodernUiMarker = ultramodernBuildArtifact.surfaces.ui; diff --git a/app/apps/shell-super-app/src/routes/layout.tsx b/app/apps/shell-super-app/src/routes/layout.tsx index 499f6c48e..60b781778 100644 --- a/app/apps/shell-super-app/src/routes/layout.tsx +++ b/app/apps/shell-super-app/src/routes/layout.tsx @@ -1,10 +1,12 @@ import { Outlet } from '@modern-js/plugin-tanstack/runtime'; +import { ultramodernUiMarker } from '../../shared/ultramodern-build.ts'; + import './ui-kit.css'; import './index.css'; const Layout = () => ( -
+
); diff --git a/app/apps/shell-super-app/tests/unit/layout.test.tsx b/app/apps/shell-super-app/tests/unit/layout.test.tsx index 8652cca56..d42d5726f 100644 --- a/app/apps/shell-super-app/tests/unit/layout.test.tsx +++ b/app/apps/shell-super-app/tests/unit/layout.test.tsx @@ -11,6 +11,7 @@ import { afterEach, expect, it, rstest, test } from 'effect-rstest'; import type { ComponentProps, ReactNode } from 'react'; import { AppIdSchema } from '../../shared/api'; +import { ultramodernUiMarker } from '../../shared/ultramodern-build.ts'; import Layout from '../../src/routes/layout'; import { AuthenticatedDashboardLayout } from '../../src/routes/shell-frame'; @@ -153,6 +154,13 @@ test('leaves route content free of global user-perceivable UI', () => { expect(document.body.textContent?.trim()).toBe('Current route'); }); +test('marks every server-rendered Shell route with its UI release marker', () => { + const { container } = render(); + + const root = container.querySelector('[data-app-id="shell-super-app"]'); + expect(root?.dataset['buildMarker']).toBe(ultramodernUiMarker.build); +}); + test('renders the default Home dashboard contract and preserves page children', () => { render( ( +
+ +
+); + +export default LanguageLayout; diff --git a/app/verticals/party-registry/tests/components/language-layout.test.tsx b/app/verticals/party-registry/tests/components/language-layout.test.tsx new file mode 100644 index 000000000..7b0db15ee --- /dev/null +++ b/app/verticals/party-registry/tests/components/language-layout.test.tsx @@ -0,0 +1,19 @@ +import { cleanup, render } from '@testing-library/react'; +import { afterEach, expect, rstest, test } from 'effect-rstest'; + +import { ultramodernUiMarker } from '../../shared/ultramodern-build.ts'; +import LanguageLayout from '../../src/routes/[lang]/layout.tsx'; + +rstest.mock('@modern-js/plugin-tanstack/runtime', () => ({ + Outlet: () =>
Current route
, +})); + +afterEach(cleanup); + +test('marks every localized Party Registry route with its UI release marker', () => { + const { container } = render(); + + const root = container.querySelector('[data-build-marker]'); + expect(root?.dataset['buildMarker']).toBe(ultramodernUiMarker.build); + expect(root?.textContent).toBe('Current route'); +});