Skip to content

devbartverma/test-automation-portfolio-devbrat

Repository files navigation

Test Automation Portfolio – Devbrat Verma

TypeScript (Playwright Test) Python (pytest) Java (JUnit 5 + Spock) .NET (NUnit) .NET (Reqnroll)

🎭 One engine, five stacks — every suite is built on Playwright.

A multi-language Playwright automation portfolio demonstrating Page Object Model design, both UI and API layers, parallel-safe execution, failure artifacts, and a GitHub Actions CI pipeline — across TypeScript, C# (.NET 8 — NUnit and Reqnroll BDD), Java (Groovy/Spock), and Python.

Every stack runs the same 18 tests (15 UI + 3 API) so the five suites are directly comparable.


🛠️ Frameworks

Language Location Test Runner UI API Test details
TypeScript /js-ts-automation Playwright Test 15 3 README
C# / .NET 8 /dotnet-automation NUnit 15 3 README
C# / .NET 8 (BDD) /reqnroll-automation Reqnroll + NUnit 15 3 README
Java + Groovy /java-automation JUnit 5 + Spock 15 3 README
Python /python-automation pytest 15 3 README

Each suite covers the same 15 UI scenarios (SauceDemo) plus 3 API contract tests (JSONPlaceholder), with a consistent Page Object structure (pages / data / tests).

📖 For a per-test breakdown — exactly what each test does and what it asserts — see the respective folder's README (linked above). Each one documents all 15 cases grouped by Authentication / Inventory / Cart / Checkout.


🎯 Target Application


▶️ Running the Tests

cd into the folder first. PWDEBUG=1 opens the Playwright Inspector (step through, pauses) and works in every stack.

TypeScript — js-ts-automation

npm install && npx playwright install     # one-time
npm test                                   # all (UI cross-browser + API)
npx playwright test --headed               # headed
npx playwright test --debug                # debug (Inspector)
npx playwright test --ui                   # UI mode — time-travel & watch
npx playwright show-report                 # open the HTML report

C# / .NET — dotnet-automation

dotnet test                                # all (headless)
HEADED=1 dotnet test                       # headed
PWDEBUG=1 dotnet test                      # debug (Inspector)
dotnet test --filter "Name~Checkout"       # run a subset
dotnet test --logger "trx;LogFileName=results.trx"   # TRX report

C# / Reqnroll BDD — reqnroll-automation

dotnet build
pwsh bin/Debug/net8.0/playwright.ps1 install chromium   # one-time
dotnet test                                # all Gherkin scenarios (headless)
HEADED=1 dotnet test                       # headed
PWDEBUG=1 dotnet test                      # debug (Inspector)
dotnet test --filter "FullyQualifiedName~Checkout"   # a subset

Java — java-automation (requires Maven)

mvn test                                   # all (headless)
HEADLESS=false mvn test                    # headed
PWDEBUG=1 mvn test                         # debug (Inspector)
mvn test -Dtest=ApiSpec                    # just the Spock API spec
mvn surefire-report:report                 # → target/site/surefire-report.html

Python — python-automation

python -m venv venv && source venv/bin/activate        # one-time
pip install -r requirements.txt && playwright install  # one-time
pytest                                     # all (headless)
pytest --headed --slowmo 500               # headed + slowed down
PWDEBUG=1 pytest                           # debug (Inspector)
pytest -n auto                             # parallel (xdist)
pytest --html=report.html --self-contained-html        # report (pip install pytest-html)

Headless is the default in every stack. Headed toggles: --headed (TS / Python), HEADED=1 (both C# suites), HEADLESS=false (Java). Debug anywhere with PWDEBUG=1 (opens the Playwright Inspector). Failure artifacts land in each suite's report / screenshots/ (target/screenshots/ for Java).


✅ Test Coverage (identical across all 5 suites)

UI — SauceDemo (15)

  • Authentication (4) — valid login, locked-out user + error icon, invalid credentials, logout & route protection
  • Inventory (4) — product count, sort by price, sort by name, product detail page
  • Cart (3) — items shown with correct names, remove updates count, cart persists across navigation
  • Checkout (4) — field validation, subtotal accuracy, price math (subtotal + tax = total), full end-to-end flow

API — JSONPlaceholder (3)

  • GET single resource — status + schema/contract assertions, data-driven over several ids
  • GET collection — status + full-collection size
  • POST resource — 201, payload echo, and a generated numeric id

⚡ Engineering Practices

  • CI/CD — GitHub Actions runs all five suites on every push/PR (see the badges above); failure artifacts are uploaded per job
  • Two test layers — UI (Playwright) and API/contract (Playwright APIRequest / requests), so checks live at the cheapest reliable level
  • Parallel-safe by design — TypeScript fullyParallel; Python isolates a browser per test (runs under pytest -n auto); Java uses a ThreadLocal factory; .NET PageTest gives each test its own context
  • Failure artifacts everywhere — trace + screenshot + video (TS) and screenshot-on-failure hooks (Python / Java / .NET)
  • Genuinely data-driven — parameterized tests (@TestCase, @pytest.mark.parametrize, Spock where:, TS loop), not just centralized constants
  • Real BDD — Reqnroll Gherkin features (with step-by-step logging) and the Java Spock API spec use true given/when/then
  • Page Object Model + centralized test data across all 5 suites
  • Resilient locators (data-test) with auto-waiting — no hard sleeps
  • Financial assertionsubtotal + tax = total verified in every UI suite

👨‍💻 Author

Devbrat Verma — Senior QA Automation Engineer
GitHub

🎓 Oracle Cloud Infrastructure 2025 Certified Generative AI Professional — view credential


📄 License

MIT

About

Test automation portfolio featuring enterprise-grade frameworks built with Playwright, Cypress(WIP), SpecFlow, Reqnroll, Serenity BDD, TypeScript, C#, Java, and Groovy, demonstrating scalable QA automation and quality engineering best practices.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages