ci: keep browser e2e out of normal pr path #1629

Merged
hongming merged 1 commits from fix/split-heavy-e2e-required-path into main 2026-05-21 04:15:09 +00:00
Member

SOP: follow-up to molecule-core#1357 for splitting heavyweight browser E2E out of the normal PR path.

Problem

  • Branch protection only requires CI / all-required, but browser E2E workflows still execute on ordinary PR path changes and occupy scarce docker-host runners.
  • e2e-chat is currently a known preexisting A2A DNS red, so running it on every relevant PR burns runner time without improving merge signal.

Change

  • E2E Chat now runs heavy browser tests on push/main or staging, nightly schedule, workflow_dispatch, or PRs carrying merge-queue.
  • E2E Staging Canvas now runs heavy browser tests on push/main, nightly schedule, workflow_dispatch, or PRs carrying merge-queue.
  • Ordinary PRs still get the workflow context, but path-matching browser work no-ops unless the PR is queued.
  • Added structural regression test to enforce workflow_dispatch, schedule, and merge-queue PR gating on both browser E2E workflows.

Verification

  • python3 .gitea/scripts/lint-workflow-yaml.py --workflow-dir .gitea/workflows
  • python3 -m pytest tests/test_lint_workflow_yaml.py tests/test_lint_required_context_exists_in_bp.py tests/test_lint_required_no_paths.py tests/test_heavy_e2e_pr_gating.py -q
  • Result: 59 passed.

Expected saving

  • Removes normal-PR browser E2E execution for canvas/workspace-server path changes unless PR is in merge-queue.
  • Based on the previous observed PR run, this avoids roughly 17-20 minutes of e2e-chat runner occupancy and roughly 20 minutes of staging-canvas runner occupancy per matching ordinary PR.
  • Coverage remains on merge-queue, push/main, nightly, and manual rerun paths.

Rollback

  • Revert this PR to restore browser E2E execution on every matching PR.
SOP: follow-up to molecule-core#1357 for splitting heavyweight browser E2E out of the normal PR path. Problem - Branch protection only requires CI / all-required, but browser E2E workflows still execute on ordinary PR path changes and occupy scarce docker-host runners. - e2e-chat is currently a known preexisting A2A DNS red, so running it on every relevant PR burns runner time without improving merge signal. Change - E2E Chat now runs heavy browser tests on push/main or staging, nightly schedule, workflow_dispatch, or PRs carrying merge-queue. - E2E Staging Canvas now runs heavy browser tests on push/main, nightly schedule, workflow_dispatch, or PRs carrying merge-queue. - Ordinary PRs still get the workflow context, but path-matching browser work no-ops unless the PR is queued. - Added structural regression test to enforce workflow_dispatch, schedule, and merge-queue PR gating on both browser E2E workflows. Verification - python3 .gitea/scripts/lint-workflow-yaml.py --workflow-dir .gitea/workflows - python3 -m pytest tests/test_lint_workflow_yaml.py tests/test_lint_required_context_exists_in_bp.py tests/test_lint_required_no_paths.py tests/test_heavy_e2e_pr_gating.py -q - Result: 59 passed. Expected saving - Removes normal-PR browser E2E execution for canvas/workspace-server path changes unless PR is in merge-queue. - Based on the previous observed PR run, this avoids roughly 17-20 minutes of e2e-chat runner occupancy and roughly 20 minutes of staging-canvas runner occupancy per matching ordinary PR. - Coverage remains on merge-queue, push/main, nightly, and manual rerun paths. Rollback - Revert this PR to restore browser E2E execution on every matching PR.
core-devops added 1 commit 2026-05-21 04:02:54 +00:00
ci: keep browser e2e out of normal pr path
Lint shellcheck (arm64 pilot) / shellcheck-arm64 (pilot) (pull_request) Waiting to run
CI / Detect changes (pull_request) Successful in 12s
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 13s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 10s
E2E API Smoke Test / detect-changes (pull_request) Successful in 12s
E2E Chat / detect-changes (pull_request) Successful in 9s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 10s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 7s
Lint forbidden tenant-env keys / Scan workspace_secrets writers for forbidden env keys (pull_request) Successful in 7s
Lint curl status-code capture / Scan workflows for curl status-capture pollution (pull_request) Successful in 7s
Lint no tenant GITEA or GITHUB token write / Scan for repo-host token write into tenant workspace surface (pull_request) Successful in 6s
lint-continue-on-error-tracking / lint-continue-on-error-tracking (pull_request) Successful in 1m16s
lint-required-workflows-docker-host-pinned / Lint docker-host pin on docker-touching workflows (pull_request) Successful in 3s
Lint pre-flip continue-on-error / Verify continue-on-error flips have run-log proof (pull_request) Successful in 1m4s
Runtime PR-Built Compatibility / detect-changes (pull_request) Successful in 10s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 4s
gate-check-v3 / gate-check (pull_request) Successful in 5s
qa-review / approved (pull_request) Failing after 5s
sop-checklist / na-declarations (pull_request) N/A: (none)
lint-required-no-paths / lint-required-no-paths (pull_request) Successful in 34s
security-review / approved (pull_request) Failing after 6s
sop-checklist / all-items-acked (pull_request) Successful in 5s
sop-checklist / review-refire (pull_request) Has been skipped
sop-tier-check / tier-check (pull_request) Successful in 4s
lint-required-context-exists-in-bp / lint-required-context-exists-in-bp (pull_request) Successful in 1m24s
CI / Platform (Go) (pull_request) Successful in 3m6s
Lint workflow YAML (Gitea-1.22.6-hostile shapes) / Lint workflow YAML for Gitea-1.22.6-hostile shapes (pull_request) Successful in 1m22s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 5s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (pull_request) Successful in 3s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 12s
E2E Chat / E2E Chat (pull_request) Successful in 8s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 6s
CI / Canvas (Next.js) (pull_request) Successful in 5m14s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
CI / Python Lint & Test (pull_request) Successful in 6m40s
CI / all-required (pull_request) Successful in 6m43s
audit-force-merge / audit (pull_request) Successful in 7s
16b203fff1
hongming approved these changes 2026-05-21 04:15:08 +00:00
hongming left a comment
Owner

Approved via gitea-token per Hongming explicit bypass request for CI optimization follow-up.

Approved via gitea-token per Hongming explicit bypass request for CI optimization follow-up.
devops-engineer approved these changes 2026-05-21 04:15:08 +00:00
devops-engineer left a comment
Member

Approved via persona-devops-engineer-token per Hongming explicit bypass request for CI optimization follow-up.

Approved via persona-devops-engineer-token per Hongming explicit bypass request for CI optimization follow-up.
hongming merged commit e97eb95d9d into main 2026-05-21 04:15:09 +00:00
Sign in to join this conversation.
3 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: molecule-ai/molecule-core#1629