doc-detective 4.41.6 → 4.42.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/README.md +3 -4
  2. package/bin/doc-detective-lsp.js +2 -0
  3. package/dist/agents/adapters/claude-code.js +1 -1
  4. package/dist/agents/adapters/claude-code.js.map +1 -1
  5. package/dist/agents/adapters/copilot-cli.js +2 -2
  6. package/dist/agents/adapters/copilot-cli.js.map +1 -1
  7. package/dist/agents/adapters/gemini-cli.js +1 -1
  8. package/dist/agents/adapters/gemini-cli.js.map +1 -1
  9. package/dist/agents/adapters/qwen-code.js +1 -1
  10. package/dist/agents/adapters/qwen-code.js.map +1 -1
  11. package/dist/cli.js +27 -6
  12. package/dist/cli.js.map +1 -1
  13. package/dist/common/src/schemas/schemas.json +2 -2
  14. package/dist/common/src/schemas/schemasReferenced.json +448 -294
  15. package/dist/common/src/schemas/validators.cjs +140 -124
  16. package/dist/common/src/schemas/validatorsCheck.cjs +1 -1
  17. package/dist/common/src/types/generated/annotate_v3.d.ts +12 -12
  18. package/dist/common/src/types/generated/annotate_v3.d.ts.map +1 -1
  19. package/dist/common/src/types/generated/annotation_v3.d.ts +6 -6
  20. package/dist/common/src/types/generated/annotation_v3.d.ts.map +1 -1
  21. package/dist/common/src/types/generated/checkLink_v3.d.ts +4 -0
  22. package/dist/common/src/types/generated/checkLink_v3.d.ts.map +1 -1
  23. package/dist/common/src/types/generated/click_v3.d.ts +2 -2
  24. package/dist/common/src/types/generated/click_v3.d.ts.map +1 -1
  25. package/dist/common/src/types/generated/config_v3.d.ts +260 -108
  26. package/dist/common/src/types/generated/config_v3.d.ts.map +1 -1
  27. package/dist/common/src/types/generated/context_v3.d.ts +10 -2
  28. package/dist/common/src/types/generated/context_v3.d.ts.map +1 -1
  29. package/dist/common/src/types/generated/dragAndDrop_v3.d.ts +2 -2
  30. package/dist/common/src/types/generated/dragAndDrop_v3.d.ts.map +1 -1
  31. package/dist/common/src/types/generated/find_v3.d.ts +6 -6
  32. package/dist/common/src/types/generated/find_v3.d.ts.map +1 -1
  33. package/dist/common/src/types/generated/goTo_v3.d.ts +1 -1
  34. package/dist/common/src/types/generated/goTo_v3.d.ts.map +1 -1
  35. package/dist/common/src/types/generated/httpRequest_v3.d.ts +2 -2
  36. package/dist/common/src/types/generated/httpRequest_v3.d.ts.map +1 -1
  37. package/dist/common/src/types/generated/record_v3.d.ts +5 -5
  38. package/dist/common/src/types/generated/record_v3.d.ts.map +1 -1
  39. package/dist/common/src/types/generated/report_v3.d.ts +529 -207
  40. package/dist/common/src/types/generated/report_v3.d.ts.map +1 -1
  41. package/dist/common/src/types/generated/resolvedTests_v3.d.ts +754 -314
  42. package/dist/common/src/types/generated/resolvedTests_v3.d.ts.map +1 -1
  43. package/dist/common/src/types/generated/runCode_v3.d.ts +11 -2
  44. package/dist/common/src/types/generated/runCode_v3.d.ts.map +1 -1
  45. package/dist/common/src/types/generated/runShell_v3.d.ts +11 -2
  46. package/dist/common/src/types/generated/runShell_v3.d.ts.map +1 -1
  47. package/dist/common/src/types/generated/screenshot_v3.d.ts +12 -12
  48. package/dist/common/src/types/generated/screenshot_v3.d.ts.map +1 -1
  49. package/dist/common/src/types/generated/spec_v3.d.ts +494 -206
  50. package/dist/common/src/types/generated/spec_v3.d.ts.map +1 -1
  51. package/dist/common/src/types/generated/startSurface_v3.d.ts +24 -6
  52. package/dist/common/src/types/generated/startSurface_v3.d.ts.map +1 -1
  53. package/dist/common/src/types/generated/step_v3.d.ts +223 -100
  54. package/dist/common/src/types/generated/step_v3.d.ts.map +1 -1
  55. package/dist/common/src/types/generated/test_v3.d.ts +482 -202
  56. package/dist/common/src/types/generated/test_v3.d.ts.map +1 -1
  57. package/dist/common/src/types/generated/type_v3.d.ts +3 -3
  58. package/dist/common/src/types/generated/type_v3.d.ts.map +1 -1
  59. package/dist/common/src/types/generated/waitUntil_v3.d.ts +2 -2
  60. package/dist/common/src/types/generated/waitUntil_v3.d.ts.map +1 -1
  61. package/dist/common/src/types/generated/wait_v3.d.ts +2 -3
  62. package/dist/common/src/types/generated/wait_v3.d.ts.map +1 -1
  63. package/dist/core/config.d.ts.map +1 -1
  64. package/dist/core/config.js +6 -4
  65. package/dist/core/config.js.map +1 -1
  66. package/dist/core/files.d.ts +18 -3
  67. package/dist/core/files.d.ts.map +1 -1
  68. package/dist/core/files.js +58 -18
  69. package/dist/core/files.js.map +1 -1
  70. package/dist/core/index.d.ts.map +1 -1
  71. package/dist/core/index.js +16 -0
  72. package/dist/core/index.js.map +1 -1
  73. package/dist/core/integrations/index.d.ts +2 -1
  74. package/dist/core/integrations/index.d.ts.map +1 -1
  75. package/dist/core/integrations/index.js +15 -5
  76. package/dist/core/integrations/index.js.map +1 -1
  77. package/dist/core/openapi.d.ts.map +1 -1
  78. package/dist/core/openapi.js +122 -6
  79. package/dist/core/openapi.js.map +1 -1
  80. package/dist/core/ptyWatchdog.d.ts.map +1 -1
  81. package/dist/core/ptyWatchdog.js +6 -3
  82. package/dist/core/ptyWatchdog.js.map +1 -1
  83. package/dist/core/resolveTests.d.ts.map +1 -1
  84. package/dist/core/resolveTests.js +5 -3
  85. package/dist/core/resolveTests.js.map +1 -1
  86. package/dist/core/telem.d.ts.map +1 -1
  87. package/dist/core/telem.js +5 -7
  88. package/dist/core/telem.js.map +1 -1
  89. package/dist/core/tests/checkLink.d.ts.map +1 -1
  90. package/dist/core/tests/checkLink.js +12 -7
  91. package/dist/core/tests/checkLink.js.map +1 -1
  92. package/dist/core/tests/click.d.ts.map +1 -1
  93. package/dist/core/tests/click.js +7 -0
  94. package/dist/core/tests/click.js.map +1 -1
  95. package/dist/core/tests/findElement.d.ts.map +1 -1
  96. package/dist/core/tests/findElement.js +3 -2
  97. package/dist/core/tests/findElement.js.map +1 -1
  98. package/dist/core/tests/goTo.d.ts.map +1 -1
  99. package/dist/core/tests/goTo.js +2 -1
  100. package/dist/core/tests/goTo.js.map +1 -1
  101. package/dist/core/tests/httpRequest.d.ts.map +1 -1
  102. package/dist/core/tests/httpRequest.js +4 -5
  103. package/dist/core/tests/httpRequest.js.map +1 -1
  104. package/dist/core/tests/processSurface.d.ts +4 -1
  105. package/dist/core/tests/processSurface.d.ts.map +1 -1
  106. package/dist/core/tests/processSurface.js +3 -0
  107. package/dist/core/tests/processSurface.js.map +1 -1
  108. package/dist/core/tests/saveScreenshot.d.ts.map +1 -1
  109. package/dist/core/tests/saveScreenshot.js +8 -3
  110. package/dist/core/tests/saveScreenshot.js.map +1 -1
  111. package/dist/core/tests/startRecording.d.ts.map +1 -1
  112. package/dist/core/tests/startRecording.js +2 -1
  113. package/dist/core/tests/startRecording.js.map +1 -1
  114. package/dist/core/tests/stopRecording.d.ts.map +1 -1
  115. package/dist/core/tests/stopRecording.js +2 -1
  116. package/dist/core/tests/stopRecording.js.map +1 -1
  117. package/dist/core/tests/timing.d.ts +4 -0
  118. package/dist/core/tests/timing.d.ts.map +1 -0
  119. package/dist/core/tests/timing.js +8 -0
  120. package/dist/core/tests/timing.js.map +1 -0
  121. package/dist/core/tests.d.ts +15 -0
  122. package/dist/core/tests.d.ts.map +1 -1
  123. package/dist/core/tests.js +77 -30
  124. package/dist/core/tests.js.map +1 -1
  125. package/dist/core/utils.d.ts +42 -2
  126. package/dist/core/utils.d.ts.map +1 -1
  127. package/dist/core/utils.js +281 -89
  128. package/dist/core/utils.js.map +1 -1
  129. package/dist/debug/index.d.ts.map +1 -1
  130. package/dist/debug/index.js +8 -36
  131. package/dist/debug/index.js.map +1 -1
  132. package/dist/hints/hints.js +2 -2
  133. package/dist/hints/hints.js.map +1 -1
  134. package/dist/index.cjs +684 -235
  135. package/dist/reporters/htmlReporter.js +1 -1
  136. package/dist/runtime/cacheDir.d.ts.map +1 -1
  137. package/dist/runtime/cacheDir.js +6 -11
  138. package/dist/runtime/cacheDir.js.map +1 -1
  139. package/dist/runtime/heavyDeps.d.ts +12 -0
  140. package/dist/runtime/heavyDeps.d.ts.map +1 -1
  141. package/dist/runtime/heavyDeps.js +31 -7
  142. package/dist/runtime/heavyDeps.js.map +1 -1
  143. package/dist/runtime/selfUpdate.d.ts +3 -3
  144. package/dist/runtime/selfUpdate.d.ts.map +1 -1
  145. package/dist/runtime/selfUpdate.js +34 -5
  146. package/dist/runtime/selfUpdate.js.map +1 -1
  147. package/dist/upgradeNotice.d.ts +41 -0
  148. package/dist/upgradeNotice.d.ts.map +1 -0
  149. package/dist/upgradeNotice.js +356 -0
  150. package/dist/upgradeNotice.js.map +1 -0
  151. package/dist/utils.d.ts.map +1 -1
  152. package/dist/utils.js +17 -8
  153. package/dist/utils.js.map +1 -1
  154. package/package.json +2 -2
  155. package/scripts/postinstall.js +1 -1
