doc-detective-common 4.23.0 → 4.25.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.
@@ -5,7 +5,7 @@
5
5
  /**
6
6
  * A step in a test.
7
7
  */
8
- export type Step = (Common & CheckLink) | (Common1 & Click) | (Common2 & Find) | (Common3 & GoTo) | (Common4 & HttpRequest) | (Common5 & RunShell) | (Common6 & RunCode) | (Common7 & RunBrowserScript) | (Common8 & Type) | (Common9 & Screenshot) | (Common10 & SaveCookie) | (Common11 & Record) | (Common12 & StopRecord) | (Common13 & CloseSurface) | (Common14 & StartSurface) | (Common15 & LoadVariables) | (Common16 & DragAndDrop) | (Common17 & LoadCookie) | (Common18 & Wait);
8
+ export type Step = (Common & CheckLink) | (Common1 & Click) | (Common2 & Find) | (Common3 & GoTo) | (Common4 & HttpRequest) | (Common5 & RunShell) | (Common6 & RunCode) | (Common7 & RunBrowserScript) | (Common8 & Type) | (Common9 & Screenshot) | (Common10 & SaveCookie) | (Common11 & Record) | (Common12 & StopRecord) | (Common13 & CloseSurface) | (Common14 & StartSurface) | (Common15 & LoadVariables) | (Common16 & DragAndDrop) | (Common17 & LoadCookie) | (Common18 & Swipe) | (Common19 & Wait);
9
9
  /**
10
10
  * A condition expression, or an array of expressions combined with logical AND.
11
11
  */
@@ -775,7 +775,7 @@ export type Routing47 = {
775
775
  [k: string]: unknown;
776
776
  };
777
777
  /**
778
- * 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. Supported extensions: [ '.mp4', '.webm', '.gif' ]
778
+ * 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' ]
779
779
  */
780
780
  export type Record1 = RecordSimple | RecordDetailed | RecordBoolean;
781
781
  /**
@@ -810,6 +810,18 @@ export type ByIndex11 = number;
810
810
  * Name assigned when the window/tab was opened (goTo `newTab`/`newWindow`). The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings.
811
811
  */
812
812
  export type ByName11 = string;
813
+ /**
814
+ * Which app window to act on. Omit to use the active window. Apps have windows, no tabs.
815
+ */
816
+ export type AppWindowSelector2 = ByIndex12 | ByName12 | ByCriteria12;
817
+ /**
818
+ * Index in creation order. Negative counts from the end; `-1` is the newest (e.g. a dialog the app just opened).
819
+ */
820
+ export type ByIndex12 = number;
821
+ /**
822
+ * Assigned window name. The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings.
823
+ */
824
+ export type ByName12 = string;
813
825
  /**
814
826
  * Recording engine to use. Either a string shorthand selecting the engine with defaults, or an object for full control. If unset, defaults to the `browser` engine when a visible Chrome context is available and to `ffmpeg` otherwise.
815
827
  */
@@ -819,7 +831,7 @@ export type RecordingEngine = RecordingEngineSimple | RecordingEngineDetailed;
819
831
  */
820
832
  export type RecordingEngineSimple = "browser" | "ffmpeg";
821
833
  /**
822
- * If `true`, starts recording — auto-selecting the `browser` engine for a visible Chrome context and the `ffmpeg` engine otherwise. If `false`, doesn't record.
834
+ * 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.
823
835
  */
824
836
  export type RecordBoolean = boolean;
825
837
  /**
@@ -909,7 +921,7 @@ export type CloseSurface1 = Surface1 | [Surface2, ...Surface2[]];
909
921
  /**
910
922
  * The surface a step acts on. Omit to act on the active surface. Supports background processes, browser windows/tabs, and native app windows.
911
923
  */
912
- export type Surface1 = SurfaceByName1 | ProcessSurface1 | BrowserSurface5 | AppSurface2;
924
+ export type Surface1 = SurfaceByName1 | ProcessSurface1 | BrowserSurface5 | AppSurface3;
913
925
  /**
914
926
  * Name of the surface. A browser engine keyword (chrome|firefox|safari|webkit|edge) targets that browser; any other string names a background process. To target a browser window or tab, use the object form ({ "browser": …, "window": …, "tab": … }) — a plain string is never a window/tab name.
915
927
  */
@@ -917,43 +929,43 @@ export type SurfaceByName1 = string;
917
929
  /**
918
930
  * Which window to act on. Omit to use the active window.
919
931
  */
920
- export type WindowTabSelector10 = ByIndex12 | ByName12 | ByCriteria12;
932
+ export type WindowTabSelector10 = ByIndex13 | ByName13 | ByCriteria13;
921
933
  /**
922
934
  * Index in creation order. Negative counts from the end; `-1` is the newest.
923
935
  */
924
- export type ByIndex12 = number;
936
+ export type ByIndex13 = number;
925
937
  /**
926
938
  * Name assigned when the window/tab was opened (goTo `newTab`/`newWindow`). The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings.
927
939
  */
