Browser-native automation framework demonstrating Cypress-specific patterns — time-travel debugging, cy.intercept() network stubbing, and cy.session() auth caching — built against the same QA Lab target as all Cross-Stack Series frameworks.
Cypress 13.x · JavaScript ES2022 · Mochawesome 7.x · @cypress/grep 4.x · Node.js 20 LTS
Merged Mochawesome HTML report published to GitHub Pages after every CI run. Per-spec JSON files generated during the run, combined via mochawesome-merge, rendered as a single HTML artefact with pass/fail/skip breakdown and test durations.
mochawesome 7.x · marge · GitHub Pages View Report →GitHub Actions workflow: smoke tests (@smoke grep tag) on every push, full regression on main, scheduled Monday 11:00 UTC. ESLint gate runs before tests. Report merged and deployed to GitHub Pages on every run.
GitHub Actions · ubuntu-latest View Runs →Full Cypress project: plain-JS page objects, custom commands, cy.session() auth pattern, fixtures, cypress.config.js with reporter options, ESLint 9 + eslint-plugin-cypress, GitHub Actions workflow.
Public · MIT License View Repository →Cypress runs inside the browser — in the same event loop as the application under test. This architectural difference from Playwright and Selenium produces unique capabilities: real-time test runner with time-travel debugging, built-in network stubbing via cy.intercept(), and efficient auth state caching via cy.session().
This is Stack 4 of the Cross-Stack Series — the same QA Lab target tested with different frameworks to enable direct, evidence-based comparison. The framework demonstrates idiomatic Cypress patterns: plain JS page objects, custom commands, and @smoke tag filtering via @cypress/grep.
Key differentiator vs Stack 1 (Playwright TS): Cypress’s browser-native architecture makes cy.intercept() network stubbing seamless and the interactive Test Runner uniquely productive for debugging — at the cost of cross-origin iframe support.
⚠ IFrame trade-off documented: Cross-origin iframe support is an architectural limitation of Cypress. IFrame tests are intentionally skipped in this stack (it.skip() with documented reason) — not hidden. Playwright (Stack 1) covers iframes fully.
Every decision reflects real Cypress ecosystem requirements:
12 QA Lab UI sections covered across 12 test files. IFrames intentionally skipped — documented architectural trade-off, not an oversight.
Latest GitHub Actions run · May 6, 2026 · ubuntu-latest · View all runs →
Browser-native Cypress stack — every tool chosen for the JavaScript-first ecosystem. Zero proprietary or paid dependencies.
Same target, different stacks. Five frameworks built against the same QA Lab UI to produce evidence-based comparisons — not vendor benchmarks.
Unique in the series: Artillery with @artillery/plugin-playwright runs real Chromium browser instances under load — the only tool in the Cross-Stack Performance Series measuring Core Web Vitals. Part of the Cross-Stack Performance Series.
JSON output converted to interactive HTML via artillery report CLI. Separate reports for HTTP and browser scenarios. Browser report includes FCP, LCP, TTFB, CLS, INP under concurrent load. Max 3 concurrent Chromium instances — RAM constraint documented, not hidden.
Three CI commands: npm run perf:smoke (HTTP), npm run perf:baseline (HTTP, baseline JSON), npm run perf:browser (real Chromium). Runs after Cypress passes. Weekly Monday 11:00 UTC for full suite. ensure: block gates CI on SLO breach.
YAML-based scenario definitions in performance/artillery/. HTTP smoke (10 VU, 60s) and baseline (20 VU, 70s). Browser scenario: 3 concurrent Chromium instances, 60s. Custom metrics via events.emit('histogram', ...).