# 📊 Robot Framework Dashboard
[](https://pypi.org/project/robotframework-dashboard)
[](https://pepy.tech/projects/robotframework-dashboard)
[](https://pepy.tech/projects/robotframework-dashboard)
[](LICENSE)
Before reading anything else here is a [Fully Functioning Dashboard](https://marketsquare.github.io/robotframework-dashboard/example/robot_dashboard.html) you can checkout right away!
## 🎯 Overview
Robot Framework Dashboard is a tool for [Robot Framework](https://robotframework.org/) that provides insight of your test results across multiple runs. The tool makes use of the built in Robot Framework [Result Visitor API](https://robot-framework.readthedocs.io/en/stable/_modules/robot/result/visitor.html) to analyse output.xml files, stores these in a simple sqlite3 database and finally creates a HTML dashboard that makes use of [Chart.js](https://www.chartjs.org/docs/latest/) and [Datatables](https://datatables.net/) for the graphs and tables and makes use of [Bootstrap](https://getbootstrap.com/) for styling. Additionally [GridStack](https://gridstackjs.com/) is used for the interactive layout grids.

## 🚀 Getting Started
### Installation
Install Robot Framework 6.0 or higher (if not already installed):
```bash
pip install robotframework
```
Install Robot Framework Dashboard:
```bash
pip install robotframework-dashboard
```
Install Robot Framework Dashboard with Server:
```bash
pip install robotframework-dashboard[server]
# or use
pip install robotframework-dashboard[all]
```
### Basic Usage
**Example 1 — Add a single output file and generate a dashboard:**
```bash
robotdashboard -o output.xml
```
This adds `output.xml` to the default database (`robot_results.db`) and generates a self-contained HTML dashboard file you can open directly in any browser.
**Example 2 — Add multiple output files with a custom database and dashboard name:**
```bash
robotdashboard -o output1.xml -o output2.xml -d my_results.db -n my_dashboard.html
```
This processes two output XML files, stores results in `my_results.db`, and writes the dashboard to `my_dashboard.html`.
For all available CLI options see the [Basic CLI docs](https://marketsquare.github.io/robotframework-dashboard/basic-command-line-interface-cli.html) and [Advanced CLI & Examples](https://marketsquare.github.io/robotframework-dashboard/advanced-cli-examples.html).
## 🔍 Key Features
- 🏃 **Multi-run Analysis** - Compare and track results across multiple Robot Framework test runs.
- 🌐 **Interactive HTML Dashboard** - Fully interactive dashboard using Chart.js, Datatables, and GridStack.
- 🗄️ **SQLite Database Storage** - Lightweight database for easy querying and persistent storage.
- 📄 **Dashboard Pages** - Overview, Dashboard, and Compare pages for multi-level insights.
- 🎛️ **Customizable Layouts** - Drag-and-drop sections with adjustable size and order.
- 📊 **Graph Customization** - Toggle legends, axis titles, labels, and control animations.
- 📈 **Custom Graphs** - Build your own graphs from a gallery of presets or from scratch: pick the data, filters, grouping, metric and chart type, and share them as JSON.
- 🗒️ **Test Notes** - Opt-in: add notes and your own categories to test results, for example a link to the bug, right from the graphs. Notes are kept in the browser and can be exported.
- 🔎 **Global Filters** - Filter runs by name, tags, date, metadata, or quantity (applied per project). Drag across the runs-over-time histogram to zoom into a period. Every filter option shows how many runs it still matches, and options that match none are greyed out.
- ⚖️ **Comparison Mode** - Compare up to 4 runs side by side with visual statistics.
- 🔗 **Automatic Log Linking** - Open Robot Framework logs directly from the dashboard.
- 🔁 **Rerun History** - Merged `--rerunfailed` outputs keep the status of every attempt per test.
- 🛠️ **Custom Database Classes** - Extend or replace the database processor for custom backends.
- 🖥️ **Server Mode** - Host your dashboard for multi-user access and automatic updates.
- 🎧 **Listener Integration** - Automatically updates dashboard after every test run.
- 📝 **Message Config Support** - Group similar test failures using regex-based patterns.
- 🚨 **Exception Tracking** - Track exception messages caught by TRY/EXCEPT blocks across runs, with a dedicated graph and table.
- ⚙️ **Configurable Defaults** - Preload dashboard settings via JSON for consistent appearance.
…and many more advanced features to help you visualize, analyze, and manage your Robot Framework test results with ease!
## 📖 Read the Docs
For detailed usage instructions, advanced examples, and full documentation, visit the [official robotdashboard docs](https://marketsquare.github.io/robotframework-dashboard/)!
### Quick Links
- 🚀 [**Getting Started**](https://marketsquare.github.io/robotframework-dashboard/getting-started.html) - Quick setup instructions to install Robot Framework and RobotFramework Dashboard, and verify it is working.
- 📦 [**Installation & Version Info**](https://marketsquare.github.io/robotframework-dashboard/installation-version-info.html) - Install the dashboard via pip, check Python and Robot Framework requirements, and view version information.
- 💻 [**Basic Command Line Interface (CLI)**](https://marketsquare.github.io/robotframework-dashboard/basic-command-line-interface-cli.html) - Manage your test results database, add output XML files, remove runs, and generate dashboards directly from the command line.
- ⚡ [**Advanced CLI & Examples**](https://marketsquare.github.io/robotframework-dashboard/advanced-cli-examples.html) - Advanced usage examples including combined commands, tagging strategies, aliases, batch imports, message configuration, and performance tips.
- 🗂️ [**Tabs / Pages**](https://marketsquare.github.io/robotframework-dashboard/tabs-pages.html) - Explore the dashboard's interactive pages including Overview, Dashboard, Compare, and detailed suite/test/keyword views.
- 📊 [**Graphs & Tables**](https://marketsquare.github.io/robotframework-dashboard/graphs-tables.html) - View and filter detailed statistics for runs, suites, tests, and keywords using charts, tables, and summary visualizations.
- 🔍 [**Filtering**](https://marketsquare.github.io/robotframework-dashboard/filtering.html) - Apply filters to analyze trends in your test data and highlight specific tags, amounts or datetime ranges.
- 🎨 [**Customization**](https://marketsquare.github.io/robotframework-dashboard/customization.html) - Customize dashboard sections, graph layouts, and visualizations to suit your workflow.
- 📈 [**Custom Graphs**](https://marketsquare.github.io/robotframework-dashboard/custom-graphs.html) - Build your own graphs on the dashboard data with filters, grouping, metrics and chart types, and share them as JSON.
- 📝 [**Notes**](https://marketsquare.github.io/robotframework-dashboard/notes.html) - Write down why a test failed, with a link to the bug and a category you define, and see which failures have no note yet.
- ⚙️ [**Settings**](https://marketsquare.github.io/robotframework-dashboard/settings.html) - Configure dashboard preferences including themes, default views, graph options, and save your settings for consistent team-wide use.
- 📐 [**Architecture**](https://marketsquare.github.io/robotframework-dashboard/architecture.html) - See how robotdashboard is structured internally, from CLI invocation to a rendered dashboard, in both Regular Mode and Server Mode.
- 🖥️ [**Dashboard Server**](https://marketsquare.github.io/robotframework-dashboard/dashboard-server.html) - Host the dashboard for multi-user access, programmatic updates, and remote server integration.
- 🗄️ [**Custom Database Class**](https://marketsquare.github.io/robotframework-dashboard/custom-database-class.html) - Extend or replace the default database backend to suit your storage needs, including SQLite, MySQL, or custom implementations.
- 🔔 [**Listener Integration**](https://marketsquare.github.io/robotframework-dashboard/listener-integration.html) - Use a listener to automatically push test results to the dashboard for every executed run, integrating seamlessly into CI/CD pipelines.
- 📂 [**Log Linking**](https://marketsquare.github.io/robotframework-dashboard/log-linking.html) - Enable clickable log navigation from dashboard graphs, covering file naming conventions, local and server usage, and remote log uploads.
- 🔁 [**Reruns**](https://marketsquare.github.io/robotframework-dashboard/reruns.html) - Feed merged `--rerunfailed` outputs to the dashboard and see the attempt history of every re-executed test.
- 📈 [**Performance**](https://marketsquare.github.io/robotframework-dashboard/performance.html) - Performance results across different workload sizes, guidance on scaling to hundreds of runs, and tips for large result sets.
## 📈 Performance
robotframework-dashboard is designed to stay fast even as your result set grows. Key characteristics:
- **XML processing** scales linearly with file size — the `robot.api` parser is the bottleneck, not the dashboard code itself. Typical runs process in **under 1 second each**.
- **Dashboard generation** is nearly always **under 1 second** regardless of scale — data is already aggregated in the database, so re-generating HTML after adding new runs is essentially free.
- **Incremental processing** — output files already in the database are automatically skipped, so you can safely re-run against a folder of XMLs without re-processing old results.
- **HTML size** stays modest (~500 KB–1 MB for typical workloads) thanks to zlib compression of the embedded data.
- **Dashboard rendering** (Chart.js in the browser) depends on how many runs are displayed. The default limit is **20 runs per project** (near-instant). Raising it to **50 runs** takes a few seconds as Chart.js renders all graphs. At **100+ runs**, initial rendering can approach **~10 seconds or more!**. This is also affected by your suite and test size — selecting **"All Suites"** or **"All Tests"** in their respective sections amplifies render time significantly, since each unique name becomes a separate data series. Use the quantity filter to keep the displayed run count manageable.
For detailed results and scaling guidance, see the [Performance docs](https://marketsquare.github.io/robotframework-dashboard/performance.html).
## 🛠️ Contributions
Contributions are welcome! If you encounter any issues, have suggestions for improvements, or would like to add new features, feel free to open an issue or submit a pull request. Additional information can be found here in [Contributing](./CONTRIBUTING.md)
Special thanks to the following companies for sponsoring in one form or another!
- [TestCoders](https://testcoders.nl)
- [TDT](https://tdt.de/)
And many thanks to the following people for contributing to the project with feedback, features or just general guidance!
- [Mark Moberts](https://github.com/MobyNL) maintainer of the [robotframework-mitmlibrary](https://github.com/MobyNL/robotframework-mitmlibrary) and [Awesome Robot Framework](https://github.com/marketsquare/awesome-robotframework)
- [Jurgen Alebregtse](https://github.com/alebr001) maintainer of [robotframework-realtimeresults](https://github.com/alebr001/robotframework-realtimeresults)
- [Elias Haberl](https://github.com/HuntTheSun)
- [Pekka Klarck](https://github.com/pekkaklarck) maintainer of [Robot Framework](https://github.com/robotframework/robotframework)
- [Daniel Biehl](https://github.com/d-biehl) maintainer of the [RobotCode Plugin](https://github.com/robotcodedev/robotcode)
- [Christian Zahl](https://github.com/poWer4aiX)
## 📋 License
This project is licensed under the MIT License.
> **Note:** This project is not officially affiliated with or endorsed by Robot Framework.
## 🎬 RoboCon Talk
See also my 2025 [RoboCon](https://robocon.io) talk, where I explain robotdashboard and its use cases. Note that the UI has improved significantly since then.
[](https://www.youtube.com/watch?v=olf1_pd9YfM)