928
- export type ByName12 = string;
940
+ export type ByName13 = string;
929
941
  /**
930
942
  * Which tab to act on. Omit to use the active tab. Without `window`, the selector searches every tab in creation order — including tabs the page opened itself.
931
943
  */
932
- export type WindowTabSelector11 = ByIndex13 | ByName13 | ByCriteria13;
944
+ export type WindowTabSelector11 = ByIndex14 | ByName14 | ByCriteria14;
933
945
  /**
934
946
  * Index in creation order. Negative counts from the end; `-1` is the newest.
935
947
  */
936
- export type ByIndex13 = number;
948
+ export type ByIndex14 = number;
937
949
  /**
938
950
  * Name assigned when the window/tab was opened (goTo `newTab`/`newWindow`). The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings.
939
951
  */
940
- export type ByName13 = string;
952
+ export type ByName14 = string;
941
953
  /**
942
954
  * Which app window to act on. Omit to use the active window. Apps have windows, no tabs.
943
955
  */
944
- export type AppWindowSelector2 = ByIndex14 | ByName14 | ByCriteria14;
956
+ export type AppWindowSelector3 = ByIndex15 | ByName15 | ByCriteria15;
945
957
  /**
946
958
  * Index in creation order. Negative counts from the end; `-1` is the newest (e.g. a dialog the app just opened).
947
959
  */
948
- export type ByIndex14 = number;
960
+ export type ByIndex15 = number;
949
961
  /**
950
962
  * Assigned window name. The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings.
951
963
  */
952
- export type ByName14 = string;
964
+ export type ByName15 = string;
953
965
  /**
954
966
  * The surface a step acts on. Omit to act on the active surface. Supports background processes, browser windows/tabs, and native app windows.
955
967
  */
956
- export type Surface2 = SurfaceByName2 | ProcessSurface2 | BrowserSurface6 | AppSurface3;
968
+ export type Surface2 = SurfaceByName2 | ProcessSurface2 | BrowserSurface6 | AppSurface4;
957
969
  /**
958
970
  * Name of the surface. A browser engine keyword (chrome|firefox|safari|webkit|edge) targets that browser; any other string names a background process. To target a browser window or tab, use the object form ({ "browser": …, "window": …, "tab": … }) — a plain string is never a window/tab name.
959
971
  */
@@ -961,39 +973,39 @@ export type SurfaceByName2 = string;
961
973
  /**
962
974
  * Which window to act on. Omit to use the active window.
963
975
  */
964
- export type WindowTabSelector12 = ByIndex15 | ByName15 | ByCriteria15;
976
+ export type WindowTabSelector12 = ByIndex16 | ByName16 | ByCriteria16;
965
977
  /**
966
978
  * Index in creation order. Negative counts from the end; `-1` is the newest.
967
979
  */
968
- export type ByIndex15 = number;
980
+ export type ByIndex16 = number;
969
981
  /**
970
982
  * Name assigned when the window/tab was opened (goTo `newTab`/`newWindow`). The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings.
971
983
  */
972
- export type ByName15 = string;
984
+ export type ByName16 = string;
973
985
  /**
974
986
  * Which tab to act on. Omit to use the active tab. Without `window`, the selector searches every tab in creation order — including tabs the page opened itself.
975
987
  */
976
- export type WindowTabSelector13 = ByIndex16 | ByName16 | ByCriteria16;
988
+ export type WindowTabSelector13 = ByIndex17 | ByName17 | ByCriteria17;
977
989
  /**
978
990
  * Index in creation order. Negative counts from the end; `-1` is the newest.
979
991
  */
980
- export type ByIndex16 = number;
992
+ export type ByIndex17 = number;
981
993
  /**
982
994
  * Name assigned when the window/tab was opened (goTo `newTab`/`newWindow`). The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings.
983
995
  */
984
- export type ByName16 = string;
996
+ export type ByName17 = string;
985
997
  /**
986
998
  * Which app window to act on. Omit to use the active window. Apps have windows, no tabs.
987
999
  */
988
- export type AppWindowSelector3 = ByIndex17 | ByName17 | ByCriteria17;
1000
+ export type AppWindowSelector4 = ByIndex18 | ByName18 | ByCriteria18;
989
1001
  /**
990
1002
  * Index in creation order. Negative counts from the end; `-1` is the newest (e.g. a dialog the app just opened).
991
1003
  */
992
- export type ByIndex17 = number;
1004
+ export type ByIndex18 = number;
993
1005
  /**
994
1006
  * Assigned window name. The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings.
995
1007
  */
996
- export type ByName17 = string;
1008
+ export type ByName18 = string;
997
1009
  /**
998
1010
  * A condition expression, or an array of expressions combined with logical AND.
999
1011
  */
@@ -1122,27 +1134,27 @@ export type SurfaceByBrowserEngine4 = "chrome" | "firefox" | "safari" | "webkit"
1122
1134
  /**
1123
1135
  * Which window to act on. Omit to use the active window.
1124
1136
  */
