Config File

reshot.config.json is the capture contract that marketing pages and CI workflows should both point to. It is JSON, not YAML.

Minimal starter config

JSON
{
  "baseUrl": "http://localhost:3000",
  "scenarios": [
    {
      "name": "billing-overview",
      "steps": [
        { "action": "goto", "url": "/app/billing" },
        { "action": "capture", "key": "billing-overview" }
      ]
    }
  ]
}

Expanded structure

JSON
{
  "baseUrl": "http://localhost:3000",
  "assetDir": ".reshot/output",
  "concurrency": 2,
  "timeout": 45000,
  "headless": true,
  "viewport": {
    "width": 1280,
    "height": 720
  },
  "scenarios": [],
  "variants": {}
}

Common top-level fields

PropertyTypeDescription
baseUrlstringBase URL for the target app
assetDirstringLocal output directory
concurrencynumberParallel browser workers
timeoutnumberScenario timeout in milliseconds
headlessbooleanHeadless browser mode
viewportobjectDefault viewport
scenariosarrayCapture scenarios
variantsobjectVariant matrix definitions

Certified target block

Use the target block when the app should pass release-grade certification:

JSON
{
  "target": {
    "key": "trueclara-docs",
    "displayName": "TrueClara Docs Workflows",
    "tier": "certified",
    "owner": "TrueClara",
    "baseUrl": "http://127.0.0.1:3030",
    "captureSafe": true,
    "supportedLocalCommand": "npm run build && RESHOT_CAPTURE=1 next start -p 3030",
    "defaultAuthMode": "fixture",
    "fixture": {
      "command": "node scripts/docs-screenshot-pipeline.mjs prepare --base-url=http://127.0.0.1:3030",
      "healthUrl": "/api/health/live"
    },
    "requiredEnv": ["SUPABASE_DB_URL"],
    "certificationScenarioKeys": ["owner-workbench", "owner-report"]
  }
}

Use target.supportedLocalCommand when the launch-supported local server is more specific than a generic npm run build && npm run start. reshot setup prints this command directly for certified targets.

See Certified Targets for the full contract and onboarding path.

Storage configuration

JSON
{
  "storage": {
    "type": "reshot"
  }
}

Output configuration

JSON
{
  "output": {
    "primaryFormat": "gif",
    "staticFormat": "png",
    "gif": {
      "loop": true,
      "fps": 15,
      "quality": "high",
      "maxDuration": 10000
    }
  }
}

Next read

Continue to Scenarios & Steps for the shape of each scenario entry.

Config File — Reshot Docs | Reshot