Skip to content

Commit cc49072

Browse files
authored
Merge branch 'main' into fix/direct-musd-vault-7702-mobile
2 parents 51baae3 + c5fd381 commit cc49072

11 files changed

Lines changed: 61 additions & 14 deletions

File tree

.github/guidelines/E2E_DECISION_TREE.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,10 @@ Runs only when all of the following are true:
4646
- Label `skip-e2e` can be added to the PR to skip E2E tests (and builds) in case of infra issues.
4747
- Using this label should be exceptional in case of CI friction and urgencies. Verify new changes and regressions manually before merging.
4848

49+
## (Exceptional) force Appium iOS smoke tests on PRs
50+
51+
Appium iOS smoke tests are skipped on PRs by default (they still run on every `main` push/schedule). To also run them on a PR, add the `run-appium-ios-tests` label. Smart E2E Selection still controls which suites run. CI re-runs automatically when the label is added or removed.
52+
4953
## E2E flakiness detection in PRs
5054

5155
Flakiness detection is applied to modified E2E test files in PRs:

.github/guidelines/LABELING_GUIDELINES.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,10 @@ Using any of these labels should be exceptional in case of CI friction and urgen
4343

4444
- **run-performance-tests**: Forces the PR performance E2E workflow to run (all performance tests on Android low-profile devices), even when Smart E2E Selection would skip them (e.g. no performance-relevant changes detected, `skip-e2e`, or `pr-not-ready-for-e2e`). Adding or removing this label re-triggers CI. Not honored on fork PRs.
4545

46+
### Force Appium iOS Smoke Tests
47+
48+
- **run-appium-ios-tests**: Also runs Appium iOS smoke tests on a PR (normally they run only on `main` push/schedule). Uses the same Smart E2E Selection tags as Detox/Appium Android — it does not bypass path filters, build gates, or AI tag selection. Remove `pr-not-ready-for-e2e` when the PR is ready for E2E validation. Adding or removing this label re-triggers CI. Not honored on fork PRs.
49+
4650
### Block merge if any is present
4751

4852
- **needs-qa**: The PR requires a full manual QA prior to being merged and added to a release.

.github/workflows/ci.yml

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1231,18 +1231,29 @@ jobs:
12311231

12321232
appium-smoke-tests-ios:
12331233
name: 'Appium Smoke Tests (iOS)'
1234+
# Main push/schedule: always run when the iOS build succeeded.
1235+
# PRs: skipped by default; add run-appium-ios-tests to also run Appium iOS
1236+
# (same smart-selected tags as other E2E jobs).
12341237
if: >-
12351238
${{
12361239
!cancelled() &&
1237-
github.ref == 'refs/heads/main' &&
1238-
(github.event_name == 'push' || github.event_name == 'schedule') &&
1239-
needs.ios-tests-ready.result == 'success'
1240+
needs.ios-tests-ready.result == 'success' &&
1241+
(
1242+
(
1243+
github.ref == 'refs/heads/main' &&
1244+
(github.event_name == 'push' || github.event_name == 'schedule')
1245+
) ||
1246+
(
1247+
github.event_name == 'pull_request' &&
1248+
needs.get_requirements.outputs.run_appium_ios == 'true'
1249+
)
1250+
)
12401251
}}
12411252
permissions:
12421253
contents: read
12431254
checks: write
12441255
id-token: write
1245-
needs: [ios-tests-ready, smart-e2e-selection]
1256+
needs: [get_requirements, ios-tests-ready, smart-e2e-selection]
12461257
uses: ./.github/workflows/run-appium-smoke-tests-ios.yml
12471258
with:
12481259
build_type: 'main'

.github/workflows/get-requirements.yml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ on:
2929
run_performance:
3030
description: 'Whether performance E2E tests should be forced to run via the run-performance-tests PR label'
3131
value: ${{ jobs.detect-changes.outputs.run_performance }}
32+
run_appium_ios:
33+
description: 'Whether Appium iOS smoke tests should also run on a PR via the run-appium-ios-tests label'
34+
value: ${{ jobs.detect-changes.outputs.run_appium_ios }}
3235

