Conversation
…rkflow This commit addresses intermittent iOS E2E test failures caused by Metro bundler not reaching a healthy state within the readiness probe timeout. Changes: 1. **Increase iOS Metro startup timeouts** (test-suite-ios-e2e.yaml): - initial_delay_seconds: 5 → 10 (give Metro more time before first check) - timeout_seconds: 5 → 10 (allow longer per-check timeout) - failure_threshold: 12 → 24 (total timeout: 10s + 24×5s = 130s) - Add shutdown configuration for graceful termination 2. **Add Metro startup timeout wrapper** (metro.sh): - Wrap npx react-native start with 90s timeout - Ensures Metro either starts or exits with error (no hanging) 3. **Improve health check diagnostics** (metro.sh): - Add detailed error logging to metro_health() function - Log specific failure reasons (env file missing, port not set, endpoints not ready) - Helps diagnose why health checks fail 4. **Add fail-fast health check in deploy-ios** (test-suite-ios-e2e.yaml): - Verify Metro is healthy before attempting deployment - Fail immediately with clear error if Metro is not ready - Prevents waiting for dependencies that will never be satisfied 5. **Fix devbox-update workflow** (devbox-update.yml): - Remove non-existent xiaolutech/devbox-update-action@v1 - Replace with manual devbox update command - Add automatic PR creation with peter-evans/create-pull-request@v7 Root Cause Analysis: - iOS Metro bundler sometimes takes longer to start than the 60s timeout - When health checks fail, processes continue running instead of failing fast - Dependent steps (deploy, verify-app) are skipped with unhelpful error messages Impact: - Reduces flakiness in iOS E2E tests by giving Metro more time to start - Provides better diagnostics when Metro fails to start - Fixes broken weekly devbox dependency update workflow Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The timeout 90s wrapper was causing test failures: - Metro was being killed after 90s, but needs to run for entire test (5+ minutes) - Android test failed: "App cannot connect to Metro bundler" - iOS test failed: rsync timeout during pod install (likely resource contention) The process-compose readiness probe with failure_threshold: 24 provides sufficient startup timeout handling (130s). If Metro doesn't become healthy, dependent processes won't start and the test will fail appropriately. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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.
Summary
This PR addresses intermittent iOS E2E test failures caused by Metro bundler not reaching a healthy state within the readiness probe timeout, and fixes the broken
devbox-updateworkflow.Problem Analysis
iOS E2E Test Failures
Symptoms:
deployandverify-appsteps fail with "Step never executed (process may have been skipped)"Root Cause:
process_healthydependencyEvidence:
Devbox Update Workflow
Problem: Uses non-existent GitHub Action
xiaolutech/devbox-update-action@v1Error:
Unable to resolve action xiaolutech/devbox-update-action@v1, unable to find version v1Changes
1. Increase iOS Metro Startup Timeouts
File:
examples/react-native/tests/test-suite-ios-e2e.yamlImpact: Gives Metro 130s total to reach healthy state (10s initial + 24 checks × 5s)
2. Add Metro Startup Timeout Wrapper
File:
plugins/react-native/virtenv/scripts/user/metro.shImpact:
3. Improve Health Check Diagnostics
File:
plugins/react-native/virtenv/scripts/user/metro.shAdded detailed error logging to
metro_health():Impact: Makes it easier to diagnose why Metro health checks fail
4. Add Fail-Fast Health Check in deploy-ios
File:
examples/react-native/tests/test-suite-ios-e2e.yamlImpact:
5. Fix Devbox Update Workflow
File:
.github/workflows/devbox-update.ymlReplaced broken
xiaolutech/devbox-update-action@v1with:devbox updatecommandpeter-evans/create-pull-request@v7Impact: Weekly dependency updates will work again
Testing
Manual Testing
CI Testing
Risk Assessment
Low Risk:
timeoutcommand (available on all runners)Related Issues
Fixes intermittent iOS E2E test failures observed in:
Fixes devbox-update workflow failure:
🤖 Generated with Claude Code