Deploy to Production / Build & Verify (push) Failing after 5m56s
Ping Search Engines / Notify Search Engines (push) Successful in 2s
Deploy to Production / Pre-Deploy Tests (push) Has been skipped
Deploy to Production / Deploy to Railway (push) Has been skipped
Deploy to Production / Deploy to Render (push) Has been skipped
Deploy to Production / Deploy to VPS (PM2) (push) Has been skipped
Deploy to Production / Deploy to Fly.io (push) Has been skipped
Deploy to Production / Post-Deploy Verification (push) Has been skipped
Deploy to Production / Notify on Failure (push) Successful in 2s
E2E Test Suite / Critical User Journeys (push) Has been skipped
E2E Test Suite / API Integration Tests (push) Has been skipped
E2E Test Suite / Smoke Tests (P0) (push) Failing after 11m26s
E2E Test Suite / Form Interaction Tests (push) Failing after 11m42s
E2E Test Suite / Destructive & Chaos Tests (push) Failing after 12m2s
E2E Test Suite / Cross-Browser Regression (chromium) (push) Failing after 16m14s
E2E Test Suite / Cross-Browser Regression (webkit) (push) Failing after 17m45s
E2E Test Suite / Cross-Browser Regression (firefox) (push) Failing after 25m23s
E2E Test Suite / Security Header Tests (push) Failing after 7m55s
E2E Test Suite / Test Report Summary (push) Failing after 20s
E2E Test Suite / Mobile Device Tests (push) Failing after 2h49m9s
Uptime Monitor / Health & Response Time (push) Failing after 2s
Uptime Monitor / SSL Certificate (push) Successful in 2s
Uptime Monitor / Send Alerts (push) Failing after 3s
Uptime Monitor / Record Uptime Success (push) Has been skipped
6.9 KiB
6.9 KiB
Comprehensive E2E Test Suite — WorkRoot IT Solutions
QA Automation Engineer Agent | Created: 2026-03-21
Overview
This document describes the complete E2E test suite for the WorkRoot IT Solutions website. The suite was built on top of the existing 12 test files, adding 4 new test files and a CI/CD pipeline.
Test Architecture
Page Object Models (New)
Located in tests/pages/:
ContactPage.ts— Encapsulates all contact form selectors and interactionsNavigationPage.ts— Encapsulates header/footer/mobile nav interactions
These POMs reduce selector duplication and make tests more maintainable.
Test Files
Existing Tests (12 files, inherited)
| File | Priority | Tests | Coverage |
|---|---|---|---|
e2e-smoke-suite.spec.ts |
P0 | ~20 | Page loads, performance, security basics |
e2e-critical-paths.spec.ts |
P0 | ~20 | Complete user journeys |
e2e-form-interactions.spec.ts |
P1 | ~20 | Contact form deep testing |
contact-form.spec.ts |
P1 | ~12 | Form fields and validation |
navigation.spec.ts |
P1 | ~10 | Nav links, mobile menu, responsive |
blog.spec.ts |
P1 | ~12 | Blog listing, posts, mobile |
portfolio.spec.ts |
P1 | ~8 | Portfolio grid, filters, responsive |
pages.spec.ts |
P1 | ~6 | Page load and accessibility |
accessibility.spec.ts |
P1 | ~8 | WCAG compliance |
cross-browser.spec.ts |
P2 | ~6 | Cross-browser consistency |
security-headers.test.ts |
P1 | ~8 | Security headers, CORS, CSP |
static-assets.spec.ts |
P2 | ~4 | Favicon, CSS, images |
New Tests (4 files, added)
| File | Priority | Tests | Coverage |
|---|---|---|---|
newsletter-subscription.spec.ts |
P1 | ~28 | Newsletter form E2E + API + mobile |
api-integration.spec.ts |
P1 | ~32 | Direct API tests for all endpoints |
destructive-chaos.spec.ts |
P1 | ~30 | XSS, injection, network failures, race conditions |
Coverage Matrix
| Feature | Smoke | Critical | Forms | API | Chaos | Newsletter |
|---|---|---|---|---|---|---|
| Page loads | ✅ | ✅ | - | - | - | - |
| Navigation (desktop) | ✅ | ✅ | - | - | - | - |
| Navigation (mobile) | ✅ | ✅ | - | - | - | - |
| Contact form (happy path) | ✅ | ✅ | ✅ | ✅ | - | - |
| Contact form (validation) | - | - | ✅ | ✅ | ✅ | - |
| Contact form (honeypot) | - | - | ✅ | ✅ | - | - |
| Contact form (loading state) | - | - | ✅ | - | - | - |
| Newsletter form (happy path) | - | - | - | - | - | ✅ |
| Newsletter form (validation) | - | - | - | ✅ | ✅ | ✅ |
| Newsletter API (direct) | - | - | - | ✅ | - | ✅ |
| Blog navigation | ✅ | ✅ | - | - | - | - |
| Blog reading experience | - | ✅ | - | - | - | - |
| Portfolio filtering | - | ✅ | - | - | - | - |
| Security headers | ✅ | ✅ | - | ✅ | - | - |
| Rate limiting | - | - | - | ✅ | ✅ | ✅ |
| XSS prevention | - | - | - | - | ✅ | - |
| Network failure handling | - | - | - | - | ✅ | ✅ |
| Race conditions | - | - | ✅ | - | ✅ | ✅ |
| Mobile responsiveness | ✅ | ✅ | ✅ | - | - | ✅ |
| API validation | - | - | - | ✅ | ✅ | - |
| Accessibility | ✅ | - | ✅ | - | - | ✅ |
Total estimated tests: ~150
Running Tests
Quick Commands
# P0: Run before every deployment (~2 min)
npm run test:smoke
# P0: Critical user journeys
npm run test:critical
# P1: API integration tests
npm run test:api
# P1: All form tests
npm run test:forms
# P1: Newsletter-specific
npm run test:newsletter
# Destructive/chaos tests (nightly)
npm run test:chaos
# Full CI suite (smoke + critical + API)
npm run test:ci
# Everything
npm run test
# View HTML report
npm run test:report
CI/CD Pipeline Triggers
| Event | Jobs Run |
|---|---|
| Every push | Smoke → Critical Paths → API Tests |
| Pull Request | + Form Tests, Security Tests |
| Nightly (2 AM UTC) | All jobs including Chaos, Cross-Browser, Mobile |
| Manual trigger | Selectable suite |
Test Data
Contact Form Test Data
{
"name": "John Doe",
"email": "john.doe@example.com",
"phone": "+1 555-123-4567",
"subject": "web-development",
"message": "I am interested in building a custom web application.",
"website": ""
}
Newsletter Test Data
{
"email": "subscriber@example.com"
}
Valid Subject Values (Contact Form)
web-developmentmobile-developmentcloud-servicesai-mlconsultingsupportother
Key Bugs This Suite Would Catch
| Category | Bug Example |
|---|---|
| XSS | Alert fires in name/message field |
| Form Bypass | Honeypot filled but email still sent |
| Race Condition | Double submit sends duplicate emails |
| Validation | Short name (1 char) passes validation |
| Network | App crashes on API timeout |
| Rate Limit | No 429 after 5 rapid submissions |
| Newsletter | Form field doesn't clear after success |
| Mobile | Newsletter form clipped off-screen |
| API | /api/contact returns 500 for SQL chars |
| Security | Missing X-Frame-Options header |
| CORS | API returns wrong domain in CORS header |
Flakiness Prevention
- No fixed delays — Use
waitForLoadState,waitForSelector, element visibility - Stable selectors — Prefer
name,id,data-error,aria-labelover CSS classes - Idempotent tests — Each test resets state (navigate fresh, not session-dependent)
- Generous timeouts — 10s for network ops, 5s for animations
- CI retries — 2 retries configured for flaky infrastructure
Browser Coverage Strategy
| Suite | Browsers |
|---|---|
| Smoke | Chromium only (speed) |
| Critical Paths | Chromium + Firefox |
| Forms | Chromium |
| API | Chromium (headless HTTP) |
| Chaos | Chromium |
| Newsletter | Chromium + Mobile Chrome |
| Nightly Regression | All 7 configurations |
Files Created
tests/
├── pages/
│ ├── ContactPage.ts (NEW) Page Object Model for contact form
│ └── NavigationPage.ts (NEW) Page Object Model for navigation
├── newsletter-subscription.spec.ts (NEW) 28 newsletter tests
├── api-integration.spec.ts (NEW) 32 API-level tests
├── destructive-chaos.spec.ts (NEW) 30 chaos/destructive tests
└── ... (12 existing files unchanged)
.github/workflows/
└── e2e-tests.yml (NEW) 9-job CI pipeline
package.json (UPDATED) New test scripts
Changelog
2026-03-21
- Added Page Object Models (
ContactPage.ts,NavigationPage.ts) - Added
newsletter-subscription.spec.ts— 28 tests - Added
api-integration.spec.ts— 32 direct API tests - Added
destructive-chaos.spec.ts— 30 destructive tests - Added
e2e-tests.yml— 9-job GitHub Actions pipeline - Updated
package.jsonwith 8 new test scripts - Total suite: ~150 tests across 15 spec files