1125
- export type WindowTabSelector14 = ByIndex18 | ByName18 | ByCriteria18;
1137
+ export type WindowTabSelector14 = ByIndex19 | ByName19 | ByCriteria19;
1126
1138
  /**
1127
1139
  * Index in creation order. Negative counts from the end; `-1` is the newest.
1128
1140
  */
1129
- export type ByIndex18 = number;
1141
+ export type ByIndex19 = number;
1130
1142
  /**
1131
1143
  * Name assigned when the window/tab was opened (goTo `newTab`/`newWindow`). The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings.
1132
1144
  */
1133
- export type ByName18 = string;
1145
+ export type ByName19 = string;
1134
1146
  /**
1135
1147
  * Which tab to act on. Omit to use the active tab. Without `window`, the selector searches every tab in creation order — including tabs the page opened itself.
1136
1148
  */
1137
- export type WindowTabSelector15 = ByIndex19 | ByName19 | ByCriteria19;
1149
+ export type WindowTabSelector15 = ByIndex20 | ByName20 | ByCriteria20;
1138
1150
  /**
1139
1151
  * Index in creation order. Negative counts from the end; `-1` is the newest.
1140
1152
  */
1141
- export type ByIndex19 = number;
1153
+ export type ByIndex20 = number;
1142
1154
  /**
1143
1155
  * Name assigned when the window/tab was opened (goTo `newTab`/`newWindow`). The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings.
1144
1156
  */
1145
- export type ByName19 = string;
1157
+ export type ByName20 = string;
1146
1158
  /**
1147
1159
  * A condition expression, or an array of expressions combined with logical AND.
1148
1160
  */
