Automating Full-Page Screenshots with Playwright in CI
9 min readHow I replaced manual landing-page screenshots with a weekly Playwright job that captures desktop and mobile views, then bundles them into a static archive site
11 posts tagged CI/CD
How I replaced manual landing-page screenshots with a weekly Playwright job that captures desktop and mobile views, then bundles them into a static archive site
How I sped up CI and release pipelines for a large Next.js app: disabling inline ESLint and type checking in next build, running them as parallel jobs, linting only changed files, and fixing broken caches.
Deploying the still-mock-backed app to Cloud Run gated two ways (Slack SSO at the app layer and an office-IP allowlist) with a standalone container and keyless GitHub Actions via Workload Identity Federation. Plus the cost call between an app-layer IP check and Cloud Armor, and the auth gate that forced collapsing an internal self-fetch.
What broke when upgrading Node.js from 20 to 24 in a production Next.js app running in Docker, and how I fixed each issue: npm@11 breaking changes, ignore-scripts, git auth in multi-stage builds.
Deep dive into how Turbopack changed static export output in Next.js 16, why it impacts S3 upload times, and the simple fix that reduced upload time from 1m52s to 3s.
What I learned about using npm ci --ignore-scripts in production, including which libraries need special handling and which ones work fine without postinstall scripts.
How I deployed a Python Flask app to GCP Cloud Run with GitHub Actions CI/CD, coming from an AWS background. Spoiler: easier than you think.
How I fixed painfully slow Docker builds by implementing Next.js build caching that works with GitHub Actions.
How I solved the InvalidChangeSetStatus error in AWS CloudFormation GitHub Actions deploys by waiting for the change set to be ready before executing.
How to securely assume AWS IAM roles in GitHub Actions using OpenID Connect (OIDC).
Setups to deploy a Next.js app with Static Site Generation (SSG) to AWS S3 using GitHub Actions.