Skip to content
Latchkey

Coverage Report Upload Failed (Codecov/Coveralls) in CI

The coverage report was generated but the upload step to Codecov/Coveralls failed. Common causes are a missing/invalid token, a report path that does not match, or a transient network/rate-limit error.

What this error means

The uploader exits non-zero with "failed to upload," "No coverage reports found," or "Rate limit reached / token required." Tests passed; only the upload step failed, sometimes intermittently.

CI log
[error] There was an error running the uploader: Error uploading to
https://codecov.io: Error: HTTP 429 - Rate limit reached.

# or:
No coverage reports found. Please make sure you're generating reports.

Common causes

Missing or invalid upload token

Private repos need a CODECOV_TOKEN (or Coveralls token). If it is absent or wrong, the uploader is rejected.

Report not found at the expected path

The coverage step did not emit lcov.info/coverage-final.json, or the uploader looked in the wrong directory, so there is nothing to upload.

Transient network or rate limit

A network blip or the service's rate limit (HTTP 429/5xx) makes a single upload attempt fail even though everything is configured correctly.

How to fix it

Provide the token and point at the report

Terminal
# generate lcov first, then upload
npx jest --coverage --coverageReporters=lcov
codecov -t "$CODECOV_TOKEN" -f coverage/lcov.info

Make the upload resilient

  1. Confirm the coverage file exists before uploading (ls coverage/).
  2. Enable the uploader's built-in retries, or wrap it in a retry loop.
  3. Keep the upload from failing the whole build if coverage is informational.

How to prevent it

  • Store the upload token as a CI secret and pass it explicitly.
  • Verify the coverage report path before the upload step.
  • Enable uploader retries so a single blip does not fail the build.

Frequently asked questions

What causes "Coverage upload failed"?
Private repos need a CODECOV_TOKEN (or Coveralls token). If it is absent or wrong, the uploader is rejected.
How do I fix Coverage upload failed?
Provide the token and point at the report
Can Latchkey fix this automatically?
Yes. Latchkey runs your GitHub Actions on managed runners that detect this failure, apply the fix, and retry the job automatically - self-healing is on by default.

Related guides

References

Latchkey auto-heals failures like this one - detected, fixed, and retried without you. Start free → 30-day trial · No credit card