Plan: CI — Run tier1 E2E on PRs instead of full suite#
Summary#
Modify the e2e job in .github/workflows/ci.yml to run test:e2e:tier1 on PRs by default. Add a separate workflow for nightly cron and manual dispatch of the full test:e2e suite. Support a per-PR label override (e2e-full) that switches the PR job back to test:e2e.
Files#
| File | Action | Description |
|---|---|---|
.github/workflows/ci.yml | modify | Change e2e job to run test:e2e:tier1; add label-based override to run full suite |
.github/workflows/e2e-full.yml | create | Nightly cron + workflow_dispatch workflow for the full test:e2e suite |
Steps#
- Modify the
e2ejob inci.yml— Replace hardcodednpm run test:e2ewith a conditional: runtest:e2eif the PR has thee2e-fulllabel, otherwise runtest:e2e:tier1. Usecontains(github.event.pull_request.labels.*.name, 'e2e-full')to detect the label. Keep the single-retry logic for both variants. - Create
e2e-full.ymlworkflow — New workflow triggered byschedule(nightly cron, e.g.0 3 * * *UTC) andworkflow_dispatchwith an optionalrefinput. Checks outagent-core-e2e, installs, runsnpm run test:e2eagainst the target ref (default:main/master). Runs onself-hostedwith the same env vars as the existinge2ejob. - Add workflow comment — Add a brief comment at the top of the
e2ejob inci.ymlexplaining the tier1 vs full-suite rationale and linking toe2e-full.ymlfor full runs.
Verification#
- PR without
e2e-fulllabel →e2ejob runstest:e2e:tier1 - PR with
e2e-fulllabel →e2ejob runstest:e2e - Nightly cron and manual dispatch →
e2e-full.ymlruns fulltest:e2e
Risks#
- ⚠️ Label detection uses
github.event.pull_request.labelswhich is only populated onpull_requestevents — this is fine since thee2ejob already gates onif: github.event_name == 'pull_request'. - ⚠️ Nightly cron runs against the default branch; if tests flake overnight, failures are independent of any PR and won't block merges.