Diffinery

codician/diffinerypublic

Open-source, agent-first GitHub and GitHub Actions alternative that runs on your own Cloudflare account: git hosting, pull requests, code review and drop-in GitHub Actions YAML on Workers, Durable Objects, R2 and Containers.

E2E: large pushes and real histories in their own shard (#176)

Since #157 the core e2e file runs past node's 600 s per-file timeout: its four real histories take about 330 s on their own, so the last two tests were cancelled and End-to-end failed on main (3281dab). They now run in a fifth shard, selected by name from the same file.

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 3281dabcommit f24bc68a81a2482fd2271f586788c6251e21da19Browse files
1 file changed+13−5
modified.github/workflows/e2e.yml+13−5View file
@@ -13,9 +13,10 @@
1313 cancel-in-progress: true
1414
1515 jobs:
16- # The suite in two parallel shards of about the same length: the git, pull request
17- # and Actions file on its own, and every other test/e2e/*.test.mjs file (so a new
18- # file runs without editing this). Only the second shard needs a browser (passkeys).
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
18+ # every other test/e2e/*.test.mjs file (so a new file runs without editing this).
19+ # Only the last shard needs a browser (passkeys).
1920 e2e:
2021 name: End-to-end (${{ matrix.name }})
2122 runs-on: ubuntu-latest
@@ -26,6 +27,8 @@
2627 include:
2728 - name: git, PRs, Actions
2829 shard: core
30+ - name: large pushes, real histories
31+ shard: large
2932 - name: agent reviews, tasks, Today
3033 shard: agents
3134 - name: security
@@ -61,11 +64,16 @@
6164 core='/e2e\.test\.mjs$'
6265 agents='/(agentic|review|tasks)\.test\.mjs$'
6366 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):'
70+ opts=(--test-timeout=600000)
6471 case "${{ matrix.shard }}" in
65- core) files=$(ls test/e2e/*.test.mjs | grep -E "$core") ;;
72+ core) files=$(ls test/e2e/*.test.mjs | grep -E "$core"); opts+=(--test-skip-pattern="$large") ;;
73+ large) files=$(ls test/e2e/*.test.mjs | grep -E "$core"); opts+=(--test-name-pattern="$large") ;;
6674 agents) files=$(ls test/e2e/*.test.mjs | grep -E "$agents") ;;
6775 security) files=$(ls test/e2e/*.test.mjs | grep -E "$security") ;;
6876 *) files=$(ls test/e2e/*.test.mjs | grep -vE "$core|$agents|$security") ;;
6977 esac
7078 echo "$files"
71- node --test --test-concurrency=1 --test-timeout=600000 $files
79+ node --test --test-concurrency=1 "${opts[@]}" $files