# githinji96/betikatestapplication architecture

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

- Interactive diagram: https://gitdiagram.com/githinji96/betikatestapplication
- Repository: https://github.com/githinji96/betikatestapplication

## Overview

This repository is a Selenium/TestNG automation suite for the Betika betting website. Its principal workflow launches a browser, loads login settings, signs in, exercises betting flows, and records execution results. The tree also documents coverage for multiple sports, registration, notifications, and broken links; those test modules are shown, but their internal calls were not sampled. The login, single-soccer-bet, and reporting links reflect sampled source; uncertain wiring for other tests is omitted.

Main entry points: [`src/main/java/com/commontests/PlaceSingleSoccerBetTest.java`](https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/commontests/PlaceSingleSoccerBetTest.java) (Single soccer bet), [`src/main/java/com/ListenersPackage/Listeners.java`](https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/ListenersPackage/Listeners.java) (Test listener), [`src/main/java/com/utils/ExtentReportManager.java`](https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/utils/ExtentReportManager.java) (Report generation), [`src/test/resources/testng.xml`](https://github.com/githinji96/betikatestapplication/blob/main/src/test/resources/testng.xml) (TestNG suite)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_execution["Test execution"]
  node_testng["TestNG suite<br/>[testng.xml]"]
  node_single_soccer["Single soccer bet"]
end

subgraph group_coverage["Betika coverage"]
  node_cricket["Cricket games"]
  node_boxing["Boxing matches"]
  node_casino["Casino games"]
  node_live_games["Live games"]
  node_handball["Handball games"]
  node_rugby["Rugby games"]
  node_table_tennis["Table tennis"]
  node_american_football["American football"]
  node_multi_soccer["Multiple soccer bets"]
  node_registration["User registration"]
  node_notifications["Notifications"]
  node_broken_links["Broken links"]
end

subgraph group_support["Execution support"]
  node_driver["Browser setup<br/>[DriverClass.java]"]
  node_login["Login flow<br/>[AppLogin.java]"]
  node_properties["Login settings<br/>[loadProperty.java]"]
  node_config["Site credentials<br/>[config.properties]"]
  node_random_data["Random test data"]
  node_retry["Failure retries"]
end

subgraph group_reporting["Reporting"]
  node_listener["Test listener<br/>[Listeners.java]"]
  node_report_manager["Report generation"]
  node_test_report["HTML and PDF reports<br/>[ExtentReport.html]"]
end

node_test_runner(("Test runner"))
node_betika["Betika website"]

node_test_runner -->|"runs suite"| node_testng
node_testng -->|"selects tests"| node_single_soccer
node_single_soccer -->|"creates browser"| node_driver
node_single_soccer -->|"loads settings"| node_properties
node_properties -->|"reads properties"| node_config
node_single_soccer -->|"calls login"| node_login
node_login -->|"opens and signs in"| node_betika
node_single_soccer -->|"places and checks bets"| node_betika
node_single_soccer -->|"uses retry analyzer"| node_retry
node_single_soccer -->|"attaches listener"| node_listener
node_listener -->|"gets report instance"| node_report_manager
node_listener -->|"captures screenshot"| node_driver
node_single_soccer -->|"flushes and converts"| node_report_manager
node_report_manager -->|"writes reports"| node_test_report

click node_testng "https://github.com/githinji96/betikatestapplication/blob/main/src/test/resources/testng.xml"
click node_single_soccer "https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/commontests/PlaceSingleSoccerBetTest.java"
click node_cricket "https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/commontests/CricketGamesTest.java"
click node_boxing "https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/commontests/BoxingMatchesTest.java"
click node_casino "https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/commontests/CasinoGamesTest.java"
click node_live_games "https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/commontests/DisplayAndPlaceLiveGamesTest.java"
click node_handball "https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/commontests/HandballGamesTest.java"
click node_rugby "https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/commontests/RugbyGamesTest.java"
click node_table_tennis "https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/commontests/TableTennisTest.java"
click node_american_football "https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/commontests/TestAmericaFootballGamesTest.java"
click node_multi_soccer "https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/commontests/SelectMultipleSoccerbetsTest.java"
click node_registration "https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/commontests/RegisterUserTest.java"
click node_notifications "https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/commontests/NotificationsTest.java"
click node_broken_links "https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/commontests/BrokenLinksTest.java"
click node_driver "https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/utils/DriverClass.java"
click node_login "https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/loginpackage/AppLogin.java"
click node_properties "https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/PropertyData/loadProperty.java"
click node_config "https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/PropertyData/config.properties"
click node_random_data "https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/randompackage/GenerateRandomData.java"
click node_retry "https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/reRunFailedTests/rerunFailedTestCases.java"
click node_listener "https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/ListenersPackage/Listeners.java"
click node_report_manager "https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/utils/ExtentReportManager.java"
click node_test_report "https://github.com/githinji96/betikatestapplication/blob/main/reports/ExtentReport.html"

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_testng,node_single_soccer toneBlue
class node_cricket,node_boxing,node_casino,node_live_games,node_handball,node_rugby,node_table_tennis,node_american_football,node_multi_soccer,node_registration,node_notifications,node_broken_links toneAmber
class node_driver,node_login,node_properties,node_config,node_random_data,node_retry toneMint
class node_listener,node_report_manager,node_test_report toneRose
class node_test_runner,node_betika toneIndigo
```

## Components

### Test execution

- [TestNG suite](https://github.com/githinji96/betikatestapplication/blob/main/src/test/resources/testng.xml): `src/test/resources/testng.xml`
- [Single soccer bet](https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/commontests/PlaceSingleSoccerBetTest.java): `src/main/java/com/commontests/PlaceSingleSoccerBetTest.java`

### Betika coverage

- [Cricket games](https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/commontests/CricketGamesTest.java): `src/main/java/com/commontests/CricketGamesTest.java`
- [Boxing matches](https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/commontests/BoxingMatchesTest.java): `src/main/java/com/commontests/BoxingMatchesTest.java`
- [Casino games](https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/commontests/CasinoGamesTest.java): `src/main/java/com/commontests/CasinoGamesTest.java`
- [Live games](https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/commontests/DisplayAndPlaceLiveGamesTest.java): `src/main/java/com/commontests/DisplayAndPlaceLiveGamesTest.java`
- [Handball games](https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/commontests/HandballGamesTest.java): `src/main/java/com/commontests/HandballGamesTest.java`
- [Rugby games](https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/commontests/RugbyGamesTest.java): `src/main/java/com/commontests/RugbyGamesTest.java`
- [Table tennis](https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/commontests/TableTennisTest.java): `src/main/java/com/commontests/TableTennisTest.java`
- [American football](https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/commontests/TestAmericaFootballGamesTest.java): `src/main/java/com/commontests/TestAmericaFootballGamesTest.java`
- [Multiple soccer bets](https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/commontests/SelectMultipleSoccerbetsTest.java): `src/main/java/com/commontests/SelectMultipleSoccerbetsTest.java`
- [User registration](https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/commontests/RegisterUserTest.java): `src/main/java/com/commontests/RegisterUserTest.java`
- [Notifications](https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/commontests/NotificationsTest.java): `src/main/java/com/commontests/NotificationsTest.java`
- [Broken links](https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/commontests/BrokenLinksTest.java): `src/main/java/com/commontests/BrokenLinksTest.java`

### Execution support

- [Browser setup](https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/utils/DriverClass.java): `src/main/java/com/utils/DriverClass.java`
- [Login flow](https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/loginpackage/AppLogin.java): `src/main/java/com/loginpackage/AppLogin.java`
- [Login settings](https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/PropertyData/loadProperty.java): `src/main/java/com/PropertyData/loadProperty.java`
- [Site credentials](https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/PropertyData/config.properties): `src/main/java/com/PropertyData/config.properties`
- [Random test data](https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/randompackage/GenerateRandomData.java): `src/main/java/com/randompackage/GenerateRandomData.java`
- [Failure retries](https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/reRunFailedTests/rerunFailedTestCases.java): `src/main/java/com/reRunFailedTests/rerunFailedTestCases.java`

### Reporting

- [Test listener](https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/ListenersPackage/Listeners.java): `src/main/java/com/ListenersPackage/Listeners.java`
- [Report generation](https://github.com/githinji96/betikatestapplication/blob/main/src/main/java/com/utils/ExtentReportManager.java): `src/main/java/com/utils/ExtentReportManager.java`
- [HTML and PDF reports](https://github.com/githinji96/betikatestapplication/blob/main/reports/ExtentReport.html): `reports/ExtentReport.html`

### Other components

- **Test runner**
- **Betika website**

## Connections

- Test runner → TestNG suite: runs suite
- TestNG suite → Single soccer bet: selects tests
- Single soccer bet → Browser setup: creates browser
- Single soccer bet → Login settings: loads settings
- Login settings → Site credentials: reads properties
- Single soccer bet → Login flow: calls login
- Login flow → Betika website: opens and signs in
- Single soccer bet → Betika website: places and checks bets
- Single soccer bet → Failure retries: uses retry analyzer
- Single soccer bet → Test listener: attaches listener
- Test listener → Report generation: gets report instance
- Test listener → Browser setup: captures screenshot
- Single soccer bet → Report generation: flushes and converts
- Report generation → HTML and PDF reports: writes reports
