Skip to content

chore(test): add test-tabs-general-appearance-android scenario#4118

Open
LKuchno wants to merge 14 commits into
mainfrom
@lkuchno/test-tabs-general-apperance-android
Open

chore(test): add test-tabs-general-appearance-android scenario#4118
LKuchno wants to merge 14 commits into
mainfrom
@lkuchno/test-tabs-general-apperance-android

Conversation

@LKuchno

@LKuchno LKuchno commented Jun 1, 2026

Copy link
Copy Markdown
Collaborator

Description

Adds a new manual test scenario for Android tab bar general appearance, covering the standardAppearance properties of TabsScreenAppearanceAndroid. The scenario provides four tabs: Default, Label, Ripple, and Indicator - each statically or interactively demonstrating a distinct subset of the Android tab bar appearance API: default system rendering, dynamic tabBarItemLabelVisibilityMode, transient ripple color with indicator disabled, and persistent active indicator with ripple.

Closes: https://github.com/software-mansion/react-native-screens-labs/issues/1402

Changes

  • Tests/Android: Added new test-tabs-general-appearance-android scenario directory with index.tsx, scenario-description.ts, and scenario.md
  • Tests/Android: index.tsx implements four tab screens (Default, Label, Ripple, Indicator) exercising tabBarItemLabelVisibilityMode, tabBarBackgroundColor, tabBarItemRippleColor, tabBarItemActiveIndicatorEnabled, and tabBarItemActiveIndicatorColor via standardAppearance
  • Tests/Android: scenario.md documents manual test steps with visual assertions covering label visibility mode cycling, transient ripple behaviour, and persistent active indicator rendering
  • Tests: Registered TestTabsGeneralAppearance in apps/src/tests/single-feature-tests/tabs/index.ts

Test visual documentation

test-tabs-general-appearance-android.mov

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new manual (non-e2e) Android-focused Tabs scenario that exercises standardAppearance customization points (label visibility mode, background color, ripple, and active indicator) to validate tab bar rendering and runtime updates.

Changes:

  • Added a new Android tab bar appearance manual test scenario (code + metadata + written steps).
  • Implemented four tabs (Default / Label / Ripple / Indicator) to showcase distinct appearance configurations and one interactive control for label visibility.
  • Registered the new scenario in the Tabs single-feature test group.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 27 comments.

File Description
apps/src/tests/single-feature-tests/tabs/test-tabs-general-appearance-android/scenario.md Manual test steps and visual assertions for tab bar appearance behaviors.
apps/src/tests/single-feature-tests/tabs/test-tabs-general-appearance-android/scenario-description.ts Scenario metadata (name/key/platforms/e2e coverage).
apps/src/tests/single-feature-tests/tabs/test-tabs-general-appearance-android/index.tsx Scenario implementation: four tabs and per-tab standardAppearance configurations.
apps/src/tests/single-feature-tests/tabs/index.ts Registers the new scenario in the Tabs scenario group.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +3 to +7
import {
TabRouteConfig,
TabsContainer,
useTabsNavigationContext,
} from '@apps/shared/gamma/containers/tabs';

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Applied as its used this way in other tests.

import { Colors } from '@apps/shared/styling';
import { DEFAULT_TAB_ROUTE_OPTIONS } from '@apps/shared/gamma/containers/tabs';
import { SettingsPicker } from '@apps/shared';
import { TabsScreenAppearanceAndroid } from 'react-native-screens';

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't import TabsScreenAppearanceAndroid as type in other tests so I kept this version.

Comment on lines +81 to +83
<Text style={styles.hint}>
`tabBarItemLabelVisibilityMode`: 'selected'
{'\n'}
Comment on lines +106 to +108
<Text style={styles.hint}>
`tabBarItemLabelVisibilityMode`: 'selected'
{'\n'}
Comment on lines +125 to +135
const ROUTE_CONFIGS: TabRouteConfig[] = [
{
name: 'Default',
Component: DefaultTab,
options: {
title: 'Default',
android: {
...DEFAULT_TAB_ROUTE_OPTIONS.android,
},
},
},
Comment on lines +66 to +67
- [ ] "Default" becomes selected and its label is now
shown. The label for other tabs are no longer visible.
Comment on lines 23 to 24


Comment on lines +139 to +147
options: {
title: 'Label',
android: {
...DEFAULT_TAB_ROUTE_OPTIONS.android,
standardAppearance: {
tabBarItemLabelVisibilityMode: 'auto',
},
},
},
Comment on lines +152 to +165
options: {
title: 'Ripple',
android: {
...DEFAULT_TAB_ROUTE_OPTIONS.android,
standardAppearance: {
tabBarBackgroundColor: Colors.NavyDark100,
tabBarItemRippleColor: Colors.YellowDark100,
tabBarItemActiveIndicatorEnabled: false,
tabBarItemActiveIndicatorColor: Colors.GreenLight100,
tabBarItemLabelVisibilityMode: 'labeled',

},
},
},
Comment on lines +170 to +182
options: {
title: 'Indicator',
android: {
...DEFAULT_TAB_ROUTE_OPTIONS.android,
standardAppearance: {
tabBarBackgroundColor: Colors.PurpleDark100,
tabBarItemRippleColor: Colors.YellowDark100,
tabBarItemActiveIndicatorEnabled: true,
tabBarItemActiveIndicatorColor: Colors.GreenLight100,
tabBarItemLabelVisibilityMode: 'labeled',
},
},
},
@LKuchno LKuchno added platform:android Issue related to Android part of the library area:tabs Issue related to bottom tabs labels Jun 1, 2026
@LKuchno LKuchno requested a review from kkafar June 2, 2026 09:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:tabs Issue related to bottom tabs platform:android Issue related to Android part of the library

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants