E2E: real histories and large pushes in separate shards (#178)
On Diffinery's runners the six large tests together still ran past node's 600 s per-file timeout (jquery alone took 192 s), so the large-push test was cancelled on f24bc68. The real histories now have a shard of their own with a 900 s file timeout, and the large file and large push tests another. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016yhgAu6oKfqes812Yd4qjo
Canberk Demirci authored · GitHub committed signed1 parent e9ed630commit 87cf8feea961547cca23527b8179b51c4cce160aBrowse files
1 file changed+11−6
modified.github/workflows/e2e.yml+11−6View file
| @@ -14,7 +14,7 @@ | ||
| 14 | 14 | |
| 15 | 15 | jobs: |
| 16 | 16 | # The suite in parallel shards of about the same length: the git, pull request and |
| 17 | - # Actions file split in two (its large pushes on their own), agents, security, and | |
| 17 | + # Actions file split in three (its real histories and large pushes on their own), agents, security, and | |
| 18 | 18 | # every other test/e2e/*.test.mjs file (so a new file runs without editing this). |
| 19 | 19 | # Only the last shard needs a browser (passkeys). |
| 20 | 20 | e2e: |
| @@ -27,7 +27,9 @@ | ||
| 27 | 27 | include: |
| 28 | 28 | - name: git, PRs, Actions |
| 29 | 29 | shard: core |
| 30 | - - name: large pushes, real histories | |
| 30 | + - name: real histories | |
| 31 | + shard: histories | |
| 32 | + - name: large pushes | |
| 31 | 33 | shard: large |
| 32 | 34 | - name: agent reviews, tasks, Today |
| 33 | 35 | shard: agents |
| @@ -64,12 +66,15 @@ | ||
| 64 | 66 | core='/e2e\.test\.mjs$' |
| 65 | 67 | agents='/(agentic|review|tasks)\.test\.mjs$' |
| 66 | 68 | security='/(security|status)\.test\.mjs$' |
| 67 | - # The core file's large pushes and real histories take minutes each: their own shard, so | |
| 68 | - # neither half runs into the per-file timeout. | |
| 69 | - large='^(real histories|large files|large pushes):' | |
| 69 | + # The core file's real histories and large pushes take minutes each (jquery's alone 2 to 3 on | |
| 70 | + # Diffinery's runners): two shards of their own, so no part of the file runs into node's | |
| 71 | + # per-file timeout, which is the --test-timeout here. | |
| 72 | + histories='^real histories:' | |
| 73 | + large='^(large files|large pushes):' | |
| 70 | 74 | opts=(--test-timeout=600000) |
| 71 | 75 | case "${{ matrix.shard }}" in |
| 72 | - core) files=$(ls test/e2e/*.test.mjs | grep -E "$core"); opts+=(--test-skip-pattern="$large") ;; | |
| 76 | + core) files=$(ls test/e2e/*.test.mjs | grep -E "$core"); opts+=(--test-skip-pattern="$histories" --test-skip-pattern="$large") ;; | |
| 77 | + histories) files=$(ls test/e2e/*.test.mjs | grep -E "$core"); opts=(--test-timeout=900000 --test-name-pattern="$histories") ;; | |
| 73 | 78 | large) files=$(ls test/e2e/*.test.mjs | grep -E "$core"); opts+=(--test-name-pattern="$large") ;; |
| 74 | 79 | agents) files=$(ls test/e2e/*.test.mjs | grep -E "$agents") ;; |
| 75 | 80 | security) files=$(ls test/e2e/*.test.mjs | grep -E "$security") ;; |