-
Notifications
You must be signed in to change notification settings - Fork 179
Split mobile e2e workflow by platform #842
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Split mobile e2e workflow by platform #842
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. 🗂️ Base branches to auto review (2)
Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the WalkthroughThe mobile end-to-end workflow was restructured by splitting the combined matrix-based job into two separate jobs: one for Android and one for iOS. Platform-specific setup, build, testing, and artifact upload steps were duplicated and made explicit for each job, eliminating conditional logic and matrix configurations. Changes
Sequence Diagram(s)sequenceDiagram
participant GitHub Actions
participant Android Runner
participant iOS Runner
GitHub Actions->>Android Runner: Start e2e-android job (ubuntu-latest)
Android Runner->>Android Runner: Setup Java, Android SDK, NDK, Emulator
Android Runner->>Android Runner: Build and install app
Android Runner->>Android Runner: Run Maestro tests (--platform android)
Android Runner->>GitHub Actions: Upload maestro-results-android artifact
GitHub Actions->>iOS Runner: Start e2e-ios job (macos-latest)
iOS Runner->>iOS Runner: Setup CocoaPods, Boot Simulator
iOS Runner->>iOS Runner: Build and install app
iOS Runner->>iOS Runner: Run Maestro tests (--platform ios)
iOS Runner->>GitHub Actions: Upload maestro-results-ios artifact
Estimated code review effort🎯 2 (Simple) | ⏱️ ~8 minutes Poem
✨ Finishing Touches🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
Documentation and Community
|
|
@coderabbitai full review |
✅ Actions performedFull review triggered. |
1 similar comment
✅ Actions performedFull review triggered. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
🔭 Outside diff range comments (1)
.github/workflows/mobile-e2e.yml (1)
38-44: Pin the Maestro install script for supply-chain safety
curl | bashagainstget.maestro.mobile.devalways pulls latest; a malicious/latest change could break CI. Fetch a specific commit hash or verify the SHA-256 before execution.[security]
♻️ Duplicate comments (1)
.github/workflows/mobile-e2e.yml (1)
106-115: Mirror Yarn-level caching on the iOS job
Same rationale as the Android job—don’t download the lockfile’s 1 000+ packages twice.
🧹 Nitpick comments (4)
.github/workflows/mobile-e2e.yml (4)
31-38: Leverage built-in Yarn cache inactions/setup-node
actions/setup-node@v4supportscache: 'yarn'. Enabling it (and optionally caching the.yarn/cachefolder for Yarn v4) cuts >5 min of network time on every job.- - uses: actions/setup-node@v4 + - uses: actions/setup-node@v4 with: node-version: 18 + cache: 'yarn'
45-56: Add Gradle & Android SDK caching to cut build time
The Android job builds a full release APK each run. Caching$HOME/.gradle/cachesand the AVD image (supported byandroid-emulator-runner) typically saves 6-10 minutes per run.[performance]
131-134: Cache CocoaPods to shave ~2 minutes per macOS run
Wrappod installwith anactions/cachekeyed onPodfile.lock& Xcode version (e.g.,pods-${{ hashFiles('app/ios/Podfile.lock') }}-${{ runner.os }}-${{ env.XCODE_VERSION }}).
140-146: Hard-coded “iPhone 15” simulator risks build breaks
macos-latestoccasionally ships Xcode versions without that runtime. Safer: resolve the latest iPhone device dynamically (xcrun simctl list devices | grep -Eo 'iPhone 1[4-6] .* (available)' | head -1 | cut -d '(' -f1 | xargs).
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
.github/workflows/mobile-e2e.yml(3 hunks)
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: transphorm
PR: selfxyz/self#795
File: app/android/app/build.gradle:157-158
Timestamp: 2025-07-29T01:08:28.530Z
Learning: For this React Native project, the team prefers build flexibility over fail-fast behavior for release builds in app/android/app/build.gradle. They intentionally allow fallback to debug signing for local development runs, relying on Google Play Console validation to catch any improperly signed releases during upload.
📚 Learning: for this react native project, the team prefers build flexibility over fail-fast behavior for releas...
Learnt from: transphorm
PR: selfxyz/self#795
File: app/android/app/build.gradle:157-158
Timestamp: 2025-07-29T01:08:28.530Z
Learning: For this React Native project, the team prefers build flexibility over fail-fast behavior for release builds in app/android/app/build.gradle. They intentionally allow fallback to debug signing for local development runs, relying on Google Play Console validation to catch any improperly signed releases during upload.
Applied to files:
.github/workflows/mobile-e2e.yml
🔇 Additional comments (1)
.github/workflows/mobile-e2e.yml (1)
55-56:sdkmanagerNDK install may hang on license prompt
Some runners occasionally ignore the global licence acceptance and wait for stdin. Pre-answer withyes | sdkmanager ...or runsdkmanager --install ... --licensesto guarantee non-interactive execution.
7bdc816 to
b69bc90
Compare
* Add tests for ethers polyfills * Add crypto utils * Inline crypto polyfills into ethers util * sort and update gemfile lock * update lock
b69bc90 to
8091301
Compare
1f17618 to
d6dfd65
Compare
1fbc1c7
into
codex/remove-detox-and-configure-maestro-cli
* Add Maestro e2e testing * Run Maestro flows in parallel * Fix mobile e2e workflow * Fix e2e script flow path * prettier * fix * prettier * standardize yml files and new formatting commands * fix ndk * fix exclusions * use double quotes for yml files * feedback * fixes * fixes * fix * fix ios job * unneeded * fix workflows * fix launch workflow * fix * fix pipeline * workflow fixes * install app to emulators * better logging * save current version of test script * android works. ios wip. update locks * fix pipelines * cr feedback * fix android e2e test * Split mobile e2e workflow by platform (#842) * Replace react-native-quick-crypto with @noble/hashes (#841) * Add tests for ethers polyfills * Add crypto utils * Inline crypto polyfills into ethers util * sort and update gemfile lock * update lock * chore: incrementing ios build number for version 2.6.3 [github action] * android works. ios wip. update locks * Specify Maestro platform * Fix Android build step in e2e workflow * fix android * update ios * add concurrency * update Podfile.lock * fix android * prettier * fix * fix android pipeline * try job again * fix ios * fix android * fix ios * fix command * use android runner now that path is fixed * fix android e2e test * fix adb * add caching * fix build * speed up build * fix * test emulator options * updates * fix pipeline * fix * fix script and move on * add comment --------- Co-authored-by: Self GitHub Actions <[email protected]> * feedback * fixes * ignore for now * ignore * fix tests * fix ios simulator booting * fix ios test * shutdown after run * fix ios test * better timing * increase ios timeout * fix both flows * fix pipeline * combine command * fix ios * break up build steps for better caching * remove cache * fix ios and android test pipelines * update logic --------- Co-authored-by: Self GitHub Actions <[email protected]>
Summary
Testing
yarn lintyarn buildyarn workspace @selfxyz/contracts build(fails: Invalid account config)yarn typesyarn workspace @selfxyz/common testyarn workspace @selfxyz/circuits test(fails: Cannot read properties of undefined 'rsa')yarn workspace @selfxyz/mobile-app testhttps://chatgpt.com/codex/tasks/task_b_68913b6b8a4c832da206d559260c34ff
Summary by CodeRabbit