testover is an automated test suite for a Task Board web app. It runs by itself every Saturday and Sunday and posts ✅ pass or ❌ fail to your team chat, with nobody pressing a thing.
A sample web app (Task Board), 127 Playwright tests, and a runner plus notifier that works automatically on GitHub Actions.
Tests sign-up/login, task management, the profile page and the full user flow, then reports results to Discord or Slack.
Know right away whether the core features still work, without waiting for users to report it. It also serves as an end-to-end example for practicing QA automation.
Follow along step by step to see what each part of the project is for and how the parts connect.
Basics like login or adding a task can break silently over a weekend, and you only find out when users complain. Checking by hand is slow and easy to forget.
A user signs up or logs in → adds tasks with a priority → ticks them done, edits, deletes, searches and filters → updates their profile, changes the password, turns on dark mode, or deletes the account.
Data lives in the browser's localStorage with no backend, so the app is easy to run and gives stable results.
app/index.html, app/server.mjs · demo user demo / demo1234127 tests click buttons and fill forms, then check the result. They cover normal use, wrong or empty input, data after a reload, a phone-sized screen, and corrupted storage. Every test starts with a fresh browser, so nothing carries over between tests.
tests/*.spec.ts, tests/support/pages.ts (Page Objects)You need Node.js 22 or newer. The app starts automatically. (On a new machine, first run git clone https://github.com/mongoemon/testover.git; the full steps are in README section 2.)
npm ci npx playwright install chromium # first time only npm test # run all 127 tests
For a quick look use npm run test:smoke (the 5 core tests). To watch the browser work use npm run test:headed, then open the report with npm run report.
The weekend-e2e.yml workflow starts every Saturday and Sunday at 09:00 Thailand time. It has a 20-minute timeout so a stuck job can't hang, and you can also run it by hand from the Actions tab whenever you want an extra check.
scripts/notify.mjs reads the test results and posts them to a webhook. On failure it names the failing tests and links to the run, where the full report is in Artifacts.
Numbers below are taken from the project README.
E2E, contract, characterization and accessibility (plus 42 unit tests)
A fast set for the main path: npm run test:smoke
Run only @security, @validation and more with --grep
Discord and Slack share one webhook format, no code changes
If you want to change or add something, look here first.
| File / folder | Role |
|---|---|
app/ | The Task Board app and a tiny static server, used as the test target |
tests/ | All Playwright tests, split by area of the app |
unit/ | Unit tests for the server and the notify script |
scripts/notify.mjs | Reads test results and posts them to a webhook |
.github/workflows/weekend-e2e.yml | The schedule that runs everything automatically on GitHub |
playwright.config.ts | Playwright settings (web server, reporters, retries) |