Skip to content

Dashboard Server ​

RobotFramework Dashboard includes a built-in server that lets you host the dashboard on a separate machine. This allows you to centrally serve the HTML dashboard, and remotely add, list, or remove test result outputs from other clients. The server is built using FastAPI, FastAPI-offline and Uvicorn, and comes with a set of Pydantic models to validate request payloads.

Tip: The server is not installed by default see Installation & Version Info for more info!

Why Use the Dashboard Server ​

  • Host a centralized, always-available dashboard accessible via HTTP
  • Enable remote clients to push or delete runs in your database
  • Provide a web-based admin interface for manual management
  • Secure access via optional basic authentication (username/password)
  • The server automatically uses offline CDN (js/css) because FastAPI-offline is used, making it compatible with --offlinedependencies for full offline usage!

Tip: To implement your server into your test runs look at the example listener integration!

Starting the Server ​

You can start the server using the robotdashboard CLI with the --server (or -s) option:

Basic usage

bash
robotdashboard --s  
robotdashboard --server  
robotdashboard --server default

Bind to a specific host / port

bash
robotdashboard -s 127.0.0.1:8543

Enable authentication for the admin page

bash
robotdashboard -s default:user:password

Or with a custom host and port plus authentication:

bash
robotdashboard -s host:port:user:password

Once the server is running, open your browser at the configured address (for example, http://127.0.0.1:8543/) to access:

  • The admin page (for manual control), this page lives on /admin: http://127.0.0.1:8543/admin
    • On the admin page a menu option Swagger API Docs is available to open the swagger openapi documentation
    • On the admin page a menu option Redoc API Docs is available to open the redoc openapi documentation
    • On the admin page a menu option Dashboard is available to open the dashboard
  • The dashboard HTML , this page lives on the root url: http://127.0.0.1:8543/
    • On the dashboard page a menu option Admin is available to open the admin page
  • The Swagger API documentation, this page lives on /docs: http://127.0.0.1:8543/docs
  • The Redoc API documentation, this page lives on /redoc: http://127.0.0.1:8543/redoc

Server Features & Endpoints ​

The built-in server exposes several HTTP endpoints to manage and serve dashboard data:

EndpointPurpose
/Serves the HTML dashboard (reflects current database), not callable through scripts
/adminAdmin page for manual management of runs and logs, not callable through scripts
/get-outputsReturns a JSON list of stored runs (run_start, alias, tags), callable
/add-outputsAccepts new output data via JSON (file path, raw XML or folder), callable
/add-output-fileAccepts new output data via file input, callable
/remove-outputsDeletes runs by index, alias, run_start, tags, limit or 'all=true' for all outputs. Automatically deletes the associated log file from robot_logs/ if one exists, callable
/get-logsReturns a JSON list of stored logs on the server (log_name), callable
/add-logUpload HTML a log file and associate them with runs (for Log Linking), callable
/add-log-fileUpload a HTML log file (for Log Linking), callable
/remove-logRemove previously uploaded log files or provide 'all=true' for all logs, callable
/refresh-dashboardManually trigger regeneration of the dashboard HTML. Only needed when --noautoupdate is active, callable

All API endpoints are documented and described in the server’s own OpenAPI schema, accessible via the admin interface under “Swagger API Docs” or "Redoc API Docs", after starting the server.

Security: Basic Auth (Optional) ​

If you start the server with a username and password, the admin page will be protected. Only someone providing the correct credentials can:

  • Add or remove outputs manually
  • Add or remove logs manually

The dashboard itself (the HTML) does not require authentication. API calls as of now do also not require authentication.

Working Programmatically with the Server ​

You can interact with the server programmatically using HTTP, Python, or Robot Framework. There are example scripts in the example/server folder:

These scripts demonstrate how to:

  • List existing outputs
  • Add a new output.xml by path
  • Remove runs by index, alias, or timestamp

Tip: to implement your server into your test runs look at the example listener integration!

Admin Page ​

The admin page (/admin) provides a web-based interface for managing the dashboard without writing code. It includes sections for adding and removing outputs, managing log files, and viewing the current database contents.

Adding Outputs ​

The admin page supports four methods for adding test results:

MethodDescription
By Absolute PathProvide the full path to an output.xml on the server filesystem. Optionally add run tags and a version label.
By XML DataPaste raw output.xml content directly into a text area. Supports run tags, alias, and version label.
By Folder PathProvide a folder path; the server recursively scans for *output*.xml files. Supports run tags and version label.
By File UploadUpload an output.xml file directly. Supports run tags and version label. Gzip-compressed files (.gz/.gzip) are automatically decompressed.

Removing Outputs ​

MethodDescription
By Run StartComma-separated run_start timestamps (e.g., 2024-07-30 15:27:20.184407).
By IndexSupports single values, colon-separated ranges, and semicolon-separated lists (e.g., 1:3;9;13).
By AliasComma-separated alias names.
By TagComma-separated tags — removes all runs matching any of the specified tags.
By LimitKeep only the N most recent runs; all older runs are deleted.
Remove AllIrreversibly deletes all runs from the database.

Note: When a run is removed, the server automatically checks whether a corresponding log file exists in the robot_logs/ folder (derived by replacing output → log and .xml → .html in the stored path). If found, it is deleted alongside the run. The console response will confirm whether a log was removed or note that none was found.

Managing Logs ​

ActionDescription
Add Log (Data)Paste log.html content and provide a log name.
Add Log (File Upload)Upload a log.html file. Gzip-compressed files are automatically decompressed.
Remove Log by NameRemove a specific log file (e.g., log-20250219-172535.html).
Remove All LogsIrreversibly deletes all uploaded log files.

Database & Log Tables ​

The admin page displays two tables:

  • Runs in Database — all runs currently stored, with run_start, name, alias, and tags
  • Logs on Server — all log files in the robot_logs/ directory

The admin page menu includes links to:

  • Swagger API Docs — interactive OpenAPI documentation
  • Redoc API Docs — alternative API documentation
  • Dashboard — the main dashboard view

A confirmation modal is shown before any destructive action (removing outputs or logs).

Additional Server Endpoints ​

Beyond the main API endpoints listed above, the server exposes two additional routes:

EndpointPurpose
GET /log?path=<path>Serves a stored log.html file by its path. Used internally by log linking to render uploaded logs in the browser.
GET /{full_path:path}Catch-all route that serves static resources (screenshots, images, etc.) relative to the last opened log directory. This allows embedded screenshots in log files to display correctly.

Gzip Upload Support ​

Both /add-output-file and /add-log-file endpoints support gzip-compressed uploads. If the uploaded filename ends with .gz or .gzip, the server automatically decompresses the file before processing. This is used by the listener integration to reduce upload bandwidth.

Manual Refresh Mode (--noautoupdate) ​

By default, every upload and delete operation via the server API automatically regenerates the dashboard HTML. This involves querying all data from the database, which can be slow when using large datasets or custom database implementations.

The --noautoupdate flag disables this automatic regeneration:

bash
robotdashboard --server --noautoupdate

When active:

  • API calls (/add-outputs, /add-output-file, /remove-outputs, /add-log, /add-log-file, /remove-log) return immediately after processing the data, without regenerating the dashboard.
  • A Refresh Dashboard button appears in the navbar of both the dashboard page and the admin page (hidden when --noautoupdate is not active):
    • On the dashboard page — sends a POST /refresh-dashboard request, shows a spinner while the server processes the request, and on success displays a notification and automatically reloads the page after 3 seconds to reflect the regenerated dashboard.
    • On the admin page — same POST /refresh-dashboard request and spinner behaviour, but the page is not reloaded; a success or error notification is shown instead.
  • A Refresh Admin Page Tables button also appears in the admin page navbar (hidden when --noautoupdate is not active) — reloads the runs and logs tables by querying /get-outputs and /get-logs from the server, without a full page reload. A spinner is shown briefly and a success notification confirms the refresh.

When to use this

Use --noautoupdate when:

  • Your database queries are slow (e.g., large datasets or remote databases).
  • You are uploading many outputs in quick succession and want uploads to return fast.
  • You prefer to control exactly when the dashboard is updated.