Repository navigation
ci: post scheduled scene-routing E2E failures to #squad-mobile-alerts - #679
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Shahroz16
left a comment
There was a problem hiding this comment.
Could we fix or pause the scene E2E lane before turning this on? Its scheduled run has failed every day for at least the last 12 days at "Test warm and terminated notification routing", so this would post daily from the first morning.
|
Following up on the scene-lane review: #668 already fixes the scheduled failure. Today's scheduled run fails because |
Shahroz16
left a comment
There was a problem hiding this comment.
Looks good. The scene check failed at job setup because it ran before customerio/mobile-ci-tools#21 merged; merging main in should give it a clean run, since a plain rerun keeps the old merge commit without #668.
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 05a7fda. Configure here.
|
|
||
| - name: Notify #squad-mobile-alerts of a scheduled failure | ||
| timeout-minutes: 2 | ||
| if: (failure() || cancelled()) && github.event_name == 'schedule' |
There was a problem hiding this comment.
Notify on non-test failures
Medium Severity
The Slack notify step uses failure(), which is true when any earlier step failed. On a scheduled run, Maestro diagnostics upload runs with if: always() after the test step. If the E2E test succeeds but upload fails, the workflow still posts a scheduled scene-routing failure to #squad-mobile-alerts.
Reviewed by Cursor Bugbot for commit 05a7fda. Configure here.


Scheduled scene-routing E2E failures currently only email whoever last edited the cron line. On-call watches #squad-mobile-alerts, so those failures should land there.
Adds one notify step as the last step of
route-notifications(labelscene notification routing). It runs when the job failed or was cancelled on aschedulerun, so PR and manual runs never post.workflow_call: the workflow declares nosecrets, so actionlint acceptssecrets.SLACK_WEBHOOK_URLwithout a declaration. Its only caller is the PR lane inreact-native-scene-e2e-full.yml, wheregithub.event_nameispull_request, so the step never runs there.Overlap: #668 also edits
react-native-scene-e2e.yml(one env line in the test step). The two touch different hunks and merge cleanly in either order.Merge after customerio/mobile-ci-tools#21. GitHub loads every
uses:action when a job starts, even when the step'sifis false. Until that PR merges, every run of this workflow (PR, manual or scheduled) fails at "Set up job", so this PR must not merge before it. This PR's ownfull-scene-e2ejob shows it:Can't find 'action.yml' … for action 'customerio/mobile-ci-tools/github-actions/slack-notify-scheduled-failure/v1@main'.🤖 Generated with Claude Code
Timeout handling and validation
The caller uses
(failure() || cancelled()) && github.event_name == 'schedule'. Every step has an explicit timeout; their budgets total 57 minutes within the 60-minute E2E job limit, reserving time for evidence and notification. A test-step timeout fails the job while leaving the alert able to run. The condition alone cannot guarantee an alert after a job-level timeout or runner loss.actionlintpasses.Also merge after #668. The latest scheduled run (39920744012) fails because
iPhone 17 Prois unavailable on the iOS 27 runner. #668 removes that pin and has two successful full scene E2E runs, including 39489475424 on its current head. Enable alerts after the fixed lane passes on main.