# sharathy27/cucumber_framework_ui_automation architecture

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

- Interactive diagram: https://gitdiagram.com/sharathy27/cucumber_framework_ui_automation
- Repository: https://github.com/sharathy27/cucumber_framework_ui_automation

## Overview

#### Purpose and Scope
This is a Java/Maven Cucumber UI-automation framework. It drives browser-based acceptance scenarios, primarily around login, navigation, dynamic-table data, CEO-name verification, and pending-timesheet workflows. The implementation is test-only; no application service or web frontend is present.

#### Execution Entry Points
Cucumber suites are launched through JUnit-style runner classes:
- `Cucumber_Framework/src/test/java/runner/TestRunner.java`
- `Cucumber_Framework/src/test/java/runner/ReRunner.java`

`TestRunner` is the primary suite entry point; `ReRunner` likely supports rerunning failures. Maven dependency/build orchestration is defined by `Cucumber_Framework/pom.xml`.

#### Behavior Specification Layer
Gherkin feature files define executable business scenarios and bind to Java step implementations:
- `Cucumber_Framework/src/test/resources/features/Verify_CEO_Name.feature`
- `Cucumber_Framework/src/test/resources/features/Get_Data_From_Dynamic_Table.feature`
- `Cucumber_Framework/src/test/java/steps/Verify_CEO_Name_StepDef.java`
- `Cucumber_Framework/src/test/java/steps/Dynamic_Table_StepDefinition.java`

Control flow is runner → feature scenario → matching Cucumber step definition → page-object operation → Selenium browser interaction/assertion.

#### Step Definition Orchestration
The `steps` package is the scenario orchestration boundary. It translates Gherkin language into reusable UI actions, navigation, extraction, and verification logic. Shared lifecycle or cross-scenario actions are centralized separately:
- `Cucumber_Framework/src/test/java/steps/CommonStepDefinitions.java`
- `Cucumber_Framework/src/test/java/steps/Verify_Menu_Button_Functionality_StepDef.java`
- `Cucumber_Framework/src/test/java/steps/Verify_Pending_Timesheets_StepDef.java`

Steps should delegate browser-specific selectors and operations to page objects rather than directly owning UI mechanics.

#### Page Object UI Boundary
Page objects represent the target application’s screens and isolate Selenium locators/interactions from scenario logic:
- `Cucumber_Framework/src/test/java/pageObjects/LoginPage.java`
- `Cucumber_Framework/src/test/java/pageObjects/HomePage.java`
- `Cucumber_Framework/src/test/java/pageObjects/TimePage.java`

The likely workflow boundary is authentication through `LoginPage`, post-login navigation/action through `HomePage`, then time/timesheet operations through `TimePage`.

#### Browser, Runtime, and Configuration
The framework runs on the JVM and uses a shared driver-management layer for browser lifecycle and a global-values layer for environment-wide state:
- `Cucumber_Framework/src/test/java/constants/DriverManager.java`
- `Cucumber_Framework/src/test/java/constants/GlobalVariables.java`
- `Cucumber_Framework/src/test/resources/config.properties`

Selenium WebDriver is the material external automation runtime implied by the page-object/driver architecture. Target application URL, credentials, browser selection, or similar environment parameters are expected to cross into execution through `config.properties`.

#### Evidence, Logging, and Reports
Execution produces persisted reporting artifacts in HTML, JSON, PDF, Excel, and Spark formats:
- `Cucumber_Framework/src/test/resources/extent.properties`
- `Cucumber_Framework/src/test/resources/log4j2.properties`
- `Cucumber_Framework/test-output/HtmlReport/ExtentHtml.html`
- `Cucumber_Framework/test-output/SparkReport/Spark.html`

Logs are retained under `Cucumber_Framework/logs`, while screenshot capture is provisioned by `Cucumber_Framework/Screenshots`. These outputs form the post-execution observability boundary rather than inputs to test control flow.

