Skip to content

ci: migrate perf builds from bitrise to GHA#28420

Merged
cortisiko merged 56 commits into
mainfrom
MMQA-1633
May 14, 2026
Merged

ci: migrate perf builds from bitrise to GHA#28420
cortisiko merged 56 commits into
mainfrom
MMQA-1633

Conversation

@cortisiko

@cortisiko cortisiko commented Apr 6, 2026

Copy link
Copy Markdown
Member

Description

Performance E2E BrowserStack builds are migrated off Bitrise and onto GitHub Actions. The Android/iOS dual-build workflows now call the reusable build.yml workflow (instead of triggering/polling Bitrise), download the resulting APK/IPA artifacts, and upload them to BrowserStack while emitting BrowserStack URLs/app IDs/versions.

Build variants and configs were reshaped for BrowserStack use. New builds.yml entries add dedicated BrowserStack build profiles for with SRP vs seedless onboarding (and exp vs e2e BrowserStack flavors), plus package.json scripts to target these build names; scripts/build.sh now honors IS_BROWSERSTACK_BUILD to avoid emulator-only settings (x86_64 arch restriction and IS_SIM_BUILD=true).

Performance workflow triggering/variants were adjusted. run-performance-e2e-release.yml now runs on pushes only for metamaskbot version-bump commits and explicitly forces build_variant: rc, while the main performance workflow defaults build_variant to exp and updates concurrency grouping and conditional steps accordingly.

Changelog

CHANGELOG entry:

Related issues

Fixes:

Manual testing steps

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

Before

After

Pre-merge author checklist

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.

Note

Medium Risk
Medium risk due to broad CI/build pipeline changes (workflows, build profiles, artifact handling) that can break build/upload automation or alter build-time flags for e2e/perf runs.

Overview
Moves Android/iOS “dual build + BrowserStack upload” workflows from Bitrise-trigger/polling to the reusable build.yml GitHub Actions workflow, then downloads the resulting APK/IPA artifacts and uploads them to BrowserStack while emitting URLs/app IDs/versions.

Reshapes build variants and configs for BrowserStack/performance usage by adding new builds.yml build profiles (e2e BrowserStack with/without SRP; RC/EXP with/without SRP), adding matching package.json build scripts, and teaching scripts/build.sh to honor IS_BROWSERSTACK_BUILD (skip emulator-only x86_64 restrictions and avoid forcing IS_SIM_BUILD=true).

Updates performance/system workflows to default/validate build_variant including e2e, adjust concurrency grouping and gating (including release runs only on metamaskbot version-bump commits and forcing build_variant: rc), and adds IS_PERFORMANCE_TEST to disable E2E runtime overhead while keeping E2E_MOCK_OAUTH Metro mocks active; also includes small Playwright stability tweaks (hide keyboard) and hard-codes perf FF env to test for now.

Reviewed by Cursor Bugbot for commit 5c1e858. Bugbot is set up for automated code reviews on this repo. Configure here.

@metamaskbot metamaskbot added the team-qa QA team label Apr 6, 2026
@cortisiko cortisiko added the force-builds Forces e2e native builds to trigger label May 12, 2026
Comment thread .github/workflows/build-ios-upload-to-browserstack.yml
Comment thread .github/workflows/build-ios-upload-to-browserstack.yml Outdated
Comment thread .github/workflows/build-android-upload-to-browserstack.yml
Comment thread .github/workflows/build-android-upload-to-browserstack.yml
Comment thread builds.yml

@cursor cursor Bot 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.

Cursor Bugbot has reviewed your changes and found 2 potential issues.

There are 4 total unresolved issues (including 2 from previous reviews).

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit bd85377. Configure here.

Comment thread builds.yml
Comment thread .github/workflows/build-ios-upload-to-browserstack.yml
@codecov-commenter

codecov-commenter commented May 13, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 81.80%. Comparing base (3751d9a) to head (5c1e858).
⚠️ Report is 185 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #28420      +/-   ##
==========================================
+ Coverage   81.54%   81.80%   +0.26%     
==========================================
  Files        5343     5403      +60     
  Lines      142128   144011    +1883     
  Branches    32411    32873     +462     
==========================================
+ Hits       115899   117811    +1912     
+ Misses      18299    18173     -126     
- Partials     7930     8027      +97     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions

Copy link
Copy Markdown
Contributor

🔍 Smart E2E Test Selection

⏭️ Smart E2E selection skipped - skip-smart-e2e-selection label found

All E2E tests pre-selected.

View GitHub Actions results

@sonarqubecloud

Copy link
Copy Markdown


- name: Upload Android AAB
if: matrix.platform == 'android' && env.CONFIGURATION != 'Debug'
if: matrix.platform == 'android' && env.CONFIGURATION != 'Debug' && steps.rename.outputs.android_aab_path != ''

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.

This sees a nice safeguard ! Thanks!

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

force-builds Forces e2e native builds to trigger no changelog required No changelog entry is required for this change no-changelog no-changelog Indicates no external facing user changes, therefore no changelog documentation needed release-7.78.0 Issue or pull request that will be included in release 7.78.0 size-XL skip-smart-e2e-selection Skip Smart E2E selection, i.e. select all E2E tests to run team-qa QA team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants