QANode Logo

Dashboard

The Dashboard provides a consolidated view of your test status through configurable widgets — metric cards, charts, and tables.


Overview

Image: Dashboard with multiple widgets: metric cards, bar chart, and table


Multiple Dashboards

QANode supports multiple dashboards with different visibility settings:

TypeVisibilityDescription
PrivateCreator onlyPersonal dashboard
PublicAll usersShared dashboard
By RoleUsers with specific rolesTeam/role dashboard
SystemAll users (read-only)QANode default dashboards


Widgets

Widget Types

TypeDescriptionTypical Use
Metric CardSingle numeric value with conditional formattingTotal executions, success rate
GaugeSemicircular indicator with minimum, maximum, and current valueSuccess rate, SLA, progress
Bar ChartVertical bars with one or more seriesExecutions per day, failures per project
Stacked BarsVertical bars with multiple stacked seriesCumulative comparison between categories
Horizontal BarsHorizontal bars with one or more seriesRankings, categorical comparisons
Line ChartTrend linesSuccess rate evolution
Stacked LineMultiple lines with accumulated seriesEvolution by status or team
Area ChartFilled areaCumulative executions
Stacked AreaAreas accumulated by seriesVolume by status over time
Pie ChartProportional distributionSuccess/failure ratio
DonutProportional distribution with a free center for totalsStatus distribution with central value
FunnelFunnel-shaped process stagesConversion, quality, or process stages
Calendar HeatmapDaily intensity in a calendar viewFailures per day, runs per day
ScatterPoints mapped by X/Y axesDuration by number of steps
BubbleScatter chart with variable point sizeDuration, steps, and severity
TableTabular dataList of recent executions

Creating a Widget

The widget creation wizard has 3 steps:

Step 1: Data Source

Define where the data will come from:

Query Builder (Recommended):

FieldDescription
TableData table (runs, projects, flows, etc.)
ColumnsFields to select
FiltersConditions (equal to, contains, greater than, etc.)
GroupingGroup by field (with date formatting)
AggregationCOUNT, SUM, AVG, MIN, MAX
SortingField and direction (ASC/DESC)
PivotCreate multiple series from a field
LimitMaximum number of records (up to 1000)

Filter Logic: Combine multiple filters using AND or OR operators.

Date Formatting in Grouping:

FormatResult
Date Only2024-01-15
Time Only14:30
Date and Time2024-01-15 14:30
Month/Year2024-01
Year2024

Direct SQL:

For more complex queries, use SQL mode with the Monaco editor. Prefer Query Builder for simple widgets and use SQL when you need CTEs, joins, conditional aggregations, or calculations that would be hard to express in the builder:

SELECT
  DATE("startedAt") AS day,
  status,
  COUNT(*)::int AS total
FROM "Run"
WHERE "isSandbox" = false
  AND "startedAt" >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY day, status
ORDER BY day;

SQL mode requires the dashboard.sql permission.

SQL also supports CTEs (Common Table Expressions) with the WITH clause. Queries that modify data (INSERT, UPDATE, DELETE, DROP, etc.) remain blocked.

Step 2: Visualization

Choose the chart type and map the fields:

SettingDescription
Chart TypeMetric, Gauge, Bar, Stacked Bar, Horizontal Bar, Line, Area, Pie, Donut, Funnel, Heatmap, Scatter, Bubble, or Table
X AxisField for the horizontal axis
Y AxisField for the vertical axis (numeric value)
SeriesField for multiple series (when using pivot)
LabelLabel field, used by pie, donut, funnel, scatter, bubble, and tables
SizeNumeric field used by Bubble
LegendShow/hide legend
TooltipShow values on mouse hover

Step 3: Appearance

SettingDescription
TitleName displayed on the widget
ColorsCustom colors per series/category
Conditional FormattingColor rules based on values
Progress ColumnsDisplays numeric table columns as progress bars
Threshold / TargetVisual references for gauges and indicators

Conditional Formatting (for cards and tables):

OperatorExample
>If value > 90 → green
<If value < 50 → red
=If value = "failed" → red
containsIf contains "error" → yellow

Tables With Progress

In table widgets, numeric columns can be shown as progress bars. This is useful for tracking:

  • project progress;
  • success percentage;
  • scenario coverage;
  • SLA consumption;
  • pipeline progress.

Each progress column can have its own color and minimum/maximum values. Text fields, IDs, and dates are not recommended for progress.

Conditional Formatting In Tables

Conditional formatting rules let you highlight rows or cells based on values returned by the query.

Examples:

RuleResult
status = failedRed row
success_rate < 80Attention indicator
failures > 0Highlight scenarios with failures

Use conditional formatting to draw attention to issues, but avoid applying too many colors at the same time.


Dashboard Layout

The dashboard uses a responsive 12-column grid:

PropertyDescription
Width1 to 12 columns
Height1 to 10 rows
X PositionStarting column (0-11)
Y PositionStarting row

Rearranging Widgets

  • Drag a widget to reposition it
  • Resize by dragging the bottom-right corner
  • The grid adjusts automatically to prevent overlaps
  • Default widget sizes are optimized by type: metrics are smaller, while charts and tables start larger.

Widget Examples

Card: Success Rate

Table: runs
Aggregation: COUNT(*)
Filter: status = "success" AND started_at >= today - 30 days

Bar Chart: Executions per Day

Table: runs
Grouping: started_at (date only)
Aggregation: COUNT(*)
Pivot: status
Type: Bar

Result: Stacked bars with different colors for success/failure per day.

Table: Latest Failures

Table: runs
Filter: status = "failed"
Columns: flow name, date, duration, error
Sorting: started_at DESC
Limit: 10

Auto-Refresh

Widgets can be configured to refresh automatically at defined intervals, keeping data always up to date.


Tips

  • Start simple — a metric card with total executions + a daily bar chart
  • Use conditional formatting to highlight issues (rate below 80% = red)
  • Team dashboards — create dashboards with role-based visibility
  • Use pivot mode to create charts with multiple series without SQL
  • Limit your data — large queries can impact performance