---
title: "Diagnose a GitHub Actions Problem | StarSling"
description: "Start from the symptom: slow tests, queued runs, cache misses, stuck jobs. Each page lists the likely causes in order and links the page with the fix."
url: https://starsling.dev/github-actions/problems
canonicalUrl: https://starsling.dev/github-actions/problems
---

# Diagnose a GitHub Actions problem

[GitHub Actions](https://starsling.dev/github-actions) / Problems

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. Last updated: 2026-08-22

## Pick your symptom

- [Why your test job is slower in CI than it is locally](https://starsling.dev/github-actions/problems/slow-tests) ([markdown](https://starsling.dev/github-actions/problems/slow-tests.md)): Your 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. Diagnosis mode: hybrid; 5 likely causes.
- [npm install or npm ci taking a large slice of every run](https://starsling.dev/github-actions/problems/slow-npm-install) ([markdown](https://starsling.dev/github-actions/problems/slow-npm-install.md)): Diagnose why npm install or npm ci is slow in GitHub Actions: missing caches, duplicate installs across jobs, and duplicated setup. Diagnosis mode: static; 4 likely causes.
- [pnpm install is slow in GitHub Actions](https://starsling.dev/github-actions/problems/slow-pnpm-install) ([markdown](https://starsling.dev/github-actions/problems/slow-pnpm-install.md)): pnpm 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. Diagnosis mode: static; 4 likely causes.
- [Why is the Playwright job so slow in CI](https://starsling.dev/github-actions/problems/slow-playwright) ([markdown](https://starsling.dev/github-actions/problems/slow-playwright.md)): Diagnose why your Playwright end-to-end job dominates CI wall clock, with five ordered causes to check and how to confirm each one. Diagnosis mode: hybrid; 5 likely causes.
- [Why your Docker build rebuilds from scratch on every CI run](https://starsling.dev/github-actions/problems/slow-docker-builds) ([markdown](https://starsling.dev/github-actions/problems/slow-docker-builds.md)): Your 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. Diagnosis mode: static; 4 likely causes.
- [A one-package change runs the whole monorepo's CI](https://starsling.dev/github-actions/problems/slow-monorepo-ci) ([markdown](https://starsling.dev/github-actions/problems/slow-monorepo-ci.md)): Why a change to one package rebuilds the whole monorepo in CI, and the five causes to check in order. Diagnosis mode: hybrid; 5 likely causes.
- [Why CI runs sit queued before any job starts](https://starsling.dev/github-actions/problems/high-queue-time) ([markdown](https://starsling.dev/github-actions/problems/high-queue-time.md)): Diagnose GitHub Actions runs that queue before a job starts: check concurrency groups, cancellation, runner capacity, and triggers in order. Diagnosis mode: runtime; 5 likely causes.
- [CI fails, then passes on an unchanged rerun](https://starsling.dev/github-actions/problems/flaky-tests) ([markdown](https://starsling.dev/github-actions/problems/flaky-tests.md)): A 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. Diagnosis mode: hybrid; 5 likely causes.
- [A job hits a timeout, or hangs until GitHub kills it](https://starsling.dev/github-actions/problems/github-actions-timeouts) ([markdown](https://starsling.dev/github-actions/problems/github-actions-timeouts.md)): Diagnose why a GitHub Actions job times out or hangs: no timeout-minutes, fixed sleeps, missing healthchecks, an oversized job, or stacked-up superseded runs. Diagnosis mode: hybrid; 5 likely causes.
- [A GitHub Actions job stays queued or hangs with no output](https://starsling.dev/github-actions/problems/github-actions-jobs-stuck) ([markdown](https://starsling.dev/github-actions/problems/github-actions-jobs-stuck.md)): A job shows Queued or runs silently with no log lines. Check concurrency groups, superseded runs, job timeouts, container waits, and runner labels. Diagnosis mode: runtime; 5 likely causes.
- [GitHub Actions cache reports a miss on every run](https://starsling.dev/github-actions/problems/github-actions-cache-not-working) ([markdown](https://starsling.dev/github-actions/problems/github-actions-cache-not-working.md)): Diagnose a GitHub Actions cache that always misses or restores without saving time: key mismatches, tool-specific flags, Turborepo config, and cache scope. Diagnosis mode: hybrid; 5 likely causes.

## Already know the fix

Every cause on these pages points at a rule in [the GitHub Actions optimization catalog](https://starsling.dev/github-actions/optimizations), where the fix, its YAML, and the agent prompt live. The catalog also ships as one JSON file at https://starsling.dev/github-actions/catalog.json.
