Skip to content

ci: post scheduled scene-routing E2E failures to #squad-mobile-alerts - #679

Merged
mahmoud-elmorabea merged 3 commits into
mainfrom
notify-scheduled-e2e-failures
Oct 23, 2026
Merged

mahmoud-elmorabea merged 3 commits into
mainfrom
notify-scheduled-e2e-failures

Conversation

@mahmoud-elmorabea

@mahmoud-elmorabea mahmoud-elmorabea commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

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 (label scene notification routing). It runs when the job failed or was cancelled on a schedule run, so PR and manual runs never post.

workflow_call: the workflow declares no secrets, so actionlint accepts secrets.SLACK_WEBHOOK_URL without a declaration. Its only caller is the PR lane in react-native-scene-e2e-full.yml, where github.event_name is pull_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's if is 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 own full-scene-e2e job 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.

  • actionlint passes.
  • Shared-action shell tests and shellcheck pass. A one-minute timeout probe verified that the timeout produces a failed step and reaches the dry-run composite alert. No Slack message was sent.

Also merge after #668. The latest scheduled run (39920744012) fails because iPhone 17 Pro is 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.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@Shahroz16 Shahroz16 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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.

Comment thread .github/workflows/react-native-scene-e2e.yml Outdated
@mahmoud-elmorabea

Copy link
Copy Markdown
Contributor Author

Following up on the scene-lane review: #668 already fixes the scheduled failure. Today's scheduled run fails because iPhone 17 Pro is unavailable on iOS 27 (https://github.com/customerio/customerio-reactnative/actions/runs/39920744012). #668 removes the model pin and has two successful full scene runs, including https://github.com/customerio/customerio-reactnative/actions/runs/39489475424 at its current head. This PR's description now explicitly requires #668 to merge and the fixed lane to pass on main before enabling alerts. The shared action dependency, customerio/mobile-ci-tools#21, has merged. The timeout review comment is addressed separately. No lane was paused, and #679 remains open pending the scene fix.

@Shahroz16 Shahroz16 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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.

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ 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'

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 05a7fda. Configure here.

@mahmoud-elmorabea
mahmoud-elmorabea merged commit 51cd997 into main Oct 23, 2026
16 checks passed
@mahmoud-elmorabea
mahmoud-elmorabea deleted the notify-scheduled-e2e-failures branch October 23, 2026 16:04
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.

2 participants