Skip to content

About

Cypress WebUI automation

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Repository files navigation

🧪 QA Automation Portfolio

End-to-end & API test automation by Ivan Armadi

Cypress Cucumber Karate Node.js Java GitHub Actions

12 projects · 170+ automated tests · 10 real-world applications · every project runs in CI


✨ What this repository shows

Skill Where to look
🧱 Page Object Model with chainable actions and reusable components every Cypress project – cypress/pages
🥒 BDD with Gherkin – Scenario Outlines, Data Tables, tag strategy Saucedemo-BDD, BeautyHaul-BDD, Voila-BDD
🌐 Network stubbing with cy.intercept to test UI without hitting a protected backend BeautyHaul
⚡ Fast, stable logins with cy.session() and API login via cy.request Websecurity, Saucedemo
🎲 Data-driven & generated test data – fixtures and Faker DemoQA, HeroKuApp
🔐 Secrets management – credentials in git-ignored env files / CI secrets, never in code Voila-BDD, PayEver
🔌 API testing – CRUD, JSON schemas, chained requests, parallel execution API_Karate_Framework
🤖 CI/CD – one reusable GitHub Actions workflow, one status badge per project .github/workflows

📦 Projects

Project Status Stack Application Tests
Saucedemo Saucedemo Cypress saucedemo.com 27
Saucedemo-BDD Saucedemo BDD Cypress · Cucumber saucedemo.com 17
BeautyHaul BeautyHaul Cypress beautyhaul.com 16
BeautyHaul-BDD BeautyHaul BDD Cypress · Cucumber beautyhaul.com 13
DemoQA DemoQA Cypress · Faker demoqa.com 28
HeroKuApp CURA Healthcare Cypress CURA Healthcare 15
RahulAcademy Rahul Shetty Academy Cypress rahulshettyacademy.com 20
Websecurity Zero Bank Cypress Zero Bank 11
Voila-BDD voila.id BDD Cypress · Cucumber voila.id 6 + auth
PayEver PayEver Cypress PayEver commerceOS 5 + auth
DraftCypressFile Starter Template Cypress template example.cypress.io 5
API_Karate_Framework Karate API Karate · JUnit 5 JSONPlaceholder 16

+ auth – extra scenarios that run only when a test account is provided (see Secrets).

🏗️ Architecture

Every Cypress project shares the same layered structure, so a reviewer can open any folder and feel at home.

flowchart LR
    A["Spec / .feature<br/><i>what is tested</i>"] --> B["Step definitions<br/><i>BDD glue only</i>"]
    A --> C
    B --> C["Page Objects<br/><i>how to interact with the UI</i>"]
    C --> D[("Application<br/>under test")]
    E["Fixtures / Faker<br/><i>test data</i>"] -.-> A
    F["Custom commands<br/><i>cy.session login, helpers</i>"] -.-> A
Loading
<Project>/
├── cypress/
│   ├── e2e/          # specs (*.cy.js) or Gherkin (*.feature)
│   ├── pages/        # Page Objects + shared components
│   ├── fixtures/     # test data
│   └── support/      # custom commands, step definitions, global setup
├── cypress.config.js
└── package.json

A spec reads like a test case, with no raw selectors:

it('E2E: completes checkout with multiple products', () => {
  checkoutPage.fillInformation(customer).continue()
  checkoutPage.shouldHaveCorrectTotals().finish()
  checkoutPage.shouldBeComplete()
  header.shouldHaveCartCount(0)
})

🚀 Getting started

Requirements: Node.js 22+ for Cypress projects, Java 17 + Maven for Karate.

git clone https://github.com/HivanA98/Cypress-CodeJS.git
cd Cypress-CodeJS/Saucedemo     # pick any project
npm install
npm run cy:open                 # interactive runner
npm test                        # headless run + HTML report in cypress/reports

🔐 Secrets

Projects that need a real account read credentials from a git-ignored cypress.env.json (copy cypress.env.example.json). In CI the same JSON is provided as a repository secret:

Project Repository secret
Voila-BDD VOILA_CYPRESS_ENV
PayEver PAYEVER_CYPRESS_ENV

Without the secret the workflow still runs and simply skips the account-only scenarios.

🤖 Continuous Integration

  • cypress-reusable.yml – install, verify Cypress, run, upload the report
  • One small workflow per project calls it, so every project gets its own badge and only runs when its folder changes
  • A weekly scheduled run detects changes on the live websites
  • HTML reports and failure screenshots are uploaded as build artifacts

🏷️ Versioning

vMAJOR.MINOR.PATCH – e.g. v2.1.3: MAJOR = new feature / project · MINOR = new test case · PATCH = improvement or fix

About

Cypress WebUI automation

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages