Draft
Conversation
.github/workflows/** and .github/scripts/** were in the 'shared' filter, causing any CI YAML edit to trigger full Android + iOS builds (~20 min). CI files don't affect native builds. Moved them fully into 'ignore' so workflow-only changes trigger the lightweight provide-artifact path (~2-3 min) instead of a full rebuild.
E2E test specs run *against* the built app — they don't affect the native binary. Moving tests/** from shared to ignore means adding/editing test files won't force a full Android/iOS rebuild. Same for .github/** (workflows, scripts): CI infrastructure changes don't affect what the app does natively.
…ct names Three fixes: 1. Filter by status=completed instead of status=success when searching for reusable artifacts — a run where tests failed but the build succeeded still has valid APK/app artifacts we can reuse. 2. iOS artifact is named main-qa-MetaMask.app (not main-e2e-MetaMask.app) because build-ios-e2e.yml defaults metamask_environment to 'qa'. 3. e2e-smoke-tests-ios was incorrectly running when ios-tests-ready was skipped — is true even for skipped jobs. Added explicit needs.ios-tests-ready.result == 'success' check.
…rt jobs dorny/test-reporter requires checks:write to post GitHub Check Run results. Without it the Report step fails even though fail-on-error:false is set, because the action itself errors on the API call, not just on test failures.
The report job was starting at 12:22:25 and finishing at 12:22:44 (19s), while ci-sanity-check-android didn't finish until 12:28:29 (6 min). Since ci-sanity-check was not in the report job's 'needs', the report ran before the JUnit XML artifact was uploaded — dorny/test-reporter found zero files and failed. Fix: add ci-sanity-check-android/ios to the needs list so the report waits for the test to finish before trying to collect its results. Also reverts the unnecessary continue-on-error workaround.
Contributor
|
CLA Signature Action: All authors have signed the CLA. You may need to manually re-run the blocking PR check if it doesn't pass in a few minutes. |
2e4769a to
bfdb887
Compare
Contributor
🔍 Smart E2E Test Selection⏭️ Smart E2E selection skipped - skip-smart-e2e-selection label found All E2E tests pre-selected. |
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 join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Description
Summary
setup-env-android/setup-env-iosjob to both regression workflows that runs before all shards startsetup-e2e-env(without AVD/simulator or keystore) once, populating the Yarn, Foundry, Bundler, and CocoaPods cachesneeds: [..., setup-env-{platform}]dependency so they always hit a warm cache instead of each runner independently downloading and installing the same dependenciesdetox build-framework-cachestep is also moved into the pre-warm job so it runs exactly once across the whole workflow instead of being duplicated per shardMotivation
Each shard in the regression suite was running the full
setup-e2e-envaction independently — meaning Yarn install, Foundry, Bundler, CocoaPods, and the Detox framework build were all duplicated N times (up to 4×) in parallel. Since GitHub Actions cache is shared across jobs in the same workflow run, a single pre-warm job can fill those caches before shards start, making each shard's setup near-instant on cache restore.What's not changed
Smoke test workflows are intentionally left untouched. Their per-job
if:conditions mean an unconditional pre-warm job would waste a full runner spin-up whenever only a subset of suites is selected.Test plan
setup-env-androidcompletes before shards startsetup-env-ioscompletes the Detox framework build oncedetox build-framework-cachestep (it no longer exists inrun-e2e-workflow.ymlfor regression) and hit cache on CocoaPods/BundlerChangelog
CHANGELOG entry:
Related issues
Fixes:
Manual testing steps
Screenshots/Recordings
Before
After
Pre-merge author checklist
Pre-merge reviewer checklist