Documentation

Quick Start Guide

Dom-shot captures screenshots of your dashboards on a schedule and delivers them to a folder, an Azure DevOps wiki page, or a digest email. This guide takes you from download to your first automated capture.

On this page
  1. Install
  2. First-time setup — log in once
  3. Configure your dashboards
  4. Finding a good selector
  5. Timing knobs
  6. Where the screenshots go
  7. Schedule it
  8. When a capture fails

1.Install

  1. Download the release ZIP and extract it to any folder.
  2. (Optional) Drop your domshot.license file into the extracted folder.
  3. Double-click Install.cmd.

The installer puts the app in %LOCALAPPDATA%\DashboardCapture, creates appsettings.json from the template on first install, and keeps your existing configuration when you upgrade — re-running Install.cmd from a newer release never overwrites your settings.

If you skipped the license step, place domshot.license next to the installed DashboardCapture.exe in %LOCALAPPDATA%\DashboardCapture.

2.First-time setup — log in once

Double-click the Dashboard Capture Setup shortcut on your desktop. It opens a real browser window using Dom-shot's own browser profile:

Sessions persist in the profile. Re-run the shortcut whenever a session expires or a dashboard starts showing a login page in the captures.

3.Configure your dashboards

Edit %LOCALAPPDATA%\DashboardCapture\appsettings.json. It starts with a single EDIT-ME placeholder dashboard — replace its URL and selector with real ones, then add more dashboards by copying the block. For each dashboard you need two things: the URL and a selector for each element to capture. A dashboard behind company SSO looks like this:

{
  "Name": "Sales dashboard",
  "Url": "https://yourinstance.example.com/dashboard",
  "Login": { "Enabled": true, "ManualLogin": false, "LoginPageUrlContains": "login.microsoftonline.com" },
  "WaitForSelector": null,
  "Captures": [
    {
      "Name": "Revenue Chart",
      "CaptureMode": "Element",
      "ElementSelector": ".widget-card:has-text(\"Revenue this month\")",
      "WaitForSelector": null,
      "PostRenderDelayMs": null,
      "Output": { "Directory": "Dashboards\\Sales", "FileName": "Revenue.png", "Overwrite": true }
    }
  ]
}

4.Finding a good selector

Open the dashboard in Edge/Chrome, press F12, click the element-picker (arrow icon), and click the widget you want. That shows you the element's tag, id, and classes — build a selector from them.

ElementSelector accepts the full Playwright selector syntax, not only CSS:

SelectorExampleUse when
CSS #revenue-chart, .widget-card.sales The element has a stable id or class
CSS + :has-text() .widget-card:has-text("Revenue this month") Recommended. Ids look random/generated — target the widget by its visible title instead
Text text=Revenue this month Quick tests; prefer the anchored form above for captures
XPath xpath=//div[@data-widget="revenue"] Rare cases CSS can't express

Tips that keep selectors working for years:

5.Timing knobs (when a chart captures half-drawn)

SymptomFix
Whole page still loadingDashboard-level WaitForSelector
Widgets globally slow to appearRaise Playwright.PostLoadDelayMs
Chart container found but drawn emptyCapture-level WaitForSelector pointing at something inside the rendered chart (an <svg>, a legend)
Chart animates after appearingPostRenderDelayMs (e.g. 1500)

6.Where the screenshots go

OutputStorage.Type in appsettings.json:

7.Schedule it

Follow SCHEDULE_TASK_INSTRUCTIONS.txt in the install folder to create a Windows Task Scheduler entry (for example daily at 07:00). Point the task at %LOCALAPPDATA%\DashboardCapture\DashboardCapture.exe — that path stays stable across upgrades, so the task keeps working when you install new versions.

8.When a capture fails

Stuck on something?

Email support@techdevbaltic.lv — include the log file and any failure screenshot and we'll sort it out.