mirror of
https://github.com/callstack/agent-device.git
synced 2026-09-14 20:06:34 +08:00
4e4ecdea0d
* 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
54 lines
1.7 KiB
TypeScript
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,
|
|
},
|
|
});
|