Blog
Mert Özen's blog posts on software development, backend, frontend, and DevOps.
Angular CI with GitHub Actions: setup-node, npm ci, Lint, Vitest, Build Budgets and Playwright
In an Angular 22 CI, read the Node version from devEngines in package.json with setup-node@v7, install from the lock file with npm ci, run ng lint, Vitest and ng build with budgets, and run Playwright e2e with the API and a PostgreSQL service container. With act output we show why setup-node's automatic npm cache did not turn on in a monorepo, the lock drift error, a Node version mismatch and the effect of the browser cache.
Testing in the Pipeline: Fast Feedback, Quality Gates and Flaky Tests
Ordering tests in the pipeline from cheap to expensive (formatting, unit, integration with Testcontainers, e2e with Playwright) and adding quality gates such as warnings, coverage and bundle budgets gives fast, trustworthy feedback; a flaky test needs its root cause fixed rather than a retry. How a test without assertions inflates coverage, a real flaky test failing 2 of 30 runs, and an empty Playwright shard.