Summary
The scheduled e2e tests (on_schedule_tests.yaml) run daily at 06:00 UTC via cron, but when they fail, there is no notification — failures are only visible through the GitHub Actions UI. We should send a Slack notification to #tooling-team-python when these tests fail.
Current state
- The workflow
on_schedule_tests.yaml runs a matrix of 24 test combinations (4 crawler types × 2 HTTP clients × 3 package managers).
- It is triggered only by
schedule (cron) and workflow_dispatch.
- There is no notification mechanism in place for failures.
Desired behavior
When any job in the scheduled e2e test workflow fails, a Slack notification should be sent to the #tooling-team-python channel with:
- A link to the failed workflow run.
- Information about which matrix combination(s) failed.
Implementation notes
- Consider adding a new job at the end of the workflow that runs with
if: failure() (or use needs + checking outcomes) to send the Slack message.
- We can use an existing GitHub Action for Slack integration (e.g.
slackapi/slack-github-action) or a simple curl to a Slack webhook.
- The Slack webhook URL should be stored as a repository secret (e.g.
SLACK_WEBHOOK_URL).
- Notifications should only be sent for the
schedule trigger, not for workflow_dispatch (manual runs).
Summary
The scheduled e2e tests (
on_schedule_tests.yaml) run daily at 06:00 UTC via cron, but when they fail, there is no notification — failures are only visible through the GitHub Actions UI. We should send a Slack notification to#tooling-team-pythonwhen these tests fail.Current state
on_schedule_tests.yamlruns a matrix of 24 test combinations (4 crawler types × 2 HTTP clients × 3 package managers).schedule(cron) andworkflow_dispatch.Desired behavior
When any job in the scheduled e2e test workflow fails, a Slack notification should be sent to the
#tooling-team-pythonchannel with:Implementation notes
if: failure()(or useneeds+ checking outcomes) to send the Slack message.slackapi/slack-github-action) or a simplecurlto a Slack webhook.SLACK_WEBHOOK_URL).scheduletrigger, not forworkflow_dispatch(manual runs).