# pietroconta/e2egen-ai architecture

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

- Interactive diagram: https://gitdiagram.com/pietroconta/e2egen-ai
- Repository: https://github.com/pietroconta/e2egen-ai

## Overview

E2EGen AI turns natural-language test steps into Playwright actions, runs them in a browser, and records outcomes and usage. The CLI loads settings and StepsPacks, creates step models and runtime services, then TestRunner owns browser navigation and sequential execution. For each step, RetryManager coordinates cache lookup or cleaned-page-context generation, execution, and retries; TestRunner records results and requests reports. README-documented capabilities such as configurable expectations, cache modes, HTML reports, and orphan cleanup are included. Some links reflect README claims because their implementation was not sampled.

Main entry points: [`index.js`](https://github.com/pietroconta/e2egen-ai/blob/master/index.js) (CLI orchestration), [`core/TestRunner.js`](https://github.com/pietroconta/e2egen-ai/blob/master/core/TestRunner.js) (Test runner), [`core/RetryManager.js`](https://github.com/pietroconta/e2egen-ai/blob/master/core/RetryManager.js) (Retry manager), [`core/TestExecutor.js`](https://github.com/pietroconta/e2egen-ai/blob/master/core/TestExecutor.js) (Playwright executor)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_setup["Suite Setup"]
  node_cli["CLI orchestration<br/>[index.js]"]
  node_config["Settings and packs<br/>[ConfigManager.js]"]
  node_step_model["Step model<br/>[Step.js]"]
  node_step_packs["StepsPacks"]
  node_steps_config["Suite settings and steps"]
end

subgraph group_generation["Code Generation"]
  node_cache[("Generated code cache<br/>[TestExecutor.js]")]
  node_clean_html["HTML cleaning<br/>[TestExecutor.js]"]
  node_generator["AI code generator<br/>[CodeGenerator.js]"]
  node_mock_ai["Mock AI<br/>[mock-openai.js]"]
end

subgraph group_execution["Browser Execution"]
  node_runner["Test runner<br/>[TestRunner.js]"]
  node_retry["Retry manager<br/>[RetryManager.js]"]
  node_executor["Playwright executor<br/>[TestExecutor.js]"]
end

subgraph group_operations["Run Operations"]
  node_reporter["Run reporting<br/>[TestReporter.js]"]
  node_run_reports["JSON and HTML reports<br/>[TestReporter.js]"]
  node_cleaner["Orphan cleanup<br/>[Cleaner.js]"]
  node_analysis["Cost analysis<br/>[analysis.js]"]
end

node_developer(("Test author"))
node_browser(("Target website"))
node_openai(("OpenAI service"))

node_developer -->|"starts run"| node_cli
node_developer -->|"defines suite"| node_steps_config
node_developer -->|"selects pack"| node_step_packs
node_cli -->|"loads options"| node_config
node_config -->|"loads pack settings"| node_step_packs
node_config -->|"loads suite config"| node_steps_config
node_cli -->|"creates steps"| node_step_model
node_cli -->|"starts run"| node_runner
node_cli -->|"cleans cache"| node_cleaner
node_runner -->|"navigates page"| node_browser
node_runner -->|"dispatches steps"| node_retry
node_retry -->|"executes code"| node_executor
node_retry -->|"reads or writes cache"| node_executor
node_retry -->|"extracts page HTML"| node_executor
node_executor -->|"runs actions"| node_browser
node_executor -->|"cleans HTML"| node_clean_html
node_retry -->|"requests code"| node_generator
node_generator -->|"requests completion"| node_openai
node_cli -->|"selects mock mode"| node_mock_ai
node_mock_ai -.->|"supplies completion"| node_generator
node_runner -->|"records results"| node_reporter
node_runner -->|"requests reports"| node_run_reports
node_reporter -.->|"writes reports"| node_run_reports
node_analysis -->|"analyzes run logs"| node_run_reports
node_cleaner -.->|"removes orphan files"| node_cache

click node_cli "https://github.com/pietroconta/e2egen-ai/blob/master/index.js"
click node_config "https://github.com/pietroconta/e2egen-ai/blob/master/core/ConfigManager.js"
click node_step_model "https://github.com/pietroconta/e2egen-ai/blob/master/models/Step.js"
click node_step_packs "https://github.com/pietroconta/e2egen-ai/tree/master/stepspacks"
click node_steps_config "https://github.com/pietroconta/e2egen-ai/blob/master/aidriven-settings.json"
click node_runner "https://github.com/pietroconta/e2egen-ai/blob/master/core/TestRunner.js"
click node_retry "https://github.com/pietroconta/e2egen-ai/blob/master/core/RetryManager.js"
click node_executor "https://github.com/pietroconta/e2egen-ai/blob/master/core/TestExecutor.js"
click node_cache "https://github.com/pietroconta/e2egen-ai/blob/master/core/TestExecutor.js"
click node_clean_html "https://github.com/pietroconta/e2egen-ai/blob/master/core/TestExecutor.js"
click node_generator "https://github.com/pietroconta/e2egen-ai/blob/master/core/CodeGenerator.js"
click node_mock_ai "https://github.com/pietroconta/e2egen-ai/blob/master/mock-openai.js"
click node_reporter "https://github.com/pietroconta/e2egen-ai/blob/master/core/TestReporter.js"
click node_run_reports "https://github.com/pietroconta/e2egen-ai/blob/master/core/TestReporter.js"
click node_cleaner "https://github.com/pietroconta/e2egen-ai/blob/master/utils/Cleaner.js"
click node_analysis "https://github.com/pietroconta/e2egen-ai/blob/master/utils/analysis.js"

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_cli,node_config,node_step_model,node_step_packs,node_steps_config toneBlue
class node_cache,node_clean_html,node_generator,node_mock_ai toneAmber
class node_runner,node_retry,node_executor toneMint
class node_reporter,node_run_reports,node_cleaner,node_analysis toneRose
class node_developer,node_browser,node_openai toneIndigo
```

## Components

### Suite Setup

- [CLI orchestration](https://github.com/pietroconta/e2egen-ai/blob/master/index.js): `index.js`
- [Settings and packs](https://github.com/pietroconta/e2egen-ai/blob/master/core/ConfigManager.js): `core/ConfigManager.js`
- [Step model](https://github.com/pietroconta/e2egen-ai/blob/master/models/Step.js): `models/Step.js`
- [StepsPacks](https://github.com/pietroconta/e2egen-ai/tree/master/stepspacks): `stepspacks`
- [Suite settings and steps](https://github.com/pietroconta/e2egen-ai/blob/master/aidriven-settings.json): `aidriven-settings.json`

### Code Generation

- [Generated code cache](https://github.com/pietroconta/e2egen-ai/blob/master/core/TestExecutor.js): `core/TestExecutor.js`
- [HTML cleaning](https://github.com/pietroconta/e2egen-ai/blob/master/core/TestExecutor.js): `core/TestExecutor.js`
- [AI code generator](https://github.com/pietroconta/e2egen-ai/blob/master/core/CodeGenerator.js): `core/CodeGenerator.js`
- [Mock AI](https://github.com/pietroconta/e2egen-ai/blob/master/mock-openai.js): `mock-openai.js`

### Browser Execution

- [Test runner](https://github.com/pietroconta/e2egen-ai/blob/master/core/TestRunner.js): `core/TestRunner.js`
- [Retry manager](https://github.com/pietroconta/e2egen-ai/blob/master/core/RetryManager.js): `core/RetryManager.js`
- [Playwright executor](https://github.com/pietroconta/e2egen-ai/blob/master/core/TestExecutor.js): `core/TestExecutor.js`

### Run Operations

- [Run reporting](https://github.com/pietroconta/e2egen-ai/blob/master/core/TestReporter.js): `core/TestReporter.js`
- [JSON and HTML reports](https://github.com/pietroconta/e2egen-ai/blob/master/core/TestReporter.js): `core/TestReporter.js`
- [Orphan cleanup](https://github.com/pietroconta/e2egen-ai/blob/master/utils/Cleaner.js): `utils/Cleaner.js`
- [Cost analysis](https://github.com/pietroconta/e2egen-ai/blob/master/utils/analysis.js): `utils/analysis.js`

### Other components

- **Test author**
- **Target website**
- **OpenAI service**

## Connections

- Test author → CLI orchestration: starts run (evidence: `README.md`)
- Test author → Suite settings and steps: defines suite (evidence: `README.md`)
- Test author → StepsPacks: selects pack (evidence: `README.md`)
- CLI orchestration → Settings and packs: loads options (evidence: `index.js`)
- Settings and packs → StepsPacks: loads pack settings (evidence: `core/ConfigManager.js`)
- Settings and packs → Suite settings and steps: loads suite config (evidence: `core/ConfigManager.js`)
- CLI orchestration → Step model: creates steps (evidence: `index.js`)
- CLI orchestration → Test runner: starts run (evidence: `index.js`)
- CLI orchestration → Orphan cleanup: cleans cache (evidence: `index.js`)
- Test runner → Target website: navigates page (evidence: `core/TestRunner.js`)
- Test runner → Retry manager: dispatches steps (evidence: `core/TestRunner.js`)
- Retry manager → Playwright executor: executes code (evidence: `core/RetryManager.js`)
- Retry manager → Playwright executor: reads or writes cache (evidence: `core/RetryManager.js`)
- Retry manager → Playwright executor: extracts page HTML (evidence: `core/RetryManager.js`)
- Playwright executor → Target website: runs actions (evidence: `core/TestExecutor.js`)
- Playwright executor → HTML cleaning: cleans HTML (evidence: `core/TestExecutor.js`)
- Retry manager → AI code generator: requests code (evidence: `core/RetryManager.js`)
- AI code generator → OpenAI service: requests completion (evidence: `core/CodeGenerator.js`)
- CLI orchestration → Mock AI: selects mock mode (evidence: `index.js`)
- Mock AI → AI code generator: supplies completion
- Test runner → Run reporting: records results (evidence: `core/TestRunner.js`)
- Test runner → JSON and HTML reports: requests reports (evidence: `core/TestRunner.js`)
- Run reporting → JSON and HTML reports: writes reports (evidence: `core/TestReporter.js`)
- Cost analysis → JSON and HTML reports: analyzes run logs (evidence: `utils/analysis.js`)
- Orphan cleanup → Generated code cache: removes orphan files
