Six failed CI runs. Thirty-six hours of GitHub Actions time. Every run timing out at exactly the 6-hour limit.
The culprit was one line in tests/setup.js.
The Setup
We were building a multi-tenant platform with a PostgreSQL backend — around 76 database models handling everything from user accounts and billing to visitor logs and real-time notifications. The test suite had grown to roughly 1,140 test cases across 36 files.
Standard stuff. CI ran on every PR. Tests passed locally. And then one day, CI just... never finished.






