Technical Lead QA | Senior SDET | Test Automation Architect

I build reliable automation frameworks and quality engineering strategies that accelerate software delivery.

12+ years of experience in software engineering and quality assurance, combining hands-on automation engineering with QA leadership. Experienced in Java, Selenium, Playwright, Appium, Robot Framework, API automation, performance testing, and CI/CD, including quality assurance for GxP-regulated clinical software.

Based in India Previously worked in Germany Open to European relocation

Portrait of Niranjan Kumar Agri in a dark navy suit and white shirt against a light grey background

At work

12+ years in software engineering and QA, from Java developer to Technical Lead QA
84% of the release test scope of a GxP-regulated clinical data product automated How measured: the share of test cases in a release's test scope that were automated and ready to run, including all multi-user performance and upgrade suites. It is automation coverage of the release test scope, not a measure of product quality.
4 engineers in the QA team I lead and mentor; I own test strategy, traceability and release sign-off

In my public portfolio

19 frameworks on GitHub with GitHub Actions CI; every card shows the live status of its workflow See them below
3 real bugs found in a public demo app by my Appium framework, each kept as a test What they are

Featured projects

Portfolio projects I built and maintain on GitHub, not company code. Each has CI, a README with setup instructions and a test report; every badge is the live status of the project's workflow.

Allure report of the Enterprise framework: pass rate, suites and environment
1 · Flagship

Enterprise Test Automation Framework

Nightly regression workflow status

169 TestNG test executions from 124 test methods, all passing in the scheduled nightly run of 12 Oct 2026: API 57, UI 48, database 13, integration 9, end-to-end 2, framework unit tests 40.

UI, API and database checks of one demo shop kept in the repository; parallel execution, infrastructure-only retries, Allure evidence, Docker + Selenium Grid, nightly CI on Chrome, Firefox and Edge.

  • Java 17
  • Selenium 4
  • REST Assured
  • JDBC
  • Allure
  • Docker
Playwright HTML report listing API tests with their tags
2 · Web + API

Playwright + TypeScript Framework

CI workflow status

47 tests, 95 test executions per full run: 23 API tests once, plus 24 UI tests on each of Chromium, Firefox and WebKit.

Page objects with a header component, typed API clients with zod contracts, login through the API, network mocking; CI runs lint and type checks first, then four parallel jobs.

  • Playwright Test
  • TypeScript
  • zod
  • ESLint
  • GitHub Actions
Playwright for Java HTML report with summary and test groups
3 · Web + API

Playwright for Java Framework

Tests workflow status

57 UI, API and network tests, run in CI on Chromium, Firefox and WebKit (one job per browser engine).

Annotation-based page factory, a browser per thread and a context per test, API tests with their own data clean-up, and a trace, video and screenshot kept for every failed UI test.

  • Playwright
  • Java 17
  • TestNG
  • Jackson
  • GitHub Actions
Appium framework report: 40 of 40 tests passed on an Android 15 emulator
4 · Mobile

Appium Android Framework

Tests workflow status

40 tests on an Android 15 emulator, locally and in GitHub Actions; found 3 real bugs in the demo app, each kept as a test.

Screen objects with built-in waits, device tests, a screenshot and screen recording for every failure, retries only on Android "not responding" dialogs.

  • Appium 3
  • Java 17
  • TestNG
  • UiAutomator2
Robot Framework report: 30 tests passed
5 · Keyword-driven

Robot Framework UI + API

CI workflow status

30 tests (15 UI, 15 API) in about 70 seconds with 4 parallel pabot processes.

Page objects as resource files, API service objects, Python only where Robot syntax is awkward; CI lints first, then runs on Chrome and Firefox, plus a scheduled nightly run.

  • Robot Framework 7
  • Python
  • SeleniumLibrary
  • RequestsLibrary
  • pabot
pytest-html report of the Python framework: 46 tests passed
6 · API + UI

Python pytest + Playwright Framework

CI workflow status

46 tests (32 API, 9 UI, 5 hybrid API + UI) in about 1 m 45 s with 4 parallel workers; in CI the UI and hybrid tests run on Chromium, Firefox and WebKit.

A requests API client with pydantic contracts, Playwright page objects, login through the API by token injection, a throwaway user per test, and a screenshot in the HTML report for every failed UI test.

  • Python
  • pytest
  • Playwright
  • requests
  • pydantic
  • GitHub Actions
k6 web dashboard of a load test: request rate, response times and virtual users over time
7 · Performance

k6 Performance Testing

Performance workflow status

The stress test found the limit of the demo shop: past about 90 orders/s checkout queued without bound (p95 over 3 s). After adding load shedding, the same test stays under 650 ms.

Smoke, load, stress, spike and soak tests of a shop API kept in the repository; SLOs per endpoint as k6 thresholds that fail the CI job, open and closed workload models, and an HTML dashboard per run.

  • k6
  • JavaScript
  • Node.js
  • SLOs
  • GitHub Actions
Mochawesome report of the Cypress framework: 64 of 64 end-to-end and API tests passed
8 · E2E + API + Component

Cypress + TypeScript Framework

CI workflow status

81 Cypress tests: 31 API, 33 UI and 17 component tests; in CI the UI tests run on Chrome, Firefox and Edge.

A React + Node task app kept in the repository, tested three ways: cy.request with zod contracts, page objects with cy.intercept and cy.clock for errors, slow answers and dates, and React components mounted alone.

  • Cypress 16
  • TypeScript
  • React
  • zod
  • GitHub Actions
Pact Broker matrix: the main version verified and deployed, a feature-branch version failed
9 · Contract testing

Pact Contract Testing

Contract tests workflow status

A TypeScript consumer and a Java Spring Boot provider, 6 interactions verified through a self-hosted Pact Broker; can-i-deploy blocks a breaking consumer change while the provider build stays green.

Consumer-driven contracts with Pact V4: matchers and provider states with parameters on the consumer side, JUnit 5 verification of the real Spring Boot app with pending and WIP pacts, and publish, can-i-deploy and record-deployment in GitHub Actions.

  • Pact
  • TypeScript
  • Java 17
  • Spring Boot
  • Docker
  • GitHub Actions
Jenkins stage graph: checks, image build, kind cluster, deploy, in-cluster smoke, parallel API tests, quality gate
10 · CI/CD + Kubernetes

Jenkins + Kubernetes Test Pipeline

CI workflow status

Jenkins configured entirely as code builds a service, deploys it to a kind Kubernetes cluster and runs 21 tests against it in about 30 seconds; GitHub Actions starts a real Jenkins on every push and requires the pipeline to pass.

A declarative Jenkinsfile with parallel stages, parameters, a quality gate and masked credentials; a namespace per build, readiness probes, a smoke Job inside the cluster and API tests through port-forward, all in scripts that CI shares.

  • Jenkins
  • Kubernetes
  • Docker
  • JCasC
  • pytest
  • GitHub Actions
Pipeline: a test case goes to Claude, then a quality gate, then human review; failed runs go to AI triage
11 · AI-assisted testing

AI-Assisted Test Automation (Claude)

CI workflow status

Claude drafts Playwright tests from plain-language test cases; a three-stage gate (rules, compile, three runs) decides what a person reviews, and nothing is merged without a named reviewer.

All Java: a demo app in the repository, the Anthropic Java SDK with typed structured outputs, repair rounds fed by the gate, an approve step that marks AI-written tests, and AI failure triage into product bug, test bug, environment or flaky. Answers are recorded, so CI replays them without an API key.

  • Java 21
  • Claude API
  • Playwright
  • TestNG
  • GitHub Actions
Eval flow: golden set, assistant, deterministic checks, calibrated LLM judge, pass rate per tag
12 · LLM evals

Testing an LLM Feature (Claude)

CI workflow status

32 hand-written eval cases in six areas, each run three times; prompt-injection and data-leak areas must pass 100%, and the LLM judge is only trusted after it agrees with hand-labelled answers.

An HR policy assistant on Claude and the harness that decides whether it can ship: structured replies, deterministic checks for facts, citations, a canary and colleagues' data, a calibrated groundedness judge, pass rates per area, and 86 tests of the harness itself.

  • Java 21
  • Claude API
  • LLM evals
  • TestNG
  • GitHub Actions
Screenshot diff: the planted spacing and button colour changes highlighted in red
13 · Accessibility + visual

Accessibility and Visual Regression Testing

CI workflow status

Eight realistic defects are planted in a regressed build of the app, and the suite must report each one with the check named for it: all eight are caught.

WCAG 2.2 AA checks with axe-core in light and dark mode and in every state, keyboard and focus tests for what axe cannot see, reflow and reduced motion, and 21 screenshot baselines rendered in the Playwright Linux image with zero pixel tolerance.

  • Playwright
  • TypeScript
  • axe-core
  • WCAG 2.2
  • Docker
  • GitHub Actions
ZAP verdict: hardened build clean, every planted vulnerability caught
14 · Security testing

Security Testing with OWASP ZAP

CI workflow status

Ten vulnerabilities are planted in a second build of the app: ZAP catches the seven it can see, API tests catch the three access-control flaws no scanner can, and the hardened build must scan clean.

OWASP ZAP baseline and full scans of a hardened and a vulnerable build on a private Docker network, a rules file with FAIL/WARN/IGNORE decisions, a verdict job in CI, and API tests for IDOR, mass assignment and brute force.

  • OWASP ZAP
  • DAST
  • OWASP Top 10
  • Docker
  • TypeScript
  • GitHub Actions

More projects & learning labs

Earlier or overlapping frameworks, kept public to show other tools and how my approach evolved.

Mobile Framework (2021, upgraded for Android + iOS)

My 2021 Appium + TestNG framework, upgraded in 2026 to Appium 3, Java client 11 and Selenium 4 without changing its design: one set of tests for Android and iOS through a platform layer, capabilities per platform in properties files, and a custom HTML report with failure screenshots. Runs green on an Android 15 emulator; the iOS side is ready but not yet run.

Selenium Page Object Framework (2024, upgraded)

My January 2024 Selenium + TestNG page object framework for OrangeHRM, upgraded step by step in 2026: explicit waits instead of fixed sleeps, browser and headless mode from a config file, and an Extent report with a screenshot on every failure. The upgrade also fixed a locator bug that had failed the logout test since 2024.

Cucumber BDD Demo (2022, upgraded)

My first Cucumber project from 2022, which no longer built, brought to Java 17, Cucumber 8 (JUnit Platform runners) and Selenium 4 step by step, then split into layers: runners, step definitions, page objects, hooks and utils. Hooks attach a screenshot on failure, and a Scenario Outline that used to pass without checking anything now asserts each row.

Experience

Employers, titles and dates as on my CV and LinkedIn.

  1. Technical Lead QA

    Sycamore Informatics Inc. (employer) · Bengaluru, India · Mar 2025 – present

    Leadership

    • Lead and mentor a team of 4 QA engineers on MDR, a clinical metadata product used by global pharma companies (GxP / ICH-GCP)
    • Own test strategy, requirements traceability (RTM), defect triage and release sign-off
    • Received the Platinum Star Award from Sycamore Informatics (2026)

    Hands-on engineering

    • Built the MDR test automation suite in Robot Framework and Python, automating 84% of a release's test scope, including all multi-user performance and upgrade suites
    • Designed performance benchmarks in rfswarm (Robot Framework Swarm) in which every virtual user drives a real browser session: a gradual ramp-up to 135 concurrent users across 1,400+ seeded accounts, with each release's response times compared against the previous release and drift of 10% or more flagged
    • Use Claude for AI-assisted test design (keywords, test cases, test data), with all generated code reviewed
  2. Technical Lead QA

    Ephicacy (employer) · Bengaluru, India · Jun 2024 – Feb 2025 · client engagement: Sycamore Informatics

    • Led QA for Sycamore Informatics' MDR product as an Ephicacy consultant; moved in-house to Sycamore in Mar 2025
    • Started the Robot Framework and Python automation suite and the RTM process later continued at Sycamore
  3. Java Developer / Test Automation Engineer

    MIVO Mitarbeitervorteile GmbH · Frankfurt, Germany · May 2022 – October 2023

    • Developed front-end and back-end features in Java for an employee benefits platform, from functional analysis to release
    • Wrote unit tests and automated checks, and reviewed code for quality and coding standards
    • Designed database schemas and queries, tuned database performance, and fixed security vulnerabilities
    • Worked with a German team; shared knowledge through documentation and internal training

    Note: Employment dates reflect the respective company records. The overlapping period occurred during my transition to a role in Germany.

  4. Software Engineer → Associate Software Architect

    bebo Technologies Pvt. Ltd. · Chandigarh, India · March 2017 – September 2023

    Associate Software Architect (Mar 2023 – Sep 2023) · Principal Software Engineer (Mar 2021 – Mar 2023) · Senior Software Engineer (Mar 2019 – Mar 2021) · Software Engineer (Mar 2017 – Mar 2019)

    • Built a hybrid Selenium WebDriver framework (Page Object, data-driven and keyword-driven) for web applications, services and APIs, and integrated the automated suites into CI/CD pipelines
    • Wrote test strategies, estimates and test plans in TestRail; directed offshore teams on UI and API testing
  5. Java Developer

    Simplified Fintech Pvt Ltd · Panchkula, India · Apr 2016 – Feb 2017

    • Developed Java web applications for a fintech product and set up test scripts, test cases and automation with the QA team
  6. Java Developer

    SSV Technologies and Consultancy Services · Indore, India · Nov 2014 – Feb 2016

    • Built Java web applications, including e-commerce features, with unit and integration tests in JUnit and TestNG
  7. Trainee Software Developer

    Ypsilon IT Solutions Pvt Ltd · Indore, India · May 2014 – Oct 2014

    • Maintained and built Java applications, and contributed to an internal integration platform

Skills

The same list as on my CV.

Test automation

Selenium WebDriver, Playwright, Robot Framework, Cypress, Appium, TestNG, JUnit, Cucumber (BDD)

Programming

Java, Python, JavaScript, TypeScript, SQL

API testing

REST Assured, Postman

Performance testing

rfswarm, load and multi-user performance testing, release-to-release response-time baselines

Framework design

Page Object Model, data-driven testing, keyword-driven testing, BDD, parallel execution

CI/CD and tools

Jenkins, Azure DevOps, Git, GitHub, Jira, TestRail; in portfolio projects also GitHub Actions, CircleCI, Docker, Selenium Grid, Allure, Maven

QA leadership

Test strategy, test planning, RTM, release sign-off, defect triage and management, mentoring, offshore team coordination

Regulated environments

GxP, ICH-GCP

AI-assisted testing

Claude for test design, script generation and test data, with human review of all output

Education

M.Tech, Computer Science and Engineering
Galgotias University · 2012 – 2014

B.Tech, Information Technology
Graphic Era University, Dehradun · 2008 – 2012

Languages and work authorization

Hindi (native) · English (professional working proficiency)

Based in India. My earlier work in Germany does not give me a current right to work there or elsewhere in Europe: I would need a work permit for the destination country, and I am open to relocating.

Looking for a Technical Lead QA, Senior SDET, or Test Automation Architect opportunity in Europe? Let’s connect.

niranjankagri@gmail.com