test: add QA coverage — access unit tests, VideoPlayer snapshots, Maestro E2E flows, testIDs

- Add testIDs to explore, workout detail, and collection detail screens
- Add testID prop to VideoPlayer component
- Create access service unit tests (isFreeWorkout, canAccessWorkout)
- Create VideoPlayer rendering snapshot tests (preview/background modes)
- Create Maestro E2E flows: explore-freemium, collection-detail
- Update tab-navigation flow with Explore screen assertions
- Update profile-settings flow with real activity stat assertions
- Update all-tests suite to include new flows
This commit is contained in:
Millian Lamiaux
2026-03-24 12:40:02 +01:00
parent a042c348c1
commit 4fa8be600c
12 changed files with 742 additions and 13 deletions

View File

@@ -79,10 +79,10 @@ export default function CollectionDetailScreen() {
}
return (
<View style={[styles.container, { paddingTop: insets.top }]}>
<View testID="collection-detail-screen" style={[styles.container, { paddingTop: insets.top }]}>
{/* Header */}
<View style={styles.header}>
<Pressable onPress={handleBack} style={styles.backButton}>
<Pressable testID="collection-back-button" onPress={handleBack} style={styles.backButton}>
<Ionicons name="chevron-back" size={24} color={colors.text.primary} />
</Pressable>
<StyledText size={22} weight="bold" color={colors.text.primary} numberOfLines={1} style={{ flex: 1, textAlign: 'center' }}>
@@ -97,7 +97,7 @@ export default function CollectionDetailScreen() {
showsVerticalScrollIndicator={false}
>
{/* Hero Card */}
<View style={styles.heroCard}>
<View testID="collection-hero" style={styles.heroCard}>
<LinearGradient
colors={collection.gradient ?? [BRAND.PRIMARY, '#FF3B30']}
start={{ x: 0, y: 0 }}
@@ -133,6 +133,7 @@ export default function CollectionDetailScreen() {
{workouts.map((workout) => (
<Pressable
key={workout.id}
testID={`collection-workout-${workout.id}`}
style={styles.workoutCard}
onPress={() => handleWorkoutPress(workout.id)}
>