@@ -62,6 +62,10 @@ export type Test = ({
62
62
  } | {
63
63
  [k: string]: unknown;
64
64
  }) & {
65
+ /**
66
+ * JSON Schema URL for editor support. Doc Detective ignores it.
67
+ */
68
+ $schema?: string;
65
69
  /**
66
70
  * Unique identifier for the test.
67
71
  */
@@ -680,7 +684,7 @@ export type Condition17 = string | [string, ...string[]];
680
684
  /**
681
685
  * Click or tap an element.
682
686
  */
683
- export type Click1 = ClickElementSimple | ClickElementDetailed | boolean;
687
+ export type Click1 = (true | false) | ClickElementSimple | ClickElementDetailed;
684
688
  /**
685
689
  * Identifier for the element to click. Can be a selector, element text, ARIA name, ID, or test ID.
686
690
  */
@@ -736,7 +740,7 @@ export type ClickElementDetailed = ({
736
740
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
737
741
  */
738
742
  elementAttribute?: {
739
- [k: string]: string | number | boolean;
743
+ [k: string]: boolean | number | string;
740
744
  };
741
745
  /**
742
746
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -991,7 +995,7 @@ export type FindElementDetailed = ({
991
995
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
992
996
  */
993
997
  elementAttribute?: {
994
- [k: string]: string | number | boolean;
998
+ [k: string]: boolean | number | string;
995
999
  };
996
1000
  /**
997
1001
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -1057,7 +1061,7 @@ export type ByName5 = string;
1057
1061
  /**
1058
1062
  * Click or tap an element.
1059
1063
  */
1060
- export type Click2 = ClickElementSimple1 | ClickElementDetailed1 | boolean;
1064
+ export type Click2 = (true | false) | ClickElementSimple1 | ClickElementDetailed1;
1061
1065
  /**
1062
1066
  * Identifier for the element to click. Can be a selector, element text, ARIA name, ID, or test ID.
1063
1067
  */
@@ -1113,7 +1117,7 @@ export type ClickElementDetailed1 = ({
1113
1117
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
1114
1118
  */
1115
1119
  elementAttribute?: {
1116
- [k: string]: string | number | boolean;
1120
+ [k: string]: boolean | number | string;
1117
1121
  };
1118
1122
  /**
1119
1123
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -1208,7 +1212,7 @@ export type TypeKeysDetailed = {
1208
1212
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
1209
1213
  */
1210
1214
  elementAttribute?: {
1211
- [k: string]: string | number | boolean;
1215
+ [k: string]: boolean | number | string;
1212
1216
  };
1213
1217
  /**
1214
1218
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -1305,7 +1309,7 @@ export type ElementCriteria = ({
1305
1309
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
1306
1310
  */
1307
1311
  elementAttribute?: {
1308
- [k: string]: string | number | boolean;
1312
+ [k: string]: boolean | number | string;
1309
1313
  };
1310
1314
  /**
1311
1315
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -1354,7 +1358,7 @@ export type ElementCriteria1 = ({
1354
1358
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
1355
1359
  */
1356
1360
  elementAttribute?: {
1357
- [k: string]: string | number | boolean;
1361
+ [k: string]: boolean | number | string;
1358
1362
  };
1359
1363
  /**
1360
1364
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -1624,7 +1628,7 @@ export type GoToURLDetailed = {
1624
1628
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
1625
1629
  */
1626
1630
  elementAttribute?: {
1627
- [k: string]: string | number | boolean;
1631
+ [k: string]: boolean | number | string;
1628
1632
  };
1629
1633
  /**
1630
1634
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -1833,9 +1837,9 @@ export type HTTPRequestDetailed = ({
1833
1837
  url?: HTTPRequestSimple1;
1834
1838
  openApi?: (string & OperationID) | (OpenApi2 & OpenAPIDefinitionHttpRequest);
1835
1839
  /**
1836
- * Accepted status codes. If the specified URL returns a code other than what is specified here, the action fails.
1840
+ * Accepted status codes. If the specified URL returns a code other than what is specified here, the action fails. A single integer is treated as a one-item list.
1837
1841
  */
1838
- statusCodes?: number[];
1842
+ statusCodes?: number | number[];
1839
1843
  /**
1840
1844
  * Method of the HTTP request
1841
1845
  */
@@ -2659,7 +2663,7 @@ export type TypeKeysDetailed1 = {
2659
2663
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
2660
2664
  */
2661
2665
  elementAttribute?: {
2662
- [k: string]: string | number | boolean;
2666
+ [k: string]: boolean | number | string;
2663
2667
  };
2664
2668
  /**
2665
2669
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -2756,7 +2760,7 @@ export type ElementCriteria2 = ({
2756
2760
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
2757
2761
  */
2758
2762
  elementAttribute?: {
2759
- [k: string]: string | number | boolean;
2763
+ [k: string]: boolean | number | string;
2760
2764
  };
2761
2765
  /**
2762
2766
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -2805,7 +2809,7 @@ export type ElementCriteria3 = ({
2805
2809
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
2806
2810
  */
2807
2811
  elementAttribute?: {
2808
- [k: string]: string | number | boolean;
2812
+ [k: string]: boolean | number | string;
2809
2813
  };
2810
2814
  /**
2811
2815
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -2971,7 +2975,11 @@ export type Condition65 = string | [string, ...string[]];
2971
2975
  /**
2972
2976
  * Takes a screenshot in PNG format.
2973
2977
  */
2974
- export type Screenshot1 = ScreenshotSimple | CaptureScreenshotDetailed | CaptureScreenshot;
2978
+ export type Screenshot1 = CaptureScreenshot | ScreenshotSimple | CaptureScreenshotDetailed;
2979
+ /**
2980
+ * If `true`, captures a screenshot. If `false`, doesn't capture a screenshot.
2981
+ */
2982
+ export type CaptureScreenshot = boolean;
2975
2983
  /**
2976
2984
  * File path of the PNG file. Accepts absolute paths. If not specified, the file name is the ID of the step. If an `http(s)` URL is supplied, the remote image is downloaded and used as a read-only reference for comparison; the new capture is written to a local run-specific folder instead of being uploaded back to the URL.
2977
2985
  */
@@ -3067,7 +3075,7 @@ export type CropByElementDetailed = ({
3067
3075
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
3068
3076
  */
3069
3077
  elementAttribute?: {
3070
- [k: string]: string | number | boolean;
3078
+ [k: string]: boolean | number | string;
3071
3079
  };
3072
3080
  /**
3073
3081
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -3262,10 +3270,6 @@ export type ExactlyOneAnnotationType = {
3262
3270
  } | {
3263
3271
  [k: string]: unknown;
3264
3272
  };
3265
- /**
3266
- * If `true`, captures a screenshot. If `false`, doesn't capture a screenshot.
3267
- */
3268
- export type CaptureScreenshot = boolean;
3269
3273
  /**
3270
3274
  * A condition expression, or an array of expressions combined with logical AND.
3271
3275
  */
@@ -3629,7 +3633,11 @@ export type Condition77 = string | [string, ...string[]];
3629
3633
  /**
3630
3634
  * Start recording. Must be followed by a `stopRecord` step. The `browser` engine captures the Chrome viewport (works under concurrency); the `ffmpeg` engine captures the screen and supports any application. On Android/iOS contexts, recording captures the device screen through the device itself — `engine` doesn't apply. Supported extensions: [ '.mp4', '.webm', '.gif' ]
3631
3635
  */
3632
- export type Record1 = RecordSimple | RecordDetailed | RecordBoolean;
3636
+ export type Record1 = RecordBoolean | RecordSimple | RecordDetailed;
3637
+ /**
3638
+ * If `true`, starts recording — auto-selecting the `browser` engine for a visible Chrome context, the device screen on Android/iOS contexts, and the `ffmpeg` engine otherwise. If `false`, doesn't record.
3639
+ */
3640
+ export type RecordBoolean = boolean;
3633
3641
  /**
3634
3642
  * File path of the recording. Supports the `.mp4`, `.webm`, and `.gif` extensions. If not specified, the file name is the ID of the step, and the extension is `.mp4`.
3635
3643
  */
@@ -3691,10 +3699,6 @@ export type RecordingCheckpoints = RecordingCheckpointsBoolean | RecordingCheckp
3691
3699
  * If `true`, enables checkpoints with default settings.
3692
3700
  */
3693
3701
  export type RecordingCheckpointsBoolean = boolean;
3694
- /**
3695
- * If `true`, starts recording — auto-selecting the `browser` engine for a visible Chrome context, the device screen on Android/iOS contexts, and the `ffmpeg` engine otherwise. If `false`, doesn't record.
3696
- */
3697
- export type RecordBoolean = boolean;
3698
3702
  /**
3699
3703
  * A condition expression, or an array of expressions combined with logical AND.
3700
3704
  */
@@ -4318,7 +4322,7 @@ export type ElementCriteria4 = ({
4318
4322
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
4319
4323
  */
4320
4324
  elementAttribute?: {
4321
- [k: string]: string | number | boolean;
4325
+ [k: string]: boolean | number | string;
4322
4326
  };
4323
4327
  /**
4324
4328
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -4377,7 +4381,7 @@ export type ElementCriteria5 = ({
4377
4381
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
4378
4382
  */
4379
4383
  elementAttribute?: {
4380
- [k: string]: string | number | boolean;
4384
+ [k: string]: boolean | number | string;
4381
4385
  };
4382
4386
  /**
4383
4387
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -4743,7 +4747,7 @@ export type ElementDetailed = ({
4743
4747
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
4744
4748
  */
4745
4749
  elementAttribute?: {
4746
- [k: string]: string | number | boolean;
4750
+ [k: string]: boolean | number | string;
4747
4751
  };
4748
4752
  /**
4749
4753
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -4798,7 +4802,7 @@ export type ElementDetailed1 = ({
4798
4802
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
4799
4803
  */
4800
4804
  elementAttribute?: {
4801
- [k: string]: string | number | boolean;
4805
+ [k: string]: boolean | number | string;
4802
4806
  };
4803
4807
  /**
4804
4808
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -5444,10 +5448,9 @@ export type Condition125 = string | [string, ...string[]];
5444
5448
  /**
5445
5449
  * Pause (in milliseconds) before performing the next action.
5446
5450
  */
5447
- export type Wait1 = WaitSimple | WaitEnvironmentVariable | WaitBoolean;
5448
- export type WaitSimple = number;
5451
+ export type Wait1 = WaitSimple | WaitEnvironmentVariable;
5452
+ export type WaitSimple = number | boolean;
5449
5453
  export type WaitEnvironmentVariable = string;
5450
- export type WaitBoolean = boolean;
5451
5454
  /**
5452
5455
  * A condition expression, or an array of expressions combined with logical AND.
5453
5456
  */
@@ -6369,7 +6372,7 @@ export type Condition143 = string | [string, ...string[]];
6369
6372
  /**
6370
6373
  * Click or tap an element.
6371
6374
  */
6372
- export type Click4 = ClickElementSimple2 | ClickElementDetailed2 | boolean;
6375
+ export type Click4 = (true | false) | ClickElementSimple2 | ClickElementDetailed2;
6373
6376
  /**
6374
6377
  * Identifier for the element to click. Can be a selector, element text, ARIA name, ID, or test ID.
6375
6378
  */
@@ -6425,7 +6428,7 @@ export type ClickElementDetailed2 = ({
6425
6428
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
6426
6429
  */
6427
6430
  elementAttribute?: {
6428
- [k: string]: string | number | boolean;
6431
+ [k: string]: boolean | number | string;
6429
6432
  };
6430
6433
  /**
6431
6434
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -6680,7 +6683,7 @@ export type FindElementDetailed1 = ({
6680
6683
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
6681
6684
  */
6682
6685
  elementAttribute?: {
6683
- [k: string]: string | number | boolean;
6686
+ [k: string]: boolean | number | string;
6684
6687
  };
6685
6688
  /**
6686
6689
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -6746,7 +6749,7 @@ export type ByName44 = string;
6746
6749
  /**
6747
6750
  * Click or tap an element.
6748
6751
  */
6749
- export type Click5 = ClickElementSimple3 | ClickElementDetailed3 | boolean;
6752
+ export type Click5 = (true | false) | ClickElementSimple3 | ClickElementDetailed3;
6750
6753
  /**
6751
6754
  * Identifier for the element to click. Can be a selector, element text, ARIA name, ID, or test ID.
6752
6755
  */
@@ -6802,7 +6805,7 @@ export type ClickElementDetailed3 = ({
6802
6805
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
6803
6806
  */
6804
6807
  elementAttribute?: {
6805
- [k: string]: string | number | boolean;
6808
+ [k: string]: boolean | number | string;
6806
6809
  };
6807
6810
  /**
6808
6811
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -6897,7 +6900,7 @@ export type TypeKeysDetailed2 = {
6897
6900
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
6898
6901
  */
6899
6902
  elementAttribute?: {
6900
- [k: string]: string | number | boolean;
6903
+ [k: string]: boolean | number | string;
6901
6904
  };
6902
6905
  /**
6903
6906
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -6994,7 +6997,7 @@ export type ElementCriteria6 = ({
6994
6997
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
6995
6998
  */
6996
6999
  elementAttribute?: {
6997
- [k: string]: string | number | boolean;
7000
+ [k: string]: boolean | number | string;
6998
7001
  };
6999
7002
  /**
7000
7003
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -7043,7 +7046,7 @@ export type ElementCriteria7 = ({
7043
7046
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
7044
7047
  */
7045
7048
  elementAttribute?: {
7046
- [k: string]: string | number | boolean;
7049
+ [k: string]: boolean | number | string;
7047
7050
  };
7048
7051
  /**
7049
7052
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -7313,7 +7316,7 @@ export type GoToURLDetailed1 = {
7313
7316
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
7314
7317
  */
7315
7318
  elementAttribute?: {
7316
- [k: string]: string | number | boolean;
7319
+ [k: string]: boolean | number | string;
7317
7320
  };
7318
7321
  /**
7319
7322
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -7522,9 +7525,9 @@ export type HTTPRequestDetailed1 = ({
7522
7525
  url?: HTTPRequestSimple3;
7523
7526
  openApi?: (string & OperationID1) | (OpenApi4 & OpenAPIDefinitionHttpRequest1);
7524
7527
  /**
7525
- * Accepted status codes. If the specified URL returns a code other than what is specified here, the action fails.
7528
+ * Accepted status codes. If the specified URL returns a code other than what is specified here, the action fails. A single integer is treated as a one-item list.
7526
7529
  */
7527
- statusCodes?: number[];
7530
+ statusCodes?: number | number[];
7528
7531
  /**
7529
7532
  * Method of the HTTP request
7530
7533
  */
@@ -8348,7 +8351,7 @@ export type TypeKeysDetailed3 = {
8348
8351
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
8349
8352
  */
8350
8353
  elementAttribute?: {
8351
- [k: string]: string | number | boolean;
8354
+ [k: string]: boolean | number | string;
8352
8355
  };
8353
8356
  /**
8354
8357
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -8445,7 +8448,7 @@ export type ElementCriteria8 = ({
8445
8448
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
8446
8449
  */
8447
8450
  elementAttribute?: {
8448
- [k: string]: string | number | boolean;
8451
+ [k: string]: boolean | number | string;
8449
8452
  };
8450
8453
  /**
8451
8454
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -8494,7 +8497,7 @@ export type ElementCriteria9 = ({
8494
8497
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
8495
8498
  */
8496
8499
  elementAttribute?: {
8497
- [k: string]: string | number | boolean;
8500
+ [k: string]: boolean | number | string;
8498
8501
  };
8499
8502
  /**
8500
8503
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -8660,7 +8663,11 @@ export type Condition191 = string | [string, ...string[]];
8660
8663
  /**
8661
8664
  * Takes a screenshot in PNG format.
8662
8665
  */
8663
- export type Screenshot3 = ScreenshotSimple2 | CaptureScreenshotDetailed1 | CaptureScreenshot1;
8666
+ export type Screenshot3 = CaptureScreenshot1 | ScreenshotSimple2 | CaptureScreenshotDetailed1;
8667
+ /**
8668
+ * If `true`, captures a screenshot. If `false`, doesn't capture a screenshot.
8669
+ */
8670
+ export type CaptureScreenshot1 = boolean;
8664
8671
  /**
8665
8672
  * File path of the PNG file. Accepts absolute paths. If not specified, the file name is the ID of the step. If an `http(s)` URL is supplied, the remote image is downloaded and used as a read-only reference for comparison; the new capture is written to a local run-specific folder instead of being uploaded back to the URL.
8666
8673
  */
@@ -8756,7 +8763,7 @@ export type CropByElementDetailed1 = ({
8756
8763
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
8757
8764
  */
8758
8765
  elementAttribute?: {
8759
- [k: string]: string | number | boolean;
8766
+ [k: string]: boolean | number | string;
8760
8767
  };
8761
8768
  /**
8762
8769
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -8951,10 +8958,6 @@ export type ExactlyOneAnnotationType3 = {
8951
8958
  } | {
8952
8959
  [k: string]: unknown;
8953
8960
  };
8954
- /**
8955
- * If `true`, captures a screenshot. If `false`, doesn't capture a screenshot.
8956
- */
8957
- export type CaptureScreenshot1 = boolean;
8958
8961
  /**
8959
8962
  * A condition expression, or an array of expressions combined with logical AND.
8960
8963
  */
@@ -9318,7 +9321,11 @@ export type Condition203 = string | [string, ...string[]];
9318
9321
  /**
9319
9322
  * Start recording. Must be followed by a `stopRecord` step. The `browser` engine captures the Chrome viewport (works under concurrency); the `ffmpeg` engine captures the screen and supports any application. On Android/iOS contexts, recording captures the device screen through the device itself — `engine` doesn't apply. Supported extensions: [ '.mp4', '.webm', '.gif' ]
9320
9323
  */
9321
- export type Record3 = RecordSimple1 | RecordDetailed1 | RecordBoolean1;
9324
+ export type Record3 = RecordBoolean1 | RecordSimple1 | RecordDetailed1;
9325
+ /**
9326
+ * If `true`, starts recording — auto-selecting the `browser` engine for a visible Chrome context, the device screen on Android/iOS contexts, and the `ffmpeg` engine otherwise. If `false`, doesn't record.
9327
+ */
9328
+ export type RecordBoolean1 = boolean;
9322
9329
  /**
9323
9330
  * File path of the recording. Supports the `.mp4`, `.webm`, and `.gif` extensions. If not specified, the file name is the ID of the step, and the extension is `.mp4`.
9324
9331
  */
@@ -9380,10 +9387,6 @@ export type RecordingCheckpoints1 = RecordingCheckpointsBoolean1 | RecordingChec
9380
9387
  * If `true`, enables checkpoints with default settings.
9381
9388
  */
9382
9389
  export type RecordingCheckpointsBoolean1 = boolean;
9383
- /**
9384
- * If `true`, starts recording — auto-selecting the `browser` engine for a visible Chrome context, the device screen on Android/iOS contexts, and the `ffmpeg` engine otherwise. If `false`, doesn't record.
9385
- */
9386
- export type RecordBoolean1 = boolean;
9387
9390
  /**
9388
9391
  * A condition expression, or an array of expressions combined with logical AND.
9389
9392
  */
@@ -10007,7 +10010,7 @@ export type ElementCriteria10 = ({
10007
10010
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
10008
10011
  */
10009
10012
  elementAttribute?: {
10010
- [k: string]: string | number | boolean;
10013
+ [k: string]: boolean | number | string;
10011
10014
  };
10012
10015
  /**
10013
10016
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -10066,7 +10069,7 @@ export type ElementCriteria11 = ({
10066
10069
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
10067
10070
  */
10068
10071
  elementAttribute?: {
10069
- [k: string]: string | number | boolean;
10072
+ [k: string]: boolean | number | string;
10070
10073
  };
10071
10074
  /**
10072
10075
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -10432,7 +10435,7 @@ export type ElementDetailed2 = ({
10432
10435
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
10433
10436
  */
10434
10437
  elementAttribute?: {
10435
- [k: string]: string | number | boolean;
10438
+ [k: string]: boolean | number | string;
10436
10439
  };
10437
10440
  /**
10438
10441
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -10487,7 +10490,7 @@ export type ElementDetailed3 = ({
10487
10490
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
10488
10491
  */
10489
10492
  elementAttribute?: {
10490
- [k: string]: string | number | boolean;
10493
+ [k: string]: boolean | number | string;
10491
10494
  };
10492
10495
  /**
10493
10496
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -11133,10 +11136,9 @@ export type Condition251 = string | [string, ...string[]];
11133
11136
  /**
11134
11137
  * Pause (in milliseconds) before performing the next action.
11135
11138
  */
11136
- export type Wait3 = WaitSimple1 | WaitEnvironmentVariable1 | WaitBoolean1;
11137
- export type WaitSimple1 = number;
11139
+ export type Wait3 = WaitSimple1 | WaitEnvironmentVariable1;
11140
+ export type WaitSimple1 = number | boolean;
11138
11141
  export type WaitEnvironmentVariable1 = string;
11139
- export type WaitBoolean1 = boolean;
11140
11142
  /**
11141
11143
  * A condition expression, or an array of expressions combined with logical AND.
11142
11144
  */
@@ -11692,9 +11694,14 @@ export interface Report {
11692
11694
  */
11693
11695
  reportId?: string;
11694
11696
  /**
11695
- * Identifier for the run that produced this report, derived from the run's start timestamp. Matches the run's artifact folder name under `.doc-detective/runs/<runId>/`. System-populated.
11697
+ * Opaque, sortable ID of the run folder. Read `startedAt` for the time. Matches the run's artifact folder name under `.doc-detective/runs/<runId>/`. System-populated.
11696
11698
  */
11697
11699
  runId?: string;
11700
+ /**
11701
+ * When the run's execution phase started, as an ISO 8601 UTC timestamp with milliseconds, for example `2026-11-06T02:33:28.631Z`. The run ended at `startedAt` plus `durationMs`. System-populated.
11702
+ */
11703
+ startedAt?: string;
11704
+ environment?: EnvironmentDetails;
11698
11705
  /**
11699
11706
  * Absolute path to the run's artifact folder (`<output>/.doc-detective/runs/<runId>/`), where the `runFolder` reporter archives results and `autoScreenshot` images are saved (nested under `specs/<specId>/tests/<testId>/contexts/<contextId>/`). Step-level `autoScreenshot` paths in the report are relative to this folder. System-populated.
11700
11707
  */
@@ -11745,11 +11752,40 @@ export interface Report {
11745
11752
  };
11746
11753
  [k: string]: unknown;
11747
11754
  }
11755
+ /**
11756
+ * The host that ran Doc Detective: its platform, processor architecture, OS release, and the Doc Detective and Node.js versions. Compare it across runs to tell a product change from an environment change. The working directory isn't included. System-populated.
11757
+ */
11758
+ export interface EnvironmentDetails {
11759
+ /**
11760
+ * The current working directory of the process running Doc Detective.
11761
+ */
11762
+ workingDirectory?: string;
11763
+ /**
11764
+ * The operating system type running Doc Detective.
11765
+ */
11766
+ platform: "linux" | "mac" | "windows";
11767
+ /**
11768
+ * The processor architecture of the system running Doc Detective, as reported by Node.js `os.arch()`.
11769
+ */
11770
+ arch?: "arm" | "arm64" | "ia32" | "loong64" | "mips" | "mipsel" | "ppc" | "ppc64" | "riscv64" | "s390" | "s390x" | "x64";
11771
+ /**
11772
+ * The version of Doc Detective that ran, for example `4.42.0`.
11773
+ */
11774
+ docDetectiveVersion?: string;
11775
+ /**
11776
+ * The Node.js version that ran Doc Detective, without the leading `v`, for example `24.15.0`.
11777
+ */
11778
+ nodeVersion?: string;
11779
+ /**
11780
+ * The operating system release, as Node.js's `os.release()` reports it, for example `6.8.0-1017-azure` on Linux or `10.0.26200` on Windows.
11781
+ */
11782
+ osRelease?: string;
11783
+ }
11748
11784
  export interface Specification {
11749
11785
  /**
11750
- * JSON Schema for this object.
11786
+ * JSON Schema URL for editor support. Doc Detective ignores it.
11751
11787
  */
11752
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/spec_v3.schema.json";
11788
+ $schema?: string;
11753
11789
  /**
11754
11790
  * Unique identifier for the test specification.
11755
11791
  */
@@ -11798,9 +11834,9 @@ export interface Specification {
11798
11834
  */
11799
11835
  export interface Context {
11800
11836
  /**
11801
- * JSON Schema for this object.
11837
+ * JSON Schema URL for editor support. Doc Detective ignores it.
11802
11838
  */
11803
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/context_v3.schema.json";
11839
+ $schema?: string;
11804
11840
  /**
11805
11841
  * Unique identifier for the context.
11806
11842
  */
@@ -11842,6 +11878,10 @@ export interface Browser {
11842
11878
  * Set automatically during context resolution: `true` when the author explicitly requested this browser (as opposed to it being auto-selected as the default). The runner's cross-browser fallback uses it to decide whether substituting another engine reports `PASS` (auto-selected) or `WARNING` (explicitly pinned).
11843
11879
  */
11844
11880
  explicit?: boolean;
11881
+ /**
11882
+ * The browser version the session reported, for example `131.0.6778.85`. Present only in test results, for contexts that started a browser. System-populated: an authored value is dropped during context resolution.
11883
+ */
11884
+ version?: string;
11845
11885
  /**
11846
11886
  * If `true`, runs the browser in headless mode.
11847
11887
  */
@@ -11887,6 +11927,10 @@ export interface Browser1 {
11887
11927
  * Set automatically during context resolution: `true` when the author explicitly requested this browser (as opposed to it being auto-selected as the default). The runner's cross-browser fallback uses it to decide whether substituting another engine reports `PASS` (auto-selected) or `WARNING` (explicitly pinned).
11888
11928
  */
11889
11929
  explicit?: boolean;
11930
+ /**
11931
+ * The browser version the session reported, for example `131.0.6778.85`. Present only in test results, for contexts that started a browser. System-populated: an authored value is dropped during context resolution.
11932
+ */
11933
+ version?: string;
11890
11934
  /**
11891
11935
  * If `true`, runs the browser in headless mode.
11892
11936
  */
@@ -12674,9 +12718,9 @@ export interface AnnotationTransition1 {
12674
12718
  */
12675
12719
  export interface Context1 {
12676
12720
  /**
12677
- * JSON Schema for this object.
12721
+ * JSON Schema URL for editor support. Doc Detective ignores it.
12678
12722
  */
12679
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/context_v3.schema.json";
12723
+ $schema?: string;
12680
12724
  /**
12681
12725
  * Unique identifier for the context.
12682
12726
  */
@@ -12718,6 +12762,10 @@ export interface Browser2 {
12718
12762
  * Set automatically during context resolution: `true` when the author explicitly requested this browser (as opposed to it being auto-selected as the default). The runner's cross-browser fallback uses it to decide whether substituting another engine reports `PASS` (auto-selected) or `WARNING` (explicitly pinned).
12719
12763
  */
12720
12764
  explicit?: boolean;
12765
+ /**
12766
+ * The browser version the session reported, for example `131.0.6778.85`. Present only in test results, for contexts that started a browser. System-populated: an authored value is dropped during context resolution.
12767
+ */
12768
+ version?: string;
12721
12769
  /**
12722
12770
  * If `true`, runs the browser in headless mode.
12723
12771
  */
@@ -12763,6 +12811,10 @@ export interface Browser3 {
12763
12811
  * Set automatically during context resolution: `true` when the author explicitly requested this browser (as opposed to it being auto-selected as the default). The runner's cross-browser fallback uses it to decide whether substituting another engine reports `PASS` (auto-selected) or `WARNING` (explicitly pinned).
12764
12812
  */
12765
12813
  explicit?: boolean;
12814
+ /**
12815
+ * The browser version the session reported, for example `131.0.6778.85`. Present only in test results, for contexts that started a browser. System-populated: an authored value is dropped during context resolution.
12816
+ */
12817
+ version?: string;
12766
12818
  /**
12767
12819
  * If `true`, runs the browser in headless mode.
12768
12820
  */
@@ -12937,9 +12989,9 @@ export interface Retry3 {
12937
12989
  }
12938
12990
  export interface Common {
12939
12991
  /**
12940
- * JSON Schema for this object.
12992
+ * JSON Schema URL for editor support. Doc Detective ignores it.
12941
12993
  */
12942
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
12994
+ $schema?: string;
12943
12995
  /**
12944
12996
  * ID of the step.
12945
12997
  */
@@ -12996,6 +13048,10 @@ export interface Common {
12996
13048
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
12997
13049
  */
12998
13050
  durationMs?: number;
13051
+ /**
13052
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
13053
+ */
13054
+ startedAt?: string;
12999
13055
  [k: string]: unknown;
13000
13056
  }
13001
13057
  /**
@@ -13166,6 +13222,10 @@ export interface CheckLinkDetailed1 {
13166
13222
  * Accepted status codes. If the specified URL returns a code other than what is specified here, the action fails.
13167
13223
  */
13168
13224
  statusCodes?: number | number[];
13225
+ /**
13226
+ * Time each request attempt may take, in milliseconds. If no response arrives in time, the step fails.
13227
+ */
13228
+ timeout?: number;
13169
13229
  /**
13170
13230
  * Additional HTTP headers to include in the request. Merged on top of Doc Detective's default browser-mimicking headers. Useful for sites behind bot protection or WAFs that allowlist specific headers (for example, a Cloudflare Access service token or a `Cookie` with a `cf_clearance` value).
13171
13231
  */
@@ -13179,9 +13239,9 @@ export interface RequestHeadersObject {
13179
13239
  }
13180
13240
  export interface Common1 {
13181
13241
  /**
13182
- * JSON Schema for this object.
13242
+ * JSON Schema URL for editor support. Doc Detective ignores it.
13183
13243
  */
13184
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
13244
+ $schema?: string;
13185
13245
  /**
13186
13246
  * ID of the step.
13187
13247
  */
@@ -13238,6 +13298,10 @@ export interface Common1 {
13238
13298
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
13239
13299
  */
13240
13300
  durationMs?: number;
13301
+ /**
13302
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
13303
+ */
13304
+ startedAt?: string;
13241
13305
  [k: string]: unknown;
13242
13306
  }
13243
13307
  /**
@@ -13457,9 +13521,9 @@ export interface ByCriteria2 {
13457
13521
  }
13458
13522
  export interface Common2 {
13459
13523
  /**
13460
- * JSON Schema for this object.
13524
+ * JSON Schema URL for editor support. Doc Detective ignores it.
13461
13525
  */
13462
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
13526
+ $schema?: string;
13463
13527
  /**
13464
13528
  * ID of the step.
13465
13529
  */
@@ -13516,6 +13580,10 @@ export interface Common2 {
13516
13580
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
13517
13581
  */
13518
13582
  durationMs?: number;
13583
+ /**
13584
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
13585
+ */
13586
+ startedAt?: string;
13519
13587
  [k: string]: unknown;
13520
13588
  }
13521
13589
  /**
@@ -13936,9 +14004,9 @@ export interface ABrowserEngineStringSurfaceTakesBrowserReadiness {
13936
14004
  }
13937
14005
  export interface Common3 {
13938
14006
  /**
13939
- * JSON Schema for this object.
14007
+ * JSON Schema URL for editor support. Doc Detective ignores it.
13940
14008
  */
13941
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
14009
+ $schema?: string;
13942
14010
  /**
13943
14011
  * ID of the step.
13944
14012
  */
@@ -13995,6 +14063,10 @@ export interface Common3 {
13995
14063
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
13996
14064
  */
13997
14065
  durationMs?: number;
14066
+ /**
14067
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
14068
+ */
14069
+ startedAt?: string;
13998
14070
  [k: string]: unknown;
13999
14071
  }
14000
14072
  /**
@@ -14202,9 +14274,9 @@ export interface NewWindowConflictsWithASurfaceWindowOrTabSelector {
14202
14274
  }
14203
14275
  export interface Common4 {
14204
14276
  /**
14205
- * JSON Schema for this object.
14277
+ * JSON Schema URL for editor support. Doc Detective ignores it.
14206
14278
  */
14207
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
14279
+ $schema?: string;
14208
14280
  /**
14209
14281
  * ID of the step.
14210
14282
  */
@@ -14261,6 +14333,10 @@ export interface Common4 {
14261
14333
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
14262
14334
  */
14263
14335
  durationMs?: number;
14336
+ /**
14337
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
14338
+ */
14339
+ startedAt?: string;
14264
14340
  [k: string]: unknown;
14265
14341
  }
14266
14342
  /**
@@ -14484,9 +14560,9 @@ export interface ResponseBodyObject {
14484
14560
  }
14485
14561
  export interface Common5 {
14486
14562
  /**
14487
- * JSON Schema for this object.
14563
+ * JSON Schema URL for editor support. Doc Detective ignores it.
14488
14564
  */
14489
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
14565
+ $schema?: string;
14490
14566
  /**
14491
14567
  * ID of the step.
14492
14568
  */
@@ -14543,6 +14619,10 @@ export interface Common5 {
14543
14619
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
14544
14620
  */
14545
14621
  durationMs?: number;
14622
+ /**
14623
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
14624
+ */
14625
+ startedAt?: string;
14546
14626
  [k: string]: unknown;
14547
14627
  }
14548
14628
  /**
@@ -14767,16 +14847,25 @@ export interface RunShellCommandDetailed {
14767
14847
  delayMs?: number;
14768
14848
  };
14769
14849
  /**
14770
- * Run the process in a pseudo-terminal (PTY) instead of a pipe, so full-screen/interactive TUIs (those that check `isTTY`) render and accept keystrokes. Requires the PTY backend `@homebridge/node-pty-prebuilt-multiarch` to be installed (`npm install @homebridge/node-pty-prebuilt-multiarch`); it is not bundled, and if it is unavailable the step is skipped. `stdout` and `stderr` are merged into one stream in PTY mode. PTY output includes raw ANSI escape sequences (colors, cursor movement); `waitUntil.stdio` patterns should target text that renders without interleaved control codes, or use a regex that tolerates them.
14850
+ * Run the process in a pseudo-terminal (PTY) instead of a pipe, so full-screen/interactive TUIs (those that check `isTTY`) render and accept keystrokes. `true` or `{}` uses a terminal 120 columns wide by 30 rows tall. An object with `cols` and `rows` sets the size, for TUIs whose layout depends on the width. Requires the PTY backend `@homebridge/node-pty-prebuilt-multiarch` to be installed (`npm install @homebridge/node-pty-prebuilt-multiarch`); it is not bundled, and if it is unavailable the step is skipped. `stdout` and `stderr` are merged into one stream in PTY mode. PTY output includes raw ANSI escape sequences (colors, cursor movement); `waitUntil.stdio` patterns should target text that renders without interleaved control codes, or use a regex that tolerates them.
14771
14851
  */
14772
- tty?: boolean;
14852
+ tty?: boolean | {
14853
+ /**
14854
+ * Terminal width in columns (what the process reads as `process.stdout.columns`).
14855
+ */
14856
+ cols?: number;
14857
+ /**
14858
+ * Terminal height in rows (what the process reads as `process.stdout.rows`).
14859
+ */
14860
+ rows?: number;
14861
+ };
14773
14862
  };
14774
14863
  }
14775
14864
  export interface Common6 {
14776
14865
  /**
14777
- * JSON Schema for this object.
14866
+ * JSON Schema URL for editor support. Doc Detective ignores it.
14778
14867
  */
14779
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
14868
+ $schema?: string;
14780
14869
  /**
14781
14870
  * ID of the step.
14782
14871
  */
@@ -14833,6 +14922,10 @@ export interface Common6 {
14833
14922
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
14834
14923
  */
14835
14924
  durationMs?: number;
14925
+ /**
14926
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
14927
+ */
14928
+ startedAt?: string;
14836
14929
  [k: string]: unknown;
14837
14930
  }
14838
14931
  /**
@@ -15057,17 +15150,26 @@ export interface RunCodeDetailed {
15057
15150
  delayMs?: number;
15058
15151
  };
15059
15152
  /**
15060
- * Run the process in a pseudo-terminal (PTY) instead of a pipe, so full-screen/interactive TUIs (those that check `isTTY`) render and accept keystrokes. Requires the PTY backend `@homebridge/node-pty-prebuilt-multiarch` to be installed (`npm install @homebridge/node-pty-prebuilt-multiarch`); it is not bundled, and if it is unavailable the step is skipped. `stdout` and `stderr` are merged into one stream in PTY mode. PTY output includes raw ANSI escape sequences (colors, cursor movement); `waitUntil.stdio` patterns should target text that renders without interleaved control codes, or use a regex that tolerates them.
15153
+ * Run the process in a pseudo-terminal (PTY) instead of a pipe, so full-screen/interactive TUIs (those that check `isTTY`) render and accept keystrokes. `true` or `{}` uses a terminal 120 columns wide by 30 rows tall. An object with `cols` and `rows` sets the size, for TUIs whose layout depends on the width. Requires the PTY backend `@homebridge/node-pty-prebuilt-multiarch` to be installed (`npm install @homebridge/node-pty-prebuilt-multiarch`); it is not bundled, and if it is unavailable the step is skipped. `stdout` and `stderr` are merged into one stream in PTY mode. PTY output includes raw ANSI escape sequences (colors, cursor movement); `waitUntil.stdio` patterns should target text that renders without interleaved control codes, or use a regex that tolerates them.
15061
15154
  */
15062
- tty?: boolean;
15155
+ tty?: boolean | {
15156
+ /**
15157
+ * Terminal width in columns (what the process reads as `process.stdout.columns`).
15158
+ */
15159
+ cols?: number;
15160
+ /**
15161
+ * Terminal height in rows (what the process reads as `process.stdout.rows`).
15162
+ */
15163
+ rows?: number;
15164
+ };
15063
15165
  };
15064
15166
  [k: string]: unknown;
15065
15167
  }
15066
15168
  export interface Common7 {
15067
15169
  /**
15068
- * JSON Schema for this object.
15170
+ * JSON Schema URL for editor support. Doc Detective ignores it.
15069
15171
  */
15070
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
15172
+ $schema?: string;
15071
15173
  /**
15072
15174
  * ID of the step.
15073
15175
  */
@@ -15124,6 +15226,10 @@ export interface Common7 {
15124
15226
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
15125
15227
  */
15126
15228
  durationMs?: number;
15229
+ /**
15230
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
15231
+ */
15232
+ startedAt?: string;
15127
15233
  [k: string]: unknown;
15128
15234
  }
15129
15235
  /**
@@ -15361,9 +15467,9 @@ export interface ByCriteria15 {
15361
15467
  }
15362
15468
  export interface Common8 {
15363
15469
  /**
15364
- * JSON Schema for this object.
15470
+ * JSON Schema URL for editor support. Doc Detective ignores it.
15365
15471
  */
15366
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
15472
+ $schema?: string;
15367
15473
  /**
15368
15474
  * ID of the step.
15369
15475
  */
@@ -15420,6 +15526,10 @@ export interface Common8 {
15420
15526
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
15421
15527
  */
15422
15528
  durationMs?: number;
15529
+ /**
15530
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
15531
+ */
15532
+ startedAt?: string;
15423
15533
  [k: string]: unknown;
15424
15534
  }
15425
15535
  /**
@@ -15691,9 +15801,9 @@ export interface ABrowserEngineStringSurfaceTakesBrowserReadiness1 {
15691
15801
  }
15692
15802
  export interface Common9 {
15693
15803
  /**
15694
- * JSON Schema for this object.
15804
+ * JSON Schema URL for editor support. Doc Detective ignores it.
15695
15805
  */
15696
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
15806
+ $schema?: string;
15697
15807
  /**
15698
15808
  * ID of the step.
15699
15809
  */
@@ -15750,6 +15860,10 @@ export interface Common9 {
15750
15860
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
15751
15861
  */
15752
15862
  durationMs?: number;
15863
+ /**
15864
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
15865
+ */
15866
+ startedAt?: string;
15753
15867
  [k: string]: unknown;
15754
15868
  }
15755
15869
  /**
@@ -16079,7 +16193,7 @@ export interface ElementFindingFields {
16079
16193
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
16080
16194
  */
16081
16195
  elementAttribute?: {
16082
- [k: string]: number | boolean | string;
16196
+ [k: string]: boolean | number | string;
16083
16197
  };
16084
16198
  /**
16085
16199
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -16134,7 +16248,7 @@ export interface ElementFindingFields1 {
16134
16248
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
16135
16249
  */
16136
16250
  elementAttribute?: {
16137
- [k: string]: number | boolean | string;
16251
+ [k: string]: boolean | number | string;
16138
16252
  };
16139
16253
  /**
16140
16254
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -16189,7 +16303,7 @@ export interface ElementFindingFields2 {
16189
16303
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
16190
16304
  */
16191
16305
  elementAttribute?: {
16192
- [k: string]: number | boolean | string;
16306
+ [k: string]: boolean | number | string;
16193
16307
  };
16194
16308
  /**
16195
16309
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -16244,7 +16358,7 @@ export interface ElementFindingFields3 {
16244
16358
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
16245
16359
  */
16246
16360
  elementAttribute?: {
16247
- [k: string]: number | boolean | string;
16361
+ [k: string]: boolean | number | string;
16248
16362
  };
16249
16363
  /**
16250
16364
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -16299,7 +16413,7 @@ export interface ElementFindingFields4 {
16299
16413
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
16300
16414
  */
16301
16415
  elementAttribute?: {
16302
- [k: string]: number | boolean | string;
16416
+ [k: string]: boolean | number | string;
16303
16417
  };
16304
16418
  /**
16305
16419
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -16354,7 +16468,7 @@ export interface ElementFindingFields5 {
16354
16468
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
16355
16469
  */
16356
16470
  elementAttribute?: {
16357
- [k: string]: number | boolean | string;
16471
+ [k: string]: boolean | number | string;
16358
16472
  };
16359
16473
  /**
16360
16474
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -16507,9 +16621,9 @@ export interface AppCapturesDonTSupportCropYet {
16507
16621
  }
16508
16622
  export interface Common10 {
16509
16623
  /**
16510
- * JSON Schema for this object.
16624
+ * JSON Schema URL for editor support. Doc Detective ignores it.
16511
16625
  */
16512
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
16626
+ $schema?: string;
16513
16627
  /**
16514
16628
  * ID of the step.
16515
16629
  */
@@ -16566,6 +16680,10 @@ export interface Common10 {
16566
16680
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
16567
16681
  */
16568
16682
  durationMs?: number;
16683
+ /**
16684
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
16685
+ */
16686
+ startedAt?: string;
16569
16687
  [k: string]: unknown;
16570
16688
  }
16571
16689
  /**
@@ -16716,9 +16834,9 @@ export interface SaveCookie {
16716
16834
  }
16717
16835
  export interface Common11 {
16718
16836
  /**
16719
- * JSON Schema for this object.
16837
+ * JSON Schema URL for editor support. Doc Detective ignores it.
16720
16838
  */
16721
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
16839
+ $schema?: string;
16722
16840
  /**
16723
16841
  * ID of the step.
16724
16842
  */
@@ -16775,6 +16893,10 @@ export interface Common11 {
16775
16893
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
16776
16894
  */
16777
16895
  durationMs?: number;
16896
+ /**
16897
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
16898
+ */
16899
+ startedAt?: string;
16778
16900
  [k: string]: unknown;
16779
16901
  }
16780
16902
  /**
@@ -17069,9 +17191,9 @@ export interface RecordingCheckpointsDetailed {
17069
17191
  }
17070
17192
  export interface Common12 {
17071
17193
  /**
17072
- * JSON Schema for this object.
17194
+ * JSON Schema URL for editor support. Doc Detective ignores it.
17073
17195
  */
17074
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
17196
+ $schema?: string;
17075
17197
  /**
17076
17198
  * ID of the step.
17077
17199
  */
@@ -17128,6 +17250,10 @@ export interface Common12 {
17128
17250
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
17129
17251
  */
17130
17252
  durationMs?: number;
17253
+ /**
17254
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
17255
+ */
17256
+ startedAt?: string;
17131
17257
  [k: string]: unknown;
17132
17258
  }
17133
17259
  /**
@@ -17284,9 +17410,9 @@ export interface StopRecordDetailed {
17284
17410
  }
17285
17411
  export interface Common13 {
17286
17412
  /**
17287
- * JSON Schema for this object.
17413
+ * JSON Schema URL for editor support. Doc Detective ignores it.
17288
17414
  */
17289
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
17415
+ $schema?: string;
17290
17416
  /**
17291
17417
  * ID of the step.
17292
17418
  */
@@ -17343,6 +17469,10 @@ export interface Common13 {
17343
17469
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
17344
17470
  */
17345
17471
  durationMs?: number;
17472
+ /**
17473
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
17474
+ */
17475
+ startedAt?: string;
17346
17476
  [k: string]: unknown;
17347
17477
  }
17348
17478
  /**
@@ -17643,9 +17773,9 @@ export interface ByCriteria30 {
17643
17773
  }
17644
17774
  export interface Common14 {
17645
17775
  /**
17646
- * JSON Schema for this object.
17776
+ * JSON Schema URL for editor support. Doc Detective ignores it.
17647
17777
  */
17648
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
17778
+ $schema?: string;
17649
17779
  /**
17650
17780
  * ID of the step.
17651
17781
  */
@@ -17702,6 +17832,10 @@ export interface Common14 {
17702
17832
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
17703
17833
  */
17704
17834
  durationMs?: number;
17835
+ /**
17836
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
17837
+ */
17838
+ startedAt?: string;
17705
17839
  [k: string]: unknown;
17706
17840
  }
17707
17841
  /**
@@ -18011,9 +18145,18 @@ export interface ProcessDescriptor {
18011
18145
  */
18012
18146
  workingDirectory?: string;
18013
18147
  /**
18014
- * Run the process in a pseudo-terminal (PTY) instead of a pipe, so full-screen/interactive TUIs (those that check `isTTY`) render and accept keystrokes. Requires the PTY backend `@homebridge/node-pty-prebuilt-multiarch` to be installed (`npm install @homebridge/node-pty-prebuilt-multiarch`); it is not bundled, and if it is unavailable the descriptor is skipped. `stdout` and `stderr` are merged into one stream in PTY mode. PTY output includes raw ANSI escape sequences (colors, cursor movement); `waitUntil.stdio` patterns should target text that renders without interleaved control codes, or use a regex that tolerates them.
18148
+ * Run the process in a pseudo-terminal (PTY) instead of a pipe, so full-screen/interactive TUIs (those that check `isTTY`) render and accept keystrokes. `true` or `{}` uses a terminal 120 columns wide by 30 rows tall. An object with `cols` and `rows` sets the size, for TUIs whose layout depends on the width. Requires the PTY backend `@homebridge/node-pty-prebuilt-multiarch` to be installed (`npm install @homebridge/node-pty-prebuilt-multiarch`); it is not bundled, and if it is unavailable the descriptor is skipped. `stdout` and `stderr` are merged into one stream in PTY mode. PTY output includes raw ANSI escape sequences (colors, cursor movement); `waitUntil.stdio` patterns should target text that renders without interleaved control codes, or use a regex that tolerates them.
18015
18149
  */
18016
- tty?: boolean;
18150
+ tty?: boolean | {
18151
+ /**
18152
+ * Terminal width in columns (what the process reads as `process.stdout.columns`).
18153
+ */
18154
+ cols?: number;
18155
+ /**
18156
+ * Terminal height in rows (what the process reads as `process.stdout.rows`).
18157
+ */
18158
+ rows?: number;
18159
+ };
18017
18160
  /**
18018
18161
  * Conditions that must all be met before the process is considered ready and the descriptor completes. Omit to consider the process ready as soon as it is spawned. Specify any combination; every condition given must pass before `timeout` elapses. Note: a process that forks a daemon and then exits (common for some Docker images and databases) is treated as having exited before becoming ready and the descriptor fails — use `port`, `httpGet`, or `delayMs` for those rather than a condition that depends on the foreground process staying alive.
18019
18162
  */
@@ -18201,9 +18344,18 @@ export interface ProcessDescriptor1 {
18201
18344
  */
18202
18345
  workingDirectory?: string;
18203
18346
  /**
18204
- * Run the process in a pseudo-terminal (PTY) instead of a pipe, so full-screen/interactive TUIs (those that check `isTTY`) render and accept keystrokes. Requires the PTY backend `@homebridge/node-pty-prebuilt-multiarch` to be installed (`npm install @homebridge/node-pty-prebuilt-multiarch`); it is not bundled, and if it is unavailable the descriptor is skipped. `stdout` and `stderr` are merged into one stream in PTY mode. PTY output includes raw ANSI escape sequences (colors, cursor movement); `waitUntil.stdio` patterns should target text that renders without interleaved control codes, or use a regex that tolerates them.
18347
+ * Run the process in a pseudo-terminal (PTY) instead of a pipe, so full-screen/interactive TUIs (those that check `isTTY`) render and accept keystrokes. `true` or `{}` uses a terminal 120 columns wide by 30 rows tall. An object with `cols` and `rows` sets the size, for TUIs whose layout depends on the width. Requires the PTY backend `@homebridge/node-pty-prebuilt-multiarch` to be installed (`npm install @homebridge/node-pty-prebuilt-multiarch`); it is not bundled, and if it is unavailable the descriptor is skipped. `stdout` and `stderr` are merged into one stream in PTY mode. PTY output includes raw ANSI escape sequences (colors, cursor movement); `waitUntil.stdio` patterns should target text that renders without interleaved control codes, or use a regex that tolerates them.
18205
18348
  */
18206
- tty?: boolean;
18349
+ tty?: boolean | {
18350
+ /**
18351
+ * Terminal width in columns (what the process reads as `process.stdout.columns`).
18352
+ */
18353
+ cols?: number;
18354
+ /**
18355
+ * Terminal height in rows (what the process reads as `process.stdout.rows`).
18356
+ */
18357
+ rows?: number;
18358
+ };
18207
18359
  /**
18208
18360
  * Conditions that must all be met before the process is considered ready and the descriptor completes. Omit to consider the process ready as soon as it is spawned. Specify any combination; every condition given must pass before `timeout` elapses. Note: a process that forks a daemon and then exits (common for some Docker images and databases) is treated as having exited before becoming ready and the descriptor fails — use `port`, `httpGet`, or `delayMs` for those rather than a condition that depends on the foreground process staying alive.
18209
18361
  */
@@ -18232,9 +18384,9 @@ export interface ProcessDescriptor1 {
18232
18384
  }
18233
18385
  export interface Common15 {
18234
18386
  /**
18235
- * JSON Schema for this object.
18387
+ * JSON Schema URL for editor support. Doc Detective ignores it.
18236
18388
  */
18237
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
18389
+ $schema?: string;
18238
18390
  /**
18239
18391
  * ID of the step.
18240
18392
  */
@@ -18291,6 +18443,10 @@ export interface Common15 {
18291
18443
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
18292
18444
  */
18293
18445
  durationMs?: number;
18446
+ /**
18447
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
18448
+ */
18449
+ startedAt?: string;
18294
18450
  [k: string]: unknown;
18295
18451
  }
18296
18452
  /**
@@ -18441,9 +18597,9 @@ export interface LoadVariables {
18441
18597
  }
18442
18598
  export interface Common16 {
18443
18599
  /**
18444
- * JSON Schema for this object.
18600
+ * JSON Schema URL for editor support. Doc Detective ignores it.
18445
18601
  */
18446
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
18602
+ $schema?: string;
18447
18603
  /**
18448
18604
  * ID of the step.
18449
18605
  */
@@ -18500,6 +18656,10 @@ export interface Common16 {
18500
18656
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
18501
18657
  */
18502
18658
  durationMs?: number;
18659
+ /**
18660
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
18661
+ */
18662
+ startedAt?: string;
18503
18663
  [k: string]: unknown;
18504
18664
  }
18505
18665
  /**
@@ -18720,9 +18880,9 @@ export interface ByCriteria32 {
18720
18880
  }
18721
18881
  export interface Common17 {
18722
18882
  /**
18723
- * JSON Schema for this object.
18883
+ * JSON Schema URL for editor support. Doc Detective ignores it.
18724
18884
  */
18725
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
18885
+ $schema?: string;
18726
18886
  /**
18727
18887
  * ID of the step.
18728
18888
  */
@@ -18779,6 +18939,10 @@ export interface Common17 {
18779
18939
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
18780
18940
  */
18781
18941
  durationMs?: number;
18942
+ /**
18943
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
18944
+ */
18945
+ startedAt?: string;
18782
18946
  [k: string]: unknown;
18783
18947
  }
18784
18948
  /**
@@ -18929,9 +19093,9 @@ export interface LoadCookie {
18929
19093
  }
18930
19094
  export interface Common18 {
18931
19095
  /**
18932
- * JSON Schema for this object.
19096
+ * JSON Schema URL for editor support. Doc Detective ignores it.
18933
19097
  */
18934
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
19098
+ $schema?: string;
18935
19099
  /**
18936
19100
  * ID of the step.
18937
19101
  */
@@ -18988,6 +19152,10 @@ export interface Common18 {
18988
19152
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
18989
19153
  */
18990
19154
  durationMs?: number;
19155
+ /**
19156
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
19157
+ */
19158
+ startedAt?: string;
18991
19159
  [k: string]: unknown;
18992
19160
  }
18993
19161
  /**
@@ -19329,9 +19497,9 @@ export interface ByCriteria38 {
19329
19497
  }
19330
19498
  export interface Common19 {
19331
19499
  /**
19332
- * JSON Schema for this object.
19500
+ * JSON Schema URL for editor support. Doc Detective ignores it.
19333
19501
  */
19334
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
19502
+ $schema?: string;
19335
19503
  /**
19336
19504
  * ID of the step.
19337
19505
  */
@@ -19388,6 +19556,10 @@ export interface Common19 {
19388
19556
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
19389
19557
  */
19390
19558
  durationMs?: number;
19559
+ /**
19560
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
19561
+ */
19562
+ startedAt?: string;
19391
19563
  [k: string]: unknown;
19392
19564
  }
19393
19565
  /**
@@ -19538,9 +19710,9 @@ export interface Wait {
19538
19710
  }
19539
19711
  export interface Common20 {
19540
19712
  /**
19541
- * JSON Schema for this object.
19713
+ * JSON Schema URL for editor support. Doc Detective ignores it.
19542
19714
  */
19543
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
19715
+ $schema?: string;
19544
19716
  /**
19545
19717
  * ID of the step.
19546
19718
  */
@@ -19597,6 +19769,10 @@ export interface Common20 {
19597
19769
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
19598
19770
  */
19599
19771
  durationMs?: number;
19772
+ /**
19773
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
19774
+ */
19775
+ startedAt?: string;
19600
19776
  [k: string]: unknown;
19601
19777
  }
19602
19778
  /**
@@ -19836,7 +20012,7 @@ export interface ElementFindingFields6 {
19836
20012
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
19837
20013
  */
19838
20014
  elementAttribute?: {
19839
- [k: string]: number | boolean | string;
20015
+ [k: string]: boolean | number | string;
19840
20016
  };
19841
20017
  /**
19842
20018
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -19891,7 +20067,7 @@ export interface ElementFindingFields7 {
19891
20067
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
19892
20068
  */
19893
20069
  elementAttribute?: {
19894
- [k: string]: number | boolean | string;
20070
+ [k: string]: boolean | number | string;
19895
20071
  };
19896
20072
  /**
19897
20073
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -19946,7 +20122,7 @@ export interface ElementFindingFields8 {
19946
20122
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
19947
20123
  */
19948
20124
  elementAttribute?: {
19949
- [k: string]: number | boolean | string;
20125
+ [k: string]: boolean | number | string;
19950
20126
  };
19951
20127
  /**
19952
20128
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -20001,7 +20177,7 @@ export interface ElementFindingFields9 {
20001
20177
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
20002
20178
  */
20003
20179
  elementAttribute?: {
20004
- [k: string]: number | boolean | string;
20180
+ [k: string]: boolean | number | string;
20005
20181
  };
20006
20182
  /**
20007
20183
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -20056,7 +20232,7 @@ export interface ElementFindingFields10 {
20056
20232
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
20057
20233
  */
20058
20234
  elementAttribute?: {
20059
- [k: string]: number | boolean | string;
20235
+ [k: string]: boolean | number | string;
20060
20236
  };
20061
20237
  /**
20062
20238
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -20111,7 +20287,7 @@ export interface ElementFindingFields11 {
20111
20287
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
20112
20288
  */
20113
20289
  elementAttribute?: {
20114
- [k: string]: number | boolean | string;
20290
+ [k: string]: boolean | number | string;
20115
20291
  };
20116
20292
  /**
20117
20293
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -20311,7 +20487,7 @@ export interface ElementFindingFields12 {
20311
20487
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
20312
20488
  */
20313
20489
  elementAttribute?: {
20314
- [k: string]: number | boolean | string;
20490
+ [k: string]: boolean | number | string;
20315
20491
  };
20316
20492
  /**
20317
20493
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -20366,7 +20542,7 @@ export interface ElementFindingFields13 {
20366
20542
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
20367
20543
  */
20368
20544
  elementAttribute?: {
20369
- [k: string]: number | boolean | string;
20545
+ [k: string]: boolean | number | string;
20370
20546
  };
20371
20547
  /**
20372
20548
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -20421,7 +20597,7 @@ export interface ElementFindingFields14 {
20421
20597
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
20422
20598
  */
20423
20599
  elementAttribute?: {
20424
- [k: string]: number | boolean | string;
20600
+ [k: string]: boolean | number | string;
20425
20601
  };
20426
20602
  /**
20427
20603
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -20476,7 +20652,7 @@ export interface ElementFindingFields15 {
20476
20652
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
20477
20653
  */
20478
20654
  elementAttribute?: {
20479
- [k: string]: number | boolean | string;
20655
+ [k: string]: boolean | number | string;
20480
20656
  };
20481
20657
  /**
20482
20658
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -20531,7 +20707,7 @@ export interface ElementFindingFields16 {
20531
20707
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
20532
20708
  */
20533
20709
  elementAttribute?: {
20534
- [k: string]: number | boolean | string;
20710
+ [k: string]: boolean | number | string;
20535
20711
  };
20536
20712
  /**
20537
20713
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -20586,7 +20762,7 @@ export interface ElementFindingFields17 {
20586
20762
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
20587
20763
  */
20588
20764
  elementAttribute?: {
20589
- [k: string]: number | boolean | string;
20765
+ [k: string]: boolean | number | string;
20590
20766
  };
20591
20767
  /**
20592
20768
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -20717,6 +20893,11 @@ export interface ResolvedContext {
20717
20893
  * Wall-clock duration of this context in milliseconds, covering preflight, driver startup, every step, and teardown. When the `retries` policy re-ran the context, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. Present only in test results. System-populated.
20718
20894
  */
20719
20895
  durationMs?: number;
20896
+ /**
20897
+ * When this context started, as an ISO 8601 UTC timestamp with milliseconds. When the `retries` policy re-ran the context, this is the start of the FINAL attempt — the attempt the reported `result` describes — matching `durationMs`. Absent for a context that never ran, such as one a spec-level guard skipped. Present only in test results. System-populated.
20898
+ */
20899
+ startedAt?: string;
20900
+ driver?: Driver;
20720
20901
  /**
20721
20902
  * Platform to run the test on. This is a resolved version of the `platforms` property.
20722
20903
  */
@@ -20731,6 +20912,19 @@ export interface ResolvedContext {
20731
20912
  steps?: [Step1, ...Step1[]];
20732
20913
  [k: string]: unknown;
20733
20914
  }
20915
+ /**
20916
+ * The WebDriver that drove this context's browser, as the browser session reported it. Absent when no browser ran. Present only in test results. System-populated.
20917
+ */
20918
+ export interface Driver {
20919
+ /**
20920
+ * Name of the driver, for example `chromedriver`, `geckodriver`, or `safaridriver`.
20921
+ */
20922
+ name: string;
20923
+ /**
20924
+ * Version of the driver, for example `131.0.6778.85`. Absent when the session doesn't report one, as with Safari.
20925
+ */
20926
+ version?: string;
20927
+ }
20734
20928
  /**
20735
20929
  * Browser configuration.
20736
20930
  */
@@ -20743,6 +20937,10 @@ export interface Browser4 {
20743
20937
  * Set automatically during context resolution: `true` when the author explicitly requested this browser (as opposed to it being auto-selected as the default). The runner's cross-browser fallback uses it to decide whether substituting another engine reports `PASS` (auto-selected) or `WARNING` (explicitly pinned).
20744
20938
  */
20745
20939
  explicit?: boolean;
20940
+ /**
20941
+ * The browser version the session reported, for example `131.0.6778.85`. Present only in test results, for contexts that started a browser. System-populated: an authored value is dropped during context resolution.
20942
+ */
20943
+ version?: string;
20746
20944
  /**
20747
20945
  * If `true`, runs the browser in headless mode.
20748
20946
  */
@@ -20793,9 +20991,9 @@ export interface OpenAPIDescriptionTest2 {
20793
20991
  }
20794
20992
  export interface Common21 {
20795
20993
  /**
20796
- * JSON Schema for this object.
20994
+ * JSON Schema URL for editor support. Doc Detective ignores it.
20797
20995
  */
20798
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
20996
+ $schema?: string;
20799
20997
  /**
20800
20998
  * ID of the step.
20801
20999
  */
@@ -20852,6 +21050,10 @@ export interface Common21 {
20852
21050
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
20853
21051
  */
20854
21052
  durationMs?: number;
21053
+ /**
21054
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
21055
+ */
21056
+ startedAt?: string;
20855
21057
  [k: string]: unknown;
20856
21058
  }
20857
21059
  /**
@@ -21022,6 +21224,10 @@ export interface CheckLinkDetailed3 {
21022
21224
  * Accepted status codes. If the specified URL returns a code other than what is specified here, the action fails.
21023
21225
  */
21024
21226
  statusCodes?: number | number[];
21227
+ /**
21228
+ * Time each request attempt may take, in milliseconds. If no response arrives in time, the step fails.
21229
+ */
21230
+ timeout?: number;
21025
21231
  /**
21026
21232
  * Additional HTTP headers to include in the request. Merged on top of Doc Detective's default browser-mimicking headers. Useful for sites behind bot protection or WAFs that allowlist specific headers (for example, a Cloudflare Access service token or a `Cookie` with a `cf_clearance` value).
21027
21233
  */
@@ -21035,9 +21241,9 @@ export interface RequestHeadersObject2 {
21035
21241
  }
21036
21242
  export interface Common22 {
21037
21243
  /**
21038
- * JSON Schema for this object.
21244
+ * JSON Schema URL for editor support. Doc Detective ignores it.
21039
21245
  */
21040
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
21246
+ $schema?: string;
21041
21247
  /**
21042
21248
  * ID of the step.
21043
21249
  */
@@ -21094,6 +21300,10 @@ export interface Common22 {
21094
21300
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
21095
21301
  */
21096
21302
  durationMs?: number;
21303
+ /**
21304
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
21305
+ */
21306
+ startedAt?: string;
21097
21307
  [k: string]: unknown;
21098
21308
  }
21099
21309
  /**
@@ -21313,9 +21523,9 @@ export interface ByCriteria41 {
21313
21523
  }
21314
21524
  export interface Common23 {
21315
21525
  /**
21316
- * JSON Schema for this object.
21526
+ * JSON Schema URL for editor support. Doc Detective ignores it.
21317
21527
  */
21318
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
21528
+ $schema?: string;
21319
21529
  /**
21320
21530
  * ID of the step.
21321
21531
  */
@@ -21372,6 +21582,10 @@ export interface Common23 {
21372
21582
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
21373
21583
  */
21374
21584
  durationMs?: number;
21585
+ /**
21586
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
21587
+ */
21588
+ startedAt?: string;
21375
21589
  [k: string]: unknown;
21376
21590
  }
21377
21591
  /**
@@ -21792,9 +22006,9 @@ export interface ABrowserEngineStringSurfaceTakesBrowserReadiness2 {
21792
22006
  }
21793
22007
  export interface Common24 {
21794
22008
  /**
21795
- * JSON Schema for this object.
22009
+ * JSON Schema URL for editor support. Doc Detective ignores it.
21796
22010
  */
21797
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
22011
+ $schema?: string;
21798
22012
  /**
21799
22013
  * ID of the step.
21800
22014
  */
@@ -21851,6 +22065,10 @@ export interface Common24 {
21851
22065
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
21852
22066
  */
21853
22067
  durationMs?: number;
22068
+ /**
22069
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
22070
+ */
22071
+ startedAt?: string;
21854
22072
  [k: string]: unknown;
21855
22073
  }
21856
22074
  /**
@@ -22058,9 +22276,9 @@ export interface NewWindowConflictsWithASurfaceWindowOrTabSelector1 {
22058
22276
  }
22059
22277
  export interface Common25 {
22060
22278
  /**
22061
- * JSON Schema for this object.
22279
+ * JSON Schema URL for editor support. Doc Detective ignores it.
22062
22280
  */
22063
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
22281
+ $schema?: string;
22064
22282
  /**
22065
22283
  * ID of the step.
22066
22284
  */
@@ -22117,6 +22335,10 @@ export interface Common25 {
22117
22335
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
22118
22336
  */
22119
22337
  durationMs?: number;
22338
+ /**
22339
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
22340
+ */
22341
+ startedAt?: string;
22120
22342
  [k: string]: unknown;
22121
22343
  }
22122
22344
  /**
@@ -22340,9 +22562,9 @@ export interface ResponseBodyObject1 {
22340
22562
  }
22341
22563
  export interface Common26 {
22342
22564
  /**
22343
- * JSON Schema for this object.
22565
+ * JSON Schema URL for editor support. Doc Detective ignores it.
22344
22566
  */
22345
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
22567
+ $schema?: string;
22346
22568
  /**
22347
22569
  * ID of the step.
22348
22570
  */
@@ -22399,6 +22621,10 @@ export interface Common26 {
22399
22621
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
22400
22622
  */
22401
22623
  durationMs?: number;
22624
+ /**
22625
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
22626
+ */
22627
+ startedAt?: string;
22402
22628
  [k: string]: unknown;
22403
22629
  }
22404
22630
  /**
@@ -22623,16 +22849,25 @@ export interface RunShellCommandDetailed1 {
22623
22849
  delayMs?: number;
22624
22850
  };
22625
22851
  /**
22626
- * Run the process in a pseudo-terminal (PTY) instead of a pipe, so full-screen/interactive TUIs (those that check `isTTY`) render and accept keystrokes. Requires the PTY backend `@homebridge/node-pty-prebuilt-multiarch` to be installed (`npm install @homebridge/node-pty-prebuilt-multiarch`); it is not bundled, and if it is unavailable the step is skipped. `stdout` and `stderr` are merged into one stream in PTY mode. PTY output includes raw ANSI escape sequences (colors, cursor movement); `waitUntil.stdio` patterns should target text that renders without interleaved control codes, or use a regex that tolerates them.
22852
+ * Run the process in a pseudo-terminal (PTY) instead of a pipe, so full-screen/interactive TUIs (those that check `isTTY`) render and accept keystrokes. `true` or `{}` uses a terminal 120 columns wide by 30 rows tall. An object with `cols` and `rows` sets the size, for TUIs whose layout depends on the width. Requires the PTY backend `@homebridge/node-pty-prebuilt-multiarch` to be installed (`npm install @homebridge/node-pty-prebuilt-multiarch`); it is not bundled, and if it is unavailable the step is skipped. `stdout` and `stderr` are merged into one stream in PTY mode. PTY output includes raw ANSI escape sequences (colors, cursor movement); `waitUntil.stdio` patterns should target text that renders without interleaved control codes, or use a regex that tolerates them.
22627
22853
  */
22628
- tty?: boolean;
22854
+ tty?: boolean | {
22855
+ /**
22856
+ * Terminal width in columns (what the process reads as `process.stdout.columns`).
22857
+ */
22858
+ cols?: number;
22859
+ /**
22860
+ * Terminal height in rows (what the process reads as `process.stdout.rows`).
22861
+ */
22862
+ rows?: number;
22863
+ };
22629
22864
  };
22630
22865
  }
22631
22866
  export interface Common27 {
22632
22867
  /**
22633
- * JSON Schema for this object.
22868
+ * JSON Schema URL for editor support. Doc Detective ignores it.
22634
22869
  */
22635
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
22870
+ $schema?: string;
22636
22871
  /**
22637
22872
  * ID of the step.
22638
22873
  */
@@ -22689,6 +22924,10 @@ export interface Common27 {
22689
22924
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
22690
22925
  */
22691
22926
  durationMs?: number;
22927
+ /**
22928
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
22929
+ */
22930
+ startedAt?: string;
22692
22931
  [k: string]: unknown;
22693
22932
  }
22694
22933
  /**
@@ -22913,17 +23152,26 @@ export interface RunCodeDetailed1 {
22913
23152
  delayMs?: number;
22914
23153
  };
22915
23154
  /**
22916
- * Run the process in a pseudo-terminal (PTY) instead of a pipe, so full-screen/interactive TUIs (those that check `isTTY`) render and accept keystrokes. Requires the PTY backend `@homebridge/node-pty-prebuilt-multiarch` to be installed (`npm install @homebridge/node-pty-prebuilt-multiarch`); it is not bundled, and if it is unavailable the step is skipped. `stdout` and `stderr` are merged into one stream in PTY mode. PTY output includes raw ANSI escape sequences (colors, cursor movement); `waitUntil.stdio` patterns should target text that renders without interleaved control codes, or use a regex that tolerates them.
23155
+ * Run the process in a pseudo-terminal (PTY) instead of a pipe, so full-screen/interactive TUIs (those that check `isTTY`) render and accept keystrokes. `true` or `{}` uses a terminal 120 columns wide by 30 rows tall. An object with `cols` and `rows` sets the size, for TUIs whose layout depends on the width. Requires the PTY backend `@homebridge/node-pty-prebuilt-multiarch` to be installed (`npm install @homebridge/node-pty-prebuilt-multiarch`); it is not bundled, and if it is unavailable the step is skipped. `stdout` and `stderr` are merged into one stream in PTY mode. PTY output includes raw ANSI escape sequences (colors, cursor movement); `waitUntil.stdio` patterns should target text that renders without interleaved control codes, or use a regex that tolerates them.
22917
23156
  */
22918
- tty?: boolean;
23157
+ tty?: boolean | {
23158
+ /**
23159
+ * Terminal width in columns (what the process reads as `process.stdout.columns`).
23160
+ */
23161
+ cols?: number;
23162
+ /**
23163
+ * Terminal height in rows (what the process reads as `process.stdout.rows`).
23164
+ */
23165
+ rows?: number;
23166
+ };
22919
23167
  };
22920
23168
  [k: string]: unknown;
22921
23169
  }
22922
23170
  export interface Common28 {
22923
23171
  /**
22924
- * JSON Schema for this object.
23172
+ * JSON Schema URL for editor support. Doc Detective ignores it.
22925
23173
  */
22926
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
23174
+ $schema?: string;
22927
23175
  /**
22928
23176
  * ID of the step.
22929
23177
  */
@@ -22980,6 +23228,10 @@ export interface Common28 {
22980
23228
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
22981
23229
  */
22982
23230
  durationMs?: number;
23231
+ /**
23232
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
23233
+ */
23234
+ startedAt?: string;
22983
23235
  [k: string]: unknown;
22984
23236
  }
22985
23237
  /**
@@ -23217,9 +23469,9 @@ export interface ByCriteria54 {
23217
23469
  }
23218
23470
  export interface Common29 {
23219
23471
  /**
23220
- * JSON Schema for this object.
23472
+ * JSON Schema URL for editor support. Doc Detective ignores it.
23221
23473
  */
23222
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
23474
+ $schema?: string;
23223
23475
  /**
23224
23476
  * ID of the step.
23225
23477
  */
@@ -23276,6 +23528,10 @@ export interface Common29 {
23276
23528
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
23277
23529
  */
23278
23530
  durationMs?: number;
23531
+ /**
23532
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
23533
+ */
23534
+ startedAt?: string;
23279
23535
  [k: string]: unknown;
23280
23536
  }
23281
23537
  /**
@@ -23547,9 +23803,9 @@ export interface ABrowserEngineStringSurfaceTakesBrowserReadiness3 {
23547
23803
  }
23548
23804
  export interface Common30 {
23549
23805
  /**
23550
- * JSON Schema for this object.
23806
+ * JSON Schema URL for editor support. Doc Detective ignores it.
23551
23807
  */
23552
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
23808
+ $schema?: string;
23553
23809
  /**
23554
23810
  * ID of the step.
23555
23811
  */
@@ -23606,6 +23862,10 @@ export interface Common30 {
23606
23862
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
23607
23863
  */
23608
23864
  durationMs?: number;
23865
+ /**
23866
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
23867
+ */
23868
+ startedAt?: string;
23609
23869
  [k: string]: unknown;
23610
23870
  }
23611
23871
  /**
@@ -23935,7 +24195,7 @@ export interface ElementFindingFields18 {
23935
24195
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
23936
24196
  */
23937
24197
  elementAttribute?: {
23938
- [k: string]: number | boolean | string;
24198
+ [k: string]: boolean | number | string;
23939
24199
  };
23940
24200
  /**
23941
24201
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -23990,7 +24250,7 @@ export interface ElementFindingFields19 {
23990
24250
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
23991
24251
  */
23992
24252
  elementAttribute?: {
23993
- [k: string]: number | boolean | string;
24253
+ [k: string]: boolean | number | string;
23994
24254
  };
23995
24255
  /**
23996
24256
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -24045,7 +24305,7 @@ export interface ElementFindingFields20 {
24045
24305
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
24046
24306
  */
24047
24307
  elementAttribute?: {
24048
- [k: string]: number | boolean | string;
24308
+ [k: string]: boolean | number | string;
24049
24309
  };
24050
24310
  /**
24051
24311
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -24100,7 +24360,7 @@ export interface ElementFindingFields21 {
24100
24360
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
24101
24361
  */
24102
24362
  elementAttribute?: {
24103
- [k: string]: number | boolean | string;
24363
+ [k: string]: boolean | number | string;
24104
24364
  };
24105
24365
  /**
24106
24366
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -24155,7 +24415,7 @@ export interface ElementFindingFields22 {
24155
24415
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
24156
24416
  */
24157
24417
  elementAttribute?: {
24158
- [k: string]: number | boolean | string;
24418
+ [k: string]: boolean | number | string;
24159
24419
  };
24160
24420
  /**
24161
24421
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -24210,7 +24470,7 @@ export interface ElementFindingFields23 {
24210
24470
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
24211
24471
  */
24212
24472
  elementAttribute?: {
24213
- [k: string]: number | boolean | string;
24473
+ [k: string]: boolean | number | string;
24214
24474
  };
24215
24475
  /**
24216
24476
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -24363,9 +24623,9 @@ export interface AppCapturesDonTSupportCropYet1 {
24363
24623
  }
24364
24624
  export interface Common31 {
24365
24625
  /**
24366
- * JSON Schema for this object.
24626
+ * JSON Schema URL for editor support. Doc Detective ignores it.
24367
24627
  */
24368
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
24628
+ $schema?: string;
24369
24629
  /**
24370
24630
  * ID of the step.
24371
24631
  */
@@ -24422,6 +24682,10 @@ export interface Common31 {
24422
24682
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
24423
24683
  */
24424
24684
  durationMs?: number;
24685
+ /**
24686
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
24687
+ */
24688
+ startedAt?: string;
24425
24689
  [k: string]: unknown;
24426
24690
  }
24427
24691
  /**
@@ -24572,9 +24836,9 @@ export interface SaveCookie2 {
24572
24836
  }
24573
24837
  export interface Common32 {
24574
24838
  /**
24575
- * JSON Schema for this object.
24839
+ * JSON Schema URL for editor support. Doc Detective ignores it.
24576
24840
  */
24577
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
24841
+ $schema?: string;
24578
24842
  /**
24579
24843
  * ID of the step.
24580
24844
  */
@@ -24631,6 +24895,10 @@ export interface Common32 {
24631
24895
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
24632
24896
  */
24633
24897
  durationMs?: number;
24898
+ /**
24899
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
24900
+ */
24901
+ startedAt?: string;
24634
24902
  [k: string]: unknown;
24635
24903
  }
24636
24904
  /**
@@ -24925,9 +25193,9 @@ export interface RecordingCheckpointsDetailed1 {
24925
25193
  }
24926
25194
  export interface Common33 {
24927
25195
  /**
24928
- * JSON Schema for this object.
25196
+ * JSON Schema URL for editor support. Doc Detective ignores it.
24929
25197
  */
24930
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
25198
+ $schema?: string;
24931
25199
  /**
24932
25200
  * ID of the step.
24933
25201
  */
@@ -24984,6 +25252,10 @@ export interface Common33 {
24984
25252
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
24985
25253
  */
24986
25254
  durationMs?: number;
25255
+ /**
25256
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
25257
+ */
25258
+ startedAt?: string;
24987
25259
  [k: string]: unknown;
24988
25260
  }
24989
25261
  /**
@@ -25140,9 +25412,9 @@ export interface StopRecordDetailed1 {
25140
25412
  }
25141
25413
  export interface Common34 {
25142
25414
  /**
25143
- * JSON Schema for this object.
25415
+ * JSON Schema URL for editor support. Doc Detective ignores it.
25144
25416
  */
25145
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
25417
+ $schema?: string;
25146
25418
  /**
25147
25419
  * ID of the step.
25148
25420
  */
@@ -25199,6 +25471,10 @@ export interface Common34 {
25199
25471
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
25200
25472
  */
25201
25473
  durationMs?: number;
25474
+ /**
25475
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
25476
+ */
25477
+ startedAt?: string;
25202
25478
  [k: string]: unknown;
25203
25479
  }
25204
25480
  /**
@@ -25499,9 +25775,9 @@ export interface ByCriteria69 {
25499
25775
  }
25500
25776
  export interface Common35 {
25501
25777
  /**
25502
- * JSON Schema for this object.
25778
+ * JSON Schema URL for editor support. Doc Detective ignores it.
25503
25779
  */
25504
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
25780
+ $schema?: string;
25505
25781
  /**
25506
25782
  * ID of the step.
25507
25783
  */
@@ -25558,6 +25834,10 @@ export interface Common35 {
25558
25834
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
25559
25835
  */
25560
25836
  durationMs?: number;
25837
+ /**
25838
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
25839
+ */
25840
+ startedAt?: string;
25561
25841
  [k: string]: unknown;
25562
25842
  }
25563
25843
  /**
@@ -25867,9 +26147,18 @@ export interface ProcessDescriptor2 {
25867
26147
  */
25868
26148
  workingDirectory?: string;
25869
26149
  /**
25870
- * Run the process in a pseudo-terminal (PTY) instead of a pipe, so full-screen/interactive TUIs (those that check `isTTY`) render and accept keystrokes. Requires the PTY backend `@homebridge/node-pty-prebuilt-multiarch` to be installed (`npm install @homebridge/node-pty-prebuilt-multiarch`); it is not bundled, and if it is unavailable the descriptor is skipped. `stdout` and `stderr` are merged into one stream in PTY mode. PTY output includes raw ANSI escape sequences (colors, cursor movement); `waitUntil.stdio` patterns should target text that renders without interleaved control codes, or use a regex that tolerates them.
26150
+ * Run the process in a pseudo-terminal (PTY) instead of a pipe, so full-screen/interactive TUIs (those that check `isTTY`) render and accept keystrokes. `true` or `{}` uses a terminal 120 columns wide by 30 rows tall. An object with `cols` and `rows` sets the size, for TUIs whose layout depends on the width. Requires the PTY backend `@homebridge/node-pty-prebuilt-multiarch` to be installed (`npm install @homebridge/node-pty-prebuilt-multiarch`); it is not bundled, and if it is unavailable the descriptor is skipped. `stdout` and `stderr` are merged into one stream in PTY mode. PTY output includes raw ANSI escape sequences (colors, cursor movement); `waitUntil.stdio` patterns should target text that renders without interleaved control codes, or use a regex that tolerates them.
25871
26151
  */
25872
- tty?: boolean;
26152
+ tty?: boolean | {
26153
+ /**
26154
+ * Terminal width in columns (what the process reads as `process.stdout.columns`).
26155
+ */
26156
+ cols?: number;
26157
+ /**
26158
+ * Terminal height in rows (what the process reads as `process.stdout.rows`).
26159
+ */
26160
+ rows?: number;
26161
+ };
25873
26162
  /**
25874
26163
  * Conditions that must all be met before the process is considered ready and the descriptor completes. Omit to consider the process ready as soon as it is spawned. Specify any combination; every condition given must pass before `timeout` elapses. Note: a process that forks a daemon and then exits (common for some Docker images and databases) is treated as having exited before becoming ready and the descriptor fails — use `port`, `httpGet`, or `delayMs` for those rather than a condition that depends on the foreground process staying alive.
25875
26164
  */
@@ -26057,9 +26346,18 @@ export interface ProcessDescriptor3 {
26057
26346
  */
26058
26347
  workingDirectory?: string;
26059
26348
  /**
26060
- * Run the process in a pseudo-terminal (PTY) instead of a pipe, so full-screen/interactive TUIs (those that check `isTTY`) render and accept keystrokes. Requires the PTY backend `@homebridge/node-pty-prebuilt-multiarch` to be installed (`npm install @homebridge/node-pty-prebuilt-multiarch`); it is not bundled, and if it is unavailable the descriptor is skipped. `stdout` and `stderr` are merged into one stream in PTY mode. PTY output includes raw ANSI escape sequences (colors, cursor movement); `waitUntil.stdio` patterns should target text that renders without interleaved control codes, or use a regex that tolerates them.
26349
+ * Run the process in a pseudo-terminal (PTY) instead of a pipe, so full-screen/interactive TUIs (those that check `isTTY`) render and accept keystrokes. `true` or `{}` uses a terminal 120 columns wide by 30 rows tall. An object with `cols` and `rows` sets the size, for TUIs whose layout depends on the width. Requires the PTY backend `@homebridge/node-pty-prebuilt-multiarch` to be installed (`npm install @homebridge/node-pty-prebuilt-multiarch`); it is not bundled, and if it is unavailable the descriptor is skipped. `stdout` and `stderr` are merged into one stream in PTY mode. PTY output includes raw ANSI escape sequences (colors, cursor movement); `waitUntil.stdio` patterns should target text that renders without interleaved control codes, or use a regex that tolerates them.
26061
26350
  */
26062
- tty?: boolean;
26351
+ tty?: boolean | {
26352
+ /**
26353
+ * Terminal width in columns (what the process reads as `process.stdout.columns`).
26354
+ */
26355
+ cols?: number;
26356
+ /**
26357
+ * Terminal height in rows (what the process reads as `process.stdout.rows`).
26358
+ */
26359
+ rows?: number;
26360
+ };
26063
26361
  /**
26064
26362
  * Conditions that must all be met before the process is considered ready and the descriptor completes. Omit to consider the process ready as soon as it is spawned. Specify any combination; every condition given must pass before `timeout` elapses. Note: a process that forks a daemon and then exits (common for some Docker images and databases) is treated as having exited before becoming ready and the descriptor fails — use `port`, `httpGet`, or `delayMs` for those rather than a condition that depends on the foreground process staying alive.
26065
26363
  */
@@ -26088,9 +26386,9 @@ export interface ProcessDescriptor3 {
26088
26386
  }
26089
26387
  export interface Common36 {
26090
26388
  /**
26091
- * JSON Schema for this object.
26389
+ * JSON Schema URL for editor support. Doc Detective ignores it.
26092
26390
  */
26093
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
26391
+ $schema?: string;
26094
26392
  /**
26095
26393
  * ID of the step.
26096
26394
  */
@@ -26147,6 +26445,10 @@ export interface Common36 {
26147
26445
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
26148
26446
  */
26149
26447
  durationMs?: number;
26448
+ /**
26449
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
26450
+ */
26451
+ startedAt?: string;
26150
26452
  [k: string]: unknown;
26151
26453
  }
26152
26454
  /**
@@ -26297,9 +26599,9 @@ export interface LoadVariables2 {
26297
26599
  }
26298
26600
  export interface Common37 {
26299
26601
  /**
26300
- * JSON Schema for this object.
26602
+ * JSON Schema URL for editor support. Doc Detective ignores it.
26301
26603
  */
26302
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
26604
+ $schema?: string;
26303
26605
  /**
26304
26606
  * ID of the step.
26305
26607
  */
@@ -26356,6 +26658,10 @@ export interface Common37 {
26356
26658
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
26357
26659
  */
26358
26660
  durationMs?: number;
26661
+ /**
26662
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
26663
+ */
26664
+ startedAt?: string;
26359
26665
  [k: string]: unknown;
26360
26666
  }
26361
26667
  /**
@@ -26576,9 +26882,9 @@ export interface ByCriteria71 {
26576
26882
  }
26577
26883
  export interface Common38 {
26578
26884
  /**
26579
- * JSON Schema for this object.
26885
+ * JSON Schema URL for editor support. Doc Detective ignores it.
26580
26886
  */
26581
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
26887
+ $schema?: string;
26582
26888
  /**
26583
26889
  * ID of the step.
26584
26890
  */
@@ -26635,6 +26941,10 @@ export interface Common38 {
26635
26941
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
26636
26942
  */
26637
26943
  durationMs?: number;
26944
+ /**
26945
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
26946
+ */
26947
+ startedAt?: string;
26638
26948
  [k: string]: unknown;
26639
26949
  }
26640
26950
  /**
@@ -26785,9 +27095,9 @@ export interface LoadCookie2 {
26785
27095
  }
26786
27096
  export interface Common39 {
26787
27097
  /**
26788
- * JSON Schema for this object.
27098
+ * JSON Schema URL for editor support. Doc Detective ignores it.
26789
27099
  */
26790
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
27100
+ $schema?: string;
26791
27101
  /**
26792
27102
  * ID of the step.
26793
27103
  */
@@ -26844,6 +27154,10 @@ export interface Common39 {
26844
27154
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
26845
27155
  */
26846
27156
  durationMs?: number;
27157
+ /**
27158
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
27159
+ */
27160
+ startedAt?: string;
26847
27161
  [k: string]: unknown;
26848
27162
  }
26849
27163
  /**
@@ -27185,9 +27499,9 @@ export interface ByCriteria77 {
27185
27499
  }
27186
27500
  export interface Common40 {
27187
27501
  /**
27188
- * JSON Schema for this object.
27502
+ * JSON Schema URL for editor support. Doc Detective ignores it.
27189
27503
  */
27190
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
27504
+ $schema?: string;
27191
27505
  /**
27192
27506
  * ID of the step.
27193
27507
  */
@@ -27244,6 +27558,10 @@ export interface Common40 {
27244
27558
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
27245
27559
  */
27246
27560
  durationMs?: number;
27561
+ /**
27562
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
27563
+ */
27564
+ startedAt?: string;
27247
27565
  [k: string]: unknown;
27248
27566
  }
27249
27567
  /**
@@ -27394,9 +27712,9 @@ export interface Wait2 {
27394
27712
  }
27395
27713
  export interface Common41 {
27396
27714
  /**
27397
- * JSON Schema for this object.
27715
+ * JSON Schema URL for editor support. Doc Detective ignores it.
27398
27716
  */
27399
- $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
27717
+ $schema?: string;
27400
27718
  /**
27401
27719
  * ID of the step.
27402
27720
  */
@@ -27453,6 +27771,10 @@ export interface Common41 {
27453
27771
  * Wall-clock duration of this step in milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's elapsed time — the attempt the reported `result` describes — not the sum across attempts. A step that was skipped or never executed reports `0`. Distinct from the `duration` input that some actions accept (for example a `click`'s press duration). Present only in test results; system-populated.
27454
27772
  */
27455
27773
  durationMs?: number;
27774
+ /**
27775
+ * When this step started, as an ISO 8601 UTC timestamp with milliseconds. When a routing `retry` action re-ran the step, this is the FINAL attempt's start, matching `durationMs`. Absent for a step that was skipped or never executed. Present only in test results; system-populated.
27776
+ */
27777
+ startedAt?: string;
27456
27778
  [k: string]: unknown;
27457
27779
  }
27458
27780
  /**
@@ -27692,7 +28014,7 @@ export interface ElementFindingFields24 {
27692
28014
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
27693
28015
  */
27694
28016
  elementAttribute?: {
27695
- [k: string]: number | boolean | string;
28017
+ [k: string]: boolean | number | string;
27696
28018
  };
27697
28019
  /**
27698
28020
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -27747,7 +28069,7 @@ export interface ElementFindingFields25 {
27747
28069
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
27748
28070
  */
27749
28071
  elementAttribute?: {
27750
- [k: string]: number | boolean | string;
28072
+ [k: string]: boolean | number | string;
27751
28073
  };
27752
28074
  /**
27753
28075
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -27802,7 +28124,7 @@ export interface ElementFindingFields26 {
27802
28124
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
27803
28125
  */
27804
28126
  elementAttribute?: {
27805
- [k: string]: number | boolean | string;
28127
+ [k: string]: boolean | number | string;
27806
28128
  };
27807
28129
  /**
27808
28130
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -27857,7 +28179,7 @@ export interface ElementFindingFields27 {
27857
28179
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
27858
28180
  */
27859
28181
  elementAttribute?: {
27860
- [k: string]: number | boolean | string;
28182
+ [k: string]: boolean | number | string;
27861
28183
  };
27862
28184
  /**
27863
28185
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -27912,7 +28234,7 @@ export interface ElementFindingFields28 {
27912
28234
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
27913
28235
  */
27914
28236
  elementAttribute?: {
27915
- [k: string]: number | boolean | string;
28237
+ [k: string]: boolean | number | string;
27916
28238
  };
27917
28239
  /**
27918
28240
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -27967,7 +28289,7 @@ export interface ElementFindingFields29 {
27967
28289
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
27968
28290
  */
27969
28291
  elementAttribute?: {
27970
- [k: string]: number | boolean | string;
28292
+ [k: string]: boolean | number | string;
27971
28293
  };
27972
28294
  /**
27973
28295
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -28167,7 +28489,7 @@ export interface ElementFindingFields30 {
28167
28489
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
28168
28490
  */
28169
28491
  elementAttribute?: {
28170
- [k: string]: number | boolean | string;
28492
+ [k: string]: boolean | number | string;
28171
28493
  };
28172
28494
  /**
28173
28495
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -28222,7 +28544,7 @@ export interface ElementFindingFields31 {
28222
28544
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
28223
28545
  */
28224
28546
  elementAttribute?: {
28225
- [k: string]: number | boolean | string;
28547
+ [k: string]: boolean | number | string;
28226
28548
  };
28227
28549
  /**
28228
28550
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -28277,7 +28599,7 @@ export interface ElementFindingFields32 {
28277
28599
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
28278
28600
  */
28279
28601
  elementAttribute?: {
28280
- [k: string]: number | boolean | string;
28602
+ [k: string]: boolean | number | string;
28281
28603
  };
28282
28604
  /**
28283
28605
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -28332,7 +28654,7 @@ export interface ElementFindingFields33 {
28332
28654
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
28333
28655
  */
28334
28656
  elementAttribute?: {
28335
- [k: string]: number | boolean | string;
28657
+ [k: string]: boolean | number | string;
28336
28658
  };
28337
28659
  /**
28338
28660
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -28387,7 +28709,7 @@ export interface ElementFindingFields34 {
28387
28709
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
28388
28710
  */
28389
28711
  elementAttribute?: {
28390
- [k: string]: number | boolean | string;
28712
+ [k: string]: boolean | number | string;
28391
28713
  };
28392
28714
  /**
28393
28715
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.
@@ -28442,7 +28764,7 @@ export interface ElementFindingFields35 {
28442
28764
  * Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.
28443
28765
  */
28444
28766
  elementAttribute?: {
28445
- [k: string]: number | boolean | string;
28767
+ [k: string]: boolean | number | string;
28446
28768
  };
28447
28769
  /**
28448
28770
  * Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax.