Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions .github/workflows/e2e-live.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,11 @@ on:
default: ''
required: false
schedule:
# Weekly prod canary. Monday 05:00 UTC — before the CET workday, off-peak
# for the container pool. The monthly starter matrix runs at 03:00 on the
# 1st so a Monday-the-1st never starts both against the same five slots.
- cron: '0 5 * * 1'
# Nightly prod canary (Dan: every live-gated test runs every night, not
# weekly). 03:00 UTC — deep overnight for the CET team, and two hours
# after the nightly starter matrix (01:00) so the two never contend for
# the same five container slots.
- cron: '0 3 * * *'
workflow_call:
inputs:
base_url:
Expand Down
22 changes: 11 additions & 11 deletions .github/workflows/e2e-starter-matrix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,12 @@ name: E2E — starter compatibility matrix
# Anonymous session creation on prod works (the app only sends an Authorization
# header when a login token exists), so no secrets are required here.
#
# Manual, plus a monthly sweep (1st of the month, 05:00 UTC — off-peak for the
# container pool). It spins ~50 real container sessions; a local run at
# --workers=2 --retries=2 took ~36 min (46 passed / 27 skipped); allow headroom
# for CI + flake retries. The monthly cadence exists because this is the only
# coverage of the full starters × majors surface — weekly would double the
# container-hours for drift that moves on npm-release timescales (DEV-2203).
# Manual, plus a nightly sweep (01:00 UTC — deep overnight for the CET team,
# off-peak for the container pool). It spins ~50 real container sessions per
# run, metered in the cost ledger — the nightly cadence is an owner decision
# (Dan: every live-gated test runs every night). A run at --workers=2
# --retries=2 took ~36 min (46 passed / 27 skipped); allow headroom for CI +
# flake retries.
#
# SINGLE JOB, --workers=2. Do NOT "optimize" this into a parallel matrix: prod
# caps live-preview Sandboxes at 5 CONCURRENT *globally* (not per-job), so N
Expand All @@ -30,11 +30,11 @@ on:
default: 'https://demos.handsontable.com'
required: true
schedule:
# Monthly full sweep; schedule events carry no inputs, so the run step
# falls back to prod below. 03:00, not 05:00: the weekly e2e-live canary
# fires Mondays at 05:00, and a Monday-the-1st must not start both against
# the same global pool of five container slots (Bugbot, #189).
- cron: '0 3 1 * *'
# Nightly full sweep (Dan: all live coverage runs daily overnight);
# schedule events carry no inputs, so the run step falls back to prod
# below. 01:00 UTC, two hours ahead of the 03:00 e2e-live canary, so the
# two never contend for the same global pool of five container slots.
- cron: '0 1 * * *'

# Two overlapping runs = 4 workers against the global 5-container cap, leaving
# real traffic 1 slot. cancel-in-progress: false (opposite of ci.yml) on purpose:
Expand Down
4 changes: 2 additions & 2 deletions runner/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -171,8 +171,8 @@ Six workflows live in `.github/workflows/` at the repo root:
|----------|---------|--------------|
| `ci.yml` | every PR (+ manual dispatch) | the CI DAG: presence + unit → build → authoring → e2e (in the pinned Playwright container). PRs are the only place the full suite runs — master does not repeat it. |
| `master.yml` | every push to `master` (or manual dispatch with per-target checkboxes) | deploy-first: path-gated `deploy-authoring`/`deploy-api` (each self-builds — a broken build never reaches wrangler), then one `@smoke` E2E run against prod. Merge-skew is covered by branch protection ("require branches to be up to date"), not by re-running the suite. |
| `e2e-live.yml` | manual, weekly canary (Mon 05:00 UTC, prod + AI), or `workflow_call` with `smoke: true` from `master.yml` | everything ci.yml cannot run: live renders, container suites, the share viewer/round-trip, AI answer checks. Dispatch inputs: `base_url`, `ai`, `pkg_pr_new_ref` (DEV-2198). |
| `e2e-starter-matrix.yml` | manual + monthly (1st, 03:00 UTC) | every starter × major through a live session; serialized against the global container cap. |
| `e2e-live.yml` | manual, nightly canary (03:00 UTC, prod + AI), or `workflow_call` with `smoke: true` from `master.yml` | everything ci.yml cannot run: live renders, container suites, the share viewer/round-trip, AI answer checks. Dispatch inputs: `base_url`, `ai`, `pkg_pr_new_ref` (DEV-2198). |
| `e2e-starter-matrix.yml` | manual + nightly (01:00 UTC) | every starter × major through a live session; serialized against the global container cap. |
| `import-docs.yml` | manual, or `repository_dispatch: docs-examples-sync` from the docs repo | re-imports the documentation-guide examples. |
| `import-starters.yml` | manual, `repository_dispatch: starter-examples-sync`, weekly cron, or push touching `examples/**` | re-imports the versioned starter buckets (each from `prod-examples/<major>` when the branch exists, else `master`), rebuilds the catalog index + container contexts, opens a PR. |

Expand Down
Loading