Diagnose a GitHub Actions problem
Start from the symptom. Each page lists the likely causes in order, the one check that confirms each, and the page that carries the fix.
11 symptoms
Pick your symptom
Why your test job is slower in CI than it is locally
hybridYour GitHub Actions test job runs far slower than the same suite locally. Here are the five causes to check, in order, and how to confirm each one.
5 likely causes
npm install or npm ci taking a large slice of every run
staticDiagnose why npm install or npm ci is slow in GitHub Actions: missing caches, duplicate installs across jobs, and duplicated setup.
4 likely causes
pnpm install is slow in GitHub Actions
staticpnpm install taking minutes in CI usually means the store isn't cached, setup order is wrong, or the same install runs more than once per workflow.
4 likely causes
Why is the Playwright job so slow in CI
hybridDiagnose why your Playwright end-to-end job dominates CI wall clock, with five ordered causes to check and how to confirm each one.
5 likely causes
Why your Docker build rebuilds from scratch on every CI run
staticYour Docker image build step redoes every layer on every run. Here is the ordered list of causes to check, starting with a missing GitHub Actions cache backend.
4 likely causes
A one-package change runs the whole monorepo's CI
hybridWhy a change to one package rebuilds the whole monorepo in CI, and the five causes to check in order.
5 likely causes
Why CI runs sit queued before any job starts
runtimeDiagnose GitHub Actions runs that queue before a job starts: check concurrency groups, cancellation, runner capacity, and triggers in order.
5 likely causes
CI fails, then passes on an unchanged rerun
hybridA rerun that passes with no code change usually means a timing-dependent wait, a hung watch-mode test process, or a missing job timeout, not a real test bug.
5 likely causes
A job hits a timeout, or hangs until GitHub kills it
hybridDiagnose why a GitHub Actions job times out or hangs: no timeout-minutes, fixed sleeps, missing healthchecks, an oversized job, or stacked-up superseded runs.
5 likely causes
A GitHub Actions job stays queued or hangs with no output
runtimeA job shows Queued or runs silently with no log lines. Check concurrency groups, superseded runs, job timeouts, container waits, and runner labels.
5 likely causes
GitHub Actions cache reports a miss on every run
hybridDiagnose a GitHub Actions cache that always misses or restores without saving time: key mismatches, tool-specific flags, Turborepo config, and cache scope.
5 likely causes
Already know the fix
Every cause on these pages points at a rule in the optimization catalog, where the fix, its YAML, and the agent prompt live. The catalog also ships as one JSON file a coding agent can fetch in a single request.
The GitHub Actions optimization catalogLast updated 2026-08-22