# kiran112p/nda architecture

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

- Interactive diagram: https://gitdiagram.com/kiran112p/nda
- Repository: https://github.com/kiran112p/nda
- Video tour (about a minute): https://gitdiagram.com/kiran112p/nda/video

## Overview

NDA is a Selenium/Pytest UI automation framework for a web-based network-device administration application. Its principal workflow launches a browser, logs in, then exercises device management, software configuration, software updates, and configuration validation; page objects perform UI actions and verify outcomes. The README also describes smoke/regression coverage and report/evidence generation. The fixture-to-login call and page-object behavior are visible in sampled source; links from individual test modules to page objects reflect the documented test/POM structure, not inspected test implementations.

Main entry points: [`pages/software_config_page.py`](https://github.com/kiran112p/nda/blob/main/pages/software_config_page.py) (Software configuration), [`pages/software_update_page_device_paralell.py`](https://github.com/kiran112p/nda/blob/main/pages/software_update_page_device_paralell.py) (Software update), [`pages/validate_config_module.py`](https://github.com/kiran112p/nda/blob/main/pages/validate_config_module.py) (Config validation), [`helpers/locaters.py`](https://github.com/kiran112p/nda/blob/main/helpers/locaters.py) (Locators and values)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_execution["Test execution"]
  node_login_tests["Login tests"]
  node_device_tests["Device tests"]
  node_config_tests["Software config tests"]
  node_update_tests["Software update tests"]
  node_validation_tests["Config validation tests"]
  node_fixture["Browser fixture<br/>[conftest.py]"]
end

subgraph group_shared["Shared UI layer"]
  node_login_page["Login page<br/>[login_page.py]"]
  node_helpers["Locators and values<br/>[locaters.py]"]
  node_variables["Test inputs<br/>[variables.py]"]
end

subgraph group_workflows["Admin workflows"]
  node_device_page["Device management"]
  node_software_config["Software configuration"]
  node_software_update["Software update"]
  node_config_validation["Config validation"]
  node_app["NDA web application"]
end

subgraph group_evidence["Results and evidence"]
  node_evidence_output["Screenshots and reports"]
end

node_engineer(("Test engineer"))

node_engineer -->|"runs suite"| node_login_tests
node_engineer -->|"runs suite"| node_device_tests
node_engineer -->|"runs suite"| node_config_tests
node_engineer -->|"runs suite"| node_update_tests
node_engineer -->|"runs suite"| node_validation_tests
node_fixture -->|"opens and logs in"| node_login_page
node_login_page -->|"drives login UI"| node_app
node_login_tests -->|"tests login"| node_login_page
node_device_tests -->|"tests device flow"| node_device_page
node_config_tests -->|"tests config flow"| node_software_config
node_update_tests -->|"tests update flow"| node_software_update
node_validation_tests -->|"tests validation"| node_config_validation
node_device_page -->|"drives device UI"| node_app
node_software_config -->|"drives config UI"| node_app
node_software_update -->|"drives update UI"| node_app
node_config_validation -->|"drives validation UI"| node_app
node_login_page -->|"imports locators"| node_helpers
node_device_page -->|"imports locators"| node_helpers
node_software_config -->|"imports locators"| node_helpers
node_software_update -->|"imports locators"| node_helpers
node_config_validation -->|"imports locators"| node_helpers
node_device_page -->|"reads test inputs"| node_variables
node_software_config -->|"reads test inputs"| node_variables
node_software_update -->|"reads test inputs"| node_variables
node_config_validation -->|"reads test inputs"| node_variables
node_software_config -->|"saves screenshot"| node_evidence_output
node_software_update -->|"saves screenshot"| node_evidence_output
node_config_validation -->|"saves screenshots"| node_evidence_output

click node_login_tests "https://github.com/kiran112p/nda/blob/main/tests/test_login_validation.py"
click node_device_tests "https://github.com/kiran112p/nda/blob/main/tests/test_device_management_ssh_private.py"
click node_config_tests "https://github.com/kiran112p/nda/blob/main/tests/test_software_config_page.py"
click node_update_tests "https://github.com/kiran112p/nda/blob/main/tests/test_software_update_page_device_parlell.py"
click node_validation_tests "https://github.com/kiran112p/nda/blob/main/tests/test_validate_config.py"
click node_fixture "https://github.com/kiran112p/nda/blob/main/conftest.py"
click node_login_page "https://github.com/kiran112p/nda/blob/main/pages/login_page.py"
click node_helpers "https://github.com/kiran112p/nda/blob/main/helpers/locaters.py"
click node_variables "https://github.com/kiran112p/nda/blob/main/helpers/variables.py"
click node_device_page "https://github.com/kiran112p/nda/blob/main/pages/device_management_ssh_private.py"
click node_software_config "https://github.com/kiran112p/nda/blob/main/pages/software_config_page.py"
click node_software_update "https://github.com/kiran112p/nda/blob/main/pages/software_update_page_device_paralell.py"
click node_config_validation "https://github.com/kiran112p/nda/blob/main/pages/validate_config_module.py"

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_login_tests,node_device_tests,node_config_tests,node_update_tests,node_validation_tests,node_fixture toneBlue
class node_login_page,node_helpers,node_variables toneAmber
class node_device_page,node_software_config,node_software_update,node_config_validation,node_app toneMint
class node_evidence_output toneRose
class node_engineer toneIndigo
```

## Components

### Test execution

- [Login tests](https://github.com/kiran112p/nda/blob/main/tests/test_login_validation.py): `tests/test_login_validation.py`
- [Device tests](https://github.com/kiran112p/nda/blob/main/tests/test_device_management_ssh_private.py): `tests/test_device_management_ssh_private.py`
- [Software config tests](https://github.com/kiran112p/nda/blob/main/tests/test_software_config_page.py): `tests/test_software_config_page.py`
- [Software update tests](https://github.com/kiran112p/nda/blob/main/tests/test_software_update_page_device_parlell.py): `tests/test_software_update_page_device_parlell.py`
- [Config validation tests](https://github.com/kiran112p/nda/blob/main/tests/test_validate_config.py): `tests/test_validate_config.py`
- [Browser fixture](https://github.com/kiran112p/nda/blob/main/conftest.py): `conftest.py`

### Shared UI layer

- [Login page](https://github.com/kiran112p/nda/blob/main/pages/login_page.py): `pages/login_page.py`
- [Locators and values](https://github.com/kiran112p/nda/blob/main/helpers/locaters.py): `helpers/locaters.py`
- [Test inputs](https://github.com/kiran112p/nda/blob/main/helpers/variables.py): `helpers/variables.py`

### Admin workflows

- [Device management](https://github.com/kiran112p/nda/blob/main/pages/device_management_ssh_private.py): `pages/device_management_ssh_private.py`
- [Software configuration](https://github.com/kiran112p/nda/blob/main/pages/software_config_page.py): `pages/software_config_page.py`
- [Software update](https://github.com/kiran112p/nda/blob/main/pages/software_update_page_device_paralell.py): `pages/software_update_page_device_paralell.py`
- [Config validation](https://github.com/kiran112p/nda/blob/main/pages/validate_config_module.py): `pages/validate_config_module.py`
- **NDA web application**

### Results and evidence

- **Screenshots and reports**

### Other components

- **Test engineer**

## Connections

- Test engineer → Login tests: runs suite
- Test engineer → Device tests: runs suite
- Test engineer → Software config tests: runs suite
- Test engineer → Software update tests: runs suite
- Test engineer → Config validation tests: runs suite
- Browser fixture → Login page: opens and logs in
- Login page → NDA web application: drives login UI
- Login tests → Login page: tests login
- Device tests → Device management: tests device flow
- Software config tests → Software configuration: tests config flow
- Software update tests → Software update: tests update flow
- Config validation tests → Config validation: tests validation
- Device management → NDA web application: drives device UI
- Software configuration → NDA web application: drives config UI
- Software update → NDA web application: drives update UI
- Config validation → NDA web application: drives validation UI
- Login page → Locators and values: imports locators
- Device management → Locators and values: imports locators
- Software configuration → Locators and values: imports locators
- Software update → Locators and values: imports locators
- Config validation → Locators and values: imports locators
- Device management → Test inputs: reads test inputs
- Software configuration → Test inputs: reads test inputs
- Software update → Test inputs: reads test inputs
- Config validation → Test inputs: reads test inputs
- Software configuration → Screenshots and reports: saves screenshot
- Software update → Screenshots and reports: saves screenshot
- Config validation → Screenshots and reports: saves screenshots
