Vitest 4 tests pass locally but fail in CI
Bumping Vitest from 3 to 4 turned my git-proxy CI red while local stayed green. Stale node_modules, broken class mocks, and port clashes. Here's how I fixed each.
Read the entry →Engineering log · GitProxy
A daily record of the real work behind GitProxy — the bugs that bit, the fixes that stuck, and the reasoning in between. Written for the next engineer who hits the same wall.
Bumping Vitest from 3 to 4 turned my git-proxy CI red while local stayed green. Stale node_modules, broken class mocks, and port clashes. Here's how I fixed each.
Read the entry →Build a GitHub Actions bot that triages issues and PRs with an LLM: label, dedupe, security-scan, and run it on Claude, GPT, or Gemini. Here's how I did it.
Read the entry →Moving GitProxy's npm publish from a token to OIDC trusted publishers took a few lines, except for one thing that kept failing.
Read the entry →A Vitest test using expect().toThrow() let a JSON.parse SyntaxError escape and fail the run instead of catching it. Here's why, and the fix.
Read the entry →Moving a Git tag to a newer commit takes a force push, or Git rejects it because the tag already exists. Here's how, plus the gotcha that bites teammates.
Read the entry →A containerized Node app failed with EACCES: permission denied, mkdir './.data' after dropping to a non-root user. Here's the cause and the fix.
Read the entry →