3336
jobs:
3437
detect-changes:
@@ -44,6 +47,7 @@ jobs:
4447
block_merge_for_e2e_readiness: ${{ steps.set-outputs.outputs.block_merge }}
4548
run_smart_e2e_selection: ${{ steps.set-outputs.outputs.run_smart_e2e_selection }}
4649
run_performance: ${{ steps.set-outputs.outputs.run_performance }}
50+
run_appium_ios: ${{ steps.set-outputs.outputs.run_appium_ios }}
4751
env:
4852
# For a `pull_request` event, the head commit hash is `github.event.pull_request.head.sha`.
4953
# For a `push` event, the head commit hash is `github.sha`.
@@ -90,6 +94,7 @@ jobs:
9094
echo "LABEL_BLOCKS_MERGE=false"
9195
echo "SKIP_SMART_SELECTION=false"
9296
echo "RUN_PERFORMANCE=false"
97+
echo "RUN_APPIUM_IOS=false"
9398
} >> "$GITHUB_OUTPUT"
9499
95100
LABELS=$(gh pr view "$PR_NUMBER" --json labels --jq '.labels[].name')
@@ -117,6 +122,11 @@ jobs:
117122
echo "-> RUN_PERFORMANCE=true due to 'run-performance-tests' label on PR"
118123
fi
119124
125+
if echo "$LABELS" | grep -qx "run-appium-ios-tests"; then
126+
echo "RUN_APPIUM_IOS=true" >> "$GITHUB_OUTPUT"
127+
echo "-> RUN_APPIUM_IOS=true due to 'run-appium-ios-tests' label on PR"
128+
fi
129+
120130
- name: Filter changed files
121131
id: filter
122132
if: steps.skip-merge-queue.outputs.up-to-date != 'true'
@@ -135,6 +145,7 @@ jobs:
135145
SHOULD_SKIP_E2E: ${{ steps.skip-e2e-tag.outputs.SKIP == 'true' || steps.check-labels.outputs.SKIP_E2E == 'true' }}
136146
LABEL_BLOCKS_MERGE: ${{ steps.check-labels.outputs.LABEL_BLOCKS_MERGE }}
137147
RUN_PERFORMANCE_LABEL: ${{ steps.check-labels.outputs.RUN_PERFORMANCE }}
148+
RUN_APPIUM_IOS_LABEL: ${{ steps.check-labels.outputs.RUN_APPIUM_IOS }}
138149
ALL_CHANGES_COUNT: ${{ steps.filter.outputs.all_changes_count }}
139150
ALL_CHANGES_FILES: ${{ github.event_name == 'pull_request' && steps.filter.outputs.all_changes_files || '' }}
140151
IGNORABLE_COUNT: ${{ steps.filter.outputs.e2e_ignorable_count }}
@@ -208,6 +219,13 @@ jobs:
208219
CHANGED="$ALL_CHANGES_FILES"
209220
fi
210221
222+
RUN_APPIUM_IOS=false
223+
if [[ "$GITHUB_EVENT_NAME" == "pull_request" && \
224+
"$IS_FORK" != "true" && \
225+
"$RUN_APPIUM_IOS_LABEL" == "true" ]]; then
226+
RUN_APPIUM_IOS=true
227+
fi
228+
211229
E2E_NEEDED=false
212230
[[ "$ANDROID" == "true" || "$IOS" == "true" ]] && E2E_NEEDED=true
213231
@@ -246,6 +264,7 @@ jobs:
246264
echo "run_smart_e2e_selection=$RUN_SMART"
247265
echo "block_merge=$BLOCK_MERGE"
248266
echo "run_performance=$RUN_PERF"
267+
echo "run_appium_ios=$RUN_APPIUM_IOS"
249268
} >> "$GITHUB_OUTPUT"
250269
251270
{

.github/workflows/rerun-ci-on-skipped-e2e-labels.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ jobs:
1818
github.event.label.name == 'skip-e2e-flakiness-detection' ||
1919
github.event.label.name == 'pr-not-ready-for-e2e' ||
2020
github.event.label.name == 'force-builds' ||
21-
github.event.label.name == 'run-performance-tests')
21+
github.event.label.name == 'run-performance-tests' ||
22+
github.event.label.name == 'run-appium-ios-tests')
2223
runs-on: ubuntu-latest
2324
permissions:
2425
actions: write

