I wrote a guide on integrating Playwright into the three most common CI systems. It covers what each platform actually requires to run Playwright reliably: browser dependency handling, playwright.config.ts CI settings, parallel sharding, and artifact collection for failed tests.
The core issue most teams hit: default CI images don't ship with the system libraries Playwright browsers need (GTK, NSS, ALSA). The guide covers both approaches — Playwright's official Docker image versus manual --with-deps install — and when each makes sense.
Each platform section includes a working config file you can copy directly:
GitHub Actions: YAML with matrix sharding across 4 runners
Jenkins: Jenkinsfile using Playwright's Docker image as the agent
GitLab CI: .gitlab-ci.yml with the native parallel keyword
Also covers playwright.config.ts settings that break in CI if you ignore them: forbidOnly, retry count, worker count, and trace collection strategy.
Full article here: https://testdino.com/blog/best-playwright-ci-cd-integrations...
Happy to answer questions on any of the platform-specific setup steps.