# allure-framework/allure3 architecture

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

- Interactive diagram: https://gitdiagram.com/allure-framework/allure3
- Repository: https://github.com/allure-framework/allure3

## Overview

Allure 3 is a TypeScript test-reporting framework centered on a CLI workflow: run tests or collect existing result files, interpret supported formats, aggregate test data, generate reports through configured plugins, and view or monitor the output. The repository also provides agent-oriented artifacts, real-time watching, CI context, and optional TestOps and hosted-service integrations. Paths and relationships for sampled modules are grounded in the tree and excerpts; broader command and plugin wiring follows the README, while unsampled internal links are omitted where uncertain.

Main entry points: [`packages/core/src/plugin.ts`](https://github.com/allure-framework/allure3/blob/main/packages/core/src/plugin.ts) (Plugin runtime), [`packages/core/src/report.ts`](https://github.com/allure-framework/allure3/blob/main/packages/core/src/report.ts) (Report generation), [`packages/cli/src/commands/run.ts`](https://github.com/allure-framework/allure3/blob/main/packages/cli/src/commands/run.ts) (Run and generate), [`packages/cli/src/index.ts`](https://github.com/allure-framework/allure3/blob/main/packages/cli/src/index.ts) (Allure CLI)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_cli["CLI workflows"]
  node_cli["Allure CLI<br/>[index.ts]"]
  node_run["Run and generate<br/>[run.ts]"]
  node_agent["Agent workflows<br/>[agent.ts]"]
  node_watch["Watch command<br/>[watch.ts]"]
end

subgraph group_ingest["Results ingestion"]
  node_results["Results discovery"]
  node_reader["Format readers<br/>[index.ts]"]
  node_reader_api["Reader contract<br/>[reader.ts]"]
end

subgraph group_engine["Report engine"]
  node_domain["Test data model<br/>[model.ts]"]
  node_aggregate["Aggregation<br/>[aggregate.ts]"]
  node_config["Report configuration<br/>[config.ts]"]
  node_plugins["Plugin runtime<br/>[plugin.ts]"]
  node_report["Report generation<br/>[report.ts]"]
  node_store[("Report store<br/>[store.ts]")]
end

subgraph group_presentation["Report experience"]
  node_awesome["Awesome report<br/>[plugin.ts]"]
  node_classic["Classic report<br/>[plugin.ts]"]
  node_allure2["Allure 2 output<br/>[plugin.ts]"]
  node_dashboard["Dashboard export<br/>[plugin.ts]"]
  node_web["Report interface<br/>[bootstrap.mts]"]
  node_agent_plugin["Agent artifacts<br/>[plugin.ts]"]
end

subgraph group_integrations["Integrations"]
  node_ci["CI context<br/>[index.ts]"]
  node_testops["TestOps integration<br/>[plugin.ts]"]
  node_service["Hosted service API<br/>[service.ts]"]
end

node_user(("Engineer"))
node_frameworks(("Test frameworks"))
node_filesystem[("Result files")]
node_browser(("Browser user"))
node_testops_service(("Allure TestOps"))
node_hosted(("Allure service"))

node_user -->|"runs commands"| node_cli
node_cli -->|"dispatches"| node_run
node_cli -->|"dispatches"| node_agent
node_cli -->|"dispatches"| node_watch
node_run -->|"runs tests"| node_frameworks
node_frameworks -->|"write results"| node_filesystem
node_run -->|"discovers results"| node_results
node_results -->|"reads files"| node_filesystem
node_results -->|"supplies inputs"| node_reader
node_reader -->|"implements contract"| node_reader_api
node_reader -->|"produces model"| node_domain
node_domain -->|"feeds aggregation"| node_aggregate
node_run -->|"loads settings"| node_config
node_run -->|"starts generation"| node_report
node_report -->|"dispatches plugins"| node_plugins
node_report -->|"aggregates results"| node_aggregate
node_report -->|"writes report data"| node_store
node_plugins -->|"runs configured"| node_awesome
node_plugins -->|"runs configured"| node_classic
node_plugins -->|"runs configured"| node_allure2
node_plugins -->|"runs configured"| node_dashboard
node_plugins -->|"runs agent output"| node_agent_plugin
node_awesome -->|"generates interface"| node_web
node_browser -->|"views report"| node_web
node_agent -->|"generates artifacts"| node_agent_plugin
node_watch -->|"monitors changes"| node_filesystem
node_watch -->|"refreshes report"| node_report
node_report -.->|"uses CI context"| node_ci
node_plugins -.->|"optional integration"| node_testops
node_testops -.->|"uploads results"| node_testops_service
node_service -.->|"uploads report files"| node_hosted

click node_cli "https://github.com/allure-framework/allure3/blob/main/packages/cli/src/index.ts"
click node_run "https://github.com/allure-framework/allure3/blob/main/packages/cli/src/commands/run.ts"
click node_agent "https://github.com/allure-framework/allure3/blob/main/packages/cli/src/commands/agent.ts"
click node_watch "https://github.com/allure-framework/allure3/blob/main/packages/cli/src/commands/watch.ts"
click node_results "https://github.com/allure-framework/allure3/blob/main/packages/cli/src/commands/commons/resultsDiscovery.ts"
click node_reader "https://github.com/allure-framework/allure3/blob/main/packages/reader/src/index.ts"
click node_reader_api "https://github.com/allure-framework/allure3/blob/main/packages/reader-api/src/reader.ts"
click node_domain "https://github.com/allure-framework/allure3/blob/main/packages/core-api/src/model.ts"
click node_aggregate "https://github.com/allure-framework/allure3/blob/main/packages/core-api/src/aggregate.ts"
click node_config "https://github.com/allure-framework/allure3/blob/main/packages/core/src/config.ts"
click node_plugins "https://github.com/allure-framework/allure3/blob/main/packages/core/src/plugin.ts"
click node_report "https://github.com/allure-framework/allure3/blob/main/packages/core/src/report.ts"
click node_store "https://github.com/allure-framework/allure3/blob/main/packages/core/src/store/store.ts"
click node_awesome "https://github.com/allure-framework/allure3/blob/main/packages/plugin-awesome/src/plugin.ts"
click node_classic "https://github.com/allure-framework/allure3/blob/main/packages/plugin-classic/src/plugin.ts"
click node_allure2 "https://github.com/allure-framework/allure3/blob/main/packages/plugin-allure2/src/plugin.ts"
click node_dashboard "https://github.com/allure-framework/allure3/blob/main/packages/plugin-dashboard/src/plugin.ts"
click node_web "https://github.com/allure-framework/allure3/blob/main/packages/web-allure2/src/main/javascript/app/bootstrap.mts"
click node_agent_plugin "https://github.com/allure-framework/allure3/blob/main/packages/plugin-agent/src/plugin.ts"
click node_ci "https://github.com/allure-framework/allure3/blob/main/packages/ci/src/index.ts"
click node_testops "https://github.com/allure-framework/allure3/blob/main/packages/plugin-testops/src/plugin.ts"
click node_service "https://github.com/allure-framework/allure3/blob/main/packages/service/src/service.ts"

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_run,node_agent,node_watch,node_browser toneBlue
class node_results,node_reader,node_reader_api,node_filesystem toneAmber
class node_domain,node_aggregate,node_config,node_plugins,node_report,node_store toneMint
class node_awesome,node_classic,node_allure2,node_dashboard,node_web,node_agent_plugin toneRose
class node_ci,node_testops,node_service,node_user,node_frameworks,node_testops_service,node_hosted toneIndigo
```

## Components

### CLI workflows

- [Allure CLI](https://github.com/allure-framework/allure3/blob/main/packages/cli/src/index.ts): `packages/cli/src/index.ts`
- [Run and generate](https://github.com/allure-framework/allure3/blob/main/packages/cli/src/commands/run.ts): `packages/cli/src/commands/run.ts`
- [Agent workflows](https://github.com/allure-framework/allure3/blob/main/packages/cli/src/commands/agent.ts): `packages/cli/src/commands/agent.ts`
- [Watch command](https://github.com/allure-framework/allure3/blob/main/packages/cli/src/commands/watch.ts): `packages/cli/src/commands/watch.ts`

### Results ingestion

- [Results discovery](https://github.com/allure-framework/allure3/blob/main/packages/cli/src/commands/commons/resultsDiscovery.ts): `packages/cli/src/commands/commons/resultsDiscovery.ts`
- [Format readers](https://github.com/allure-framework/allure3/blob/main/packages/reader/src/index.ts): `packages/reader/src/index.ts`
- [Reader contract](https://github.com/allure-framework/allure3/blob/main/packages/reader-api/src/reader.ts): `packages/reader-api/src/reader.ts`

### Report engine

- [Test data model](https://github.com/allure-framework/allure3/blob/main/packages/core-api/src/model.ts): `packages/core-api/src/model.ts`
- [Aggregation](https://github.com/allure-framework/allure3/blob/main/packages/core-api/src/aggregate.ts): `packages/core-api/src/aggregate.ts`
- [Report configuration](https://github.com/allure-framework/allure3/blob/main/packages/core/src/config.ts): `packages/core/src/config.ts`
- [Plugin runtime](https://github.com/allure-framework/allure3/blob/main/packages/core/src/plugin.ts): `packages/core/src/plugin.ts`
- [Report generation](https://github.com/allure-framework/allure3/blob/main/packages/core/src/report.ts): `packages/core/src/report.ts`
- [Report store](https://github.com/allure-framework/allure3/blob/main/packages/core/src/store/store.ts): `packages/core/src/store/store.ts`

### Report experience

- [Awesome report](https://github.com/allure-framework/allure3/blob/main/packages/plugin-awesome/src/plugin.ts): `packages/plugin-awesome/src/plugin.ts`
- [Classic report](https://github.com/allure-framework/allure3/blob/main/packages/plugin-classic/src/plugin.ts): `packages/plugin-classic/src/plugin.ts`
- [Allure 2 output](https://github.com/allure-framework/allure3/blob/main/packages/plugin-allure2/src/plugin.ts): `packages/plugin-allure2/src/plugin.ts`
- [Dashboard export](https://github.com/allure-framework/allure3/blob/main/packages/plugin-dashboard/src/plugin.ts): `packages/plugin-dashboard/src/plugin.ts`
- [Report interface](https://github.com/allure-framework/allure3/blob/main/packages/web-allure2/src/main/javascript/app/bootstrap.mts): `packages/web-allure2/src/main/javascript/app/bootstrap.mts`
- [Agent artifacts](https://github.com/allure-framework/allure3/blob/main/packages/plugin-agent/src/plugin.ts): `packages/plugin-agent/src/plugin.ts`

### Integrations

- [CI context](https://github.com/allure-framework/allure3/blob/main/packages/ci/src/index.ts): `packages/ci/src/index.ts`
- [TestOps integration](https://github.com/allure-framework/allure3/blob/main/packages/plugin-testops/src/plugin.ts): `packages/plugin-testops/src/plugin.ts`
- [Hosted service API](https://github.com/allure-framework/allure3/blob/main/packages/service/src/service.ts): `packages/service/src/service.ts`

### Other components

- **Engineer**
- **Test frameworks**
- **Result files**
- **Browser user**
- **Allure TestOps**
- **Allure service**

## Connections

- Engineer → Allure CLI: runs commands
- Allure CLI → Run and generate: dispatches
- Allure CLI → Agent workflows: dispatches
- Allure CLI → Watch command: dispatches
- Run and generate → Test frameworks: runs tests
- Test frameworks → Result files: write results
- Run and generate → Results discovery: discovers results
- Results discovery → Result files: reads files
- Results discovery → Format readers: supplies inputs
- Format readers → Reader contract: implements contract
- Format readers → Test data model: produces model
- Test data model → Aggregation: feeds aggregation
- Run and generate → Report configuration: loads settings
- Run and generate → Report generation: starts generation
- Report generation → Plugin runtime: dispatches plugins
- Report generation → Aggregation: aggregates results
- Report generation → Report store: writes report data
- Plugin runtime → Awesome report: runs configured
- Plugin runtime → Classic report: runs configured
- Plugin runtime → Allure 2 output: runs configured
- Plugin runtime → Dashboard export: runs configured
- Plugin runtime → Agent artifacts: runs agent output
- Awesome report → Report interface: generates interface
- Browser user → Report interface: views report
- Agent workflows → Agent artifacts: generates artifacts
- Watch command → Result files: monitors changes
- Watch command → Report generation: refreshes report
- Report generation → CI context: uses CI context
- Plugin runtime → TestOps integration: optional integration
- TestOps integration → Allure TestOps: uploads results
- Hosted service API → Allure service: uploads report files
