A Cypress bug-verification automation suite targeting OrangeHRM — an open-source HR management system. Each test documents, reproduces, and confirms a real application defect with automated screenshot evidence at every step.
This project demonstrates a bug-verification approach to test automation. Rather than writing happy-path tests, each spec reproduces a specific defect found during exploratory testing of OrangeHRM, captures screenshot evidence at each critical step, and programmatically confirms whether the bug is present or resolved. This makes the suite useful both as a regression guard and as living documentation of known defects.
| Bug ID | Spec File | Defect Description | Severity |
|---|---|---|---|
| BUG-001 | bug001-login-spaces.cy.js | Login accepts username with leading/trailing spaces | High |
| BUG-002 | bug002-blank-login.cy.js | Blank login validation — error messages disappear on field focus | Medium |
| BUG-003 | bug003-password-copy.cy.js | Password field allows copying — no copy protection | Medium |
| BUG-004 | bug004-employee-no-name.cy.js | Employee record saves without a required first name | High |
| BUG-005 | bug005-search-reset.cy.js | Employee search list does not reset after clearing search field | Medium |
Every spec follows the same pattern:
- Reproduce — Navigate to the affected area and perform the exact steps that trigger the bug
- Screenshot — Capture evidence at each stage (before action, after action, result)
- Assert — Check whether the bug condition is present
- Confirm or Pass — If the bug is confirmed, the test throws a descriptive error and captures a
CONFIRMEDscreenshot; if fixed, it passes cleanly
This means the suite can be run against any version of OrangeHRM to instantly determine which bugs remain open.
qa-portfolio/
├── .github/
│ └── workflows/ # GitHub Actions CI pipeline
├── cypress/
│ ├── e2e/ # Bug verification specs
│ │ ├── bug001-login-spaces.cy.js
│ │ ├── bug002-blank-login.cy.js
│ │ ├── bug003-password-copy.cy.js
│ │ ├── bug004-employee-no-name.cy.js
│ │ └── bug005-search-reset.cy.js
│ ├── screenshots/ # Auto-captured evidence (gitignored)
│ ├── videos/ # Test run recordings (gitignored)
│ ├── reports/ # Mochawesome HTML reports (gitignored)
│ └── support/
│ ├── commands.js # Custom Cypress commands
│ └── e2e.js # Support file entry point
├── cypress.config.js # Cypress + Mochawesome reporter config
└── package.json
- Node.js 18 or higher
git clone https://github.com/Djones-qa/qa-portfolio.git
cd qa-portfolio
npm install# Run all bug verification tests headlessly
npx cypress run
# Run a specific bug
npx cypress run --spec "cypress/e2e/bug001-login-spaces.cy.js"
# Open interactive test runner
npx cypress openMochawesome HTML reports are generated automatically in cypress/reports/ after each run. Open any .html file in a browser to view the full report with screenshots embedded.
| Setting | Value |
|---|---|
| Base URL | https://opensource-demo.orangehrmlive.com |
| Page Load Timeout | 120s |
| Command Timeout | 30s |
| Retries (CI) | 2 |
| Video Recording | Enabled |
| Screenshots | On failure + manual captures |
| Reporter | Mochawesome (HTML + JSON) |
Tests run automatically on every push and pull request via GitHub Actions. The pipeline installs dependencies and runs the full bug verification suite headlessly, reporting pass/fail status on every commit.
| Tool | Purpose |
|---|---|
| Cypress | Browser automation and test runner |
| JavaScript | Test scripting |
| Mochawesome | HTML test reporting with timestamps |
| GitHub Actions | CI/CD pipeline |
| OrangeHRM Demo | Live test target |