Repository navigation
ci: cut test time and skip e2e on PRs that cannot affect it - #419
Merged
Merged
Conversation
The email pattern had no left anchor, so a long run with no @ (a base64 blob, a minified log line) was rescanned from every offset: 100k characters took over two seconds, and devintern report applies it to log attachments up to 64KB. A lookbehind anchors matches to the start of a local-part run; leftmost-greedy matching already started there, so the redacted output is unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- e2e worker-automations: register schedules with a never-firing cron, then stop, move the durable cursor into the past and restart so the startup tick claims them, instead of waiting for real minute boundaries. One real boundary stays for the live-reload timer. ~165s -> ~37s. - worker add --wait: poll interval is injectable (waitPollIntervalMs); tests poll every 20ms and shorten restart-gap sleeps. 23s -> 5.5s. - recordTaskActioned: re-read retry delay is injectable (rereadDelayMs); tests pass 0. 3.7s -> 0.2s. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
tests/local was the critical path of the verify job. It now runs in its own e2e-local job (turbo builds packages/code first), and verify runs every other package's tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
e2e#test already built packages/code first via turbo.json, but the package graph only linked e2e to agent-harness, so turbo --affected never treated a packages/code change as affecting e2e. Declare @getdevintern/code as an e2e devDependency, and run the e2e job with --affected on pull requests (full history checkout for the merge base). Pushes to main still run the full suite. ci.yml joins turbo's global dependencies so a workflow change runs everything. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
actions/checkout fetches the base as origin/main without a local main branch, so turbo could not resolve the PR base, assumed every file changed, and never skipped the e2e suite. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
CI's Test step took about 4m50s (run on #418). Nearly all of it was the offline e2e suite (
packages/e2e/tests/local, 292s). Turbo runs it in parallel with thecodeunit tests (92s), so on its own it set the step's wall time. Two automation tests caused 165s of it by waiting for real cron minute boundaries.These commits were pushed to
fix/automations-respect-usage-limitafter #418 merged, so this PR brings them tomain.Changes
CI
tests/localruns in its owne2e-localjob, in parallel withverify.turbo --affected. The suite runs only when e2e,packages/code, or a packagecodedepends on changed since the base branch; otherwise the job passes without running any tests. Pushes tomainalways run the full suite.TURBO_SCM_BASEis set toorigin/<base>, because the checkout has no localmainbranch; without it, turbo assumed every file had changed.@getdevintern/codeis now an e2e devDependency.turbo.jsonalready builtcodebeforee2e#test, but turbo's package graph didn't link the two, so--affectedignoredcodechanges.ci.ymljoins turbo'sglobalDependencies, so a workflow change runs everything. This PR edits it, so its own run executes the full e2e suite.Faster tests
0 0 1 1 *). The test stops the worker, moves the durable cursor into the past, and restarts it, so the startup tick claims the occurrence at once. One real* * * * *wait stays, for the live timer after a config reload. About 165s → 37s.worker add --waittests: the poll interval can be injected (waitPollIntervalMs), and the tests poll every 20ms. 23s → 5.5s.actioned-statetests: the re-read retry delay can be injected (rereadDelayMs), and the tests pass 0. 3.7s → 0.2s.Both new options leave production defaults unchanged.
Bug fix: report redaction
@. Redacting 100k characters took 2.2s, anddevintern reportruns it on log attachments up to 64KB. A lookbehind now anchors each match to the start of a local-part run, so the output is the same and the scan is linear.Tests
@getdevintern/code: 2902 pass, 0 fail. Locally the suite went from 60s to 39s.--dry-runagainst past commits: a pm-desktop-only change skips e2e, andcodeor dashboard-ui changes run it.🤖 Generated with Claude Code