# frameworkium/frameworkium-core architecture

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

- Interactive diagram: https://gitdiagram.com/frameworkium/frameworkium-core
- Repository: https://github.com/frameworkium/frameworkium-core

## Overview

Frameworkium Core is a Java framework for Selenium UI and REST API testing. Test code configures a browser or remote grid, uses page objects and element abstractions to interact with the system under test, and can attach screenshots or video to test runs. Separate facilities support REST services, Jira/Zephyr and Spira reporting, retries, and test listeners. The graph follows documented capabilities and indexed imports; several subsystem links are dashed where implementation details were not sampled.

Main entry points: [`src/main/java/com/frameworkium/core/ui/driver/DriverSetup.java`](https://github.com/frameworkium/frameworkium-core/blob/master/src/main/java/com/frameworkium/core/ui/driver/DriverSetup.java) (Driver setup), [`src/main/java/com/frameworkium/core/htmlelements/loader/HtmlElementLoader.java`](https://github.com/frameworkium/frameworkium-core/blob/master/src/main/java/com/frameworkium/core/htmlelements/loader/HtmlElementLoader.java) (Element loading), [`src/main/java/com/frameworkium/core/ui/UITestLifecycle.java`](https://github.com/frameworkium/frameworkium-core/blob/master/src/main/java/com/frameworkium/core/ui/UITestLifecycle.java) (UI test lifecycle), [`src/main/java/com/frameworkium/core/common/listeners`](https://github.com/frameworkium/frameworkium-core/tree/master/src/main/java/com/frameworkium/core/common/listeners) (Test listeners)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["UI Testing"]
  node_driversetup["Driver setup<br/>[DriverSetup.java]"]
  node_browserdrivers["Browser drivers"]
  node_remotegrids["Remote grids"]
  node_pages["Pages and waits"]
  node_elementloader["Element loading"]
  node_elementtypes["HTML elements<br/>[HtmlElement.java]"]
  node_elementutils["Element utilities"]
  node_tablehelpers["Stream tables"]
end

subgraph group_runtime["Test Runtime"]
  node_config["Runtime properties<br/>[Property.java]"]
  node_testlifecycle["UI test lifecycle"]
  node_listeners["Test listeners"]
  node_retry["Flaky-test retry"]
end

subgraph group_api["REST API"]
  node_baseapi["REST services<br/>[BaseService.java]"]
end

subgraph group_reporting["Test Reporting"]
  node_capture["Screenshot capture"]
  node_capturelisteners["Capture listeners"]
  node_video["Video capture<br/>[VideoCapture.java]"]
  node_jira["Jira and Zephyr"]
  node_jiraresults["Jira cycle setup"]
  node_spira["Spira reporting"]
end

node_testauthor(("Test code"))
node_apiuser(("API test code"))
node_apitestsystem{{"Tested API"}}
node_tms{{"Test management service"}}
node_captureservice{{"Capture service"}}

node_testauthor -.->|"configures"| node_driversetup
node_driversetup -->|"reads settings"| node_config
node_driversetup -->|"selects driver"| node_browserdrivers
node_driversetup -->|"selects remote"| node_remotegrids
node_testauthor -.->|"uses pages"| node_pages
node_pages -->|"populates fields"| node_elementloader
node_elementloader -->|"creates proxies"| node_elementtypes
node_elementloader -->|"resolves names"| node_elementutils
node_elementloader -.->|"decorates page fields"| node_pages
node_testauthor -.->|"uses tables"| node_tablehelpers
node_testauthor -.->|"runs tests"| node_testlifecycle
node_testlifecycle -->|"notifies"| node_capturelisteners
node_capturelisteners -->|"requests screenshots"| node_capture
node_capture -->|"posts captures"| node_captureservice
node_testlifecycle -.->|"manages recording"| node_video
node_testauthor -.->|"registers listeners"| node_listeners
node_listeners -->|"sets up cycles"| node_jiraresults
node_jiraresults -->|"uses Jira services"| node_jira
node_jira -.->|"sends requests"| node_tms
node_jiraresults -->|"reads settings"| node_config
node_listeners -.->|"applies retry"| node_retry
node_jira -.->|"optional reporting"| node_spira
node_apiuser -.->|"calls services"| node_baseapi
node_baseapi -->|"reads settings"| node_config
node_baseapi -.->|"sends requests"| node_apitestsystem

click node_config "https://github.com/frameworkium/frameworkium-core/blob/master/src/main/java/com/frameworkium/core/common/properties/Property.java"
click node_driversetup "https://github.com/frameworkium/frameworkium-core/blob/master/src/main/java/com/frameworkium/core/ui/driver/DriverSetup.java"
click node_browserdrivers "https://github.com/frameworkium/frameworkium-core/tree/master/src/main/java/com/frameworkium/core/ui/driver/drivers"
click node_remotegrids "https://github.com/frameworkium/frameworkium-core/tree/master/src/main/java/com/frameworkium/core/ui/driver/remotes"
click node_pages "https://github.com/frameworkium/frameworkium-core/tree/master/src/main/java/com/frameworkium/core/ui/pages"
click node_elementloader "https://github.com/frameworkium/frameworkium-core/blob/master/src/main/java/com/frameworkium/core/htmlelements/loader/HtmlElementLoader.java"
click node_elementtypes "https://github.com/frameworkium/frameworkium-core/blob/master/src/main/java/com/frameworkium/core/htmlelements/element/HtmlElement.java"
click node_elementutils "https://github.com/frameworkium/frameworkium-core/blob/master/src/main/java/com/frameworkium/core/htmlelements/utils/HtmlElementUtils.java"
click node_tablehelpers "https://github.com/frameworkium/frameworkium-core/tree/master/src/main/java/com/frameworkium/core/ui/element"
click node_testlifecycle "https://github.com/frameworkium/frameworkium-core/blob/master/src/main/java/com/frameworkium/core/ui/UITestLifecycle.java"
click node_listeners "https://github.com/frameworkium/frameworkium-core/tree/master/src/main/java/com/frameworkium/core/common/listeners"
click node_retry "https://github.com/frameworkium/frameworkium-core/blob/master/src/main/java/com/frameworkium/core/common/retry/RetryFlakyTest.java"
click node_baseapi "https://github.com/frameworkium/frameworkium-core/blob/master/src/main/java/com/frameworkium/core/api/services/BaseService.java"
click node_capture "https://github.com/frameworkium/frameworkium-core/blob/master/src/main/java/com/frameworkium/core/ui/capture/ScreenshotCapture.java"
click node_capturelisteners "https://github.com/frameworkium/frameworkium-core/blob/master/src/main/java/com/frameworkium/core/ui/listeners/CaptureListener.java"
click node_video "https://github.com/frameworkium/frameworkium-core/blob/master/src/main/java/com/frameworkium/core/ui/video/VideoCapture.java"
click node_jira "https://github.com/frameworkium/frameworkium-core/tree/master/src/main/java/com/frameworkium/core/common/reporting/jira"
click node_jiraresults "https://github.com/frameworkium/frameworkium-core/blob/master/src/main/java/com/frameworkium/core/common/listeners/CreateJiraCycleListener.java"
click node_spira "https://github.com/frameworkium/frameworkium-core/tree/master/src/main/java/com/frameworkium/core/common/reporting/spira"

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_driversetup,node_browserdrivers,node_remotegrids,node_pages,node_elementloader,node_elementtypes,node_elementutils,node_tablehelpers toneBlue
class node_config,node_testlifecycle,node_listeners,node_retry toneAmber
class node_baseapi,node_apiuser,node_apitestsystem toneMint
class node_capture,node_capturelisteners,node_video,node_jira,node_jiraresults,node_spira toneRose
class node_testauthor,node_tms,node_captureservice toneIndigo
```

## Components

### UI Testing

- [Driver setup](https://github.com/frameworkium/frameworkium-core/blob/master/src/main/java/com/frameworkium/core/ui/driver/DriverSetup.java): `src/main/java/com/frameworkium/core/ui/driver/DriverSetup.java`
- [Browser drivers](https://github.com/frameworkium/frameworkium-core/tree/master/src/main/java/com/frameworkium/core/ui/driver/drivers): `src/main/java/com/frameworkium/core/ui/driver/drivers`
- [Remote grids](https://github.com/frameworkium/frameworkium-core/tree/master/src/main/java/com/frameworkium/core/ui/driver/remotes): `src/main/java/com/frameworkium/core/ui/driver/remotes`
- [Pages and waits](https://github.com/frameworkium/frameworkium-core/tree/master/src/main/java/com/frameworkium/core/ui/pages): `src/main/java/com/frameworkium/core/ui/pages`
- [Element loading](https://github.com/frameworkium/frameworkium-core/blob/master/src/main/java/com/frameworkium/core/htmlelements/loader/HtmlElementLoader.java): `src/main/java/com/frameworkium/core/htmlelements/loader/HtmlElementLoader.java`
- [HTML elements](https://github.com/frameworkium/frameworkium-core/blob/master/src/main/java/com/frameworkium/core/htmlelements/element/HtmlElement.java): `src/main/java/com/frameworkium/core/htmlelements/element/HtmlElement.java`
- [Element utilities](https://github.com/frameworkium/frameworkium-core/blob/master/src/main/java/com/frameworkium/core/htmlelements/utils/HtmlElementUtils.java): `src/main/java/com/frameworkium/core/htmlelements/utils/HtmlElementUtils.java`
- [Stream tables](https://github.com/frameworkium/frameworkium-core/tree/master/src/main/java/com/frameworkium/core/ui/element): `src/main/java/com/frameworkium/core/ui/element`

### Test Runtime

- [Runtime properties](https://github.com/frameworkium/frameworkium-core/blob/master/src/main/java/com/frameworkium/core/common/properties/Property.java): `src/main/java/com/frameworkium/core/common/properties/Property.java`
- [UI test lifecycle](https://github.com/frameworkium/frameworkium-core/blob/master/src/main/java/com/frameworkium/core/ui/UITestLifecycle.java): `src/main/java/com/frameworkium/core/ui/UITestLifecycle.java`
- [Test listeners](https://github.com/frameworkium/frameworkium-core/tree/master/src/main/java/com/frameworkium/core/common/listeners): `src/main/java/com/frameworkium/core/common/listeners`
- [Flaky-test retry](https://github.com/frameworkium/frameworkium-core/blob/master/src/main/java/com/frameworkium/core/common/retry/RetryFlakyTest.java): `src/main/java/com/frameworkium/core/common/retry/RetryFlakyTest.java`

### REST API

- [REST services](https://github.com/frameworkium/frameworkium-core/blob/master/src/main/java/com/frameworkium/core/api/services/BaseService.java): `src/main/java/com/frameworkium/core/api/services/BaseService.java`

### Test Reporting

- [Screenshot capture](https://github.com/frameworkium/frameworkium-core/blob/master/src/main/java/com/frameworkium/core/ui/capture/ScreenshotCapture.java): `src/main/java/com/frameworkium/core/ui/capture/ScreenshotCapture.java`
- [Capture listeners](https://github.com/frameworkium/frameworkium-core/blob/master/src/main/java/com/frameworkium/core/ui/listeners/CaptureListener.java): `src/main/java/com/frameworkium/core/ui/listeners/CaptureListener.java`
- [Video capture](https://github.com/frameworkium/frameworkium-core/blob/master/src/main/java/com/frameworkium/core/ui/video/VideoCapture.java): `src/main/java/com/frameworkium/core/ui/video/VideoCapture.java`
- [Jira and Zephyr](https://github.com/frameworkium/frameworkium-core/tree/master/src/main/java/com/frameworkium/core/common/reporting/jira): `src/main/java/com/frameworkium/core/common/reporting/jira`
- [Jira cycle setup](https://github.com/frameworkium/frameworkium-core/blob/master/src/main/java/com/frameworkium/core/common/listeners/CreateJiraCycleListener.java): `src/main/java/com/frameworkium/core/common/listeners/CreateJiraCycleListener.java`
- [Spira reporting](https://github.com/frameworkium/frameworkium-core/tree/master/src/main/java/com/frameworkium/core/common/reporting/spira): `src/main/java/com/frameworkium/core/common/reporting/spira`

### Other components

- **Test code**
- **API test code**
- **Tested API**
- **Test management service**
- **Capture service**

## Connections

- Test code → Driver setup: configures
- Driver setup → Runtime properties: reads settings (evidence: `src/main/java/com/frameworkium/core/ui/driver/DriverSetup.java`)
- Driver setup → Browser drivers: selects driver (evidence: `src/main/java/com/frameworkium/core/ui/driver/DriverSetup.java`)
- Driver setup → Remote grids: selects remote (evidence: `src/main/java/com/frameworkium/core/ui/driver/DriverSetup.java`)
- Test code → Pages and waits: uses pages
- Pages and waits → Element loading: populates fields (evidence: `src/main/java/com/frameworkium/core/ui/pages/Visibility.java`)
- Element loading → HTML elements: creates proxies (evidence: `src/main/java/com/frameworkium/core/htmlelements/loader/HtmlElementLoader.java`)
- Element loading → Element utilities: resolves names (evidence: `src/main/java/com/frameworkium/core/htmlelements/loader/HtmlElementLoader.java`)
- Element loading → Pages and waits: decorates page fields (evidence: `src/main/java/com/frameworkium/core/htmlelements/loader/HtmlElementLoader.java`)
- Test code → Stream tables: uses tables
- Test code → UI test lifecycle: runs tests
- UI test lifecycle → Capture listeners: notifies (evidence: `src/main/java/com/frameworkium/core/ui/listeners/CaptureListener.java`)
- Capture listeners → Screenshot capture: requests screenshots (evidence: `src/main/java/com/frameworkium/core/ui/listeners/CaptureListener.java`)
- Screenshot capture → Capture service: posts captures (evidence: `src/main/java/com/frameworkium/core/ui/capture/ScreenshotCapture.java`)
- UI test lifecycle → Video capture: manages recording
- Test code → Test listeners: registers listeners
- Test listeners → Jira cycle setup: sets up cycles (evidence: `src/main/java/com/frameworkium/core/common/listeners/CreateJiraCycleListener.java`)
- Jira cycle setup → Jira and Zephyr: uses Jira services (evidence: `src/main/java/com/frameworkium/core/common/listeners/CreateJiraCycleListener.java`)
- Jira and Zephyr → Test management service: sends requests
- Jira cycle setup → Runtime properties: reads settings (evidence: `src/main/java/com/frameworkium/core/common/listeners/CreateJiraCycleListener.java`)
- Test listeners → Flaky-test retry: applies retry
- Jira and Zephyr → Spira reporting: optional reporting
- API test code → REST services: calls services
- REST services → Runtime properties: reads settings (evidence: `src/main/java/com/frameworkium/core/api/services/BaseService.java`)
- REST services → Tested API: sends requests
