-
Notifications
You must be signed in to change notification settings - Fork 184
fix mobile e2e test #1399
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
base: dev
Are you sure you want to change the base?
fix mobile e2e test #1399
Conversation
|
Warning Rate limit exceeded@transphorm has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 4 minutes and 30 seconds before requesting another review. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. 📒 Files selected for processing (1)
Note Other AI code review bot(s) detectedCodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review. WalkthroughAdds reusable caching actions (ccache, Xcode cache), changes built-deps action to restore-only, integrates explicit restore/save steps in mobile workflows, and switches iOS builds to Release with Release-iphonesimulator artifact paths and conditional pre-build dependency steps. Changes
Sequence Diagram(s)sequenceDiagram
participant GH as GitHub Actions
participant Runner as CI Runner
participant Cache as actions/cache
participant Xcode as xcodebuild
note right of GH `#dfeff0`: mobile-e2e / mobile-ci job start
GH->>GH: invoke `.github/actions/cache-ccache` (compute key)
GH->>Cache: restore ccache (key includes XCODE_VERSION)
Cache-->>GH: hit / miss
alt ccache miss
GH->>Runner: run hendrikmuhs/ccache-action (setup)
Runner-->>GH: ccache available in PATH
end
GH->>Cache: restore built-deps (key: GH_CACHE_VERSION + src hash)
Cache-->>GH: hit / miss
alt deps cache miss
GH->>Runner: run dependency build
Runner->>Cache: Save Built Dependencies (post-build)
else deps cache hit
note right of GH `#fff3cd`: skip dependency build
end
GH->>GH: invoke `.github/actions/cache-xcode` (compute keys)
GH->>Cache: restore Xcode build & index caches (DerivedData, outputs, index)
Cache-->>GH: hit / miss
GH->>Runner: run xcodebuild (Configuration: Release)
Runner-->>GH: produce Release-iphonesimulator artifacts
Runner->>Cache: save Xcode build & index data (end)
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes
Possibly related PRs
Suggested labels
Suggested reviewers
Poem
Pre-merge checks and finishing touches❌ Failed checks (1 inconclusive)
✅ Passed checks (2 passed)
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. Comment |
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.
💡 Codex Review
Here are some automated review suggestions for this pull request.
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
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: 0
🧹 Nitpick comments (1)
.github/workflows/mobile-e2e.yml (1)
333-350: Consider creating a composite action for Xcode caching.While the current Xcode build and index caching using
actions/cache@v4is functional and comprehensive, the project guideline recommends using shared composite actions in.github/actionsfor caching. Creating acache-xcodecomposite action would maintain consistency withcache-yarn,cache-pods, and other shared caching actions across workflows.That said, since these are build artifacts rather than dependencies, this is a nice-to-have improvement rather than a blocking concern.
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
.github/workflows/mobile-e2e.yml(3 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
.github/workflows/**/*.{yml,yaml}
📄 CodeRabbit inference engine (AGENTS.md)
.github/workflows/**/*.{yml,yaml}: In GitHub workflows, use the shared composite actions in .github/actions for dependency caching instead of calling actions/cache directly
Use the cache-yarn composite action for Yarn dependency caching in workflows
Use the cache-bundler composite action for Ruby gems caching in workflows
Use the cache-gradle composite action for Gradle caching in workflows
Use the cache-pods composite action for CocoaPods caching in workflows
Files:
.github/workflows/mobile-e2e.yml
🧠 Learnings (12)
📓 Common learnings
Learnt from: transphorm
Repo: selfxyz/self PR: 1244
File: .github/workflows/mobile-deploy.yml:774-776
Timestamp: 2025-10-08T20:23:58.783Z
Learning: In the selfxyz/self repository, for the mobile deployment workflow (.github/workflows/mobile-deploy.yml):
- iOS builds cache Ruby gems at `app/ios/vendor/bundle`
- Android builds cache Ruby gems at `app/vendor/bundle`
- These paths should be used consistently within their respective build jobs
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-pods composite action for CocoaPods caching in workflows
Learnt from: CR
Repo: selfxyz/self PR: 0
File: .cursorrules:0-0
Timestamp: 2025-09-22T11:10:22.019Z
Learning: Test, build, and deploy scripts (`yarn test`, `yarn ios`, `yarn test:e2e:ios`, Fastlane, etc.) must be used for automation.
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-bundler composite action for Ruby gems caching in workflows
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-yarn composite action for Yarn dependency caching in workflows
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-gradle composite action for Gradle caching in workflows
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : In GitHub workflows, use the shared composite actions in .github/actions for dependency caching instead of calling actions/cache directly
Learnt from: CR
Repo: selfxyz/self PR: 0
File: app/AGENTS.md:0-0
Timestamp: 2025-09-22T11:10:57.879Z
Learning: Ensure app builds succeed for iOS, Android, and Web before PRs
Learnt from: CR
Repo: selfxyz/self PR: 0
File: packages/mobile-sdk-alpha/AGENTS.md:0-0
Timestamp: 2025-08-29T15:31:15.924Z
Learning: Confirm CI passes, build artifacts generate, and bundle size impact is acceptable after PR creation
📚 Learning: 2025-10-08T20:23:58.783Z
Learnt from: transphorm
Repo: selfxyz/self PR: 1244
File: .github/workflows/mobile-deploy.yml:774-776
Timestamp: 2025-10-08T20:23:58.783Z
Learning: In the selfxyz/self repository, for the mobile deployment workflow (.github/workflows/mobile-deploy.yml):
- iOS builds cache Ruby gems at `app/ios/vendor/bundle`
- Android builds cache Ruby gems at `app/vendor/bundle`
- These paths should be used consistently within their respective build jobs
Applied to files:
.github/workflows/mobile-e2e.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-pods composite action for CocoaPods caching in workflows
Applied to files:
.github/workflows/mobile-e2e.yml
📚 Learning: 2025-09-22T11:10:57.879Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: app/AGENTS.md:0-0
Timestamp: 2025-09-22T11:10:57.879Z
Learning: Applies to app/ios/**/*.{m,mm,swift} : Document complex native iOS module changes in the PR
Applied to files:
.github/workflows/mobile-e2e.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-yarn composite action for Yarn dependency caching in workflows
Applied to files:
.github/workflows/mobile-e2e.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : In GitHub workflows, use the shared composite actions in .github/actions for dependency caching instead of calling actions/cache directly
Applied to files:
.github/workflows/mobile-e2e.yml
📚 Learning: 2025-09-22T11:10:22.019Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: .cursorrules:0-0
Timestamp: 2025-09-22T11:10:22.019Z
Learning: Test, build, and deploy scripts (`yarn test`, `yarn ios`, `yarn test:e2e:ios`, Fastlane, etc.) must be used for automation.
Applied to files:
.github/workflows/mobile-e2e.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-bundler composite action for Ruby gems caching in workflows
Applied to files:
.github/workflows/mobile-e2e.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-gradle composite action for Gradle caching in workflows
Applied to files:
.github/workflows/mobile-e2e.yml
📚 Learning: 2025-09-22T11:10:57.879Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: app/AGENTS.md:0-0
Timestamp: 2025-09-22T11:10:57.879Z
Learning: Ensure app builds succeed for iOS, Android, and Web before PRs
Applied to files:
.github/workflows/mobile-e2e.yml
📚 Learning: 2025-08-24T18:54:04.809Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: .cursor/rules/mobile-sdk-migration.mdc:0-0
Timestamp: 2025-08-24T18:54:04.809Z
Learning: Applies to packages/mobile-sdk-alpha/package.json : Expose a 'test:build' script in the SDK's package.json that runs build, test, types, and lint
Applied to files:
.github/workflows/mobile-e2e.yml
📚 Learning: 2025-07-29T01:08:28.530Z
Learnt from: transphorm
Repo: selfxyz/self PR: 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 (4)
.github/workflows/mobile-e2e.yml (4)
314-319: ccache setup looks solid.The re-enabled cache with the XCODE_VERSION-aware key is a smart optimization. PATH configuration is correct for macOS.
356-362: Built dependencies caching strategy is solid.Good use of the
cache-built-depscomposite action with proper conditional building. The pattern prevents unnecessary rebuilds on cache hits and follows project guidelines for shared composite actions.
496-499: Release build switch accelerates CI reasonably.Using Release configuration for E2E builds is a pragmatic optimization, especially with the comment acknowledging full testability. However, verify that Release-specific behavior (e.g., inlining, optimizations) doesn't mask issues E2E tests are meant to catch. If the test suite is passing and covering key user flows, this tradeoff should be acceptable.
Confirm that test coverage remains adequate with Release builds and that no Release-specific regressions have been observed.
504-504: App path update is consistent with Release build configuration.The path change from Debug-iphonesimulator to Release-iphonesimulator correctly reflects the new build configuration and uses a robust find pattern that handles potential variations.
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
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
.github/workflows/mobile-e2e.yml(3 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
.github/workflows/**/*.{yml,yaml}
📄 CodeRabbit inference engine (AGENTS.md)
.github/workflows/**/*.{yml,yaml}: In GitHub workflows, use the shared composite actions in .github/actions for dependency caching instead of calling actions/cache directly
Use the cache-yarn composite action for Yarn dependency caching in workflows
Use the cache-bundler composite action for Ruby gems caching in workflows
Use the cache-gradle composite action for Gradle caching in workflows
Use the cache-pods composite action for CocoaPods caching in workflows
Files:
.github/workflows/mobile-e2e.yml
🧠 Learnings (12)
📓 Common learnings
Learnt from: transphorm
Repo: selfxyz/self PR: 1244
File: .github/workflows/mobile-deploy.yml:774-776
Timestamp: 2025-10-08T20:23:58.783Z
Learning: In the selfxyz/self repository, for the mobile deployment workflow (.github/workflows/mobile-deploy.yml):
- iOS builds cache Ruby gems at `app/ios/vendor/bundle`
- Android builds cache Ruby gems at `app/vendor/bundle`
- These paths should be used consistently within their respective build jobs
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-pods composite action for CocoaPods caching in workflows
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-bundler composite action for Ruby gems caching in workflows
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-yarn composite action for Yarn dependency caching in workflows
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : In GitHub workflows, use the shared composite actions in .github/actions for dependency caching instead of calling actions/cache directly
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-gradle composite action for Gradle caching in workflows
📚 Learning: 2025-10-08T20:23:58.783Z
Learnt from: transphorm
Repo: selfxyz/self PR: 1244
File: .github/workflows/mobile-deploy.yml:774-776
Timestamp: 2025-10-08T20:23:58.783Z
Learning: In the selfxyz/self repository, for the mobile deployment workflow (.github/workflows/mobile-deploy.yml):
- iOS builds cache Ruby gems at `app/ios/vendor/bundle`
- Android builds cache Ruby gems at `app/vendor/bundle`
- These paths should be used consistently within their respective build jobs
Applied to files:
.github/workflows/mobile-e2e.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-pods composite action for CocoaPods caching in workflows
Applied to files:
.github/workflows/mobile-e2e.yml
📚 Learning: 2025-09-22T11:10:57.879Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: app/AGENTS.md:0-0
Timestamp: 2025-09-22T11:10:57.879Z
Learning: Applies to app/ios/**/*.{m,mm,swift} : Document complex native iOS module changes in the PR
Applied to files:
.github/workflows/mobile-e2e.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-yarn composite action for Yarn dependency caching in workflows
Applied to files:
.github/workflows/mobile-e2e.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : In GitHub workflows, use the shared composite actions in .github/actions for dependency caching instead of calling actions/cache directly
Applied to files:
.github/workflows/mobile-e2e.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-bundler composite action for Ruby gems caching in workflows
Applied to files:
.github/workflows/mobile-e2e.yml
📚 Learning: 2025-09-22T11:10:22.019Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: .cursorrules:0-0
Timestamp: 2025-09-22T11:10:22.019Z
Learning: Test, build, and deploy scripts (`yarn test`, `yarn ios`, `yarn test:e2e:ios`, Fastlane, etc.) must be used for automation.
Applied to files:
.github/workflows/mobile-e2e.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-gradle composite action for Gradle caching in workflows
Applied to files:
.github/workflows/mobile-e2e.yml
📚 Learning: 2025-09-22T11:10:57.879Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: app/AGENTS.md:0-0
Timestamp: 2025-09-22T11:10:57.879Z
Learning: Ensure app builds succeed for iOS, Android, and Web before PRs
Applied to files:
.github/workflows/mobile-e2e.yml
📚 Learning: 2025-08-24T18:54:04.809Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: .cursor/rules/mobile-sdk-migration.mdc:0-0
Timestamp: 2025-08-24T18:54:04.809Z
Learning: Applies to packages/mobile-sdk-alpha/package.json : Expose a 'test:build' script in the SDK's package.json that runs build, test, types, and lint
Applied to files:
.github/workflows/mobile-e2e.yml
📚 Learning: 2025-07-29T01:08:28.530Z
Learnt from: transphorm
Repo: selfxyz/self PR: 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
⏰ Context from checks skipped due to timeout of 300000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
- GitHub Check: type-check
- GitHub Check: e2e-ios
- GitHub Check: android-build-test
🔇 Additional comments (2)
.github/workflows/mobile-e2e.yml (2)
496-499: Verify Release build is suitable for E2E testing.The workflow switches iOS build from Debug to Release configuration (Line 496-499) and updates the app path accordingly (Line 504). While the comment states this is "still fully testable for E2E," Release builds typically enable optimizations that may mask bugs or exhibit different behavior than Debug builds. The
SWIFT_OPTIMIZATION_LEVEL=-Ononeflag disables Swift optimization, but C++ and Objective-C may still differ.Confirm that:
- Release builds with
-Ononeare expected to pass the same E2E tests as Debug builds- No critical bugs are masked by the build configuration change
- Performance gains justify the potential risk of different runtime behavior
Also applies to: 504-504
333-350: This review comment is incorrect.The Xcode caching in lines 333–350 is for build artifacts (DerivedData, build outputs, Index), not dependencies. The coding guideline to "use shared composite actions for dependency caching" applies to dependency managers like CocoaPods, Yarn, Bundler, and Gradle—not build artifact caches. No
cache-xcodecomposite exists, and the current pattern usingactions/cache@v4directly is appropriate for this use case. The same approach is consistently used across other workflows (e.g., mobile-ci.yml).Likely an incorrect or invalid review comment.
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: 0
🧹 Nitpick comments (1)
.github/workflows/mobile-ci.yml (1)
78-83: Inconsistent build conditionals across jobs. Lines 78–83 (build-deps), 158–171 (test), and 320–324 (build-ios) always execute the build step (conditions are commented out or disabled for debugging), while lines 489–493 (build-android) correctly conditions on cache miss. Since save steps now run only on cache miss (line 495), the builds should ideally be consistent—either all conditional or all unconditional. Consider clarifying the intent: if builds are intentionally always-on for CI stability, that's acceptable but should be documented consistently.Also applies to: 158-171, 320-324, 489-493
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (5)
.github/actions/cache-built-deps/action.yml(1 hunks).github/actions/cache-ccache/action.yml(1 hunks).github/actions/cache-xcode/action.yml(1 hunks).github/workflows/mobile-ci.yml(4 hunks).github/workflows/mobile-e2e.yml(3 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
.github/workflows/**/*.{yml,yaml}
📄 CodeRabbit inference engine (AGENTS.md)
.github/workflows/**/*.{yml,yaml}: In GitHub workflows, use the shared composite actions in .github/actions for dependency caching instead of calling actions/cache directly
Use the cache-yarn composite action for Yarn dependency caching in workflows
Use the cache-bundler composite action for Ruby gems caching in workflows
Use the cache-gradle composite action for Gradle caching in workflows
Use the cache-pods composite action for CocoaPods caching in workflows
Files:
.github/workflows/mobile-e2e.yml.github/workflows/mobile-ci.yml
🧠 Learnings (17)
📓 Common learnings
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-pods composite action for CocoaPods caching in workflows
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : In GitHub workflows, use the shared composite actions in .github/actions for dependency caching instead of calling actions/cache directly
Learnt from: transphorm
Repo: selfxyz/self PR: 1244
File: .github/workflows/mobile-deploy.yml:774-776
Timestamp: 2025-10-08T20:23:58.783Z
Learning: In the selfxyz/self repository, for the mobile deployment workflow (.github/workflows/mobile-deploy.yml):
- iOS builds cache Ruby gems at `app/ios/vendor/bundle`
- Android builds cache Ruby gems at `app/vendor/bundle`
- These paths should be used consistently within their respective build jobs
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-gradle composite action for Gradle caching in workflows
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-yarn composite action for Yarn dependency caching in workflows
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-bundler composite action for Ruby gems caching in workflows
📚 Learning: 2025-10-08T20:23:58.783Z
Learnt from: transphorm
Repo: selfxyz/self PR: 1244
File: .github/workflows/mobile-deploy.yml:774-776
Timestamp: 2025-10-08T20:23:58.783Z
Learning: In the selfxyz/self repository, for the mobile deployment workflow (.github/workflows/mobile-deploy.yml):
- iOS builds cache Ruby gems at `app/ios/vendor/bundle`
- Android builds cache Ruby gems at `app/vendor/bundle`
- These paths should be used consistently within their respective build jobs
Applied to files:
.github/workflows/mobile-e2e.yml.github/workflows/mobile-ci.yml.github/actions/cache-built-deps/action.yml.github/actions/cache-xcode/action.yml
📚 Learning: 2025-09-22T11:10:57.879Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: app/AGENTS.md:0-0
Timestamp: 2025-09-22T11:10:57.879Z
Learning: Applies to app/ios/**/*.{m,mm,swift} : Document complex native iOS module changes in the PR
Applied to files:
.github/workflows/mobile-e2e.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-pods composite action for CocoaPods caching in workflows
Applied to files:
.github/workflows/mobile-e2e.yml.github/actions/cache-ccache/action.yml.github/workflows/mobile-ci.yml.github/actions/cache-xcode/action.yml
📚 Learning: 2025-09-22T11:10:22.019Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: .cursorrules:0-0
Timestamp: 2025-09-22T11:10:22.019Z
Learning: Test, build, and deploy scripts (`yarn test`, `yarn ios`, `yarn test:e2e:ios`, Fastlane, etc.) must be used for automation.
Applied to files:
.github/workflows/mobile-e2e.yml.github/workflows/mobile-ci.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-yarn composite action for Yarn dependency caching in workflows
Applied to files:
.github/workflows/mobile-e2e.yml.github/actions/cache-ccache/action.yml.github/workflows/mobile-ci.yml.github/actions/cache-built-deps/action.yml.github/actions/cache-xcode/action.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : In GitHub workflows, use the shared composite actions in .github/actions for dependency caching instead of calling actions/cache directly
Applied to files:
.github/workflows/mobile-e2e.yml.github/actions/cache-ccache/action.yml.github/workflows/mobile-ci.yml.github/actions/cache-built-deps/action.yml.github/actions/cache-xcode/action.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-gradle composite action for Gradle caching in workflows
Applied to files:
.github/workflows/mobile-e2e.yml.github/actions/cache-ccache/action.yml.github/workflows/mobile-ci.yml.github/actions/cache-built-deps/action.yml.github/actions/cache-xcode/action.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-bundler composite action for Ruby gems caching in workflows
Applied to files:
.github/workflows/mobile-e2e.yml.github/actions/cache-ccache/action.yml.github/workflows/mobile-ci.yml.github/actions/cache-built-deps/action.yml.github/actions/cache-xcode/action.yml
📚 Learning: 2025-10-07T14:25:57.507Z
Learnt from: aaronmgdr
Repo: selfxyz/self PR: 1230
File: packages/mobile-sdk-alpha/package.json:66-75
Timestamp: 2025-10-07T14:25:57.507Z
Learning: Always verify directory existence from the correct package root before flagging missing directories as critical issues, especially when the package.json "files" array includes them.
Applied to files:
.github/workflows/mobile-e2e.yml
📚 Learning: 2025-09-22T11:10:57.879Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: app/AGENTS.md:0-0
Timestamp: 2025-09-22T11:10:57.879Z
Learning: Ensure app builds succeed for iOS, Android, and Web before PRs
Applied to files:
.github/workflows/mobile-e2e.yml
📚 Learning: 2025-08-24T18:54:04.809Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: .cursor/rules/mobile-sdk-migration.mdc:0-0
Timestamp: 2025-08-24T18:54:04.809Z
Learning: Applies to packages/mobile-sdk-alpha/package.json : Expose a 'test:build' script in the SDK's package.json that runs build, test, types, and lint
Applied to files:
.github/workflows/mobile-e2e.yml.github/workflows/mobile-ci.yml.github/actions/cache-built-deps/action.yml
📚 Learning: 2025-07-29T01:08:28.530Z
Learnt from: transphorm
Repo: selfxyz/self PR: 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
📚 Learning: 2025-08-24T18:54:04.809Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: .cursor/rules/mobile-sdk-migration.mdc:0-0
Timestamp: 2025-08-24T18:54:04.809Z
Learning: Applies to packages/mobile-sdk-alpha/src/artifacts/** : Place artifact and manifest management in packages/mobile-sdk-alpha/src/artifacts/
Applied to files:
.github/workflows/mobile-ci.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to contracts/** : Compile Solidity contracts using `yarn workspace selfxyz/contracts build`
Applied to files:
.github/workflows/mobile-ci.yml
📚 Learning: 2025-08-29T15:31:15.924Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: packages/mobile-sdk-alpha/AGENTS.md:0-0
Timestamp: 2025-08-29T15:31:15.924Z
Learning: Applies to packages/mobile-sdk-alpha/{**/*.test.{ts,tsx},**/__tests__/**/*.{ts,tsx}} : Use actual imports from selfxyz/mobile-sdk-alpha in tests
Applied to files:
.github/workflows/mobile-ci.yml
📚 Learning: 2025-08-29T15:31:15.924Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: packages/mobile-sdk-alpha/AGENTS.md:0-0
Timestamp: 2025-08-29T15:31:15.924Z
Learning: Applies to packages/mobile-sdk-alpha/**/*.{ts,tsx} : Avoid introducing circular dependencies
Applied to files:
.github/workflows/mobile-ci.yml
⏰ Context from checks skipped due to timeout of 300000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (10)
- GitHub Check: test
- GitHub Check: lint
- GitHub Check: types
- GitHub Check: format
- GitHub Check: type-check
- GitHub Check: analyze-android
- GitHub Check: analyze-ios
- GitHub Check: build-deps
- GitHub Check: android-build-test
- GitHub Check: e2e-ios
🔇 Additional comments (6)
.github/actions/cache-ccache/action.yml (1)
1-38: LGTM. The new composite action properly encapsulates ccache setup with parameterized key generation. Following the coding guidelines, this wraps the external hendrikmuhs/ccache-action within a reusable composite, making it consistent with the codebase's caching strategy. The hardcoded/usr/local/opt/ccache/libexecPATH is appropriate for macOS runners (Homebrew location)..github/actions/cache-built-deps/action.yml (1)
1-22: ✅ Addresses critical empty cache issue. By removing the save step and documenting that workflows must handle save separately, this fixes the P1 issue where emptycommon/distandpackages/mobile-sdk-alpha/distdirectories were being cached on first run, causing subsequent CI runs to skip the build step and fail. The restore-only pattern is correct..github/workflows/mobile-ci.yml (1)
84-91: ✅ Save steps properly implemented. All four jobs now include conditional save steps that run only on cache miss, ensuring only populatedcommon/distandpackages/mobile-sdk-alpha/distdirectories are cached. The key generation matches the restore pattern. This fully addresses the empty cache pollution issue.Also applies to: 172-179, 325-332, 494-501
.github/actions/cache-xcode/action.yml (1)
1-72: ✅ Proper Xcode caching composite. This new action correctly wrapsactions/cache@v4calls in a composite, addressing the guideline concern from prior reviews. Default paths are appropriate, the two-cache pattern (build + index) optimizes hit rates, and thecache-suffixparameter enables workflow-specific cache isolation (e.g., "e2e"). Outputs properly expose cache-hit status for downstream conditionals..github/workflows/mobile-e2e.yml (2)
314-317: ✅ Clean integration of caching composites. The workflow properly sequences restore → conditional build → conditional save for built dependencies. The cache-ccache and cache-xcode composites are correctly invoked with appropriate parameters. Notably,cache-xcodeusescache-suffix: -e2e(line 335) to isolate E2E caches from CI caches, preventing pollution. This architecture solves the empty cache issue and aligns with the shared composite action guidelines.Also applies to: 331-336, 342-360
490-490: ✅ Release configuration for E2E is appropriate. Switching to Release configuration (line 490) and using theRelease-iphonesimulatorartifact path (line 498) accelerates builds while remaining fully testable for E2E scenarios. These changes are consistent and correct.Also applies to: 498-498
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: 0
🧹 Nitpick comments (2)
sdk/qrcode/components/SelfQRcode.tsx (1)
100-109: Good practice:@ts-expect-errorover@ts-ignore.The change from
@ts-ignoreto@ts-expect-errorwith an explanatory comment is a solid improvement. This will alert developers if the type issue is resolved in the future, making the suppression self-documenting and maintainable.Consider defining proper types for the
LottieComponentto eliminate the need for type suppression altogether:interface LottieProps { animationData: unknown; style?: React.CSSProperties; onComplete?: () => void; loop?: boolean; } const LottieComponent = (Lottie.default || Lottie) as React.ComponentType<LottieProps>;This could be applied once at the component definition (line 16) to benefit both usages.
.github/workflows/mobile-e2e.yml (1)
353-360: Move built-deps save step into a composite action for consistency.Per coding guidelines, workflows should use shared composite actions for caching instead of direct
actions/cachecalls. Consider wrapping the restore-only + save pattern (lines 342–347 + 353–360) into a dedicated composite action likecache-built-deps-with-save, or refactorcache-built-depsto accept asave-onlyflag so the workflow doesn't make direct cache calls.
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
.github/workflows/mobile-e2e.yml(4 hunks)sdk/qrcode/components/SelfQRcode.tsx(2 hunks)
🧰 Additional context used
📓 Path-based instructions (3)
**/*.{js,ts,tsx,jsx,sol,nr}
📄 CodeRabbit inference engine (.cursorrules)
**/*.{js,ts,tsx,jsx,sol,nr}: NEVER log sensitive data including PII (names, DOB, passport numbers, addresses), credentials, tokens, API keys, private keys, or session identifiers.
ALWAYS redact/mask sensitive fields in logs using consistent patterns (e.g.,***-***-1234for passport numbers,J*** D***for names).
Files:
sdk/qrcode/components/SelfQRcode.tsx
sdk/**/*.{ts,tsx,js,jsx}
⚙️ CodeRabbit configuration file
sdk/**/*.{ts,tsx,js,jsx}: Review SDK packages for:
- Public API design and stability
- Asynchronous flows and error handling
- Security and input validation
- Compatibility across environments
Files:
sdk/qrcode/components/SelfQRcode.tsx
.github/workflows/**/*.{yml,yaml}
📄 CodeRabbit inference engine (AGENTS.md)
.github/workflows/**/*.{yml,yaml}: In GitHub workflows, use the shared composite actions in .github/actions for dependency caching instead of calling actions/cache directly
Use the cache-yarn composite action for Yarn dependency caching in workflows
Use the cache-bundler composite action for Ruby gems caching in workflows
Use the cache-gradle composite action for Gradle caching in workflows
Use the cache-pods composite action for CocoaPods caching in workflows
Files:
.github/workflows/mobile-e2e.yml
🧠 Learnings (21)
📓 Common learnings
Learnt from: transphorm
Repo: selfxyz/self PR: 1244
File: .github/workflows/mobile-deploy.yml:774-776
Timestamp: 2025-10-08T20:23:58.783Z
Learning: In the selfxyz/self repository, for the mobile deployment workflow (.github/workflows/mobile-deploy.yml):
- iOS builds cache Ruby gems at `app/ios/vendor/bundle`
- Android builds cache Ruby gems at `app/vendor/bundle`
- These paths should be used consistently within their respective build jobs
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-pods composite action for CocoaPods caching in workflows
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : In GitHub workflows, use the shared composite actions in .github/actions for dependency caching instead of calling actions/cache directly
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-bundler composite action for Ruby gems caching in workflows
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-yarn composite action for Yarn dependency caching in workflows
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-gradle composite action for Gradle caching in workflows
Learnt from: CR
Repo: selfxyz/self PR: 0
File: .cursorrules:0-0
Timestamp: 2025-09-22T11:10:22.019Z
Learning: Test, build, and deploy scripts (`yarn test`, `yarn ios`, `yarn test:e2e:ios`, Fastlane, etc.) must be used for automation.
📚 Learning: 2025-08-29T15:31:15.924Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: packages/mobile-sdk-alpha/AGENTS.md:0-0
Timestamp: 2025-08-29T15:31:15.924Z
Learning: Applies to packages/mobile-sdk-alpha/{**/*.test.{ts,tsx},**/__tests__/**/*.{ts,tsx}} : Verify extractMRZInfo() using published sample MRZ strings (e.g., ICAO examples)
Applied to files:
sdk/qrcode/components/SelfQRcode.tsx
📚 Learning: 2025-08-29T15:31:15.924Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: packages/mobile-sdk-alpha/AGENTS.md:0-0
Timestamp: 2025-08-29T15:31:15.924Z
Learning: Applies to packages/mobile-sdk-alpha/{**/*.test.{ts,tsx},**/__tests__/**/*.{ts,tsx}} : Do NOT mock selfxyz/mobile-sdk-alpha in tests (avoid jest.mock('selfxyz/mobile-sdk-alpha') and replacing real functions with mocks)
Applied to files:
sdk/qrcode/components/SelfQRcode.tsx
📚 Learning: 2025-08-29T15:31:15.924Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: packages/mobile-sdk-alpha/AGENTS.md:0-0
Timestamp: 2025-08-29T15:31:15.924Z
Learning: Applies to packages/mobile-sdk-alpha/{**/*.test.{ts,tsx},**/__tests__/**/*.{ts,tsx}} : Use actual imports from selfxyz/mobile-sdk-alpha in tests
Applied to files:
sdk/qrcode/components/SelfQRcode.tsx
📚 Learning: 2025-08-29T15:31:15.924Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: packages/mobile-sdk-alpha/AGENTS.md:0-0
Timestamp: 2025-08-29T15:31:15.924Z
Learning: Applies to packages/mobile-sdk-alpha/{**/*.test.{ts,tsx},**/__tests__/**/*.{ts,tsx}} : Ensure parseNFCResponse() works with representative, synthetic NFC data
Applied to files:
sdk/qrcode/components/SelfQRcode.tsx
📚 Learning: 2025-08-29T15:31:15.924Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: packages/mobile-sdk-alpha/AGENTS.md:0-0
Timestamp: 2025-08-29T15:31:15.924Z
Learning: Applies to packages/mobile-sdk-alpha/**/*.{ts,tsx} : Avoid introducing circular dependencies
Applied to files:
sdk/qrcode/components/SelfQRcode.tsx
📚 Learning: 2025-08-29T15:31:15.924Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: packages/mobile-sdk-alpha/AGENTS.md:0-0
Timestamp: 2025-08-29T15:31:15.924Z
Learning: Applies to packages/mobile-sdk-alpha/**/*.{ts,tsx} : Use strict TypeScript type checking across the codebase
Applied to files:
sdk/qrcode/components/SelfQRcode.tsx
📚 Learning: 2025-08-29T15:31:15.924Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: packages/mobile-sdk-alpha/AGENTS.md:0-0
Timestamp: 2025-08-29T15:31:15.924Z
Learning: Applies to packages/mobile-sdk-alpha/{**/*.test.{ts,tsx},**/__tests__/**/*.{ts,tsx}} : Never use real user PII in tests; use only synthetic, anonymized, or approved test vectors
Applied to files:
sdk/qrcode/components/SelfQRcode.tsx
📚 Learning: 2025-08-25T14:25:57.586Z
Learnt from: aaronmgdr
Repo: selfxyz/self PR: 951
File: app/src/providers/authProvider.web.tsx:17-18
Timestamp: 2025-08-25T14:25:57.586Z
Learning: The selfxyz/mobile-sdk-alpha/constants/analytics import path is properly configured with SDK exports, Metro aliases, and TypeScript resolution. Import changes from @/consts/analytics to this path are part of valid analytics migration, not TypeScript resolution issues.
Applied to files:
sdk/qrcode/components/SelfQRcode.tsx
📚 Learning: 2025-10-08T20:23:58.783Z
Learnt from: transphorm
Repo: selfxyz/self PR: 1244
File: .github/workflows/mobile-deploy.yml:774-776
Timestamp: 2025-10-08T20:23:58.783Z
Learning: In the selfxyz/self repository, for the mobile deployment workflow (.github/workflows/mobile-deploy.yml):
- iOS builds cache Ruby gems at `app/ios/vendor/bundle`
- Android builds cache Ruby gems at `app/vendor/bundle`
- These paths should be used consistently within their respective build jobs
Applied to files:
.github/workflows/mobile-e2e.yml
📚 Learning: 2025-09-22T11:10:57.879Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: app/AGENTS.md:0-0
Timestamp: 2025-09-22T11:10:57.879Z
Learning: Applies to app/ios/**/*.{m,mm,swift} : Document complex native iOS module changes in the PR
Applied to files:
.github/workflows/mobile-e2e.yml
📚 Learning: 2025-09-22T11:10:22.019Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: .cursorrules:0-0
Timestamp: 2025-09-22T11:10:22.019Z
Learning: Test, build, and deploy scripts (`yarn test`, `yarn ios`, `yarn test:e2e:ios`, Fastlane, etc.) must be used for automation.
Applied to files:
.github/workflows/mobile-e2e.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-pods composite action for CocoaPods caching in workflows
Applied to files:
.github/workflows/mobile-e2e.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-yarn composite action for Yarn dependency caching in workflows
Applied to files:
.github/workflows/mobile-e2e.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : In GitHub workflows, use the shared composite actions in .github/actions for dependency caching instead of calling actions/cache directly
Applied to files:
.github/workflows/mobile-e2e.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-gradle composite action for Gradle caching in workflows
Applied to files:
.github/workflows/mobile-e2e.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-bundler composite action for Ruby gems caching in workflows
Applied to files:
.github/workflows/mobile-e2e.yml
📚 Learning: 2025-10-07T14:25:57.507Z
Learnt from: aaronmgdr
Repo: selfxyz/self PR: 1230
File: packages/mobile-sdk-alpha/package.json:66-75
Timestamp: 2025-10-07T14:25:57.507Z
Learning: Always verify directory existence from the correct package root before flagging missing directories as critical issues, especially when the package.json "files" array includes them.
Applied to files:
.github/workflows/mobile-e2e.yml
📚 Learning: 2025-09-22T11:10:57.879Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: app/AGENTS.md:0-0
Timestamp: 2025-09-22T11:10:57.879Z
Learning: Ensure app builds succeed for iOS, Android, and Web before PRs
Applied to files:
.github/workflows/mobile-e2e.yml
📚 Learning: 2025-08-24T18:54:04.809Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: .cursor/rules/mobile-sdk-migration.mdc:0-0
Timestamp: 2025-08-24T18:54:04.809Z
Learning: Applies to packages/mobile-sdk-alpha/package.json : Expose a 'test:build' script in the SDK's package.json that runs build, test, types, and lint
Applied to files:
.github/workflows/mobile-e2e.yml
📚 Learning: 2025-07-29T01:08:28.530Z
Learnt from: transphorm
Repo: selfxyz/self PR: 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
⏰ Context from checks skipped due to timeout of 300000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
- GitHub Check: type-check
- GitHub Check: build-deps
- GitHub Check: analyze-ios
- GitHub Check: e2e-ios
- GitHub Check: android-build-test
- GitHub Check: analyze-android
🔇 Additional comments (6)
sdk/qrcode/components/SelfQRcode.tsx (1)
112-121: Consistent application of best practice.The same improvement is correctly applied here. The type suppression pattern is now consistent across both animation states.
.github/workflows/mobile-e2e.yml (5)
314-317: ✓ Correct composite action usage for ccache.Good application of the
cache-ccachecomposite action to replace direct caching or third-party action coupling.
331-336: ✓ Correct composite action usage for Xcode caching.The
cache-xcodecomposite action is the right approach for caching Xcode build and derived data.
488-494: Clarify Release vs. Debug build strategy for E2E stability.Line 493 uses Release configuration with
SWIFT_OPTIMIZATION_LEVEL=-Onone, which is atypical. Release builds are generally slower to compile than Debug but run faster. Using Release with no optimizations negates the runtime benefit while still using Release build logic.Confirm whether:
- This configuration is necessary for E2E test stability (e.g., avoiding Debug-only issues).
- A Debug build would be faster or equally reliable.
- The
-Ononeflag is intentional or should allow optimizations.If this is a known workaround for simulator incompatibilities, document it in a comment for future maintainers.
219-219: ✓ Appropriate runner size upgrade for E2E workload.Upgrading from
macos-latest-largetomacos-latest-xlargeprovides more resources for the e2e iOS build and test, which should reduce flakiness and improve build times.
342-360: Based on my verification:
- Cache-built-deps is restore-only: Confirmed. The composite action only calls
actions/cache/restore@v4and explicitly documents that save must happen in the workflow.- Keys are consistent: The restore key matches the save key after variable expansion—no mismatch.
- Guideline violation identified: The primary issue is that line 355 calls
actions/cache/save@v4directly, which violates your repository's guideline requiring the use of shared composite actions.
Replace direct
actions/cache/save@v4with a composite action wrapper per coding guidelines.Line 355 bypasses the shared composite actions pattern. Per the repository guidelines, move the save step into a
cache-built-deps-savecomposite action (located in.github/actions/) to maintain consistency with other cache composites (e.g.,cache-yarn,cache-bundler). This ensures centralized cache logic and prevents direct use of external cache actions in workflows.The restore-only design of
cache-built-depsis correct. Create the companion save composite or extend the existing one if feasible.⛔ Skipped due to learnings
Learnt from: CR Repo: selfxyz/self PR: 0 File: AGENTS.md:0-0 Timestamp: 2025-10-04T05:29:43.587Z Learning: Applies to .github/workflows/**/*.{yml,yaml} : In GitHub workflows, use the shared composite actions in .github/actions for dependency caching instead of calling actions/cache directlyLearnt from: CR Repo: selfxyz/self PR: 0 File: AGENTS.md:0-0 Timestamp: 2025-10-04T05:29:43.587Z Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-yarn composite action for Yarn dependency caching in workflowsLearnt from: CR Repo: selfxyz/self PR: 0 File: AGENTS.md:0-0 Timestamp: 2025-10-04T05:29:43.587Z Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-gradle composite action for Gradle caching in workflowsLearnt from: CR Repo: selfxyz/self PR: 0 File: AGENTS.md:0-0 Timestamp: 2025-10-04T05:29:43.587Z Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-bundler composite action for Ruby gems caching in workflowsLearnt from: CR Repo: selfxyz/self PR: 0 File: AGENTS.md:0-0 Timestamp: 2025-10-04T05:29:43.587Z Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-pods composite action for CocoaPods caching in workflowsLearnt from: transphorm Repo: selfxyz/self PR: 1244 File: .github/workflows/mobile-deploy.yml:774-776 Timestamp: 2025-10-08T20:23:58.783Z Learning: In the selfxyz/self repository, for the mobile deployment workflow (.github/workflows/mobile-deploy.yml): - iOS builds cache Ruby gems at `app/ios/vendor/bundle` - Android builds cache Ruby gems at `app/vendor/bundle` - These paths should be used consistently within their respective build jobsLearnt from: CR Repo: selfxyz/self PR: 0 File: .cursorrules:0-0 Timestamp: 2025-09-22T11:10:22.019Z Learning: Test, build, and deploy scripts (`yarn test`, `yarn ios`, `yarn test:e2e:ios`, Fastlane, etc.) must be used for automation.Learnt from: CR Repo: selfxyz/self PR: 0 File: .cursor/rules/mobile-sdk-migration.mdc:0-0 Timestamp: 2025-08-24T18:54:04.809Z Learning: Applies to packages/mobile-sdk-alpha/package.json : Expose a 'test:build' script in the SDK's package.json that runs build, test, types, and lint
Summary by CodeRabbit