# anshul-sonpure/selenium_java_testng_framework architecture

> Architecture diagram of the GitHub repository anshul-sonpure/selenium_java_testng_framework, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/anshul-sonpure/selenium_java_testng_framework
- Repository: https://github.com/anshul-sonpure/selenium_java_testng_framework

## Overview

This repository is a Java/Selenium TestNG framework for automating SauceDemo browser flows and producing Extent HTML reports with screenshots. The documented user journey covers login, product/cart interaction, checkout, and completion; the page objects implement these stages, while test setup supplies a configured browser and application session. The graph also includes reporting, screenshot capture, and the documented browser-selection capability. Test-source excerpts were not provided, so links from scenarios to page objects are marked unverified rather than presented as observed calls.

Main entry points: [`src/main/java/testBase/testBase.java`](https://github.com/anshul-sonpure/selenium_java_testng_framework/blob/main/src/main/java/testBase/testBase.java) (Test lifecycle), [`src/test/java/testSauceDemo/TestValidCompleteFlow.java`](https://github.com/anshul-sonpure/selenium_java_testng_framework/blob/main/src/test/java/testSauceDemo/TestValidCompleteFlow.java) (Test scenarios), [`src/main/java/pagefiles_SauceDemo/LoginPage.java`](https://github.com/anshul-sonpure/selenium_java_testng_framework/blob/main/src/main/java/pagefiles_SauceDemo/LoginPage.java) (Login page), [`src/main/java/testBase/ListenerTest.java`](https://github.com/anshul-sonpure/selenium_java_testng_framework/blob/main/src/main/java/testBase/ListenerTest.java) (Test listener)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_execution["Test execution"]
  node_scenarios["Test scenarios"]
  node_base["Test lifecycle<br/>[testBase.java]"]
end

subgraph group_pages["SauceDemo pages"]
  node_login["Login page<br/>[LoginPage.java]"]
  node_products["Products and cart<br/>[ProductsPage.java]"]
  node_user_info["Checkout information<br/>[UserInfoPage.java]"]
  node_checkout["Checkout summary<br/>[CheckoutPage.java]"]
  node_completion["Order completion"]
end

subgraph group_observability["Reports and screenshots"]
  node_listener["Test listener<br/>[ListenerTest.java]"]
  node_extent["Extent reporting<br/>[ExtentManager.java]"]
  node_snapshot["Screenshot capture<br/>[TakeSnap.java]"]
end

subgraph group_configuration["Browser configuration"]
  node_browser_manager["Browser manager"]
  node_properties["Property reader"]
end

node_engineer(("Test author"))
node_browser["Browser"]

node_engineer -.->|"runs suite"| node_scenarios
node_scenarios -.->|"exercises"| node_login
node_scenarios -.->|"exercises"| node_products
node_scenarios -.->|"exercises"| node_user_info
node_scenarios -.->|"exercises"| node_checkout
node_scenarios -.->|"exercises"| node_completion
node_base -->|"initializes"| node_browser_manager
node_base -->|"reads settings"| node_properties
node_browser_manager -->|"creates driver"| node_browser
node_login -->|"uses driver"| node_base
node_products -->|"uses driver"| node_base
node_user_info -->|"uses driver"| node_base
node_checkout -->|"uses driver"| node_base
node_completion -->|"uses driver"| node_base
node_login -->|"returns page"| node_products
node_base -->|"extends listener"| node_listener
node_listener -->|"logs results"| node_extent
node_listener -->|"captures failures"| node_snapshot

click node_scenarios "https://github.com/anshul-sonpure/selenium_java_testng_framework/blob/main/src/test/java/testSauceDemo/TestValidCompleteFlow.java"
click node_base "https://github.com/anshul-sonpure/selenium_java_testng_framework/blob/main/src/main/java/testBase/testBase.java"
click node_browser_manager "https://github.com/anshul-sonpure/selenium_java_testng_framework/blob/main/src/main/java/testBase/BrowserManager.java"
click node_properties "https://github.com/anshul-sonpure/selenium_java_testng_framework/blob/main/src/main/java/utililty/ReadProperties.java"
click node_login "https://github.com/anshul-sonpure/selenium_java_testng_framework/blob/main/src/main/java/pagefiles_SauceDemo/LoginPage.java"
click node_products "https://github.com/anshul-sonpure/selenium_java_testng_framework/blob/main/src/main/java/pagefiles_SauceDemo/ProductsPage.java"
click node_user_info "https://github.com/anshul-sonpure/selenium_java_testng_framework/blob/main/src/main/java/pagefiles_SauceDemo/UserInfoPage.java"
click node_checkout "https://github.com/anshul-sonpure/selenium_java_testng_framework/blob/main/src/main/java/pagefiles_SauceDemo/CheckoutPage.java"
click node_completion "https://github.com/anshul-sonpure/selenium_java_testng_framework/blob/main/src/main/java/pagefiles_SauceDemo/CompleteCheckout.java"
click node_listener "https://github.com/anshul-sonpure/selenium_java_testng_framework/blob/main/src/main/java/testBase/ListenerTest.java"
click node_extent "https://github.com/anshul-sonpure/selenium_java_testng_framework/blob/main/src/main/java/testBase/ExtentManager.java"
click node_snapshot "https://github.com/anshul-sonpure/selenium_java_testng_framework/blob/main/src/main/java/utililty/TakeSnap.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_scenarios,node_base,node_browser toneBlue
class node_login,node_products,node_user_info,node_checkout,node_completion toneAmber
class node_listener,node_extent,node_snapshot toneMint
class node_browser_manager,node_properties toneRose
class node_engineer toneIndigo
```

## Components

### Test execution

- [Test scenarios](https://github.com/anshul-sonpure/selenium_java_testng_framework/blob/main/src/test/java/testSauceDemo/TestValidCompleteFlow.java): `src/test/java/testSauceDemo/TestValidCompleteFlow.java`
- [Test lifecycle](https://github.com/anshul-sonpure/selenium_java_testng_framework/blob/main/src/main/java/testBase/testBase.java): `src/main/java/testBase/testBase.java`

### SauceDemo pages

- [Login page](https://github.com/anshul-sonpure/selenium_java_testng_framework/blob/main/src/main/java/pagefiles_SauceDemo/LoginPage.java): `src/main/java/pagefiles_SauceDemo/LoginPage.java`
- [Products and cart](https://github.com/anshul-sonpure/selenium_java_testng_framework/blob/main/src/main/java/pagefiles_SauceDemo/ProductsPage.java): `src/main/java/pagefiles_SauceDemo/ProductsPage.java`
- [Checkout information](https://github.com/anshul-sonpure/selenium_java_testng_framework/blob/main/src/main/java/pagefiles_SauceDemo/UserInfoPage.java): `src/main/java/pagefiles_SauceDemo/UserInfoPage.java`
- [Checkout summary](https://github.com/anshul-sonpure/selenium_java_testng_framework/blob/main/src/main/java/pagefiles_SauceDemo/CheckoutPage.java): `src/main/java/pagefiles_SauceDemo/CheckoutPage.java`
- [Order completion](https://github.com/anshul-sonpure/selenium_java_testng_framework/blob/main/src/main/java/pagefiles_SauceDemo/CompleteCheckout.java): `src/main/java/pagefiles_SauceDemo/CompleteCheckout.java`

### Reports and screenshots

- [Test listener](https://github.com/anshul-sonpure/selenium_java_testng_framework/blob/main/src/main/java/testBase/ListenerTest.java): `src/main/java/testBase/ListenerTest.java`
- [Extent reporting](https://github.com/anshul-sonpure/selenium_java_testng_framework/blob/main/src/main/java/testBase/ExtentManager.java): `src/main/java/testBase/ExtentManager.java`
- [Screenshot capture](https://github.com/anshul-sonpure/selenium_java_testng_framework/blob/main/src/main/java/utililty/TakeSnap.java): `src/main/java/utililty/TakeSnap.java`

### Browser configuration

- [Browser manager](https://github.com/anshul-sonpure/selenium_java_testng_framework/blob/main/src/main/java/testBase/BrowserManager.java): `src/main/java/testBase/BrowserManager.java`
- [Property reader](https://github.com/anshul-sonpure/selenium_java_testng_framework/blob/main/src/main/java/utililty/ReadProperties.java): `src/main/java/utililty/ReadProperties.java`

### Other components

- **Test author**
- **Browser**

## Connections

- Test author → Test scenarios: runs suite (evidence: `README.md`)
- Test scenarios → Login page: exercises
- Test scenarios → Products and cart: exercises
- Test scenarios → Checkout information: exercises
- Test scenarios → Checkout summary: exercises
- Test scenarios → Order completion: exercises
- Test lifecycle → Browser manager: initializes (evidence: `src/main/java/testBase/testBase.java`)
- Test lifecycle → Property reader: reads settings (evidence: `src/main/java/testBase/testBase.java`)
- Browser manager → Browser: creates driver (evidence: `src/main/java/testBase/BrowserManager.java`)
- Login page → Test lifecycle: uses driver (evidence: `src/main/java/pagefiles_SauceDemo/LoginPage.java`)
- Products and cart → Test lifecycle: uses driver (evidence: `src/main/java/pagefiles_SauceDemo/ProductsPage.java`)
- Checkout information → Test lifecycle: uses driver (evidence: `src/main/java/pagefiles_SauceDemo/UserInfoPage.java`)
- Checkout summary → Test lifecycle: uses driver (evidence: `src/main/java/pagefiles_SauceDemo/CheckoutPage.java`)
- Order completion → Test lifecycle: uses driver (evidence: `src/main/java/pagefiles_SauceDemo/CompleteCheckout.java`)
- Login page → Products and cart: returns page (evidence: `src/main/java/pagefiles_SauceDemo/LoginPage.java`)
- Test lifecycle → Test listener: extends listener (evidence: `src/main/java/testBase/testBase.java`)
- Test listener → Extent reporting: logs results (evidence: `src/main/java/testBase/ListenerTest.java`)
- Test listener → Screenshot capture: captures failures (evidence: `src/main/java/testBase/ListenerTest.java`)
