[pull] main from MetaMask:main#434
Merged
Merged
Conversation
<!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> Similar what we've done in the extension [here](MetaMask/metamask-extension#38932), this PR implements same approach into mobile repository. For more information please see thread [here](https://consensys.slack.com/archives/C1L7H42BT/p1765974245415709). When an E2E test fails in CI and developer triggers a re-run, all tests in that chunk are executed again, not just the failed ones. This leads to: - Wasted CI time: A chunk with 20 tests where only 1 failed will re-run all 20 tests - Increased costs: Unnecessary compute resources consumed on re-runs - Slower feedback loop: Developers wait longer to verify if a flaky test passes on retry - Inefficient debugging: When investigating flaky tests, having to wait for unrelated tests adds friction For example, with 20 parallel chunks each running ~15 tests, a single flaky test failure triggers a re-run of the entire chunk (~15 tests) instead of just the 1 failed test. For solution; implement selective test re-runs that automatically detect when a job is being re-run and skip tests that already passed. - First run (run_attempt = 1): Tests run normally, results are uploaded as artifacts - Re-run (run_attempt > 1): - Download the previous run's test result artifacts - Parse XML results to extract passed test file paths - Run all tests in the chunk EXCEPT those that passed - Skip execution entirely if all tests in the chunk passed previously --- ### Validation of PR: Intentionally broke tests here: c8f029f On attempt1 it failed but other tests passed: https://github.com/MetaMask/metamask-mobile/actions/runs/20751876785/attempts/1?pr=24263 On attempt2 it only run failed test and skipped already passed tests: https://github.com/MetaMask/metamask-mobile/actions/runs/20751876785/attempts/2?pr=24263 Logs from attempt 2: ``` Found 8 executed test files Found 2 failed test files Found 6 fully passed test files Failed tests: e2e/specs/confirmations-redesigned/transactions/send-max-transfer.spec.ts, e2e/specs/confirmations-redesigned/transactions/send-max-transfer-retry-1.spec.ts Previous run results: 6 passed, 2 failed This chunk: 1 failed, 0 not executed ``` ## **Changelog** <!-- If this PR is not End-User-Facing and should not show up in the CHANGELOG, you can choose to either: 1. Write `CHANGELOG entry: null` 2. Label with `no-changelog` If this PR is End-User-Facing, please write a short User-Facing description in the past tense like: `CHANGELOG entry: Added a new tab for users to see their NFTs` `CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker` (This helps the Release Engineer do their job more quickly and accurately) --> CHANGELOG entry: ## **Related issues** Fixes: ## **Manual testing steps** ```gherkin Feature: my feature name Scenario: user [verb for user action] Given [describe expected initial app state] When user [verb for user action] Then [describe expected outcome] ``` ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [X] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [X] I've completed the PR template to the best of my ability - [X] I’ve included tests if applicable - [X] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [X] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Reduces CI time by re-running only failed or not-executed E2E specs on job re-runs and preserving pass/fail history. > > - New scripts: `e2e-extract-test-results.mjs` (parses jest-junit XML to identify passed/failed/executed specs) and `e2e-merge-test-results.mjs` (merges prior XML results for specs not executed this attempt) > - Updates `e2e-split-tags-shards.mjs` to: on re-runs, filter shard files using extracted results; skip if all passed; limit flakiness duplication to first attempt > - Modifies `run-e2e-workflow.yml` to: download previous results on re-runs, pass `RUN_ATTEMPT`/`PREVIOUS_RESULTS_PATH` envs, add debug listing, and merge previous results into current `e2e/reports` before uploading artifacts > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit e5cd5c7. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
## **Description**
This PR enhances the `HeaderCenter` and `HeaderWithTitleLeftScrollable`
components with additional functionality:
1. **Added subtitle support** - Both components now support an optional
`subtitle` prop that renders below the title with center alignment,
along with `subtitleProps` for customization.
2. **Extended HeaderBase props** - Removed the `Omit` constraints from
both components:
- `HeaderCenter` now extends `HeaderBaseProps` directly (previously
omitted `startButtonIconProps`)
- `HeaderWithTitleLeftScrollable` now extends `HeaderBaseProps` directly
(previously omitted `children`)
3. **Added `titleProps` to HeaderWithTitleLeftScrollable** - Allows
customization of the compact header title.
## **Changelog**
CHANGELOG entry: null
## **Related issues**
Fixes:
## **Manual testing steps**
```gherkin
Feature: Header subtitle support
Scenario: user views header with subtitle
Given user is on a screen using HeaderCenter or HeaderWithTitleLeftScrollable
When the header is configured with title and subtitle props
Then the title displays in bold
And the subtitle displays below the title in a smaller, alternative color text
Scenario: user scrolls on HeaderWithTitleLeftScrollable page
Given user is on a screen using HeaderWithTitleLeftScrollable with subtitle
When user scrolls down
Then the header collapses to show compact title with subtitle
And the subtitle remains visible below the compact title
```
## **Screenshots/Recordings**
### **Before**
<!-- [screenshots/recordings] -->
### **After**
https://github.com/user-attachments/assets/ecc857b5-7902-4adf-b25c-51281de8966f
<img width="1290" height="2796" alt="Simulator Screenshot - iPhone 15
Pro Max - 2026-01-06 at 08 55 39"
src="https://github.com/user-attachments/assets/adfd21a3-17a2-47f3-89a8-c6404a9d888b"
/>
<!-- [screenshots/recordings] -->
## **Pre-merge author checklist**
- [x] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I've included tests if applicable
- [x] I've documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I've applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.
## **Pre-merge reviewer checklist**
- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> Introduces subtitle support and raises the compact header height
across header components.
>
> - `HeaderCenter`: adds `subtitle` and `subtitleProps`; stacks title +
subtitle centered; story `WithSubtitle` and tests for rendering/props
> - `HeaderWithTitleLeftScrollable`: adds `titleProps`, `subtitle`,
`subtitleProps`, and `children` handling in compact header; new tests
for subtitle and children precedence; stories updated (`WithSubtitle`,
`OnClose`, `BackAndClose`)
> - Increases compact height from 48 to 56 via `HeaderBase` (`h-12` →
`h-14`) and `HeaderWithTitleLeftScrollable` `DEFAULT_COLLAPSED_HEIGHT`
to `56`; updates numerous snapshots accordingly
> - Both headers now pass through `HeaderBaseProps` and resolve
start/end buttons (back/close) consistently
>
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
dd0c826. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
## **Description**
Bump the Tron snap to the latest version
## **Changelog**
CHANGELOG entry: Bump @metamask/tron-wallet-snap to 1.17.0
## **Related issues**
Fixes:
## **Manual testing steps**
```gherkin
Feature: my feature name
Scenario: user [verb for user action]
Given [describe expected initial app state]
When user [verb for user action]
Then [describe expected outcome]
```
## **Screenshots/Recordings**
<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->
### **Before**
<!-- [screenshots/recordings] -->
### **After**
<!-- [screenshots/recordings] -->
## **Pre-merge author checklist**
- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.
## **Pre-merge reviewer checklist**
- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> Update `@metamask/tron-wallet-snap` from `^1.16.1` to `^1.17.0` and
refresh `yarn.lock`.
>
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
f7272b1. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
<!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** In MM mobile, we define an array of allowed testnets for swaps. This is consumed only on DEV env and is used by some utilities like isSwapsAllowed. To complete the legacy migration we will have to take care of those utilities (either remove or migrate) but before that, this PR removes the dependency to testnets and reduce the tech debt of the swaps module. <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> ## **Changelog** <!-- If this PR is not End-User-Facing and should not show up in the CHANGELOG, you can choose to either: 1. Write `CHANGELOG entry: null` 2. Label with `no-changelog` If this PR is End-User-Facing, please write a short User-Facing description in the past tense like: `CHANGELOG entry: Added a new tab for users to see their NFTs` `CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker` (This helps the Release Engineer do their job more quickly and accurately) --> CHANGELOG entry: null ## **Related issues** Fixes: https://consensyssoftware.atlassian.net/browse/SWAPS-3594 ## **Manual testing steps** ```gherkin This PR does not introduce any business logic change, just run a basic regression test to ensure swaps functionality is not affected. ``` ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Removes testnet-specific swaps configuration and dev-only paths, simplifying chain gating and feature flag handling for Swaps. > > - Drops `SWAPS_TESTNET_CHAIN_ID` and `allowedTestnetChainIds`; removes `__DEV__` and `ONLY_MAINNET` branching in `isSwapsAllowed` > - Updates allowed chain lists in `UI/Swaps/utils` and `Engine/constants` to include only supported mainnets and multichain scopes > - Simplifies `getFeatureFlagChainId` to identity and adjusts liveness/feature flag mapping in `reducers/swaps` > - Cleans up imports and removes unused constants > - Updates unit tests to reflect removal of testnet logic and identity `getFeatureFlagChainId` > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit fba3425. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
See Commits and Changes for more details.
Created by
pull[bot] (v2.0.0-alpha.4)
Can you help keep this open source service alive? 💖 Please sponsor : )