Files
callstack__agent-device/examples/test-app/app/_layout.tsx
Michał Pierzchała 4e4ecdea0d test(ios): expand simulator e2e coverage (#1408)
* test(ios): expand simulator e2e coverage

* test(ios): make coverage checks host portable

* test(ios): handle deep link confirmation

* test(ios): fix deep link prompt selector

* ci: stabilize full simulator nightly

* test(ios): stabilize permission prompt lifecycle

* test(e2e): wait for route-specific landmarks

* test(e2e): reset permissions from inactive app

* test(e2e): redeliver trusted cold deep links

* test(ios): verify orientation native readback

* test(ios): stabilize simulator permission coverage

* test(ios): wait for tab target after deep link

* test(ios): paginate full event timeline

* test(ios): simplify event pagination coverage

* test(ios): stabilize simulator e2e coverage

* test(ios): model simulator recorder lifetime

* ci(test-app): cache fixture dependencies

* fix(ci): isolate test app cache by node

* fix(ios): settle fixture route navigation

* test(ci): waive unbenchmarked ios system UI help

* fix(ios): tolerate delayed simulator scale lookup

* 0.20.1

* test(ci): remove superseded system UI waiver

* fix(ios): harden simulator e2e reliability

* chore: clarify Apple runner CI steps

* fix(ios): wait before fixture home snapshot

* fix(ios): require exact catalog navigation

* chore(ci): format rebased workflows

* fix(ios): retry unobserved fixture navigation

* refactor(test): remove iOS e2e workarounds

* fix(ci): verify fixture artifact provenance

* fix(ci): align fixture artifact fingerprints

* fix(ci): use unified Android helper packager

* perf(ci): scope fixture build concurrency

* chore: format fixture artifact tests

* test(ios): update split Apple coverage owner

* fix(ios): accept deep-link confirmation alerts
2026-07-28 20:08:45 +02:00

54 lines
1.7 KiB
TypeScript

import { Stack } from 'expo-router';
import { ThemeProvider } from 'expo-router/react-navigation';
import { StatusBar } from 'expo-status-bar';
import { StyleSheet } from 'react-native';
import { GestureHandlerRootView } from 'react-native-gesture-handler';
import { SafeAreaProvider } from 'react-native-safe-area-context';
import { ToastViewport } from '../src/components';
import { LabStateProvider, useLabState } from '../src/lab-state';
import { getNavigationTheme, useAppColors } from '../src/theme';
function RootLayoutContent() {
const colors = useAppColors();
const { toastMessage } = useLabState();
return (
<ThemeProvider value={getNavigationTheme(colors)}>
<StatusBar style={colors.mode === 'light' ? 'dark' : 'light'} />
<Stack
screenOptions={{
contentStyle: { backgroundColor: colors.surface },
headerShown: false,
}}
>
<Stack.Screen name="(tabs)" />
<Stack.Screen name="accessory-setup" />
<Stack.Screen name="automation" options={{ headerShown: true, title: 'Automation' }} />
<Stack.Screen name="inert" options={{ presentation: 'fullScreenModal' }} />
<Stack.Screen name="product/[productId]" />
<Stack.Screen name="webview" />
</Stack>
{toastMessage ? <ToastViewport message={toastMessage} /> : null}
</ThemeProvider>
);
}
export default function RootLayout() {
return (
<GestureHandlerRootView style={styles.root}>
<SafeAreaProvider>
<LabStateProvider>
<RootLayoutContent />
</LabStateProvider>
</SafeAreaProvider>
</GestureHandlerRootView>
);
}
const styles = StyleSheet.create({
root: {
flex: 1,
},
});