[pull] main from MetaMask:main#145
Merged
Merged
Conversation
## **Description** Multiple fixes for the Perps deposit and MetaMask pay, including: - Hide incoming transactions for MetaMask pay bridge transactions in activity. - Show `Pending` in activity if transaction has `signed` status. - Fix display of MetaMask pay transactions in activity if payment token chain selected. - Show combined `Transaction fee` with individual fees in tooltip. - Allow gas bridges to result in value less than original target. - Show batch transactions in transaction details. - Show token approvals in transaction details. - Prevent deposit if using a hardware wallet. - Navigate to Perps tab after deposit. ## **Changelog** CHANGELOG entry: null ## **Related issues** Fixes: [#5774](MetaMask/MetaMask-planning#5774) [#5791](MetaMask/MetaMask-planning#5791) [#5792](MetaMask/MetaMask-planning#5792) [#5794](MetaMask/MetaMask-planning#5794) [#5793](MetaMask/MetaMask-planning#5793) [#5800](MetaMask/MetaMask-planning#5800) [#5799](MetaMask/MetaMask-planning#5799) ## **Manual testing steps** ## **Screenshots/Recordings** ### **Before** ### **After** _**Minimum deposit disabled for testing.**_ <img width="350" alt="Transaction Fee" src="https://github.com/user-attachments/assets/aeea6289-7ede-4a77-bf75-5126b88acb38" /> <img width="350" alt="Transaction Fee Modal" src="https://github.com/user-attachments/assets/f0d36a8d-738f-482c-85bf-5f649a970619" /> <img width="350" alt="Hardware Wallet Alert" src="https://github.com/user-attachments/assets/123143db-b311-4314-bdee-48682dd44e34" /> ## **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.
…19508) <!-- 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** This PR removes an option to reveal private key from `Settings` -> `Security & Privacy`. We already have this functionality in Account details. <!-- 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: Removes "Show private key" fro Security & Privacy settings ## **Related issues** Fixes: Jira ticket: https://consensyssoftware.atlassian.net/browse/MUL-676 ## **Manual testing steps** ```gherkin Feature: Show private key Scenario: user wants to show private key Given user is already onboarded When user goes to Settings -> Security & Privacy Then "Show private key" section should not be visible ``` ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <img width="386" height="825" alt="Screenshot 2025-09-10 at 13 32 57" src="https://github.com/user-attachments/assets/973ae2a5-f478-4300-864b-41e1b666fc5b" /> <!-- [screenshots/recordings] --> ### **After** <img width="387" height="831" alt="Screenshot 2025-09-10 at 13 34 31" src="https://github.com/user-attachments/assets/2ae9fe3d-d5a5-4521-9f4b-07f3a983c645" /> <!-- [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.
) <!-- 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? --> - Move flaky tests to regression while we work on them. - These tests will also change very soon ## **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 - [ ] I’ve included tests if applicable - [ ] 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.
<!--
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**
Align QA labels with current needs:
Mandatory labels
- No QA Needed / QA Needed -> Removed. Since E2E tests run by default
now, we should just use the label needs-qa to block the PR when needed
(as what we do in extension repo)
- Run Smoke E2E/ No E2E Smoke Needed -> Removed. Old labels to run/no
run tests on BitRise
New optional label
- run-ios-e2e-smoke -> optional, to trigger iOS E2E smoke tests on
BitRise
Deprecated
- "QA'd but questions" -> Removed
- "issues-found" -> Removed
Labelling logic and guidelines adapted.
<!--
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:
## **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
- [ ] I’ve included tests if applicable
- [ ] 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.
## **Description** This PR ensures Switching dapp network should not affect network manager or global network ## **Changelog** CHANGELOG entry: added grant permission via connected site popover ## **Related issues** Fixes: [https://github.com/MetaMask/metamask-mobile/issues/19309](https://github.com/MetaMask/metamask-mobile/issues/19309) ## **Manual testing steps** ```gherkin Feature: Network Switching with Dapp Connection Scenario: Network switch should not affect dapp connection Given the user is connected to a dapp When the user clicks on the icon in the upper right side And clicks on "Manage Permissions" And clicks on the dapp symbol And switches networks And goes to Home And refreshes the page Then the network should not have changed And the dapp connection should remain intact ``` ## **Screenshots/Recordings** `~` ### **Before** `~` ### **After** https://github.com/user-attachments/assets/c8c48cb0-75d9-4f2f-999c-c1e417e2ffbd ## **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** - [x] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [x] 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. --------- Co-authored-by: vinnyhoward <vincenguyenhoward@gmail.com> Co-authored-by: Salim TOUBAL <salim.toubal@outlook.com>
## **Description** Adds contentful version segmentation ## **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: feat: add Contentful version segmentation ## **Related issues** Fixes: ## **Manual testing steps** Add contentful carousel and in-app notifications with version segmentation. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** https://www.loom.com/share/fc7e34f312644bd0baa853ee321cbd82?sid=7eee49c2-07b4-4135-aa00-40005cf846e0 https://www.loom.com/share/a4ee5cafeb634a00ae073662412d6df7?sid=2370359d-865f-4956-9842-a7c46f74f9a6 <!-- [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.
…19599) <!-- 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** Reset recipient page as solana request is cancelled ## **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: #19595 ## **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** TODO ## **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.
<!--
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.
Recording of the test available below
-->
## **Description**
Adds e2e tests:
- liquidation to position
- Limit order creation and convert to position
Leverages of an e2e deeplink endpoint to be able to manage liquidation
events from the e2e test
<!--
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:
## **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. -->
https://www.loom.com/share/f0a289769d93441689dab36be68c8095
https://www.loom.com/share/793a772d9c88412fba275b79d67b2dba
### **Before**
<!-- [screenshots/recordings] -->
### **After**
<!-- [screenshots/recordings] -->
## **Pre-merge author checklist**
- [ ] 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).
- [ ] I've completed the PR template to the best of my ability
- [ ] I’ve included tests if applicable
- [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [ ] 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.
<!-- 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** 1. What is the reason for the change? The pnl did not show for flipped positions which really are a close and an open and should show pnl 2. What is the improvement/solution? Ensure we are showing pnl for the amount calc in transactions list for positions. Also update the detail for the position to include the pnl like closed positions <!-- 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/TAT-1508 ## **Manual testing steps** ```gherkin Feature: position transactions flipped Scenario: user is viewing positions in transaction list Given user views a flipped position item When user sees the amount Then it should be a pnl amount When user clicks on the detail Then they should see pnl in the detail as well and it should be the same ``` ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <img width="500" height="auto" alt="Simulator Screenshot - iPhone 15 Pro - 2025-09-11 at 02 53 23" src="https://github.com/user-attachments/assets/ea0d7ea2-69e8-4fa9-a25d-fc399eee3836" /> <img width="500" alt="Simulator Screenshot - iPhone 15 Pro - 2025-09-11 at 03 18 16" src="https://github.com/user-attachments/assets/bc97895d-ad0c-4b2e-a78d-997c2650c6a1" /> <img width="1483" height="51" alt="Screenshot 2025-09-11 at 2 53 45 AM" src="https://github.com/user-attachments/assets/137f06da-ef6d-4a4c-a8b8-57464158585a" /> <!-- [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.
## **Description**
Added smart routing for Perps deeplinks to provide direct access to the
markets list for returning users while preserving tutorial onboarding
for first-time users.
**What is the reason for the change?**
Currently, the `perps` deeplink only provides one navigation option for
returning users - going to the wallet tab. There's no direct way for
returning users to access the markets list (PerpsMarketListView) via
deeplink parameters.
**What is the improvement/solution?**
Modified the existing `handlePerpsUrl` function to implement smart
routing based on user status and URL parameters:
- **First-time users**: Always go to tutorial (regardless of parameters)
for proper onboarding
- **Returning users**: Route based on URL parameters:
- `perps` → Wallet home with Perps tab selected (existing behavior)
- `perps?screen=markets` → Direct navigation to markets list
(PerpsMarketListView)
## **Changelog**
CHANGELOG entry: Enhanced Perps deeplinks to allow direct access to
markets list for returning users
## **Related issues**
Fixes: Request to add deeplink redirection to PerpsMarketListView
## **Manual testing steps**
```gherkin
Feature: Smart Perps Deeplink Routing
Scenario: First-time user uses perps deeplink with screen parameter
Given user is a first-time Perps user
When user opens perps?screen=markets deeplink
Then user should navigate to Perps tutorial with isFromDeeplink=true
Scenario: First-time user uses regular perps deeplink
Given user is a first-time Perps user
When user opens perps deeplink
Then user should navigate to Perps tutorial with isFromDeeplink=true
Scenario: Returning user uses perps deeplink with screen=markets parameter
Given user is a returning Perps user
When user opens perps?screen=markets deeplink
Then user should navigate directly to PerpsMarketListView
Scenario: Returning user uses regular perps deeplink
Given user is a returning Perps user
When user opens perps deeplink
Then user should navigate to wallet home with Perps tab selected
```
### **Testing Deeplinks**
#### **Easy Testing via Web Interface**
🌐 **Testing Website**: https://metamask-deeplinks-perps.vercel.app/
This website provides:
- ✅ One-click deeplink testing for all scenarios
- ✅ Complete command-line instructions for iOS and Android
- ✅ Real-time validation of deeplink behavior
- ✅ Support for both development and production builds
#### **iOS Testing (Command Line)**
```bash
# Test direct markets list navigation (returning users)
xcrun simctl openurl booted "https://link-test.metamask.io/perps?screen=markets"
# Test regular perps navigation (both user types)
xcrun simctl openurl booted "https://link-test.metamask.io/perps"
# Test existing asset deeplinks (should remain unchanged)
xcrun simctl openurl booted "https://link-test.metamask.io/perps-asset?symbol=BTC"
xcrun simctl openurl booted "https://link-test.metamask.io/perps-asset?symbol=ETH"
xcrun simctl openurl booted "https://link-test.metamask.io/perps-asset?symbol=SOL"
# Test with additional query parameters
xcrun simctl openurl booted "https://link-test.metamask.io/perps?screen=markets&utm_source=test"
```
#### **Android Testing**
```bash
# Test direct markets list navigation (returning users)
adb shell am start -W -a android.intent.action.VIEW -d "https://link-test.metamask.io/perps?screen=markets" com.metamask.tradingapp.development
# Test regular perps navigation (both user types)
adb shell am start -W -a android.intent.action.VIEW -d "https://link-test.metamask.io/perps" com.metamask.tradingapp.development
# Test existing asset deeplinks (should remain unchanged)
adb shell am start -W -a android.intent.action.VIEW -d "https://link-test.metamask.io/perps-asset?symbol=BTC" com.metamask.tradingapp.development
adb shell am start -W -a android.intent.action.VIEW -d "https://link-test.metamask.io/perps-asset?symbol=ETH" com.metamask.tradingapp.development
# Test with additional query parameters
adb shell am start -W -a android.intent.action.VIEW -d "https://link-test.metamask.io/perps?screen=markets&utm_source=test" com.metamask.tradingapp.development
# Alternative: Test with release build
# adb shell am start -W -a android.intent.action.VIEW -d "https://link-test.metamask.io/perps?screen=markets" io.metamask
```
## **Screenshots/Recordings**
### **Before**
- `perps` URL only had one navigation option for returning users -
wallet tab
- No way to access markets list directly via deeplink parameters
### **After**
- First-time users: All Perps URLs go to tutorial (proper onboarding)
- Returning users: `perps?screen=markets` goes directly to
PerpsMarketListView
- Returning users: `perps` still goes to wallet tab (backward
compatibility)
https://github.com/user-attachments/assets/a2a7b6cd-0bf4-4b2c-a17e-fc858a5cb498
## **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.
<!-- 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** 1. What is the reason for the change? User cannot set tpsl on their position due to a regression. Short positions have a - size and to compare size need an absolute value 2. What is the improvement/solution? Use absolute value of sizes when comparing to match order to position <!-- 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/TAT-1645 ## **Manual testing steps** ```gherkin Feature: fix tpsl on short position Scenario: user makes a short position Given user updates tpsl When user submits position update Then they should see updated tpsl ``` ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <img width="500" alt="Simulator Screenshot - iPhone 15 Pro - 2025-09-11 at 04 20 48" src="https://github.com/user-attachments/assets/8e12aa8d-95b3-4f04-b3d9-824463c03545" /> <!-- [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.
## **Description** Cleans up some perps tooltip logic and makes it enable push notifications. - completes the scaffold work done in #18165 <!-- 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: update perps notification tooltip to enable push notifications ## **Related issues** Fixes: ## **Manual testing steps** ```gherkin Feature: nudge to turn on notifications Scenario: nudge to turn on notifications on first order Given user completes first order and does not have notifications on Then bottom sheet appears to enable notifications When user turns on notifications Then will (optionally) be prompted to turn on push notifications and in-app notifications will be turned on. ``` ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** https://www.loom.com/share/c9fa1908366d4f989b646cd3552d30a5?sid=9c884a40-75d4-4683-9493-59a75aa1935b <!-- [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.
<!-- 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** This PR bumps the bridge-status-controller version which includes these fixes: - Use correct segment event names - Use tx hash as txHistory key and txMetaId for Solana bridges The PR also includes a migration script that updates existing Solana transactions with the correct txHistory key and txMetaId, which is used by the status controller to fetch the latest bridge tx status <!-- 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: `fix: use hash as txHistory key and txMetaId for Solana bridges` ## **Related issues** Fixes: https://consensyssoftware.atlassian.net/browse/SWAPS-2945 ## **Manual testing steps** ```gherkin Feature: Solana tx status polling Scenario: user submits a new Solana bridge transaction When user submits a new Solana bridge tx Then it should show up as a success, including the dest tx hash, within a few minutes Scenario: user updates the wallet Given they have existing Solana bridge transactions which have been pending for a while When user gets the latest wallet update Then status polling should restart for old solana bridge txs, and their dest tx hash should be visible in the activity log details ``` ## **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.
…ogin flow during wallet creation and unlock. (#19440) <!-- 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** New Onboarding UI designs Enable biometrics automatically on both SRP and social login flow during wallet creation and unlock. : https://consensyssoftware.atlassian.net/browse/SL-152 <!-- 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: Enable biometrics automatically on both SRP and social login flow during wallet creation and unlock. ## **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] ``` Steps: For new User: Register as a new user on App. On Choose Password Screen, no biometrics option should be present. And after successful registration, go to settings, biometrics should be enabled by default. For Existing User: Login into App. On Login/enter Passwoq screen, there should be no biometrics option to enable/disable. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> Choose password Design: https://www.figma.com/design/pViOUcmjwhEzFsdrwknpNc/Onboarding-redesign--Main-?node-id=10403-193321&t=qXDkQTp9yIdyVFr3-0 Login Design: https://www.figma.com/design/pViOUcmjwhEzFsdrwknpNc/Onboarding-redesign--Main-?node-id=11539-128136&t=qXDkQTp9yIdyVFr3-0 ### **After** <!-- [screenshots/recordings] --> https://github.com/user-attachments/assets/45f64ed7-a88d-416e-ab48-e926ef09f11c https://github.com/user-attachments/assets/21faabc4-a1a9-42a8-9cb5-93659db816f7 ## **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 - [] 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** - [x] 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. --------- Co-authored-by: ieow <4881057+ieow@users.noreply.github.com>
<!-- 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** This PR adds initial support for the Deposit flow to be exposed to the Deeplinks by using `/deposit` URL ## **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: Added `/deposit` action for deeplinking into Deposit. ## **Related issues** Fixes: https://consensyssoftware.atlassian.net/browse/TRAM-2653 ## **Manual testing steps** ```gherkin Feature: Deposit Scenario: user deeplinks into deposit feature Given app is in the background When user visits /deposit deeplink Then app handles it correctly and navigates to Deposit ``` ## **Screenshots/Recordings** ### **Before** ### **After** https://github.com/user-attachments/assets/b01da70a-186a-4322-963a-932311453612 ## **Pre-merge author checklist** - [ ] 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). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] 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.
…ltichain setup (#19283) <!-- 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** This PR adds comprehensive end-to-end tests for the multichain account details feature, specifically testing account name changes with the new multichain UI. ### What was added: - New E2E test file: e2e/specs/accounts/change-account-name-multichain.spec.ts - Feature flag testing: Tests with remoteFeatureMultichainAccountsAccountDetails(true) enabled - Complete test coverage: Both main account and imported account renaming scenarios - Persistence validation: Lock/unlock cycle testing to ensure name changes persist across app sessions - Cross-platform support: Validated on both iOS and Android platforms <!-- 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: ## **Related issues** Fixes: https://consensyssoftware.atlassian.net/browse/MUL-281 ## **Manual testing steps** ```gherkin Feature: Multichain Account Name Changes Scenario 1: User renames main account with multichain details enabled Given the app is launched with remoteFeatureMultichainAccountsAccountDetails enabled When user taps account icon, selects main account actions, and renames account Then the new name should be saved and persist after lock/unlock cycle Scenario 2: User renames imported account with multichain details enabled Given the app has an imported account with multichain details enabled When user selects imported account, opens account actions, and renames account Then the new name should be saved and persist after lock/unlock cycle ``` ## **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 - [ ] I’ve included tests if applicable - [ ] 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** - [x] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [x] 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.
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.3)
Can you help keep this open source service alive? 💖 Please sponsor : )