Skip to content

Comments

ci: optimize ci script/configuration#72

Merged
l2hyunwoo merged 5 commits intomainfrom
fix/ios-e2e-ci
Feb 13, 2026
Merged

ci: optimize ci script/configuration#72
l2hyunwoo merged 5 commits intomainfrom
fix/ios-e2e-ci

Conversation

@l2hyunwoo
Copy link
Owner

@l2hyunwoo l2hyunwoo commented Feb 13, 2026

Summary by CodeRabbit

  • Chores
    • Removed the project's end-to-end CI workflow.
    • Updated CI harness defaults for iOS simulator selection and timeouts.
  • Tests
    • Adjusted E2E timeout behavior to align with CI-prepared builds and bundles.

@l2hyunwoo l2hyunwoo self-assigned this Feb 13, 2026
@coderabbitai
Copy link

coderabbitai bot commented Feb 13, 2026

Caution

Review failed

The pull request is closed.

📝 Walkthrough

Walkthrough

Removed the repository's E2E GitHub Actions workflow file and updated the example RN harness config to add CI-derived iOS simulator defaults and reduce the CI bridge timeout to 120000 ms.

Changes

Cohort / File(s) Summary
Deleted CI Workflow
.github/workflows/e2e-tests.yml
Entire E2E GitHub Actions workflow removed (jobs, triggers, concurrency, caching, simulator boot, build, test, and report aggregation).
Test Harness Config
example/showcase/rn-harness.config.mjs
Added CI-derived iosDeviceName and iosVersion defaults from env; replaced hardcoded simulator spec with these variables; reduced CI bridgeTimeout from 300000 ms to 120000 ms and updated related comments.

Sequence Diagram(s)

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Poem

🐰
I nudged a workflow off the trail, then hopped to tweak a sim,
I set defaults from CI winds and shortened timeout trim.
Bundles dream of quiet runs, builds rest beneath the tree,
A rabbit hums a little tune — CI lighter, swift, and free.

🚥 Pre-merge checks | ✅ 3 | ❌ 1
❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Title check ❓ Inconclusive The title 'ci: optimize ci script/configuration' is vague and generic, using non-specific language that doesn't convey the concrete nature of the changes (E2E test timeouts, simulator caching, and device configuration). Consider a more descriptive title such as 'ci: improve iOS E2E test pipeline with caching and simulator pre-boot' to clearly indicate the main optimizations being made.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Merge Conflict Detection ✅ Passed ✅ No merge conflicts detected when merging into main

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch fix/ios-e2e-ci

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a 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

🤖 Fix all issues with AI agents
In @.github/workflows/e2e-tests.yml:
- Around line 57-66: The Boot iOS Simulator step may leave DEVICE_ID empty
causing later cryptic failures; add a guard after determining DEVICE_ID (the
variable used to set SIMULATOR_DEVICE_ID and passed to xcrun simctl boot) that
checks if DEVICE_ID is empty and if so echo a clear error message and exit with
non-zero status (fail fast) instead of proceeding; ensure the check is placed
before the xcrun simctl boot "$DEVICE_ID" || true line so that failures are
explicit and the GitHub Actions job stops when no simulator is found.
- Around line 49-55: The cache key uses hashFiles(...) with glob patterns that
don't exist, causing cache misses; update the patterns in the
xcode-deriveddata-e2e cache key (the key construction using hashFiles in the
Cache Xcode DerivedData step) to match real iOS sources by replacing the
non-existent src/**/*.swift, src/**/*.mm, src/**/*.cpp, and
nitrogen/generated/ios/** patterns with
packages/react-native-nitro-device-info/ios/** and
packages/react-native-nitro-device-info/src/DeviceInfo.nitro.ts so the hashFiles
call produces a real hash and the xcode-deriveddata-e2e-${{ runner.os }}-... key
becomes specific.
🧹 Nitpick comments (1)
.github/workflows/e2e-tests.yml (1)

91-94: Piping to tail -20 discards build diagnostics needed for debugging failures.

GitHub Actions' default pipefail ensures a failed xcodebuild still fails the step, so correctness is fine. However, only the last 20 lines of output are preserved — the actual compiler error or linker failure is likely earlier in the log and will be invisible.

Consider using tee to preserve the full log as an artifact, or a tool like xcbeautify/xcpretty that filters noise while keeping errors visible.

Example: preserve full log and show tail
-            build | tail -20
+            build | tee /tmp/xcodebuild.log | tail -50

Then optionally upload /tmp/xcodebuild.log as an artifact on failure.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In @.github/workflows/e2e-tests.yml:
- Around line 119-127: The pre-bundling step is ineffective because the workflow
builds with -configuration Debug so AppDelegate uses
RCTBundleURLProvider.sharedSettings().jsBundleURL(forBundleRoot: "index") to
load from Metro, not the pre-bundled Bundle.main.url(forResource: "main",
withExtension: "jsbundle"); either remove the "Pre-bundle Metro JS" step
entirely or change the build invocation to use -configuration Release so the app
will load ios/build/main.jsbundle at runtime (update the workflow build step
that currently sets -configuration Debug accordingly).
🧹 Nitpick comments (1)
.github/workflows/e2e-tests.yml (1)

107-117: Build step improvements look solid, but verify tail doesn't mask build errors.

set -o pipefail on line 107 ensures xcodebuild's exit code propagates through the | tail -40 pipe — this is correct. However, note that only the last 40 lines of output will be visible. If xcodebuild fails with an error earlier in the output, the relevant error message may be truncated and not visible in the CI logs, making debugging harder.

Consider using xcpretty or increasing the tail line count (e.g., tail -100) to ensure error diagnostics aren't lost, or alternatively capture the full log to a file and upload it as an artifact on failure.

@l2hyunwoo l2hyunwoo merged commit e3b45cb into main Feb 13, 2026
6 of 8 checks passed
@l2hyunwoo l2hyunwoo deleted the fix/ios-e2e-ci branch February 13, 2026 14:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant