All work

C-DAC Noida · Ongoing · Author

A config-driven end-to-end test framework

A Java framework that runs UI journeys for more than one product and environment from configuration, seeds its data through APIs, and retries only failures that cannot be real bugs.

  • Java 21
  • Selenium
  • TestNG
  • WebDriverManager
  • ExtentReports
  • JDK HttpClient

At a glance

  • Application-agnostic core, one package per product
  • Retries limited to transient browser faults; assertions are never retried
  • Failures reported as plain sentences with a screenshot

Built at C-DAC. Client, product and infrastructure details are withheld; code is not public.

Structure

A core that knows nothing about any application: driver lifecycle, actions and waits, an HTTP client, configuration and reporting. Each product gets its own package of pages, flows, data providers and API helpers, and the product and environment (dev, staging, prod) are chosen by configuration. Two products run on it today: a storefront journey suite and a multi-section registration form suite.

Decisions

  • Thread-isolated sessions. Each test thread holds its own browser through a ThreadLocal, so suites can run in parallel without sharing state and without code changes.
  • Deterministic setup. Test users, addresses and records are created through the product's API before the UI test starts, instead of being clicked into existence.
  • Retries that cannot hide a bug. Only a stale element, a readiness timeout or an intercepted click is retried, found by walking the exception's cause chain. Assertion failures are never retried, and “element not found” is deliberately excluded because it usually means a wrong locator or a missing feature.
  • Readable failures. Browser exceptions are reworded into what the test was trying to do and why it could not, and the HTML report attaches a screenshot.