@@ -1218,6 +1230,130 @@ export type Routing74 = {
1218
1230
  export type Routing75 = {
1219
1231
  [k: string]: unknown;
1220
1232
  };
1233
+ /**
1234
+ * Swipe (or scroll) a surface in a direction or between two points. The direction is the virtual finger's motion: swiping up moves content up, revealing content further down the page. Works on app and browser surfaces.
1235
+ */
1236
+ export type Swipe1 = SwipeSimple | SwipeDirectional | SwipePointToPoint;
1237
+ /**
1238
+ * Direction the virtual finger moves. `up` reveals content below; `left` reveals content to the right (for example, the next carousel card).
1239
+ */
1240
+ export type SwipeSimple = "up" | "down" | "left" | "right";
1241
+ /**
1242
+ * Direction the virtual finger moves. `up` reveals content below; `left` reveals content to the right (for example, the next carousel card).
1243
+ */
1244
+ export type SwipeSimple1 = "up" | "down" | "left" | "right";
1245
+ /**
1246
+ * Browser engine keyword. Targets that browser. Steps that can only ever act on a browser (not a background process) restrict the bare-string form to this enum, so a process name here is rejected at validation time instead of failing at runtime.
1247
+ */
1248
+ export type SurfaceByBrowserEngine5 = "chrome" | "firefox" | "safari" | "webkit" | "edge";
1249
+ /**
1250
+ * Which window to act on. Omit to use the active window.
1251
+ */
1252
+ export type WindowTabSelector16 = ByIndex21 | ByName21 | ByCriteria21;
1253
+ /**
1254
+ * Index in creation order. Negative counts from the end; `-1` is the newest.
1255
+ */
1256
+ export type ByIndex21 = number;
1257
+ /**
1258
+ * Name assigned when the window/tab was opened (goTo `newTab`/`newWindow`). The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings.
1259
+ */
1260
+ export type ByName21 = string;
1261
+ /**
1262
+ * Which tab to act on. Omit to use the active tab. Without `window`, the selector searches every tab in creation order — including tabs the page opened itself.
1263
+ */
1264
+ export type WindowTabSelector17 = ByIndex22 | ByName22 | ByCriteria22;
1265
+ /**
1266
+ * Index in creation order. Negative counts from the end; `-1` is the newest.
1267
+ */
1268
+ export type ByIndex22 = number;
1269
+ /**
1270
+ * Name assigned when the window/tab was opened (goTo `newTab`/`newWindow`). The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings.
1271
+ */
1272
+ export type ByName22 = string;
1273
+ /**
1274
+ * Which app window to act on. Omit to use the active window. Apps have windows, no tabs.
1275
+ */
1276
+ export type AppWindowSelector5 = ByIndex23 | ByName23 | ByCriteria23;
1277
+ /**
1278
+ * Index in creation order. Negative counts from the end; `-1` is the newest (e.g. a dialog the app just opened).
1279
+ */
1280
+ export type ByIndex23 = number;
1281
+ /**
1282
+ * Assigned window name. The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings.
1283
+ */
1284
+ export type ByName23 = string;
1285
+ /**
1286
+ * Browser engine keyword. Targets that browser. Steps that can only ever act on a browser (not a background process) restrict the bare-string form to this enum, so a process name here is rejected at validation time instead of failing at runtime.
1287
+ */
1288
+ export type SurfaceByBrowserEngine6 = "chrome" | "firefox" | "safari" | "webkit" | "edge";
1289
+ /**
1290
+ * Which window to act on. Omit to use the active window.
1291
+ */
1292
+ export type WindowTabSelector18 = ByIndex24 | ByName24 | ByCriteria24;
1293
+ /**
1294
+ * Index in creation order. Negative counts from the end; `-1` is the newest.
1295
+ */
1296
+ export type ByIndex24 = number;
1297
+ /**
1298
+ * Name assigned when the window/tab was opened (goTo `newTab`/`newWindow`). The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings.
1299
+ */
1300
+ export type ByName24 = string;
1301
+ /**
1302
+ * Which tab to act on. Omit to use the active tab. Without `window`, the selector searches every tab in creation order — including tabs the page opened itself.
1303
+ */
1304
+ export type WindowTabSelector19 = ByIndex25 | ByName25 | ByCriteria25;
1305
+ /**
1306
+ * Index in creation order. Negative counts from the end; `-1` is the newest.
1307
+ */
1308
+ export type ByIndex25 = number;
1309
+ /**
1310
+ * Name assigned when the window/tab was opened (goTo `newTab`/`newWindow`). The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings.
1311
+ */
1312
+ export type ByName25 = string;
1313
+ /**
1314
+ * Which app window to act on. Omit to use the active window. Apps have windows, no tabs.
1315
+ */
1316
+ export type AppWindowSelector6 = ByIndex26 | ByName26 | ByCriteria26;
1317
+ /**
1318
+ * Index in creation order. Negative counts from the end; `-1` is the newest (e.g. a dialog the app just opened).
1319
+ */
1320
+ export type ByIndex26 = number;
1321
+ /**
1322
+ * Assigned window name. The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings.
1323
+ */
1324
+ export type ByName26 = string;
1325
+ /**
1326
+ * A condition expression, or an array of expressions combined with logical AND.
1327
+ */
1328
+ export type Condition38 = string | [string, ...string[]];
1329
+ /**
1330
+ * A condition expression, or an array of expressions combined with logical AND.
1331
+ */
1332
+ export type Condition39 = string | [string, ...string[]];
1333
+ /**
1334
+ * A single dynamic-routing entry: an optional condition (`if`) plus exactly one routing action. Attached to a step or test handler (`onPass`, `onFail`, `onWarning`, `onSkip`). For step-level handlers, `continue`, `stop`, `retry`, and `goToStep` are evaluated at runtime; `goToTest` is validated but not yet executed (deferred at step scope). For test-level handlers, `continue`, `stop`, and `goToTest` are evaluated at runtime (test scope; `goToTest` jumps to a test within the spec), while `retry` and `goToStep` are not applicable at test scope.
1335
+ */
1336
+ export type Routing76 = {
1337
+ [k: string]: unknown;
1338
+ };
1339
+ /**
1340
+ * A single dynamic-routing entry: an optional condition (`if`) plus exactly one routing action. Attached to a step or test handler (`onPass`, `onFail`, `onWarning`, `onSkip`). For step-level handlers, `continue`, `stop`, `retry`, and `goToStep` are evaluated at runtime; `goToTest` is validated but not yet executed (deferred at step scope). For test-level handlers, `continue`, `stop`, and `goToTest` are evaluated at runtime (test scope; `goToTest` jumps to a test within the spec), while `retry` and `goToStep` are not applicable at test scope.
1341
+ */
1342
+ export type Routing77 = {
1343
+ [k: string]: unknown;
1344
+ };
1345
+ /**
1346
+ * A single dynamic-routing entry: an optional condition (`if`) plus exactly one routing action. Attached to a step or test handler (`onPass`, `onFail`, `onWarning`, `onSkip`). For step-level handlers, `continue`, `stop`, `retry`, and `goToStep` are evaluated at runtime; `goToTest` is validated but not yet executed (deferred at step scope). For test-level handlers, `continue`, `stop`, and `goToTest` are evaluated at runtime (test scope; `goToTest` jumps to a test within the spec), while `retry` and `goToStep` are not applicable at test scope.
1347
+ */
1348
+ export type Routing78 = {
1349
+ [k: string]: unknown;
1350
+ };
1351
+ /**
1352
+ * A single dynamic-routing entry: an optional condition (`if`) plus exactly one routing action. Attached to a step or test handler (`onPass`, `onFail`, `onWarning`, `onSkip`). For step-level handlers, `continue`, `stop`, `retry`, and `goToStep` are evaluated at runtime; `goToTest` is validated but not yet executed (deferred at step scope). For test-level handlers, `continue`, `stop`, and `goToTest` are evaluated at runtime (test scope; `goToTest` jumps to a test within the spec), while `retry` and `goToStep` are not applicable at test scope.
1353
+ */
1354
+ export type Routing79 = {
1355
+ [k: string]: unknown;
1356
+ };
1221
1357
  /**
1222
1358
  * Pause (in milliseconds) before performing the next action.
1223
1359
  */
@@ -3447,9 +3583,9 @@ export interface Record {
3447
3583
  }
3448
3584
  export interface RecordDetailed {
3449
3585
  /**
3450
- * The browser window/tab to record. Omit to record the active tab. The targeted tab stays focused afterward.
3586
+ * The browser window/tab or app window to record. Omit to record the active surface. The targeted surface stays focused afterward. App surfaces use the object form ({ "app": … }) and are captured via the `ffmpeg` engine, cropped to the app window by default.
3451
3587
  */
3452
- surface?: SurfaceByBrowserEngine3 | BrowserSurface4;
3588
+ surface?: SurfaceByBrowserEngine3 | BrowserSurface4 | AppSurface2;
3453
3589
  /**
3454
3590
  * 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`.
3455
3591
  */
@@ -3517,13 +3653,34 @@ export interface ByCriteria11 {
3517
3653
  */
3518
3654
  url?: string;
3519
3655
  }
3656
+ export interface AppSurface2 {
3657
+ /**
3658
+ * Name of an app surface opened by `startSurface` (its `name`, or the default derived from the app identifier).
3659
+ */
3660
+ app: string;
3661
+ window?: AppWindowSelector2;
3662
+ }
3663
+ export interface ByCriteria12 {
3664
+ /**
3665
+ * Assigned window name.
3666
+ */
3667
+ name?: string;
3668
+ /**
3669
+ * Index in creation order. Negative counts from the end.
3670
+ */
3671
+ index?: number;
3672
+ /**
3673
+ * Window title to match. Substring, or /regex/.
3674
+ */
3675
+ title?: string;
3676
+ }
3520
3677
  export interface RecordingEngineDetailed {
3521
3678
  /**
3522
3679
  * Recording engine. `browser` records the Chrome viewport (concurrency-safe); `ffmpeg` records the screen and supports any application.
3523
3680
  */
3524
3681
  name: "browser" | "ffmpeg";
3525
3682
  /**
3526
- * What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).
3683
+ * What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).
3527
3684
  */
3528
3685
  target?: "display" | "window" | "viewport";
3529
3686
  /**
@@ -3829,7 +3986,7 @@ export interface BrowserSurface5 {
3829
3986
  window?: WindowTabSelector10;
3830
3987
  tab?: WindowTabSelector11;
3831
3988
  }
3832
- export interface ByCriteria12 {
3989
+ export interface ByCriteria13 {
3833
3990
  /**
3834
3991
  * Name assigned when the window/tab was opened.
3835
3992
  */
@@ -3847,7 +4004,7 @@ export interface ByCriteria12 {
3847
4004
  */
3848
4005
  url?: string;
3849
4006
  }
3850
- export interface ByCriteria13 {
4007
+ export interface ByCriteria14 {
3851
4008
  /**
3852
4009
  * Name assigned when the window/tab was opened.
3853
4010
  */
@@ -3865,14 +4022,14 @@ export interface ByCriteria13 {
3865
4022
  */
3866
4023
  url?: string;
3867
4024
  }
3868
- export interface AppSurface2 {
4025
+ export interface AppSurface3 {
3869
4026
  /**
3870
4027
  * Name of an app surface opened by `startSurface` (its `name`, or the default derived from the app identifier).
3871
4028
  */
3872
4029
  app: string;
3873
- window?: AppWindowSelector2;
4030
+ window?: AppWindowSelector3;
3874
4031
  }
3875
- export interface ByCriteria14 {
4032
+ export interface ByCriteria15 {
3876
4033
  /**
3877
4034
  * Assigned window name.
3878
4035
  */
@@ -3904,7 +4061,7 @@ export interface BrowserSurface6 {
3904
4061
  window?: WindowTabSelector12;
3905
4062
  tab?: WindowTabSelector13;
3906
4063
  }
3907
- export interface ByCriteria15 {
4064
+ export interface ByCriteria16 {
3908
4065
  /**
3909
4066
  * Name assigned when the window/tab was opened.
3910
4067
  */
@@ -3922,7 +4079,7 @@ export interface ByCriteria15 {
3922
4079
  */
3923
4080
  url?: string;
3924
4081
  }
3925
- export interface ByCriteria16 {
4082
+ export interface ByCriteria17 {
3926
4083
  /**
3927
4084
  * Name assigned when the window/tab was opened.
3928
4085
  */
@@ -3940,14 +4097,14 @@ export interface ByCriteria16 {
3940
4097
  */
3941
4098
  url?: string;
3942
4099
  }
3943
- export interface AppSurface3 {
4100
+ export interface AppSurface4 {
3944
4101
  /**
3945
4102
  * Name of an app surface opened by `startSurface` (its `name`, or the default derived from the app identifier).
3946
4103
  */
3947
4104
  app: string;
3948
- window?: AppWindowSelector3;
4105
+ window?: AppWindowSelector4;
3949
4106
  }
3950
- export interface ByCriteria17 {
4107
+ export interface ByCriteria18 {
3951
4108
  /**
3952
4109
  * Assigned window name.
3953
4110
  */
@@ -4504,7 +4661,7 @@ export interface BrowserSurface7 {
4504
4661
  window?: WindowTabSelector14;
4505
4662
  tab?: WindowTabSelector15;
4506
4663
  }
4507
- export interface ByCriteria18 {
4664
+ export interface ByCriteria19 {
4508
4665
  /**
4509
4666
  * Name assigned when the window/tab was opened.
4510
4667
  */
@@ -4522,7 +4679,7 @@ export interface ByCriteria18 {
4522
4679
  */
4523
4680
  url?: string;
4524
4681
  }
4525
- export interface ByCriteria19 {
4682
+ export interface ByCriteria20 {
4526
4683
  /**
4527
4684
  * Name assigned when the window/tab was opened.
4528
4685
  */
@@ -4810,6 +4967,334 @@ export interface SourceLocation18 {
4810
4967
  */
4811
4968
  endIndex: number;
4812
4969
  }
4970
+ export interface Swipe {
4971
+ swipe: Swipe1;
4972
+ [k: string]: unknown;
4973
+ }
4974
+ export interface SwipeDirectional {
4975
+ direction: SwipeSimple1;
4976
+ /**
4977
+ * How far to swipe, as a fraction of the surface's height (for up/down) or width (for left/right).
4978
+ */
4979
+ distance?: number;
4980
+ /**
4981
+ * Duration of the swipe movement in milliseconds.
4982
+ */
4983
+ duration?: number;
4984
+ /**
4985
+ * The browser window/tab or app window this step acts on. Omit to act on the active tab. The targeted surface stays focused afterward. App surfaces use the object form ({ "app": … }).
4986
+ */
4987
+ surface?: SurfaceByBrowserEngine5 | BrowserSurface8 | AppSurface5;
4988
+ }
4989
+ export interface BrowserSurface8 {
4990
+ /**
4991
+ * Browser engine. Selects the browser surface with that engine (or the one named by `name`). A goTo step opens the browser if it isn't open yet; other steps require it to already be open.
4992
+ */
4993
+ browser: "chrome" | "firefox" | "safari" | "webkit" | "edge";
4994
+ /**
4995
+ * Name of the browser surface. Defaults to the engine name (the context's default browser registers under its engine). Assign distinct names to drive multiple browsers at once, including several of the same engine.
4996
+ */
4997
+ name?: string;
4998
+ window?: WindowTabSelector16;
4999
+ tab?: WindowTabSelector17;
5000
+ }
5001
+ export interface ByCriteria21 {
5002
+ /**
5003
+ * Name assigned when the window/tab was opened.
5004
+ */
5005
+ name?: string;
5006
+ /**
5007
+ * Index in creation order. Negative counts from the end.
5008
+ */
5009
+ index?: number;
5010
+ /**
5011
+ * Page title to match. Substring, or /regex/.
5012
+ */
5013
+ title?: string;
5014
+ /**
5015
+ * Page URL to match. Substring, or /regex/.
5016
+ */
5017
+ url?: string;
5018
+ }
5019
+ export interface ByCriteria22 {
5020
+ /**
5021
+ * Name assigned when the window/tab was opened.
5022
+ */
5023
+ name?: string;
5024
+ /**
5025
+ * Index in creation order. Negative counts from the end.
5026
+ */
5027
+ index?: number;
5028
+ /**
5029
+ * Page title to match. Substring, or /regex/.
5030
+ */
5031
+ title?: string;
5032
+ /**
5033
+ * Page URL to match. Substring, or /regex/.
5034
+ */
5035
+ url?: string;
5036
+ }
5037
+ export interface AppSurface5 {
5038
+ /**
5039
+ * Name of an app surface opened by `startSurface` (its `name`, or the default derived from the app identifier).
5040
+ */
5041
+ app: string;
5042
+ window?: AppWindowSelector5;
5043
+ }
5044
+ export interface ByCriteria23 {
5045
+ /**
5046
+ * Assigned window name.
5047
+ */
5048
+ name?: string;
5049
+ /**
5050
+ * Index in creation order. Negative counts from the end.
5051
+ */
5052
+ index?: number;
5053
+ /**
5054
+ * Window title to match. Substring, or /regex/.
5055
+ */
5056
+ title?: string;
5057
+ }
5058
+ export interface SwipePointToPoint {
5059
+ from: Point;
5060
+ to: Point1;
5061
+ /**
5062
+ * Duration of the swipe movement in milliseconds.
5063
+ */
5064
+ duration?: number;
5065
+ /**
5066
+ * The browser window/tab or app window this step acts on. Omit to act on the active tab. The targeted surface stays focused afterward. App surfaces use the object form ({ "app": … }).
5067
+ */
5068
+ surface?: SurfaceByBrowserEngine6 | BrowserSurface9 | AppSurface6;
5069
+ }
5070
+ /**
5071
+ * A pixel coordinate on the surface, measured from its top-left corner (0, 0).
5072
+ */
5073
+ export interface Point {
5074
+ /**
5075
+ * Horizontal position in pixels from the left edge of the surface (the app window, or the browser viewport).
5076
+ */
5077
+ x: number;
5078
+ /**
5079
+ * Vertical position in pixels from the top edge of the surface (the app window, or the browser viewport).
5080
+ */
5081
+ y: number;
5082
+ }
5083
+ /**
5084
+ * A pixel coordinate on the surface, measured from its top-left corner (0, 0).
5085
+ */
5086
+ export interface Point1 {
5087
+ /**
5088
+ * Horizontal position in pixels from the left edge of the surface (the app window, or the browser viewport).
5089
+ */
5090
+ x: number;
5091
+ /**
5092
+ * Vertical position in pixels from the top edge of the surface (the app window, or the browser viewport).
5093
+ */
5094
+ y: number;
5095
+ }
5096
+ export interface BrowserSurface9 {
5097
+ /**
5098
+ * Browser engine. Selects the browser surface with that engine (or the one named by `name`). A goTo step opens the browser if it isn't open yet; other steps require it to already be open.
5099
+ */
5100
+ browser: "chrome" | "firefox" | "safari" | "webkit" | "edge";
5101
+ /**
5102
+ * Name of the browser surface. Defaults to the engine name (the context's default browser registers under its engine). Assign distinct names to drive multiple browsers at once, including several of the same engine.
5103
+ */
5104
+ name?: string;
5105
+ window?: WindowTabSelector18;
5106
+ tab?: WindowTabSelector19;
5107
+ }
5108
+ export interface ByCriteria24 {
5109
+ /**
5110
+ * Name assigned when the window/tab was opened.
5111
+ */
5112
+ name?: string;
5113
+ /**
5114
+ * Index in creation order. Negative counts from the end.
5115
+ */
5116
+ index?: number;
5117
+ /**
5118
+ * Page title to match. Substring, or /regex/.
5119
+ */
5120
+ title?: string;
5121
+ /**
5122
+ * Page URL to match. Substring, or /regex/.
5123
+ */
5124
+ url?: string;
5125
+ }
5126
+ export interface ByCriteria25 {
5127
+ /**
5128
+ * Name assigned when the window/tab was opened.
5129
+ */
5130
+ name?: string;
5131
+ /**
5132
+ * Index in creation order. Negative counts from the end.
5133
+ */
5134
+ index?: number;
5135
+ /**
5136
+ * Page title to match. Substring, or /regex/.
5137
+ */
5138
+ title?: string;
5139
+ /**
5140
+ * Page URL to match. Substring, or /regex/.
5141
+ */
5142
+ url?: string;
5143
+ }
5144
+ export interface AppSurface6 {
5145
+ /**
5146
+ * Name of an app surface opened by `startSurface` (its `name`, or the default derived from the app identifier).
5147
+ */
5148
+ app: string;
5149
+ window?: AppWindowSelector6;
5150
+ }
5151
+ export interface ByCriteria26 {
5152
+ /**
5153
+ * Assigned window name.
5154
+ */
5155
+ name?: string;
5156
+ /**
5157
+ * Index in creation order. Negative counts from the end.
5158
+ */
5159
+ index?: number;
5160
+ /**
5161
+ * Window title to match. Substring, or /regex/.
5162
+ */
5163
+ title?: string;
5164
+ }
5165
+ export interface Common19 {
5166
+ /**
5167
+ * JSON Schema for this object.
5168
+ */
5169
+ $schema?: "https://raw.githubusercontent.com/doc-detective/common/refs/heads/main/dist/schemas/step_v3.schema.json";
5170
+ /**
5171
+ * ID of the step.
5172
+ */
5173
+ stepId?: string;
5174
+ /**
5175
+ * Description of the step.
5176
+ */
5177
+ description?: string;
5178
+ /**
5179
+ * Whether or not the step may be unsafe. Unsafe steps may perform actions that could modify the system or environment in unexpected ways. Unsafe steps are only performed within Docker containers or if unsafe steps are enabled with the `allowUnsafeSteps` config property or the `--allow-unsafe` flag.
5180
+ */
5181
+ unsafe?: boolean;
5182
+ outputs?: OutputsStep19;
5183
+ variables?: VariablesStep19;
5184
+ /**
5185
+ * Whether or not this step should act as a breakpoint when debugging is enabled. When `true`, execution will pause at this step when debug mode is enabled.
5186
+ */
5187
+ breakpoint?: boolean;
5188
+ if?: Condition38;
5189
+ /**
5190
+ * Assertions for this step. As authored input, a custom condition expression (or array of expressions, combined with logical AND). In a test result, the runner replaces this with the array of articulated assertion records it evaluated (implicit then custom).
5191
+ */
5192
+ assertions?: Condition39 | Assertion19[];
5193
+ /**
5194
+ * Routing entries evaluated when this step passes. The first entry whose `if` matches applies. `continue`, `stop`, `retry`, and `goToStep` are honored at runtime; `goToTest` is validated but not yet executed.
5195
+ */
5196
+ onPass?: Routing76[];
5197
+ /**
5198
+ * Routing entries evaluated when this step fails. The first entry whose `if` matches applies; the default when none is set stops the test. `continue`, `stop`, `retry`, and `goToStep` are honored at runtime; `goToTest` is validated but not yet executed.
5199
+ */
5200
+ onFail?: Routing77[];
5201
+ /**
5202
+ * Routing entries evaluated when this step produces a warning. The first entry whose `if` matches applies. `continue`, `stop`, `retry`, and `goToStep` are honored at runtime; `goToTest` is validated but not yet executed.
5203
+ */
5204
+ onWarning?: Routing78[];
5205
+ /**
5206
+ * Routing entries evaluated when this step is skipped (reached but not run — unsafe-blocked or guard-`if` false). The first entry whose `if` matches applies. `continue`, `stop`, and `goToStep` are honored at runtime; `goToTest` is validated but not yet executed. (`retry` is a no-op here — a step that never ran cannot be re-run.)
5207
+ */
5208
+ onSkip?: Routing79[];
5209
+ location?: SourceLocation19;
5210
+ /**
5211
+ * Path, relative to the run's artifact directory (the report's `runDir`), of the screenshot captured automatically after this step. Always a non-empty, forward-slash, relative path. Present only in test results, when `autoScreenshot` is enabled and the capture succeeded. This is system-populated metadata and should not be set manually.
5212
+ */
5213
+ autoScreenshot?: string;
5214
+ /**
5215
+ * Total number of times this step ran (the initial attempt plus retries) when a routing `retry` action re-ran it. Present only in test results, and only when the step was retried at least once (so the value is always >= 2). This is system-populated metadata and should not be set manually.
5216
+ */
5217
+ attempts?: number;
5218
+ /**
5219
+ * Which visit of this step produced this report, when a routing goToStep re-ran it (the first visit omits this field). Present only in test results; system-populated.
5220
+ */
5221
+ visit?: number;
5222
+ [k: string]: unknown;
5223
+ }
5224
+ /**
5225
+ * Outputs from step processes and user-defined expressions. Use the `outputs` object to reference outputs in subsequent steps. If a user-defined output matches the key for a step-defined output, the user-defined output takes precedence.
5226
+ */
5227
+ export interface OutputsStep19 {
5228
+ /**
5229
+ * Runtime expression for a user-defined output value.
5230
+ *
5231
+ * This interface was referenced by `OutputsStep19`'s JSON-Schema definition
5232
+ * via the `patternProperty` "^[A-Za-z0-9_]+$".
5233
+ */
5234
+ [k: string]: string;
5235
+ }
5236
+ /**
5237
+ * Environment variables to set from user-defined expressions.
5238
+ */
5239
+ export interface VariablesStep19 {
5240
+ /**
5241
+ * Runtime expression for a user-defined output value.
5242
+ *
5243
+ * This interface was referenced by `VariablesStep19`'s JSON-Schema definition
5244
+ * via the `patternProperty` "^[A-Za-z0-9_]+$".
5245
+ */
5246
+ [k: string]: string;
5247
+ }
5248
+ /**
5249
+ * An articulated assertion record produced by the runner for a step result. Each record names a single verification check, whether it passed, and the values it compared. The step's result is the roll-up of its assertion results (FAIL > WARNING > all-SKIPPED > PASS). System-populated; appears in test results, not in authored specs.
5250
+ */
5251
+ export interface Assertion19 {
5252
+ /**
5253
+ * Human-readable articulation of the check, e.g. `exitCode in [0]`.
5254
+ */
5255
+ statement: string;
5256
+ /**
5257
+ * Who defined the assertion: `implicit` (runner-defined) or `custom` (user-defined).
5258
+ */
5259
+ source: "implicit" | "custom";
5260
+ /**
5261
+ * Outcome of evaluating the assertion.
5262
+ */
5263
+ result: "PASS" | "FAIL" | "WARNING" | "SKIPPED";
5264
+ /**
5265
+ * The value (or values) the assertion expected. Optional.
5266
+ */
5267
+ expected?: unknown[] | boolean | number | null | {
5268
+ [k: string]: unknown;
5269
+ } | string;
5270
+ /**
5271
+ * The value actually observed. Optional.
5272
+ */
5273
+ actual?: unknown[] | boolean | number | null | {
5274
+ [k: string]: unknown;
5275
+ } | string;
5276
+ /**
5277
+ * Human-readable explanation of the outcome. Optional.
5278
+ */
5279
+ description?: string;
5280
+ }
5281
+ /**
5282
+ * Source location where this step was detected in the original file. This is system-populated metadata and should not be set manually.
5283
+ */
5284
+ export interface SourceLocation19 {
5285
+ /**
5286
+ * 1-indexed line number in the source file where the step was detected.
5287
+ */
5288
+ line: number;
5289
+ /**
5290
+ * 0-indexed character offset from the start of the source file where the step begins.
5291
+ */
5292
+ startIndex: number;
5293
+ /**
5294
+ * 0-indexed character offset from the start of the source file where the step ends (exclusive).
5295
+ */
5296
+ endIndex: number;
5297
+ }
4813
5298
  export interface Wait {
4814
5299
  wait: Wait1;
4815
5300
  [k: string]: unknown;