app/components/Nav/App/App.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,10 @@ import { getVersion } from 'react-native-device-info';
3333
import { Authentication } from '../../../core/';
3434
import { colors as importedColors } from '../../../styles/common';
3535
import Routes from '../../../constants/navigation/Routes';
36-
import { clearNativeStackNavigatorOptions } from '../../../constants/navigation/clearStackNavigatorOptions';
36+
import {
37+
clearNativeStackNavigatorOptions,
38+
slideFromRightNativeOptions,
39+
} from '../../../constants/navigation/clearStackNavigatorOptions';
3740
import ModalConfirmation from '../../../component-library/components/Modals/ModalConfirmation';
3841
import Toast, {
3942
ToastContext,
@@ -1110,7 +1113,8 @@ const AppFlow = () => {
11101113
name={Routes.MULTICHAIN_ACCOUNTS.ADDRESS_LIST}
11111114
component={MultichainAddressList}
11121115
options={{
1113-
animation: 'slide_from_right',
1116+
...slideFromRightNativeOptions,
1117+
presentation: 'card',
11141118
contentStyle: { backgroundColor: colors.background.default },
11151119
}}
11161120
/>

app/components/UI/AssetOverview/Price/Price.styles.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ const styleSheet = (params: { theme: Theme }) =>
5050
width: '100%',
5151
alignSelf: 'stretch',
5252
paddingTop: 12,
53-
paddingBottom: 16,
53+
paddingBottom: 8,
5454
flexDirection: 'column',
5555
alignItems: 'flex-start',
5656
gap: 10,

app/components/UI/Charts/AdvancedChart/webview/chartLogic.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3467,7 +3467,7 @@ function createStudyLegendOverlay() {
34673467
const div = document.createElement('div');
34683468
div.id = 'study-legend-overlay';
34693469
div.style.cssText =
3470-
'position:absolute;top:21px;left:' +
3470+
'position:absolute;top:1px;left:' +
34713471
LEGEND_OVERLAY_LEFT_PX +
34723472
'px;z-index:5;pointer-events:none;' +
34733473
'display:flex;flex-wrap:wrap;align-items:flex-start;column-gap:8px;row-gap:2px;';

app/components/UI/Charts/AdvancedChart/webview/chartLogicString.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3476,7 +3476,7 @@ function createStudyLegendOverlay() {
34763476
const div = document.createElement('div');
34773477
div.id = 'study-legend-overlay';
34783478
div.style.cssText =
3479-
'position:absolute;top:21px;left:' +
3479+
'position:absolute;top:1px;left:' +
34803480
LEGEND_OVERLAY_LEFT_PX +
34813481
'px;z-index:5;pointer-events:none;' +
34823482
'display:flex;flex-wrap:wrap;align-items:flex-start;column-gap:8px;row-gap:2px;';

app/util/networks/index.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,9 @@ export const isLineaMainnet = (networkType) => networkType === LINEA_MAINNET;
244244
export const isLineaMainnetChainId = (chainId) =>
245245
chainId === CHAIN_IDS.LINEA_MAINNET;
246246

247+
export const isPolygonMainnetChainId = (chainId) =>
248+
chainId === NETWORKS_CHAIN_ID.POLYGON;
249+
247250
export const isMonadMainnetChainId = (chainId) => chainId === CHAIN_IDS.MONAD;
248251

249252
export const isSolanaMainnet = (chainId) => chainId === SolScope.Mainnet;
@@ -348,7 +351,7 @@ export const isTestNet = (chainId) => TESTNET_CHAIN_IDS.includes(chainId);
348351

349352
/**
350353
* Returns whether the network can be deleted by the user.
351-
* Aligns with NetworkSelector: mainnet, Linea mainnet, and testnets cannot be removed.
354+
* Aligns with NetworkSelector: default networks and testnets cannot be removed.
352355
*
353356
* @param {string} chainId - The chain ID to check (e.g. '0x1', '0x89').
354357
* @returns {boolean} True if the network can be deleted, false otherwise.
@@ -359,6 +362,7 @@ export const canDeleteNetwork = (chainId) =>
359362
!isTestNet(chainId) &&
360363
!isMainNet(chainId) &&
361364
!isLineaMainnetChainId(chainId) &&
365+
!isPolygonMainnetChainId(chainId) &&
362366
!isMonadMainnetChainId(chainId),
363367
);
364368

0 commit comments

Comments
 (0)