# sitanshupt5/seleniumbddjava architecture

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

- Interactive diagram: https://gitdiagram.com/sitanshupt5/seleniumbddjava
- Repository: https://github.com/sitanshupt5/seleniumbddjava

## Overview

SeleniumBDDJava is a reusable, YAML-driven Selenium/Cucumber UI automation framework. Its principal workflow runs application feature scenarios through shared step definitions, loads scenario data and page metadata, performs synchronized browser actions, then verifies outcomes and captures failure artifacts. The graph reflects the README’s documented capabilities; several implementation modules are represented from the tree and README because their source was not sampled, so uncertain internal wiring is omitted.

Main entry points: [`commons/src/main/java/com/automation/ui/commons/stepdefinitions/CommonHooks.java`](https://github.com/sitanshupt5/seleniumbddjava/blob/master/commons/src/main/java/com/automation/ui/commons/stepdefinitions/CommonHooks.java) (Scenario Hooks), [`commons/src/main/java/com/automation/ui/commons/utilities/UiActions.java`](https://github.com/sitanshupt5/seleniumbddjava/blob/master/commons/src/main/java/com/automation/ui/commons/utilities/UiActions.java) (UI Actions), [`application/src/main/resources/features`](https://github.com/sitanshupt5/seleniumbddjava/tree/master/application/src/main/resources/features) (Feature Scenarios), [`commons/src/main/java/com/automation/ui/commons/utilities/DataRegistry.java`](https://github.com/sitanshupt5/seleniumbddjava/blob/master/commons/src/main/java/com/automation/ui/commons/utilities/DataRegistry.java) (Data Registry)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_scenario["Scenario Definition"]
  node_runner["Cucumber Runner<br/>[Runner.java]"]
  node_features["Feature Scenarios"]
end

subgraph group_engine["Automation Engine"]
  node_hooks["Scenario Hooks<br/>[CommonHooks.java]"]
  node_given_steps["Given Steps"]
  node_when_steps["When Steps"]
  node_then_steps["Then Steps"]
  node_context["Test Context<br/>[TestContext.java]"]
  node_data_registry["Data Registry<br/>[DataRegistry.java]"]
  node_locator_registry["Locator Registry"]
  node_ui_actions["UI Actions<br/>[UiActions.java]"]
  node_wait_factory["Wait Factory<br/>[WaitFactory.java]"]
  node_wait_profiles["Wait Profiles<br/>[WaitProfile.java]"]
  node_configuration["Runtime Configuration<br/>[config.ini]"]
end

subgraph group_metadata["YAML Metadata"]
  node_test_data["Test Datasets"]
  node_page_yaml["Page Definitions"]
end

subgraph group_runtime["Browser Runtime"]
  node_browser["Browser"]
  node_application["Application Under Test"]
end

subgraph group_observability["Run Artifacts"]
  node_allure_helpers["Allure Helpers<br/>[AllureHelpers.java]"]
  node_logs["Framework Logging<br/>[CustomLogger.java]"]
  node_report_artifacts["Run Artifacts"]
end

node_test_author(("Test Author"))

node_test_author -->|"defines scenarios"| node_features
node_runner -->|"runs"| node_features
node_runner -->|"starts scenarios"| node_hooks
node_features -->|"matches steps"| node_given_steps
node_features -->|"matches steps"| node_when_steps
node_features -->|"matches steps"| node_then_steps
node_hooks -->|"initializes"| node_context
node_hooks -->|"loads data"| node_data_registry
node_hooks -->|"starts driver"| node_browser
node_hooks -->|"writes environment"| node_allure_helpers
node_hooks -->|"saves screenshots"| node_report_artifacts
node_given_steps -->|"reads state"| node_context
node_given_steps -->|"selects dataset"| node_data_registry
node_given_steps -->|"opens pages"| node_ui_actions
node_when_steps -->|"reads state"| node_context
node_when_steps -->|"maps fields"| node_data_registry
node_when_steps -->|"performs actions"| node_ui_actions
node_then_steps -->|"reads state"| node_context
node_then_steps -->|"checks pages"| node_ui_actions
node_data_registry -->|"parses datasets"| node_test_data
node_data_registry -->|"populates fields"| node_ui_actions
node_ui_actions -->|"resolves locators"| node_locator_registry
node_ui_actions -->|"requests waits"| node_wait_factory
node_ui_actions -->|"drives"| node_browser
node_locator_registry -->|"loads metadata"| node_page_yaml
node_wait_factory -->|"uses profiles"| node_wait_profiles
node_wait_factory -->|"reads timing"| node_configuration
node_browser -->|"interacts with"| node_application
node_hooks -->|"reads settings"| node_configuration
node_hooks -->|"records events"| node_logs
node_ui_actions -->|"records actions"| node_logs
node_allure_helpers -->|"writes report data"| node_report_artifacts

click node_runner "https://github.com/sitanshupt5/seleniumbddjava/blob/master/application/src/main/java/com/automation/ui/application/Runner.java"
click node_features "https://github.com/sitanshupt5/seleniumbddjava/tree/master/application/src/main/resources/features"
click node_test_data "https://github.com/sitanshupt5/seleniumbddjava/tree/master/application/src/main/resources/data"
click node_page_yaml "https://github.com/sitanshupt5/seleniumbddjava/tree/master/application/src/main/resources/pages"
click node_hooks "https://github.com/sitanshupt5/seleniumbddjava/blob/master/commons/src/main/java/com/automation/ui/commons/stepdefinitions/CommonHooks.java"
click node_given_steps "https://github.com/sitanshupt5/seleniumbddjava/blob/master/commons/src/main/java/com/automation/ui/commons/stepdefinitions/CommonGivenTestSteps.java"
click node_when_steps "https://github.com/sitanshupt5/seleniumbddjava/blob/master/commons/src/main/java/com/automation/ui/commons/stepdefinitions/CommonWhenTestSteps.java"
click node_then_steps "https://github.com/sitanshupt5/seleniumbddjava/blob/master/commons/src/main/java/com/automation/ui/commons/stepdefinitions/CommonThenTestSteps.java"
click node_context "https://github.com/sitanshupt5/seleniumbddjava/blob/master/commons/src/main/java/com/automation/ui/commons/types/TestContext.java"
click node_data_registry "https://github.com/sitanshupt5/seleniumbddjava/blob/master/commons/src/main/java/com/automation/ui/commons/utilities/DataRegistry.java"
click node_locator_registry "https://github.com/sitanshupt5/seleniumbddjava/blob/master/commons/src/main/java/com/automation/ui/commons/utilities/LocatorRegistry.java"
click node_ui_actions "https://github.com/sitanshupt5/seleniumbddjava/blob/master/commons/src/main/java/com/automation/ui/commons/utilities/UiActions.java"
click node_wait_factory "https://github.com/sitanshupt5/seleniumbddjava/blob/master/commons/src/main/java/com/automation/ui/commons/utilities/WaitFactory.java"
click node_wait_profiles "https://github.com/sitanshupt5/seleniumbddjava/blob/master/commons/src/main/java/com/automation/ui/commons/enums/WaitProfile.java"
click node_configuration "https://github.com/sitanshupt5/seleniumbddjava/blob/master/configuration/config.ini"
click node_allure_helpers "https://github.com/sitanshupt5/seleniumbddjava/blob/master/commons/src/main/java/com/automation/ui/commons/utilities/AllureHelpers.java"
click node_logs "https://github.com/sitanshupt5/seleniumbddjava/blob/master/commons/src/main/java/com/automation/ui/commons/utilities/CustomLogger.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_runner,node_features toneBlue
class node_hooks,node_given_steps,node_when_steps,node_then_steps,node_context,node_data_registry,node_locator_registry,node_ui_actions,node_wait_factory,node_wait_profiles,node_configuration toneAmber
class node_test_data,node_page_yaml toneMint
class node_browser,node_application toneRose
class node_allure_helpers,node_logs,node_report_artifacts,node_test_author toneIndigo
```

## Components

### Scenario Definition

- [Cucumber Runner](https://github.com/sitanshupt5/seleniumbddjava/blob/master/application/src/main/java/com/automation/ui/application/Runner.java): `application/src/main/java/com/automation/ui/application/Runner.java`
- [Feature Scenarios](https://github.com/sitanshupt5/seleniumbddjava/tree/master/application/src/main/resources/features): `application/src/main/resources/features`

### Automation Engine

- [Scenario Hooks](https://github.com/sitanshupt5/seleniumbddjava/blob/master/commons/src/main/java/com/automation/ui/commons/stepdefinitions/CommonHooks.java): `commons/src/main/java/com/automation/ui/commons/stepdefinitions/CommonHooks.java`
- [Given Steps](https://github.com/sitanshupt5/seleniumbddjava/blob/master/commons/src/main/java/com/automation/ui/commons/stepdefinitions/CommonGivenTestSteps.java): `commons/src/main/java/com/automation/ui/commons/stepdefinitions/CommonGivenTestSteps.java`
- [When Steps](https://github.com/sitanshupt5/seleniumbddjava/blob/master/commons/src/main/java/com/automation/ui/commons/stepdefinitions/CommonWhenTestSteps.java): `commons/src/main/java/com/automation/ui/commons/stepdefinitions/CommonWhenTestSteps.java`
- [Then Steps](https://github.com/sitanshupt5/seleniumbddjava/blob/master/commons/src/main/java/com/automation/ui/commons/stepdefinitions/CommonThenTestSteps.java): `commons/src/main/java/com/automation/ui/commons/stepdefinitions/CommonThenTestSteps.java`
- [Test Context](https://github.com/sitanshupt5/seleniumbddjava/blob/master/commons/src/main/java/com/automation/ui/commons/types/TestContext.java): `commons/src/main/java/com/automation/ui/commons/types/TestContext.java`
- [Data Registry](https://github.com/sitanshupt5/seleniumbddjava/blob/master/commons/src/main/java/com/automation/ui/commons/utilities/DataRegistry.java): `commons/src/main/java/com/automation/ui/commons/utilities/DataRegistry.java`
- [Locator Registry](https://github.com/sitanshupt5/seleniumbddjava/blob/master/commons/src/main/java/com/automation/ui/commons/utilities/LocatorRegistry.java): `commons/src/main/java/com/automation/ui/commons/utilities/LocatorRegistry.java`
- [UI Actions](https://github.com/sitanshupt5/seleniumbddjava/blob/master/commons/src/main/java/com/automation/ui/commons/utilities/UiActions.java): `commons/src/main/java/com/automation/ui/commons/utilities/UiActions.java`
- [Wait Factory](https://github.com/sitanshupt5/seleniumbddjava/blob/master/commons/src/main/java/com/automation/ui/commons/utilities/WaitFactory.java): `commons/src/main/java/com/automation/ui/commons/utilities/WaitFactory.java`
- [Wait Profiles](https://github.com/sitanshupt5/seleniumbddjava/blob/master/commons/src/main/java/com/automation/ui/commons/enums/WaitProfile.java): `commons/src/main/java/com/automation/ui/commons/enums/WaitProfile.java`
- [Runtime Configuration](https://github.com/sitanshupt5/seleniumbddjava/blob/master/configuration/config.ini): `configuration/config.ini`

### YAML Metadata

- [Test Datasets](https://github.com/sitanshupt5/seleniumbddjava/tree/master/application/src/main/resources/data): `application/src/main/resources/data`
- [Page Definitions](https://github.com/sitanshupt5/seleniumbddjava/tree/master/application/src/main/resources/pages): `application/src/main/resources/pages`

### Browser Runtime

- **Browser**
- **Application Under Test**

### Run Artifacts

- [Allure Helpers](https://github.com/sitanshupt5/seleniumbddjava/blob/master/commons/src/main/java/com/automation/ui/commons/utilities/AllureHelpers.java): `commons/src/main/java/com/automation/ui/commons/utilities/AllureHelpers.java`
- [Framework Logging](https://github.com/sitanshupt5/seleniumbddjava/blob/master/commons/src/main/java/com/automation/ui/commons/utilities/CustomLogger.java): `commons/src/main/java/com/automation/ui/commons/utilities/CustomLogger.java`
- **Run Artifacts**

### Other components

- **Test Author**

## Connections

- Test Author → Feature Scenarios: defines scenarios
- Cucumber Runner → Feature Scenarios: runs
- Cucumber Runner → Scenario Hooks: starts scenarios
- Feature Scenarios → Given Steps: matches steps
- Feature Scenarios → When Steps: matches steps
- Feature Scenarios → Then Steps: matches steps
- Scenario Hooks → Test Context: initializes
- Scenario Hooks → Data Registry: loads data
- Scenario Hooks → Browser: starts driver
- Scenario Hooks → Allure Helpers: writes environment
- Scenario Hooks → Run Artifacts: saves screenshots
- Given Steps → Test Context: reads state
- Given Steps → Data Registry: selects dataset
- Given Steps → UI Actions: opens pages
- When Steps → Test Context: reads state
- When Steps → Data Registry: maps fields
- When Steps → UI Actions: performs actions
- Then Steps → Test Context: reads state
- Then Steps → UI Actions: checks pages
- Data Registry → Test Datasets: parses datasets
- Data Registry → UI Actions: populates fields
- UI Actions → Locator Registry: resolves locators
- UI Actions → Wait Factory: requests waits
- UI Actions → Browser: drives
- Locator Registry → Page Definitions: loads metadata
- Wait Factory → Wait Profiles: uses profiles
- Wait Factory → Runtime Configuration: reads timing
- Browser → Application Under Test: interacts with
- Scenario Hooks → Runtime Configuration: reads settings
- Scenario Hooks → Framework Logging: records events
- UI Actions → Framework Logging: records actions
- Allure Helpers → Run Artifacts: writes report data
