JSON report#

A JSON report of a test session can be generated after the session has completed:

$ canary run ./basic
...
$ canary report json create
$ cat canary.json
{
  "260b4b0773c4c51715b333cae63de326ae355fcfcbde5111f27aa838eda108e55e7de20da30a773b9c73ccf50e1f748055252e48cbcd934bbbe61e4e50f12915": {
    "status": {
      "state": "COMPLETE",
      "category": "PASS",
      "status": "SUCCESS",
      "reason": "",
      "code": 0
    },
    "spec": {
      "file_root": "/home/docs/checkouts/readthedocs.org/user_builds/canary-wm/checkouts/release-26.4.16/src/canary/examples/basic",
      "file_path": "first/first.pyt",
      "family": "first",
      "stdout": "canary-out.txt",
      "stderr": null,
      "dependencies": [],
      "dep_done_criteria": [],
      "parameters": {},
      "attributes": {},
      "keywords": [
        "basic"
      ],
      "assets": [],
      "baseline": [],
      "artifacts": [],
      "exclusive": false,
      "timeout": 300.0,
      "xstatus": 0,
      "preload": null,
      "modules": [],
      "rcfiles": [],
      "owners": [],
      "environment": {},
      "environment_modifications": [],
      "meta_parameters": {
        "runtime": 300.0
      },
      "command": [
        "/home/docs/checkouts/readthedocs.org/user_builds/canary-wm/envs/release-26.4.16/bin/python",
        "first.pyt"
      ],
      "id": "260b4b0773c4c51715b333cae63de326ae355fcfcbde5111f27aa838eda108e55e7de20da30a773b9c73ccf50e1f748055252e48cbcd934bbbe61e4e50f12915",
      "mask": {
        "value": false,
        "reason": null
      },
      "name": "first"
    },
    "timekeeper": {
      "submitted": 1776785688.8487184,
      "started": 1776785688.8516626,
      "finished": 1776785689.059613
    },
    "measurements": {},
    "workspace": {
      "root": "/home/docs/checkouts/readthedocs.org/user_builds/canary-wm/checkouts/release-26.4.16/src/canary/examples/.canary/sessions/2026-04-21T15-34-48.590864",
      "path": "first/first",
      "session": "2026-04-21T15-34-48.590864"
    },
    "variables": {
      "PYTHONPATH": "/home/docs/checkouts/readthedocs.org/user_builds/canary-wm/checkouts/release-26.4.16/src/canary/examples/.canary/sessions/2026-04-21T15-34-48.590864/first/first:",
      "PATH": "/home/docs/checkouts/readthedocs.org/user_builds/canary-wm/checkouts/release-26.4.16/src/canary/examples/.canary/sessions/2026-04-21T15-34-48.590864/first/first:/home/docs/checkouts/readthedocs.org/user_builds/canary-wm/envs/release-26.4.16/bin:/home/docs/.asdf/shims:/home/docs/.asdf/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
    },
    "resources": {},
    "stdout": "canary-out.txt",
    "stderr": null,
    "runtime": 0.20795035362243652,
    "dependencies": [],
    "rparameters": {
      "cpus": 1,
      "gpus": 0,
      "nodes": 1
    }
  },
  "57a97754bdbb26e1015a497926998c164444e86a9b03e2624d1f906cb1efe077585f29b26b3e09a5786fd29605551e52fba7d5c3e020e63efa9400e104b72c34": {
    "status": {
      "state": "COMPLETE",
      "category": "PASS",
      "status": "SUCCESS",
      "reason": "",
      "code": 0
    },
    "spec": {
      "file_root": "/home/docs/checkouts/readthedocs.org/user_builds/canary-wm/checkouts/release-26.4.16/src/canary/examples/basic",
      "file_path": "second/second.pyt",
      "family": "second",
      "stdout": "canary-out.txt",
      "stderr": null,
      "dependencies": [],
      "dep_done_criteria": [],
      "parameters": {},
      "attributes": {},
      "keywords": [
        "basic",
        "second"
      ],
      "assets": [
        {
          "src": "/home/docs/checkouts/readthedocs.org/user_builds/canary-wm/checkouts/release-26.4.16/src/canary/examples/basic/second/add.py",
          "dst": "add.py",
          "action": "link"
        }
      ],
      "baseline": [],
      "artifacts": [],
      "exclusive": false,
      "timeout": 300.0,
      "xstatus": 0,
      "preload": null,
      "modules": [],
      "rcfiles": [],
      "owners": [],
      "environment": {},
      "environment_modifications": [],
      "meta_parameters": {
        "runtime": 300.0
      },
      "command": [
        "/home/docs/checkouts/readthedocs.org/user_builds/canary-wm/envs/release-26.4.16/bin/python",
        "second.pyt"
      ],
      "id": "57a97754bdbb26e1015a497926998c164444e86a9b03e2624d1f906cb1efe077585f29b26b3e09a5786fd29605551e52fba7d5c3e020e63efa9400e104b72c34",
      "mask": {
        "value": false,
        "reason": null
      },
      "name": "second"
    },
    "timekeeper": {
      "submitted": 1776785688.8503196,
      "started": 1776785688.8533857,
      "finished": 1776785689.160089
    },
    "measurements": {},
    "workspace": {
      "root": "/home/docs/checkouts/readthedocs.org/user_builds/canary-wm/checkouts/release-26.4.16/src/canary/examples/.canary/sessions/2026-04-21T15-34-48.590864",
      "path": "second/second",
      "session": "2026-04-21T15-34-48.590864"
    },
    "variables": {
      "PYTHONPATH": "/home/docs/checkouts/readthedocs.org/user_builds/canary-wm/checkouts/release-26.4.16/src/canary/examples/.canary/sessions/2026-04-21T15-34-48.590864/second/second:",
      "PATH": "/home/docs/checkouts/readthedocs.org/user_builds/canary-wm/checkouts/release-26.4.16/src/canary/examples/.canary/sessions/2026-04-21T15-34-48.590864/second/second:/home/docs/checkouts/readthedocs.org/user_builds/canary-wm/envs/release-26.4.16/bin:/home/docs/.asdf/shims:/home/docs/.asdf/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
    },
    "resources": {},
    "stdout": "canary-out.txt",
    "stderr": null,
    "runtime": 0.3067033290863037,
    "dependencies": [],
    "rparameters": {
      "cpus": 1,
      "gpus": 0,
      "nodes": 1
    }
  }
}