Playwright E2E tests + GitLab CI job for a Next.js 16 / Payload CMS site
postgresql, gitlab, node.js, git, cicd
Preferred qualifications
- Experience: Expert
We're a web agency finishing a corporate website for an aviation services company. It's built with Next.js 16 (App Router) and Payload CMS 3 in the same app, on Postgres 18, TypeScript and Tailwind CSS 4. The homepage is finished. We need an end-to-end test suite for it that runs in GitLab CI.
WHAT YOU'LL DO
1. Write Playwright tests for the homepage. Playwright 1.65 is already installed and configured for Chromium. Cover:
- The homepage returns 200, has the right page title, and renders all seven CMS sections in order.
- Every internal link on the homepage (header, footer, service cards, call-to-action buttons) returns 200.
- An unknown URL shows the custom 404 page with status 404.
- Header: transparent over the hero, solid after scrolling.
- Mobile menu: the menu button opens a dialog. Escape and the close button shut it, and focus returns to the button.
- Region tabs: Left and Right arrow keys move between tabs and update the panel (ARIA tabs pattern).
- "How we work" section: on a phone viewport the step buttons switch the step card.
- Phone viewport (375 x 812): no horizontal scroll, and the bottom quick-contact bar is visible.
- With prefers-reduced-motion set, every section's content is visible without scrolling animations.
2. Add an "e2e" job to our existing .gitlab-ci.yml. It runs the suite against a production build on a fresh Postgres 18 database (migrate, seed, build, start, test). It keeps the Playwright HTML report as an artifact when a test fails.
3. Keep the two existing starter tests passing next to the new ones.
4. Add a short README section on running the tests locally and in CI.
HOW WE WORK
- Use roles and accessible names (getByRole, getByLabel), not CSS classes. Editors change copy in the CMS, so test structure and behaviour rather than long exact text.
- Don't change application code. If a test finds a bug, list it in the merge request instead of fixing it.
- The project needs Node 26.13 and pnpm 10, plus Docker for the local database. Playwright doesn't support Alpine Linux, so the CI job needs a Debian- or Ubuntu-based image with Node 26.
- You'll work in a fork and deliver one merge request. Typecheck and lint must pass.
- You'll sign a short NDA before you get repository access.
WHAT WE PROVIDE
Repository access, setup steps (about 10 minutes to run the site locally), and quick answers on chat while you work.
DONE MEANS
One merge request with the tests, the CI job and the README section. The pipeline is green, and any bugs the tests found are listed.
ABOUT YOU
- You've written Playwright suites for real Next.js apps, including keyboard and mobile-viewport tests.
- You've set up CI jobs (GitLab CI or GitHub Actions) with a Postgres service container.
- Payload CMS experience is a plus.
When you apply, please answer the screening questions.
Open job
AI proposal draft
Generate a short cover letter to copy into the offer. Says you are interested and ready to work.
Sign in to generate an AI proposal draft.
Log in