Files
festipod/src/app/App.tsx
T
Sylvain Duchesne 708cbeead8 E2E testing infrastructure, NextGraph connection fixes, and documentation
- Add @e2e test layer: real app in broker iframe via Playwright
- Fix broker redirect: conditional auto-init only when inside iframe
- Fix seed data flash: empty data during 'connecting' phase
- Fix Gallery button in iframe: explicit navigate instead of history.back
- Add auth e2e feature scenarios and step definitions
- Update docs: bdd-testing, data-layer-testing, data-layer, AGENTS.md
- Add decision record for conditional NG init approach

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 17:51:44 +01:00

58 lines
1.5 KiB
TypeScript

import React from 'react';
import { RouterProvider, useRouter } from './router';
import { ThemeProvider } from '../shared/context/ThemeContext';
import { NextGraphProvider } from '../shared/context/NextGraphContext';
import { FestipodDataProvider } from '../shared/context/FestipodDataContext';
import { Gallery } from './components/Gallery';
import { DemoMode } from './components/DemoMode';
import { SpecsPage } from './components/specs';
function AppContent() {
const { route, navigate, goBack } = useRouter();
if (route.page === 'demo') {
return (
<DemoMode
initialScreenId={route.screenId}
onBack={() => navigate({ page: 'gallery' })}
onNavigateToStory={(storyId) => navigate({ page: 'specs', storyId })}
/>
);
}
if (route.page === 'specs') {
return (
<SpecsPage
selectedFeatureId={route.featureId}
selectedStoryId={route.storyId}
onBack={goBack}
onSelectScreen={(screenId) => navigate({ page: 'demo', screenId })}
onSelectStory={(storyId) => navigate({ page: 'specs', storyId })}
/>
);
}
return (
<Gallery
onSelectScreen={(screenId) => navigate({ page: 'demo', screenId })}
onShowSpecs={() => navigate({ page: 'specs' })}
/>
);
}
export function App() {
return (
<ThemeProvider>
<NextGraphProvider>
<FestipodDataProvider>
<RouterProvider>
<AppContent />
</RouterProvider>
</FestipodDataProvider>
</NextGraphProvider>
</ThemeProvider>
);
}
export default App;