Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/run-e2e-smoke-tests-android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ jobs:
fail-fast: false
uses: ./.github/workflows/run-e2e-workflow.yml
with:
test-suite-name: prediction_market_android_smoke-${{ matrix.split }}
test-suite-name: prediction-market-android-smoke-${{ matrix.split }}
platform: android
test_suite_tag: 'SmokePredictions'
split_number: ${{ matrix.split }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/run-e2e-smoke-tests-ios.yml
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ jobs:
fail-fast: false
uses: ./.github/workflows/run-e2e-workflow.yml
with:
test-suite-name: prediction_market_ios_smoke-${{ matrix.split }}
test-suite-name: prediction-market-ios-smoke-${{ matrix.split }}
platform: ios
test_suite_tag: 'SmokePredictions'
split_number: ${{ matrix.split }}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,6 @@ interface TestDescriptors {
[key: string]: TestTabDescriptor;
}

// Force rewards feature flag to be enabled for this test file
jest.mock('../../../../selectors/featureFlagController/rewards', () => ({
selectRewardsEnabledFlag: () => true,
}));

// Mock trending tokens feature flag selector
jest.mock('../../../../selectors/featureFlagController/assetsTrendingTokens');

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,12 @@ import {
LABEL_BY_TAB_BAR_ICON_KEY,
} from './TabBar.constants';
import { selectChainId } from '../../../../selectors/networkController';
import { selectRewardsEnabledFlag } from '../../../../selectors/featureFlagController/rewards';
import { selectAssetsTrendingTokensEnabled } from '../../../../selectors/featureFlagController/assetsTrendingTokens';

const TabBar = ({ state, descriptors, navigation }: TabBarProps) => {
const { trackEvent, createEventBuilder } = useMetrics();
const { bottom: bottomInset } = useSafeAreaInsets();
const chainId = useSelector(selectChainId);
const isRewardsEnabled = useSelector(selectRewardsEnabledFlag);
const isAssetsTrendingTokensEnabled = useSelector(
selectAssetsTrendingTokensEnabled,
);
Expand Down Expand Up @@ -86,9 +84,7 @@ const TabBar = ({ state, descriptors, navigation }: TabBarProps) => {
navigation.navigate(Routes.TRANSACTIONS_VIEW);
break;
case Routes.REWARDS_VIEW:
if (isRewardsEnabled) {
navigation.navigate(Routes.REWARDS_VIEW);
}
navigation.navigate(Routes.REWARDS_VIEW);
break;
case Routes.SETTINGS_VIEW:
navigation.navigate(Routes.SETTINGS_VIEW, {
Expand Down Expand Up @@ -127,7 +123,6 @@ const TabBar = ({ state, descriptors, navigation }: TabBarProps) => {
trackEvent,
createEventBuilder,
tw,
isRewardsEnabled,
isAssetsTrendingTokensEnabled,
],
);
Expand Down
72 changes: 27 additions & 45 deletions app/components/Nav/Main/MainNavigator.js
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,6 @@ import {
PredictModalStack,
selectPredictEnabledFlag,
} from '../../UI/Predict';
import { selectRewardsEnabledFlag } from '../../../selectors/featureFlagController/rewards';
import { selectAssetsTrendingTokensEnabled } from '../../../selectors/featureFlagController/assetsTrendingTokens';
import PerpsPositionTransactionView from '../../UI/Perps/Views/PerpsTransactionsView/PerpsPositionTransactionView';
import PerpsOrderTransactionView from '../../UI/Perps/Views/PerpsTransactionsView/PerpsOrderTransactionView';
Expand Down Expand Up @@ -526,7 +525,6 @@ const HomeTabs = () => {
const [isKeyboardHidden, setIsKeyboardHidden] = useState(true);

const accountsLength = useSelector(selectAccountsLength);
const isRewardsEnabled = useSelector(selectRewardsEnabledFlag);
const rewardsSubscription = useSelector(selectRewardsSubscriptionId);
const isAssetsTrendingTokensEnabled = useSelector(
selectAssetsTrendingTokensEnabled,
Expand Down Expand Up @@ -649,11 +647,7 @@ const HomeTabs = () => {
const currentRoute = state.routes[state.index];

// Hide tab bar for rewards onboarding splash screen
if (
currentRoute.name?.startsWith('Rewards') &&
isRewardsEnabled &&
!rewardsSubscription
) {
if (currentRoute.name?.startsWith('Rewards') && !rewardsSubscription) {
return null;
}

Expand Down Expand Up @@ -715,21 +709,12 @@ const HomeTabs = () => {
component={TransactionsHome}
layout={({ children }) => <UnmountOnBlur>{children}</UnmountOnBlur>}
/>
{isRewardsEnabled ? (
<Tab.Screen
name={Routes.REWARDS_VIEW}
options={options.rewards}
component={RewardsHome}
layout={({ children }) => UnmountOnBlurComponent(children)}
/>
) : (
<Tab.Screen
name={Routes.SETTINGS_VIEW}
options={options.settings}
component={SettingsFlow}
layout={({ children }) => UnmountOnBlurComponent(children)}
/>
)}
<Tab.Screen
name={Routes.REWARDS_VIEW}
options={options.rewards}
component={RewardsHome}
layout={({ children }) => UnmountOnBlurComponent(children)}
/>
</Tab.Navigator>
);
};
Expand Down Expand Up @@ -948,7 +933,6 @@ const MainNavigator = () => {
const { enabled: isSendRedesignEnabled } = useSelector(
selectSendRedesignFlags,
);
const isRewardsEnabled = useSelector(selectRewardsEnabledFlag);

return (
<Stack.Navigator
Expand Down Expand Up @@ -1008,28 +992,26 @@ const MainNavigator = () => {
component={ConfirmAddAsset}
options={{ headerShown: true }}
/>
{isRewardsEnabled && (
<Stack.Screen
name={Routes.SETTINGS_VIEW}
component={SettingsFlow}
options={{
headerShown: false,
animationEnabled: true,
cardStyleInterpolator: ({ current, layouts }) => ({
cardStyle: {
transform: [
{
translateX: current.progress.interpolate({
inputRange: [0, 1],
outputRange: [layouts.screen.width, 0],
}),
},
],
},
}),
}}
/>
)}
<Stack.Screen
name={Routes.SETTINGS_VIEW}
component={SettingsFlow}
options={{
headerShown: false,
animationEnabled: true,
cardStyleInterpolator: ({ current, layouts }) => ({
cardStyle: {
transform: [
{
translateX: current.progress.interpolate({
inputRange: [0, 1],
outputRange: [layouts.screen.width, 0],
}),
},
],
},
}),
}}
/>
<Stack.Screen name="Asset" component={AssetModalFlow} />
<Stack.Screen name="Webview" component={Webview} />
<Stack.Screen name="SendView" component={SendView} />
Expand Down
59 changes: 11 additions & 48 deletions app/components/Nav/Main/MainNavigator.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,18 +12,14 @@ jest.mock('./MainNavigator', () => {
const {
TabBarIconKey,
} = require('../../../component-library/components/Navigation/TabBar/TabBar.types');
const {
selectRewardsEnabledFlag,
} = require('../../../selectors/featureFlagController/rewards');
const {
selectAssetsTrendingTokensEnabled,
} = require('../../../selectors/featureFlagController/assetsTrendingTokens');
const { selectBrowserFullscreen } = require('../../../selectors/browser');
const Routes = require('../../../constants/navigation/Routes').default;

// Mock implementation that tests tab visibility based on rewards flag and browser fullscreen state
// Mock implementation that tests tab visibility based on browser fullscreen state
return function MockMainNavigator({ route }) {
const isRewardsEnabled = selectRewardsEnabledFlag();
const isTrendingEnabled = selectAssetsTrendingTokensEnabled();
const isBrowserFullscreen = selectBrowserFullscreen();

Expand Down Expand Up @@ -62,21 +58,11 @@ jest.mock('./MainNavigator', () => {
}),
);

// Add Rewards tab if enabled
if (isRewardsEnabled) {
tabs.push(
React.createElement(View, {
key: 'rewards',
testID: `tab-bar-item-${TabBarIconKey.Rewards}`,
}),
);
}

// Add Settings tab (always shown at the end)
// Add Rewards tab
tabs.push(
React.createElement(View, {
key: 'settings',
testID: `tab-bar-item-${TabBarIconKey.Setting}`,
key: 'rewards',
testID: `tab-bar-item-${TabBarIconKey.Rewards}`,
}),
);

Expand All @@ -86,7 +72,6 @@ jest.mock('./MainNavigator', () => {

// Mock the rewards selector
jest.mock('../../../selectors/featureFlagController/rewards', () => ({
selectRewardsEnabledFlag: jest.fn(),
selectRewardsSubscriptionId: jest.fn().mockReturnValue(null),
}));

Expand All @@ -103,21 +88,18 @@ jest.mock('../../../selectors/browser', () => ({
selectBrowserFullscreen: jest.fn(),
}));

import { selectRewardsEnabledFlag } from '../../../selectors/featureFlagController/rewards';
import { selectAssetsTrendingTokensEnabled } from '../../../selectors/featureFlagController/assetsTrendingTokens';
import { selectBrowserFullscreen } from '../../../selectors/browser';
import MainNavigator from './MainNavigator';

describe('MainNavigator', () => {
beforeEach(() => {
jest.clearAllMocks();
selectRewardsEnabledFlag.mockReturnValue(false);
selectAssetsTrendingTokensEnabled.mockReturnValue(false);
selectBrowserFullscreen.mockReturnValue(false);
});

it('shows Browser tab when trending feature flag is off', () => {
selectRewardsEnabledFlag.mockReturnValue(false);
selectAssetsTrendingTokensEnabled.mockReturnValue(false);

const { getByTestId, queryByTestId } = render(<MainNavigator />);
Expand All @@ -126,11 +108,10 @@ describe('MainNavigator', () => {
expect(queryByTestId('tab-bar-item-Trending')).toBeNull();
expect(getByTestId('tab-bar-item-Wallet')).toBeDefined();
expect(getByTestId('tab-bar-item-Trade')).toBeDefined();
expect(getByTestId('tab-bar-item-Setting')).toBeDefined();
expect(getByTestId('tab-bar-item-Rewards')).toBeDefined();
});

it('shows Trending tab and hides Browser tab when trending feature flag is on', () => {
selectRewardsEnabledFlag.mockReturnValue(false);
selectAssetsTrendingTokensEnabled.mockReturnValue(true);

const { getByTestId, queryByTestId } = render(<MainNavigator />);
Expand All @@ -139,37 +120,20 @@ describe('MainNavigator', () => {
expect(queryByTestId('tab-bar-item-Browser')).toBeNull();
expect(getByTestId('tab-bar-item-Wallet')).toBeDefined();
expect(getByTestId('tab-bar-item-Trade')).toBeDefined();
expect(getByTestId('tab-bar-item-Setting')).toBeDefined();
});

it('shows Settings tab when rewards feature flag is off', () => {
selectRewardsEnabledFlag.mockReturnValue(false);
selectAssetsTrendingTokensEnabled.mockReturnValue(false);

const { getByTestId, queryByTestId } = render(<MainNavigator />);

expect(getByTestId('tab-bar-item-Setting')).toBeDefined();
expect(queryByTestId('tab-bar-item-Rewards')).toBeNull();
expect(getByTestId('tab-bar-item-Wallet')).toBeDefined();
expect(getByTestId('tab-bar-item-Browser')).toBeDefined();
expect(getByTestId('tab-bar-item-Trade')).toBeDefined();
expect(getByTestId('tab-bar-item-Rewards')).toBeDefined();
});

it('shows Rewards tab when rewards feature flag is on', () => {
selectRewardsEnabledFlag.mockReturnValue(true);
selectAssetsTrendingTokensEnabled.mockReturnValue(false);

it('should show Rewards tab', () => {
const { getByTestId } = render(<MainNavigator />);

expect(getByTestId('tab-bar-item-Rewards')).toBeDefined();
expect(getByTestId('tab-bar-item-Setting')).toBeDefined();
// Verify other core tabs are present
expect(getByTestId('tab-bar-item-Wallet')).toBeDefined();
expect(getByTestId('tab-bar-item-Browser')).toBeDefined();
expect(getByTestId('tab-bar-item-Trade')).toBeDefined();
});

it('shows Trending and Rewards tabs and hides Browser tab when both feature flags are on', () => {
selectRewardsEnabledFlag.mockReturnValue(true);
selectAssetsTrendingTokensEnabled.mockReturnValue(true);

const { getByTestId, queryByTestId } = render(<MainNavigator />);
Expand All @@ -179,7 +143,6 @@ describe('MainNavigator', () => {
expect(queryByTestId('tab-bar-item-Browser')).toBeNull();
expect(getByTestId('tab-bar-item-Wallet')).toBeDefined();
expect(getByTestId('tab-bar-item-Trade')).toBeDefined();
expect(getByTestId('tab-bar-item-Setting')).toBeDefined();
});

it('should show navbar tabs when browser is not in fullscreen mode', () => {
Expand All @@ -193,7 +156,7 @@ describe('MainNavigator', () => {
expect(getByTestId('tab-bar-item-Wallet')).toBeDefined();
expect(getByTestId('tab-bar-item-Browser')).toBeDefined();
expect(getByTestId('tab-bar-item-Trade')).toBeDefined();
expect(getByTestId('tab-bar-item-Setting')).toBeDefined();
expect(getByTestId('tab-bar-item-Rewards')).toBeDefined();
});

it('should not show navbar when browser is in fullscreen mode', () => {
Expand All @@ -209,7 +172,7 @@ describe('MainNavigator', () => {
expect(queryByTestId('tab-bar-item-Wallet')).toBeNull();
expect(queryByTestId('tab-bar-item-Browser')).toBeNull();
expect(queryByTestId('tab-bar-item-Trade')).toBeNull();
expect(queryByTestId('tab-bar-item-Setting')).toBeNull();
expect(queryByTestId('tab-bar-item-Rewards')).toBeNull();
});

it('should show navbar tabs when browser is in fullscreen mode but on non-browser route', () => {
Expand All @@ -225,7 +188,7 @@ describe('MainNavigator', () => {
expect(getByTestId('tab-bar-item-Wallet')).toBeDefined();
expect(getByTestId('tab-bar-item-Browser')).toBeDefined();
expect(getByTestId('tab-bar-item-Trade')).toBeDefined();
expect(getByTestId('tab-bar-item-Setting')).toBeDefined();
expect(getByTestId('tab-bar-item-Rewards')).toBeDefined();
});

it('should return null when isBrowserFullscreen is true AND route starts with BrowserTabHome', () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ exports[`MainNavigator should match snapshot when browser is not infullscreen mo
testID="tab-bar-item-Activity"
/>
<View
testID="tab-bar-item-Setting"
testID="tab-bar-item-Rewards"
/>
</View>
`;
11 changes: 11 additions & 0 deletions app/components/Nav/Main/__snapshots__/MainNavigator.test.tsx.snap
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,17 @@ exports[`MainNavigator matches rendered snapshot 1`] = `
}
}
/>
<Screen
component={[Function]}
name="SettingsView"
options={
{
"animationEnabled": true,
"cardStyleInterpolator": [Function],
"headerShown": false,
}
}
/>
<Screen
component={[Function]}
name="Asset"
Expand Down
Loading
Loading