Main entry points: [`Cucumber_Framework/src/test/java/runner/TestRunner.java`](https://github.com/sharathy27/cucumber_framework_ui_automation/blob/main/Cucumber_Framework/src/test/java/runner/TestRunner.java) (Primary suite runner), [`Cucumber_Framework/src/test/java/constants/DriverManager.java`](https://github.com/sharathy27/cucumber_framework_ui_automation/blob/main/Cucumber_Framework/src/test/java/constants/DriverManager.java) (Driver manager), [`Cucumber_Framework/src/test/java/pageObjects/HomePage.java`](https://github.com/sharathy27/cucumber_framework_ui_automation/blob/main/Cucumber_Framework/src/test/java/pageObjects/HomePage.java) (Home page), [`Cucumber_Framework/src/test/java/steps/Verify_CEO_Name_StepDef.java`](https://github.com/sharathy27/cucumber_framework_ui_automation/blob/main/Cucumber_Framework/src/test/java/steps/Verify_CEO_Name_StepDef.java) (CEO step definitions)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_execution["Execution"]
  node_maven{{"Maven build<br/>build orchestration<br/>[pom.xml]"}}
  node_primary_runner["Primary suite runner<br/>JUnit Cucumber runner<br/>[TestRunner.java]"]
  node_rerun_runner["Failure rerun runner<br/>JUnit Cucumber runner<br/>[ReRunner.java]"]
  node_config["Environment config<br/>properties<br/>[config.properties]"]
end

subgraph group_specs["Scenarios"]
  node_ceo_feature["CEO verification scenarios<br/>Gherkin feature"]
  node_table_feature["Dynamic-table scenarios<br/>Gherkin feature"]
end

subgraph group_automation["Automation Layers"]
  node_ceo_steps["CEO step definitions<br/>Cucumber steps"]
  node_table_steps["Dynamic-table steps<br/>Cucumber steps"]
  node_shared_steps["Shared workflow steps<br/>Cucumber steps"]
  node_login_page["Login page<br/>page object<br/>[LoginPage.java]"]
  node_home_page["Home page<br/>page object<br/>[HomePage.java]"]
  node_time_page["Time page<br/>page object<br/>[TimePage.java]"]
  node_driver_manager["Driver manager<br/>browser lifecycle<br/>[DriverManager.java]"]
  node_global_variables["Global state<br/>runtime state"]
end

subgraph group_evidence["Evidence"]
  node_reporting_config["Reporting configuration<br/>reporting and logging config<br/>[extent.properties]"]
  node_reports["Execution reports<br/>HTML and Spark reports<br/>[ExtentHtml.html]"]
  node_logs[("Logs and screenshots<br/>execution artifacts")]
end

node_browser(("Target application browser<br/>Selenium WebDriver"))

node_maven -->|"launches"| node_primary_runner
node_maven -->|"launches"| node_rerun_runner
node_config -->|"configures"| node_driver_manager
node_primary_runner -->|"executes"| node_ceo_feature
node_primary_runner -->|"executes"| node_table_feature
node_rerun_runner -.->|"reruns failures from"| node_primary_runner
node_ceo_feature -->|"binds steps"| node_ceo_steps
node_table_feature -->|"binds steps"| node_table_steps
node_ceo_steps -->|"authenticates through"| node_login_page
node_ceo_steps -->|"verifies through"| node_home_page
node_table_steps -->|"navigates through"| node_home_page
node_shared_steps -->|"drives navigation"| node_home_page
node_shared_steps -->|"drives timesheets"| node_time_page
node_login_page -->|"uses"| node_driver_manager
node_home_page -->|"uses"| node_driver_manager
node_time_page -->|"uses"| node_driver_manager
node_driver_manager -->|"controls"| node_browser
node_global_variables -.->|"supplies state"| node_shared_steps
node_primary_runner -.->|"configures evidence"| node_reporting_config
node_reporting_config -->|"produces"| node_reports
node_primary_runner -.->|"emits"| node_logs

click node_maven "https://github.com/sharathy27/cucumber_framework_ui_automation/blob/main/Cucumber_Framework/pom.xml"
click node_primary_runner "https://github.com/sharathy27/cucumber_framework_ui_automation/blob/main/Cucumber_Framework/src/test/java/runner/TestRunner.java"
click node_rerun_runner "https://github.com/sharathy27/cucumber_framework_ui_automation/blob/main/Cucumber_Framework/src/test/java/runner/ReRunner.java"
click node_ceo_feature "https://github.com/sharathy27/cucumber_framework_ui_automation/blob/main/Cucumber_Framework/src/test/resources/features/Verify_CEO_Name.feature"
click node_table_feature "https://github.com/sharathy27/cucumber_framework_ui_automation/blob/main/Cucumber_Framework/src/test/resources/features/Get_Data_From_Dynamic_Table.feature"
click node_ceo_steps "https://github.com/sharathy27/cucumber_framework_ui_automation/blob/main/Cucumber_Framework/src/test/java/steps/Verify_CEO_Name_StepDef.java"
click node_table_steps "https://github.com/sharathy27/cucumber_framework_ui_automation/blob/main/Cucumber_Framework/src/test/java/steps/Dynamic_Table_StepDefinition.java"
click node_shared_steps "https://github.com/sharathy27/cucumber_framework_ui_automation/blob/main/Cucumber_Framework/src/test/java/steps/CommonStepDefinitions.java"
click node_login_page "https://github.com/sharathy27/cucumber_framework_ui_automation/blob/main/Cucumber_Framework/src/test/java/pageObjects/LoginPage.java"
click node_home_page "https://github.com/sharathy27/cucumber_framework_ui_automation/blob/main/Cucumber_Framework/src/test/java/pageObjects/HomePage.java"
click node_time_page "https://github.com/sharathy27/cucumber_framework_ui_automation/blob/main/Cucumber_Framework/src/test/java/pageObjects/TimePage.java"
click node_driver_manager "https://github.com/sharathy27/cucumber_framework_ui_automation/blob/main/Cucumber_Framework/src/test/java/constants/DriverManager.java"
click node_global_variables "https://github.com/sharathy27/cucumber_framework_ui_automation/blob/main/Cucumber_Framework/src/test/java/constants/GlobalVariables.java"
click node_config "https://github.com/sharathy27/cucumber_framework_ui_automation/blob/main/Cucumber_Framework/src/test/resources/config.properties"
click node_reporting_config "https://github.com/sharathy27/cucumber_framework_ui_automation/blob/main/Cucumber_Framework/src/test/resources/extent.properties"
click node_reports "https://github.com/sharathy27/cucumber_framework_ui_automation/blob/main/Cucumber_Framework/test-output/HtmlReport/ExtentHtml.html"
click node_logs "https://github.com/sharathy27/cucumber_framework_ui_automation/tree/main/Cucumber_Framework/logs"

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_maven,node_primary_runner,node_rerun_runner,node_config toneBlue
class node_ceo_feature,node_table_feature toneAmber
class node_ceo_steps,node_table_steps,node_shared_steps,node_login_page,node_home_page,node_time_page,node_driver_manager,node_global_variables toneMint
class node_reporting_config,node_reports,node_logs toneRose
class node_browser toneNeutral
```

## Components

### Execution

- [Maven build](https://github.com/sharathy27/cucumber_framework_ui_automation/blob/main/Cucumber_Framework/pom.xml): build orchestration · Resolves test dependencies and launches suites. · `Cucumber_Framework/pom.xml`
- [Primary suite runner](https://github.com/sharathy27/cucumber_framework_ui_automation/blob/main/Cucumber_Framework/src/test/java/runner/TestRunner.java): JUnit Cucumber runner · `Cucumber_Framework/src/test/java/runner/TestRunner.java`
- [Failure rerun runner](https://github.com/sharathy27/cucumber_framework_ui_automation/blob/main/Cucumber_Framework/src/test/java/runner/ReRunner.java): JUnit Cucumber runner · `Cucumber_Framework/src/test/java/runner/ReRunner.java`
- [Environment config](https://github.com/sharathy27/cucumber_framework_ui_automation/blob/main/Cucumber_Framework/src/test/resources/config.properties): properties · Supplies target and browser settings. · `Cucumber_Framework/src/test/resources/config.properties`

### Scenarios

- [CEO verification scenarios](https://github.com/sharathy27/cucumber_framework_ui_automation/blob/main/Cucumber_Framework/src/test/resources/features/Verify_CEO_Name.feature): Gherkin feature · `Cucumber_Framework/src/test/resources/features/Verify_CEO_Name.feature`
- [Dynamic-table scenarios](https://github.com/sharathy27/cucumber_framework_ui_automation/blob/main/Cucumber_Framework/src/test/resources/features/Get_Data_From_Dynamic_Table.feature): Gherkin feature · `Cucumber_Framework/src/test/resources/features/Get_Data_From_Dynamic_Table.feature`

### Automation Layers

- [CEO step definitions](https://github.com/sharathy27/cucumber_framework_ui_automation/blob/main/Cucumber_Framework/src/test/java/steps/Verify_CEO_Name_StepDef.java): Cucumber steps · `Cucumber_Framework/src/test/java/steps/Verify_CEO_Name_StepDef.java`
- [Dynamic-table steps](https://github.com/sharathy27/cucumber_framework_ui_automation/blob/main/Cucumber_Framework/src/test/java/steps/Dynamic_Table_StepDefinition.java): Cucumber steps · `Cucumber_Framework/src/test/java/steps/Dynamic_Table_StepDefinition.java`
- [Shared workflow steps](https://github.com/sharathy27/cucumber_framework_ui_automation/blob/main/Cucumber_Framework/src/test/java/steps/CommonStepDefinitions.java): Cucumber steps · Lifecycle, menu, and pending-timesheet scenario orchestration. · `Cucumber_Framework/src/test/java/steps/CommonStepDefinitions.java`
- [Login page](https://github.com/sharathy27/cucumber_framework_ui_automation/blob/main/Cucumber_Framework/src/test/java/pageObjects/LoginPage.java): page object · `Cucumber_Framework/src/test/java/pageObjects/LoginPage.java`
- [Home page](https://github.com/sharathy27/cucumber_framework_ui_automation/blob/main/Cucumber_Framework/src/test/java/pageObjects/HomePage.java): page object · Post-login navigation and actions. · `Cucumber_Framework/src/test/java/pageObjects/HomePage.java`
- [Time page](https://github.com/sharathy27/cucumber_framework_ui_automation/blob/main/Cucumber_Framework/src/test/java/pageObjects/TimePage.java): page object · Timesheet operations and verification. · `Cucumber_Framework/src/test/java/pageObjects/TimePage.java`
- [Driver manager](https://github.com/sharathy27/cucumber_framework_ui_automation/blob/main/Cucumber_Framework/src/test/java/constants/DriverManager.java): browser lifecycle · Creates and manages shared Selenium WebDriver sessions. · `Cucumber_Framework/src/test/java/constants/DriverManager.java`
- [Global state](https://github.com/sharathy27/cucumber_framework_ui_automation/blob/main/Cucumber_Framework/src/test/java/constants/GlobalVariables.java): runtime state · `Cucumber_Framework/src/test/java/constants/GlobalVariables.java`

### Evidence

- [Reporting configuration](https://github.com/sharathy27/cucumber_framework_ui_automation/blob/main/Cucumber_Framework/src/test/resources/extent.properties): reporting and logging config · `Cucumber_Framework/src/test/resources/extent.properties`
- [Execution reports](https://github.com/sharathy27/cucumber_framework_ui_automation/blob/main/Cucumber_Framework/test-output/HtmlReport/ExtentHtml.html): HTML and Spark reports · Persisted post-execution test evidence. · `Cucumber_Framework/test-output/HtmlReport/ExtentHtml.html`
- [Logs and screenshots](https://github.com/sharathy27/cucumber_framework_ui_automation/tree/main/Cucumber_Framework/logs): execution artifacts · `Cucumber_Framework/logs`

### Other components

- **Target application browser**: Selenium WebDriver · External browser-driven application under test.

## Connections

- Maven build → Primary suite runner: launches
- Maven build → Failure rerun runner: launches
- Environment config → Driver manager: configures
- Primary suite runner → CEO verification scenarios: executes
- Primary suite runner → Dynamic-table scenarios: executes
- Failure rerun runner → Primary suite runner: reruns failures from
- CEO verification scenarios → CEO step definitions: binds steps
- Dynamic-table scenarios → Dynamic-table steps: binds steps
- CEO step definitions → Login page: authenticates through
- CEO step definitions → Home page: verifies through
- Dynamic-table steps → Home page: navigates through
- Shared workflow steps → Home page: drives navigation
- Shared workflow steps → Time page: drives timesheets
- Login page → Driver manager: uses
- Home page → Driver manager: uses
- Time page → Driver manager: uses
- Driver manager → Target application browser: controls
- Global state → Shared workflow steps: supplies state
- Primary suite runner → Reporting configuration: configures evidence
- Reporting configuration → Execution reports: produces
- Primary suite runner → Logs and screenshots: emits
