doc-detective-common 4.12.1 → 4.13.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.
package/dist/index.cjs CHANGED
@@ -7604,6 +7604,14 @@ var schemas_default = {
7604
7604
  "false"
7605
7605
  ]
7606
7606
  },
7607
+ name: {
7608
+ type: "string",
7609
+ description: 'Identifier for this recording. A later `stopRecord` step can target it by name (`stopRecord: "<name>"`), which is how you stop a specific recording when several overlap. Names must be unique among recordings that are active at the same time. If omitted, the recording is anonymous and is stopped LIFO by an untargeted `stopRecord`.',
7610
+ pattern: "\\S",
7611
+ transform: [
7612
+ "trim"
7613
+ ]
7614
+ },
7607
7615
  engine: {
7608
7616
  title: "Recording engine",
7609
7617
  description: "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.",
@@ -7699,6 +7707,14 @@ var schemas_default = {
7699
7707
  "false"
7700
7708
  ]
7701
7709
  },
7710
+ name: {
7711
+ type: "string",
7712
+ description: 'Identifier for this recording. A later `stopRecord` step can target it by name (`stopRecord: "<name>"`), which is how you stop a specific recording when several overlap. Names must be unique among recordings that are active at the same time. If omitted, the recording is anonymous and is stopped LIFO by an untargeted `stopRecord`.',
7713
+ pattern: "\\S",
7714
+ transform: [
7715
+ "trim"
7716
+ ]
7717
+ },
7702
7718
  engine: {
7703
7719
  title: "Recording engine",
7704
7720
  description: "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.",
@@ -7934,13 +7950,52 @@ var schemas_default = {
7934
7950
  stopRecord: {
7935
7951
  $schema: "http://json-schema.org/draft-07/schema#",
7936
7952
  title: "stopRecord",
7937
- description: "Stop the current recording.",
7938
- type: [
7939
- "boolean",
7940
- "null"
7953
+ description: 'Stop a recording started by an earlier `record` step. With no target (`true`/`null`), stops the most recently started recording that is still active (LIFO). To stop a specific recording when several overlap, target it by name with a string (`stopRecord: "<name>"`) or an object (`stopRecord: { name: "<name>" }`).',
7954
+ anyOf: [
7955
+ {
7956
+ type: "boolean",
7957
+ title: "stopRecord (boolean)",
7958
+ description: "If `true`, stops the most recently started active recording (LIFO). If `false`, does nothing \u2014 an explicit no-op (mirrors `record: false`)."
7959
+ },
7960
+ {
7961
+ type: "null",
7962
+ title: "stopRecord (null)",
7963
+ description: "Stops the most recently started active recording (LIFO)."
7964
+ },
7965
+ {
7966
+ type: "string",
7967
+ title: "stopRecord (name)",
7968
+ description: "Name of the recording to stop. Matches the `name` given to a `record` step.",
7969
+ pattern: "\\S",
7970
+ transform: [
7971
+ "trim"
7972
+ ]
7973
+ },
7974
+ {
7975
+ type: "object",
7976
+ title: "stopRecord (detailed)",
7977
+ additionalProperties: false,
7978
+ required: [
7979
+ "name"
7980
+ ],
7981
+ properties: {
7982
+ name: {
7983
+ type: "string",
7984
+ description: "Name of the recording to stop. Matches the `name` given to a `record` step.",
7985
+ pattern: "\\S",
7986
+ transform: [
7987
+ "trim"
7988
+ ]
7989
+ }
7990
+ }
7991
+ }
7941
7992
  ],
7942
7993
  examples: [
7943
- true
7994
+ true,
7995
+ "demo",
7996
+ {
7997
+ name: "demo"
7998
+ }
7944
7999
  ]
7945
8000
  }
7946
8001
  },
@@ -10237,6 +10292,11 @@ var schemas_default = {
10237
10292
  type: "boolean",
10238
10293
  default: false
10239
10294
  },
10295
+ autoRecord: {
10296
+ description: "If `true`, records a video of every test context that runs in a browser, in addition to any explicit `record` steps. The recording wraps the whole context (it starts before the first step and stops after the last) and always uses the `ffmpeg` engine. Videos are saved in the per-run artifact directory (`<output>/.doc-detective/run-<runId>/`) at paths derived from spec, test, and context IDs (for example, `recordings/<specId>/<testId>/<contextId>.mp4`), so the same context lands on the same relative path in every run's folder for run-over-run comparison. Specs and tests can override this value with their own `autoRecord` fields (test level wins over spec level, which wins over config level). Equivalent to `--auto-record` on the CLI.",
10297
+ type: "boolean",
10298
+ default: false
10299
+ },
10240
10300
  autoUpdate: {
10241
10301
  description: "If `true` (default), the CLI checks for a newer published `doc-detective` on startup and self-updates before running tests. Updates happen for global (`npm i -g`) and `npx` installs only \u2014 local installs (where `doc-detective` is a project dep) get an informational message instead, since auto-updating would mutate the user's lockfile. CI environments and the `DOC_DETECTIVE_SKIP_AUTO_UPDATE=1` env var also skip the check. Set to `false` to pin to the installed version. Equivalent to `--no-auto-update` on the CLI.",
10242
10302
  type: "boolean",
@@ -16644,6 +16704,14 @@ var schemas_default = {
16644
16704
  "false"
16645
16705
  ]
16646
16706
  },
16707
+ name: {
16708
+ type: "string",
16709
+ description: 'Identifier for this recording. A later `stopRecord` step can target it by name (`stopRecord: "<name>"`), which is how you stop a specific recording when several overlap. Names must be unique among recordings that are active at the same time. If omitted, the recording is anonymous and is stopped LIFO by an untargeted `stopRecord`.',
16710
+ pattern: "\\S",
16711
+ transform: [
16712
+ "trim"
16713
+ ]
16714
+ },
16647
16715
  engine: {
16648
16716
  title: "Recording engine",
16649
16717
  description: "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.",
@@ -16739,6 +16807,14 @@ var schemas_default = {
16739
16807
  "false"
16740
16808
  ]
16741
16809
  },
16810
+ name: {
16811
+ type: "string",
16812
+ description: 'Identifier for this recording. A later `stopRecord` step can target it by name (`stopRecord: "<name>"`), which is how you stop a specific recording when several overlap. Names must be unique among recordings that are active at the same time. If omitted, the recording is anonymous and is stopped LIFO by an untargeted `stopRecord`.',
16813
+ pattern: "\\S",
16814
+ transform: [
16815
+ "trim"
16816
+ ]
16817
+ },
16742
16818
  engine: {
16743
16819
  title: "Recording engine",
16744
16820
  description: "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.",
@@ -16974,13 +17050,52 @@ var schemas_default = {
16974
17050
  stopRecord: {
16975
17051
  $schema: "http://json-schema.org/draft-07/schema#",
16976
17052
  title: "stopRecord",
16977
- description: "Stop the current recording.",
16978
- type: [
16979
- "boolean",
16980
- "null"
17053
+ description: 'Stop a recording started by an earlier `record` step. With no target (`true`/`null`), stops the most recently started recording that is still active (LIFO). To stop a specific recording when several overlap, target it by name with a string (`stopRecord: "<name>"`) or an object (`stopRecord: { name: "<name>" }`).',
17054
+ anyOf: [
17055
+ {
17056
+ type: "boolean",
17057
+ title: "stopRecord (boolean)",
17058
+ description: "If `true`, stops the most recently started active recording (LIFO). If `false`, does nothing \u2014 an explicit no-op (mirrors `record: false`)."
17059
+ },
17060
+ {
17061
+ type: "null",
17062
+ title: "stopRecord (null)",
17063
+ description: "Stops the most recently started active recording (LIFO)."
17064
+ },
17065
+ {
17066
+ type: "string",
17067
+ title: "stopRecord (name)",
17068
+ description: "Name of the recording to stop. Matches the `name` given to a `record` step.",
17069
+ pattern: "\\S",
17070
+ transform: [
17071
+ "trim"
17072
+ ]
17073
+ },
17074
+ {
17075
+ type: "object",
17076
+ title: "stopRecord (detailed)",
17077
+ additionalProperties: false,
17078
+ required: [
17079
+ "name"
17080
+ ],
17081
+ properties: {
17082
+ name: {
17083
+ type: "string",
17084
+ description: "Name of the recording to stop. Matches the `name` given to a `record` step.",
17085
+ pattern: "\\S",
17086
+ transform: [
17087
+ "trim"
17088
+ ]
17089
+ }
17090
+ }
17091
+ }
16981
17092
  ],
16982
17093
  examples: [
16983
- true
17094
+ true,
17095
+ "demo",
17096
+ {
17097
+ name: "demo"
17098
+ }
16984
17099
  ]
16985
17100
  }
16986
17101
  },
@@ -22959,6 +23074,14 @@ var schemas_default = {
22959
23074
  "false"
22960
23075
  ]
22961
23076
  },
23077
+ name: {
23078
+ type: "string",
23079
+ description: 'Identifier for this recording. A later `stopRecord` step can target it by name (`stopRecord: "<name>"`), which is how you stop a specific recording when several overlap. Names must be unique among recordings that are active at the same time. If omitted, the recording is anonymous and is stopped LIFO by an untargeted `stopRecord`.',
23080
+ pattern: "\\S",
23081
+ transform: [
23082
+ "trim"
23083
+ ]
23084
+ },
22962
23085
  engine: {
22963
23086
  title: "Recording engine",
22964
23087
  description: "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.",
@@ -23054,6 +23177,14 @@ var schemas_default = {
23054
23177
  "false"
23055
23178
  ]
23056
23179
  },
23180
+ name: {
23181
+ type: "string",
23182
+ description: 'Identifier for this recording. A later `stopRecord` step can target it by name (`stopRecord: "<name>"`), which is how you stop a specific recording when several overlap. Names must be unique among recordings that are active at the same time. If omitted, the recording is anonymous and is stopped LIFO by an untargeted `stopRecord`.',
23183
+ pattern: "\\S",
23184
+ transform: [
23185
+ "trim"
23186
+ ]
23187
+ },
23057
23188
  engine: {
23058
23189
  title: "Recording engine",
23059
23190
  description: "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.",
@@ -30296,6 +30427,14 @@ var schemas_default = {
30296
30427
  "false"
30297
30428
  ]
30298
30429
  },
30430
+ name: {
30431
+ type: "string",
30432
+ description: 'Identifier for this recording. A later `stopRecord` step can target it by name (`stopRecord: "<name>"`), which is how you stop a specific recording when several overlap. Names must be unique among recordings that are active at the same time. If omitted, the recording is anonymous and is stopped LIFO by an untargeted `stopRecord`.',
30433
+ pattern: "\\S",
30434
+ transform: [
30435
+ "trim"
30436
+ ]
30437
+ },
30299
30438
  engine: {
30300
30439
  title: "Recording engine",
30301
30440
  description: "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.",
@@ -30391,6 +30530,14 @@ var schemas_default = {
30391
30530
  "false"
30392
30531
  ]
30393
30532
  },
30533
+ name: {
30534
+ type: "string",
30535
+ description: 'Identifier for this recording. A later `stopRecord` step can target it by name (`stopRecord: "<name>"`), which is how you stop a specific recording when several overlap. Names must be unique among recordings that are active at the same time. If omitted, the recording is anonymous and is stopped LIFO by an untargeted `stopRecord`.',
30536
+ pattern: "\\S",
30537
+ transform: [
30538
+ "trim"
30539
+ ]
30540
+ },
30394
30541
  engine: {
30395
30542
  title: "Recording engine",
30396
30543
  description: "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.",
@@ -30626,13 +30773,52 @@ var schemas_default = {
30626
30773
  stopRecord: {
30627
30774
  $schema: "http://json-schema.org/draft-07/schema#",
30628
30775
  title: "stopRecord",
30629
- description: "Stop the current recording.",
30630
- type: [
30631
- "boolean",
30632
- "null"
30776
+ description: 'Stop a recording started by an earlier `record` step. With no target (`true`/`null`), stops the most recently started recording that is still active (LIFO). To stop a specific recording when several overlap, target it by name with a string (`stopRecord: "<name>"`) or an object (`stopRecord: { name: "<name>" }`).',
30777
+ anyOf: [
30778
+ {
30779
+ type: "boolean",
30780
+ title: "stopRecord (boolean)",
30781
+ description: "If `true`, stops the most recently started active recording (LIFO). If `false`, does nothing \u2014 an explicit no-op (mirrors `record: false`)."
30782
+ },
30783
+ {
30784
+ type: "null",
30785
+ title: "stopRecord (null)",
30786
+ description: "Stops the most recently started active recording (LIFO)."
30787
+ },
30788
+ {
30789
+ type: "string",
30790
+ title: "stopRecord (name)",
30791
+ description: "Name of the recording to stop. Matches the `name` given to a `record` step.",
30792
+ pattern: "\\S",
30793
+ transform: [
30794
+ "trim"
30795
+ ]
30796
+ },
30797
+ {
30798
+ type: "object",
30799
+ title: "stopRecord (detailed)",
30800
+ additionalProperties: false,
30801
+ required: [
30802
+ "name"
30803
+ ],
30804
+ properties: {
30805
+ name: {
30806
+ type: "string",
30807
+ description: "Name of the recording to stop. Matches the `name` given to a `record` step.",
30808
+ pattern: "\\S",
30809
+ transform: [
30810
+ "trim"
30811
+ ]
30812
+ }
30813
+ }
30814
+ }
30633
30815
  ],
30634
30816
  examples: [
30635
- true
30817
+ true,
30818
+ "demo",
30819
+ {
30820
+ name: "demo"
30821
+ }
30636
30822
  ]
30637
30823
  }
30638
30824
  },
@@ -32929,6 +33115,11 @@ var schemas_default = {
32929
33115
  type: "boolean",
32930
33116
  default: false
32931
33117
  },
33118
+ autoRecord: {
33119
+ description: "If `true`, records a video of every test context that runs in a browser, in addition to any explicit `record` steps. The recording wraps the whole context (it starts before the first step and stops after the last) and always uses the `ffmpeg` engine. Videos are saved in the per-run artifact directory (`<output>/.doc-detective/run-<runId>/`) at paths derived from spec, test, and context IDs (for example, `recordings/<specId>/<testId>/<contextId>.mp4`), so the same context lands on the same relative path in every run's folder for run-over-run comparison. Specs and tests can override this value with their own `autoRecord` fields (test level wins over spec level, which wins over config level). Equivalent to `--auto-record` on the CLI.",
33120
+ type: "boolean",
33121
+ default: false
33122
+ },
32932
33123
  autoUpdate: {
32933
33124
  description: "If `true` (default), the CLI checks for a newer published `doc-detective` on startup and self-updates before running tests. Updates happen for global (`npm i -g`) and `npx` installs only \u2014 local installs (where `doc-detective` is a project dep) get an informational message instead, since auto-updating would mutate the user's lockfile. CI environments and the `DOC_DETECTIVE_SKIP_AUTO_UPDATE=1` env var also skip the check. Set to `false` to pin to the installed version. Equivalent to `--no-auto-update` on the CLI.",
32934
33125
  type: "boolean",
@@ -39336,6 +39527,14 @@ var schemas_default = {
39336
39527
  "false"
39337
39528
  ]
39338
39529
  },
39530
+ name: {
39531
+ type: "string",
39532
+ description: 'Identifier for this recording. A later `stopRecord` step can target it by name (`stopRecord: "<name>"`), which is how you stop a specific recording when several overlap. Names must be unique among recordings that are active at the same time. If omitted, the recording is anonymous and is stopped LIFO by an untargeted `stopRecord`.',
39533
+ pattern: "\\S",
39534
+ transform: [
39535
+ "trim"
39536
+ ]
39537
+ },
39339
39538
  engine: {
39340
39539
  title: "Recording engine",
39341
39540
  description: "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.",
@@ -39431,6 +39630,14 @@ var schemas_default = {
39431
39630
  "false"
39432
39631
  ]
39433
39632
  },
39633
+ name: {
39634
+ type: "string",
39635
+ description: 'Identifier for this recording. A later `stopRecord` step can target it by name (`stopRecord: "<name>"`), which is how you stop a specific recording when several overlap. Names must be unique among recordings that are active at the same time. If omitted, the recording is anonymous and is stopped LIFO by an untargeted `stopRecord`.',
39636
+ pattern: "\\S",
39637
+ transform: [
39638
+ "trim"
39639
+ ]
39640
+ },
39434
39641
  engine: {
39435
39642
  title: "Recording engine",
39436
39643
  description: "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.",
@@ -39666,13 +39873,52 @@ var schemas_default = {
39666
39873
  stopRecord: {
39667
39874
  $schema: "http://json-schema.org/draft-07/schema#",
39668
39875
  title: "stopRecord",
39669
- description: "Stop the current recording.",
39670
- type: [
39671
- "boolean",
39672
- "null"
39876
+ description: 'Stop a recording started by an earlier `record` step. With no target (`true`/`null`), stops the most recently started recording that is still active (LIFO). To stop a specific recording when several overlap, target it by name with a string (`stopRecord: "<name>"`) or an object (`stopRecord: { name: "<name>" }`).',
39877
+ anyOf: [
39878
+ {
39879
+ type: "boolean",
39880
+ title: "stopRecord (boolean)",
39881
+ description: "If `true`, stops the most recently started active recording (LIFO). If `false`, does nothing \u2014 an explicit no-op (mirrors `record: false`)."
39882
+ },
39883
+ {
39884
+ type: "null",
39885
+ title: "stopRecord (null)",
39886
+ description: "Stops the most recently started active recording (LIFO)."
39887
+ },
39888
+ {
39889
+ type: "string",
39890
+ title: "stopRecord (name)",
39891
+ description: "Name of the recording to stop. Matches the `name` given to a `record` step.",
39892
+ pattern: "\\S",
39893
+ transform: [
39894
+ "trim"
39895
+ ]
39896
+ },
39897
+ {
39898
+ type: "object",
39899
+ title: "stopRecord (detailed)",
39900
+ additionalProperties: false,
39901
+ required: [
39902
+ "name"
39903
+ ],
39904
+ properties: {
39905
+ name: {
39906
+ type: "string",
39907
+ description: "Name of the recording to stop. Matches the `name` given to a `record` step.",
39908
+ pattern: "\\S",
39909
+ transform: [
39910
+ "trim"
39911
+ ]
39912
+ }
39913
+ }
39914
+ }
39673
39915
  ],
39674
39916
  examples: [
39675
- true
39917
+ true,
39918
+ "demo",
39919
+ {
39920
+ name: "demo"
39921
+ }
39676
39922
  ]
39677
39923
  }
39678
39924
  },
@@ -42162,6 +42408,10 @@ var schemas_default = {
42162
42408
  type: "boolean",
42163
42409
  description: "If `true`, captures a screenshot after every step in this spec's tests that runs in a browser. Overrides the config-level `autoScreenshot`; individual tests can override this value with their own `autoScreenshot`. When unset, defers to the config level."
42164
42410
  },
42411
+ autoRecord: {
42412
+ type: "boolean",
42413
+ description: "If `true`, records a video of every browser context in this spec's tests. Overrides the config-level `autoRecord`; individual tests can override this value with their own `autoRecord`. When unset, defers to the config level."
42414
+ },
42165
42415
  tests: {
42166
42416
  description: "[Tests](test) to perform.",
42167
42417
  type: "array",
@@ -42195,6 +42445,10 @@ var schemas_default = {
42195
42445
  type: "boolean",
42196
42446
  description: "If `true`, captures a screenshot after every step in this test that runs in a browser. Overrides `autoScreenshot` set at the spec or config level. When unset, defers to the spec level, then the config level."
42197
42447
  },
42448
+ autoRecord: {
42449
+ type: "boolean",
42450
+ description: "If `true`, records a video of every browser context in this test. Overrides `autoRecord` set at the spec or config level. When unset, defers to the spec level, then the config level."
42451
+ },
42198
42452
  runOn: {
42199
42453
  type: "array",
42200
42454
  description: "Contexts to run the test in. Overrides contexts defined at the config and spec levels.",
@@ -49051,6 +49305,14 @@ var schemas_default = {
49051
49305
  "false"
49052
49306
  ]
49053
49307
  },
49308
+ name: {
49309
+ type: "string",
49310
+ description: 'Identifier for this recording. A later `stopRecord` step can target it by name (`stopRecord: "<name>"`), which is how you stop a specific recording when several overlap. Names must be unique among recordings that are active at the same time. If omitted, the recording is anonymous and is stopped LIFO by an untargeted `stopRecord`.',
49311
+ pattern: "\\S",
49312
+ transform: [
49313
+ "trim"
49314
+ ]
49315
+ },
49054
49316
  engine: {
49055
49317
  title: "Recording engine",
49056
49318
  description: "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.",
@@ -49146,6 +49408,14 @@ var schemas_default = {
49146
49408
  "false"
49147
49409
  ]
49148
49410
  },
49411
+ name: {
49412
+ type: "string",
49413
+ description: 'Identifier for this recording. A later `stopRecord` step can target it by name (`stopRecord: "<name>"`), which is how you stop a specific recording when several overlap. Names must be unique among recordings that are active at the same time. If omitted, the recording is anonymous and is stopped LIFO by an untargeted `stopRecord`.',
49414
+ pattern: "\\S",
49415
+ transform: [
49416
+ "trim"
49417
+ ]
49418
+ },
49149
49419
  engine: {
49150
49420
  title: "Recording engine",
49151
49421
  description: "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.",
@@ -49381,13 +49651,52 @@ var schemas_default = {
49381
49651
  stopRecord: {
49382
49652
  $schema: "http://json-schema.org/draft-07/schema#",
49383
49653
  title: "stopRecord",
49384
- description: "Stop the current recording.",
49385
- type: [
49386
- "boolean",
49387
- "null"
49654
+ description: 'Stop a recording started by an earlier `record` step. With no target (`true`/`null`), stops the most recently started recording that is still active (LIFO). To stop a specific recording when several overlap, target it by name with a string (`stopRecord: "<name>"`) or an object (`stopRecord: { name: "<name>" }`).',
49655
+ anyOf: [
49656
+ {
49657
+ type: "boolean",
49658
+ title: "stopRecord (boolean)",
49659
+ description: "If `true`, stops the most recently started active recording (LIFO). If `false`, does nothing \u2014 an explicit no-op (mirrors `record: false`)."
49660
+ },
49661
+ {
49662
+ type: "null",
49663
+ title: "stopRecord (null)",
49664
+ description: "Stops the most recently started active recording (LIFO)."
49665
+ },
49666
+ {
49667
+ type: "string",
49668
+ title: "stopRecord (name)",
49669
+ description: "Name of the recording to stop. Matches the `name` given to a `record` step.",
49670
+ pattern: "\\S",
49671
+ transform: [
49672
+ "trim"
49673
+ ]
49674
+ },
49675
+ {
49676
+ type: "object",
49677
+ title: "stopRecord (detailed)",
49678
+ additionalProperties: false,
49679
+ required: [
49680
+ "name"
49681
+ ],
49682
+ properties: {
49683
+ name: {
49684
+ type: "string",
49685
+ description: "Name of the recording to stop. Matches the `name` given to a `record` step.",
49686
+ pattern: "\\S",
49687
+ transform: [
49688
+ "trim"
49689
+ ]
49690
+ }
49691
+ }
49692
+ }
49388
49693
  ],
49389
49694
  examples: [
49390
- true
49695
+ true,
49696
+ "demo",
49697
+ {
49698
+ name: "demo"
49699
+ }
49391
49700
  ]
49392
49701
  }
49393
49702
  },
@@ -57525,6 +57834,14 @@ var schemas_default = {
57525
57834
  "false"
57526
57835
  ]
57527
57836
  },
57837
+ name: {
57838
+ type: "string",
57839
+ description: 'Identifier for this recording. A later `stopRecord` step can target it by name (`stopRecord: "<name>"`), which is how you stop a specific recording when several overlap. Names must be unique among recordings that are active at the same time. If omitted, the recording is anonymous and is stopped LIFO by an untargeted `stopRecord`.',
57840
+ pattern: "\\S",
57841
+ transform: [
57842
+ "trim"
57843
+ ]
57844
+ },
57528
57845
  engine: {
57529
57846
  title: "Recording engine",
57530
57847
  description: "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.",
@@ -57620,6 +57937,14 @@ var schemas_default = {
57620
57937
  "false"
57621
57938
  ]
57622
57939
  },
57940
+ name: {
57941
+ type: "string",
57942
+ description: 'Identifier for this recording. A later `stopRecord` step can target it by name (`stopRecord: "<name>"`), which is how you stop a specific recording when several overlap. Names must be unique among recordings that are active at the same time. If omitted, the recording is anonymous and is stopped LIFO by an untargeted `stopRecord`.',
57943
+ pattern: "\\S",
57944
+ transform: [
57945
+ "trim"
57946
+ ]
57947
+ },
57623
57948
  engine: {
57624
57949
  title: "Recording engine",
57625
57950
  description: "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.",
@@ -57855,13 +58180,52 @@ var schemas_default = {
57855
58180
  stopRecord: {
57856
58181
  $schema: "http://json-schema.org/draft-07/schema#",
57857
58182
  title: "stopRecord",
57858
- description: "Stop the current recording.",
57859
- type: [
57860
- "boolean",
57861
- "null"
58183
+ description: 'Stop a recording started by an earlier `record` step. With no target (`true`/`null`), stops the most recently started recording that is still active (LIFO). To stop a specific recording when several overlap, target it by name with a string (`stopRecord: "<name>"`) or an object (`stopRecord: { name: "<name>" }`).',
58184
+ anyOf: [
58185
+ {
58186
+ type: "boolean",
58187
+ title: "stopRecord (boolean)",
58188
+ description: "If `true`, stops the most recently started active recording (LIFO). If `false`, does nothing \u2014 an explicit no-op (mirrors `record: false`)."
58189
+ },
58190
+ {
58191
+ type: "null",
58192
+ title: "stopRecord (null)",
58193
+ description: "Stops the most recently started active recording (LIFO)."
58194
+ },
58195
+ {
58196
+ type: "string",
58197
+ title: "stopRecord (name)",
58198
+ description: "Name of the recording to stop. Matches the `name` given to a `record` step.",
58199
+ pattern: "\\S",
58200
+ transform: [
58201
+ "trim"
58202
+ ]
58203
+ },
58204
+ {
58205
+ type: "object",
58206
+ title: "stopRecord (detailed)",
58207
+ additionalProperties: false,
58208
+ required: [
58209
+ "name"
58210
+ ],
58211
+ properties: {
58212
+ name: {
58213
+ type: "string",
58214
+ description: "Name of the recording to stop. Matches the `name` given to a `record` step.",
58215
+ pattern: "\\S",
58216
+ transform: [
58217
+ "trim"
58218
+ ]
58219
+ }
58220
+ }
58221
+ }
57862
58222
  ],
57863
58223
  examples: [
57864
- true
58224
+ true,
58225
+ "demo",
58226
+ {
58227
+ name: "demo"
58228
+ }
57865
58229
  ]
57866
58230
  }
57867
58231
  },
@@ -60838,6 +61202,10 @@ var schemas_default = {
60838
61202
  type: "boolean",
60839
61203
  description: "If `true`, captures a screenshot after every step in this spec's tests that runs in a browser. Overrides the config-level `autoScreenshot`; individual tests can override this value with their own `autoScreenshot`. When unset, defers to the config level."
60840
61204
  },
61205
+ autoRecord: {
61206
+ type: "boolean",
61207
+ description: "If `true`, records a video of every browser context in this spec's tests. Overrides the config-level `autoRecord`; individual tests can override this value with their own `autoRecord`. When unset, defers to the config level."
61208
+ },
60841
61209
  tests: {
60842
61210
  description: "[Tests](test) to perform.",
60843
61211
  type: "array",
@@ -60871,6 +61239,10 @@ var schemas_default = {
60871
61239
  type: "boolean",
60872
61240
  description: "If `true`, captures a screenshot after every step in this test that runs in a browser. Overrides `autoScreenshot` set at the spec or config level. When unset, defers to the spec level, then the config level."
60873
61241
  },
61242
+ autoRecord: {
61243
+ type: "boolean",
61244
+ description: "If `true`, records a video of every browser context in this test. Overrides `autoRecord` set at the spec or config level. When unset, defers to the spec level, then the config level."
61245
+ },
60874
61246
  runOn: {
60875
61247
  type: "array",
60876
61248
  description: "Contexts to run the test in. Overrides contexts defined at the config and spec levels.",
@@ -67727,6 +68099,14 @@ var schemas_default = {
67727
68099
  "false"
67728
68100
  ]
67729
68101
  },
68102
+ name: {
68103
+ type: "string",
68104
+ description: 'Identifier for this recording. A later `stopRecord` step can target it by name (`stopRecord: "<name>"`), which is how you stop a specific recording when several overlap. Names must be unique among recordings that are active at the same time. If omitted, the recording is anonymous and is stopped LIFO by an untargeted `stopRecord`.',
68105
+ pattern: "\\S",
68106
+ transform: [
68107
+ "trim"
68108
+ ]
68109
+ },
67730
68110
  engine: {
67731
68111
  title: "Recording engine",
67732
68112
  description: "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.",
@@ -67822,6 +68202,14 @@ var schemas_default = {
67822
68202
  "false"
67823
68203
  ]
67824
68204
  },
68205
+ name: {
68206
+ type: "string",
68207
+ description: 'Identifier for this recording. A later `stopRecord` step can target it by name (`stopRecord: "<name>"`), which is how you stop a specific recording when several overlap. Names must be unique among recordings that are active at the same time. If omitted, the recording is anonymous and is stopped LIFO by an untargeted `stopRecord`.',
68208
+ pattern: "\\S",
68209
+ transform: [
68210
+ "trim"
68211
+ ]
68212
+ },
67825
68213
  engine: {
67826
68214
  title: "Recording engine",
67827
68215
  description: "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.",
@@ -68057,13 +68445,52 @@ var schemas_default = {
68057
68445
  stopRecord: {
68058
68446
  $schema: "http://json-schema.org/draft-07/schema#",
68059
68447
  title: "stopRecord",
68060
- description: "Stop the current recording.",
68061
- type: [
68062
- "boolean",
68063
- "null"
68448
+ description: 'Stop a recording started by an earlier `record` step. With no target (`true`/`null`), stops the most recently started recording that is still active (LIFO). To stop a specific recording when several overlap, target it by name with a string (`stopRecord: "<name>"`) or an object (`stopRecord: { name: "<name>" }`).',
68449
+ anyOf: [
68450
+ {
68451
+ type: "boolean",
68452
+ title: "stopRecord (boolean)",
68453
+ description: "If `true`, stops the most recently started active recording (LIFO). If `false`, does nothing \u2014 an explicit no-op (mirrors `record: false`)."
68454
+ },
68455
+ {
68456
+ type: "null",
68457
+ title: "stopRecord (null)",
68458
+ description: "Stops the most recently started active recording (LIFO)."
68459
+ },
68460
+ {
68461
+ type: "string",
68462
+ title: "stopRecord (name)",
68463
+ description: "Name of the recording to stop. Matches the `name` given to a `record` step.",
68464
+ pattern: "\\S",
68465
+ transform: [
68466
+ "trim"
68467
+ ]
68468
+ },
68469
+ {
68470
+ type: "object",
68471
+ title: "stopRecord (detailed)",
68472
+ additionalProperties: false,
68473
+ required: [
68474
+ "name"
68475
+ ],
68476
+ properties: {
68477
+ name: {
68478
+ type: "string",
68479
+ description: "Name of the recording to stop. Matches the `name` given to a `record` step.",
68480
+ pattern: "\\S",
68481
+ transform: [
68482
+ "trim"
68483
+ ]
68484
+ }
68485
+ }
68486
+ }
68064
68487
  ],
68065
68488
  examples: [
68066
- true
68489
+ true,
68490
+ "demo",
68491
+ {
68492
+ name: "demo"
68493
+ }
68067
68494
  ]
68068
68495
  }
68069
68496
  },
@@ -76201,6 +76628,14 @@ var schemas_default = {
76201
76628
  "false"
76202
76629
  ]
76203
76630
  },
76631
+ name: {
76632
+ type: "string",
76633
+ description: 'Identifier for this recording. A later `stopRecord` step can target it by name (`stopRecord: "<name>"`), which is how you stop a specific recording when several overlap. Names must be unique among recordings that are active at the same time. If omitted, the recording is anonymous and is stopped LIFO by an untargeted `stopRecord`.',
76634
+ pattern: "\\S",
76635
+ transform: [
76636
+ "trim"
76637
+ ]
76638
+ },
76204
76639
  engine: {
76205
76640
  title: "Recording engine",
76206
76641
  description: "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.",
@@ -76296,6 +76731,14 @@ var schemas_default = {
76296
76731
  "false"
76297
76732
  ]
76298
76733
  },
76734
+ name: {
76735
+ type: "string",
76736
+ description: 'Identifier for this recording. A later `stopRecord` step can target it by name (`stopRecord: "<name>"`), which is how you stop a specific recording when several overlap. Names must be unique among recordings that are active at the same time. If omitted, the recording is anonymous and is stopped LIFO by an untargeted `stopRecord`.',
76737
+ pattern: "\\S",
76738
+ transform: [
76739
+ "trim"
76740
+ ]
76741
+ },
76299
76742
  engine: {
76300
76743
  title: "Recording engine",
76301
76744
  description: "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.",
@@ -76531,13 +76974,52 @@ var schemas_default = {
76531
76974
  stopRecord: {
76532
76975
  $schema: "http://json-schema.org/draft-07/schema#",
76533
76976
  title: "stopRecord",
76534
- description: "Stop the current recording.",
76535
- type: [
76536
- "boolean",
76537
- "null"
76977
+ description: 'Stop a recording started by an earlier `record` step. With no target (`true`/`null`), stops the most recently started recording that is still active (LIFO). To stop a specific recording when several overlap, target it by name with a string (`stopRecord: "<name>"`) or an object (`stopRecord: { name: "<name>" }`).',
76978
+ anyOf: [
76979
+ {
76980
+ type: "boolean",
76981
+ title: "stopRecord (boolean)",
76982
+ description: "If `true`, stops the most recently started active recording (LIFO). If `false`, does nothing \u2014 an explicit no-op (mirrors `record: false`)."
76983
+ },
76984
+ {
76985
+ type: "null",
76986
+ title: "stopRecord (null)",
76987
+ description: "Stops the most recently started active recording (LIFO)."
76988
+ },
76989
+ {
76990
+ type: "string",
76991
+ title: "stopRecord (name)",
76992
+ description: "Name of the recording to stop. Matches the `name` given to a `record` step.",
76993
+ pattern: "\\S",
76994
+ transform: [
76995
+ "trim"
76996
+ ]
76997
+ },
76998
+ {
76999
+ type: "object",
77000
+ title: "stopRecord (detailed)",
77001
+ additionalProperties: false,
77002
+ required: [
77003
+ "name"
77004
+ ],
77005
+ properties: {
77006
+ name: {
77007
+ type: "string",
77008
+ description: "Name of the recording to stop. Matches the `name` given to a `record` step.",
77009
+ pattern: "\\S",
77010
+ transform: [
77011
+ "trim"
77012
+ ]
77013
+ }
77014
+ }
77015
+ }
76538
77016
  ],
76539
77017
  examples: [
76540
- true
77018
+ true,
77019
+ "demo",
77020
+ {
77021
+ name: "demo"
77022
+ }
76541
77023
  ]
76542
77024
  }
76543
77025
  },
@@ -80892,6 +81374,10 @@ var schemas_default = {
80892
81374
  type: "boolean",
80893
81375
  description: "If `true`, captures a screenshot after every step in this spec's tests that runs in a browser. Overrides the config-level `autoScreenshot`; individual tests can override this value with their own `autoScreenshot`. When unset, defers to the config level."
80894
81376
  },
81377
+ autoRecord: {
81378
+ type: "boolean",
81379
+ description: "If `true`, records a video of every browser context in this spec's tests. Overrides the config-level `autoRecord`; individual tests can override this value with their own `autoRecord`. When unset, defers to the config level."
81380
+ },
80895
81381
  tests: {
80896
81382
  description: "[Tests](test) to perform.",
80897
81383
  type: "array",
@@ -80925,6 +81411,10 @@ var schemas_default = {
80925
81411
  type: "boolean",
80926
81412
  description: "If `true`, captures a screenshot after every step in this test that runs in a browser. Overrides `autoScreenshot` set at the spec or config level. When unset, defers to the spec level, then the config level."
80927
81413
  },
81414
+ autoRecord: {
81415
+ type: "boolean",
81416
+ description: "If `true`, records a video of every browser context in this test. Overrides `autoRecord` set at the spec or config level. When unset, defers to the spec level, then the config level."
81417
+ },
80928
81418
  runOn: {
80929
81419
  type: "array",
80930
81420
  description: "Contexts to run the test in. Overrides contexts defined at the config and spec levels.",
@@ -87781,6 +88271,14 @@ var schemas_default = {
87781
88271
  "false"
87782
88272
  ]
87783
88273
  },
88274
+ name: {
88275
+ type: "string",
88276
+ description: 'Identifier for this recording. A later `stopRecord` step can target it by name (`stopRecord: "<name>"`), which is how you stop a specific recording when several overlap. Names must be unique among recordings that are active at the same time. If omitted, the recording is anonymous and is stopped LIFO by an untargeted `stopRecord`.',
88277
+ pattern: "\\S",
88278
+ transform: [
88279
+ "trim"
88280
+ ]
88281
+ },
87784
88282
  engine: {
87785
88283
  title: "Recording engine",
87786
88284
  description: "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.",
@@ -87876,6 +88374,14 @@ var schemas_default = {
87876
88374
  "false"
87877
88375
  ]
87878
88376
  },
88377
+ name: {
88378
+ type: "string",
88379
+ description: 'Identifier for this recording. A later `stopRecord` step can target it by name (`stopRecord: "<name>"`), which is how you stop a specific recording when several overlap. Names must be unique among recordings that are active at the same time. If omitted, the recording is anonymous and is stopped LIFO by an untargeted `stopRecord`.',
88380
+ pattern: "\\S",
88381
+ transform: [
88382
+ "trim"
88383
+ ]
88384
+ },
87879
88385
  engine: {
87880
88386
  title: "Recording engine",
87881
88387
  description: "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.",
@@ -88111,13 +88617,52 @@ var schemas_default = {
88111
88617
  stopRecord: {
88112
88618
  $schema: "http://json-schema.org/draft-07/schema#",
88113
88619
  title: "stopRecord",
88114
- description: "Stop the current recording.",
88115
- type: [
88116
- "boolean",
88117
- "null"
88620
+ description: 'Stop a recording started by an earlier `record` step. With no target (`true`/`null`), stops the most recently started recording that is still active (LIFO). To stop a specific recording when several overlap, target it by name with a string (`stopRecord: "<name>"`) or an object (`stopRecord: { name: "<name>" }`).',
88621
+ anyOf: [
88622
+ {
88623
+ type: "boolean",
88624
+ title: "stopRecord (boolean)",
88625
+ description: "If `true`, stops the most recently started active recording (LIFO). If `false`, does nothing \u2014 an explicit no-op (mirrors `record: false`)."
88626
+ },
88627
+ {
88628
+ type: "null",
88629
+ title: "stopRecord (null)",
88630
+ description: "Stops the most recently started active recording (LIFO)."
88631
+ },
88632
+ {
88633
+ type: "string",
88634
+ title: "stopRecord (name)",
88635
+ description: "Name of the recording to stop. Matches the `name` given to a `record` step.",
88636
+ pattern: "\\S",
88637
+ transform: [
88638
+ "trim"
88639
+ ]
88640
+ },
88641
+ {
88642
+ type: "object",
88643
+ title: "stopRecord (detailed)",
88644
+ additionalProperties: false,
88645
+ required: [
88646
+ "name"
88647
+ ],
88648
+ properties: {
88649
+ name: {
88650
+ type: "string",
88651
+ description: "Name of the recording to stop. Matches the `name` given to a `record` step.",
88652
+ pattern: "\\S",
88653
+ transform: [
88654
+ "trim"
88655
+ ]
88656
+ }
88657
+ }
88658
+ }
88118
88659
  ],
88119
88660
  examples: [
88120
- true
88661
+ true,
88662
+ "demo",
88663
+ {
88664
+ name: "demo"
88665
+ }
88121
88666
  ]
88122
88667
  }
88123
88668
  },
@@ -96255,6 +96800,14 @@ var schemas_default = {
96255
96800
  "false"
96256
96801
  ]
96257
96802
  },
96803
+ name: {
96804
+ type: "string",
96805
+ description: 'Identifier for this recording. A later `stopRecord` step can target it by name (`stopRecord: "<name>"`), which is how you stop a specific recording when several overlap. Names must be unique among recordings that are active at the same time. If omitted, the recording is anonymous and is stopped LIFO by an untargeted `stopRecord`.',
96806
+ pattern: "\\S",
96807
+ transform: [
96808
+ "trim"
96809
+ ]
96810
+ },
96258
96811
  engine: {
96259
96812
  title: "Recording engine",
96260
96813
  description: "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.",
@@ -96350,6 +96903,14 @@ var schemas_default = {
96350
96903
  "false"
96351
96904
  ]
96352
96905
  },
96906
+ name: {
96907
+ type: "string",
96908
+ description: 'Identifier for this recording. A later `stopRecord` step can target it by name (`stopRecord: "<name>"`), which is how you stop a specific recording when several overlap. Names must be unique among recordings that are active at the same time. If omitted, the recording is anonymous and is stopped LIFO by an untargeted `stopRecord`.',
96909
+ pattern: "\\S",
96910
+ transform: [
96911
+ "trim"
96912
+ ]
96913
+ },
96353
96914
  engine: {
96354
96915
  title: "Recording engine",
96355
96916
  description: "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.",
@@ -96585,13 +97146,52 @@ var schemas_default = {
96585
97146
  stopRecord: {
96586
97147
  $schema: "http://json-schema.org/draft-07/schema#",
96587
97148
  title: "stopRecord",
96588
- description: "Stop the current recording.",
96589
- type: [
96590
- "boolean",
96591
- "null"
97149
+ description: 'Stop a recording started by an earlier `record` step. With no target (`true`/`null`), stops the most recently started recording that is still active (LIFO). To stop a specific recording when several overlap, target it by name with a string (`stopRecord: "<name>"`) or an object (`stopRecord: { name: "<name>" }`).',
97150
+ anyOf: [
97151
+ {
97152
+ type: "boolean",
97153
+ title: "stopRecord (boolean)",
97154
+ description: "If `true`, stops the most recently started active recording (LIFO). If `false`, does nothing \u2014 an explicit no-op (mirrors `record: false`)."
97155
+ },
97156
+ {
97157
+ type: "null",
97158
+ title: "stopRecord (null)",
97159
+ description: "Stops the most recently started active recording (LIFO)."
97160
+ },
97161
+ {
97162
+ type: "string",
97163
+ title: "stopRecord (name)",
97164
+ description: "Name of the recording to stop. Matches the `name` given to a `record` step.",
97165
+ pattern: "\\S",
97166
+ transform: [
97167
+ "trim"
97168
+ ]
97169
+ },
97170
+ {
97171
+ type: "object",
97172
+ title: "stopRecord (detailed)",
97173
+ additionalProperties: false,
97174
+ required: [
97175
+ "name"
97176
+ ],
97177
+ properties: {
97178
+ name: {
97179
+ type: "string",
97180
+ description: "Name of the recording to stop. Matches the `name` given to a `record` step.",
97181
+ pattern: "\\S",
97182
+ transform: [
97183
+ "trim"
97184
+ ]
97185
+ }
97186
+ }
97187
+ }
96592
97188
  ],
96593
97189
  examples: [
96594
- true
97190
+ true,
97191
+ "demo",
97192
+ {
97193
+ name: "demo"
97194
+ }
96595
97195
  ]
96596
97196
  }
96597
97197
  },
@@ -105009,6 +105609,14 @@ var schemas_default = {
105009
105609
  "false"
105010
105610
  ]
105011
105611
  },
105612
+ name: {
105613
+ type: "string",
105614
+ description: 'Identifier for this recording. A later `stopRecord` step can target it by name (`stopRecord: "<name>"`), which is how you stop a specific recording when several overlap. Names must be unique among recordings that are active at the same time. If omitted, the recording is anonymous and is stopped LIFO by an untargeted `stopRecord`.',
105615
+ pattern: "\\S",
105616
+ transform: [
105617
+ "trim"
105618
+ ]
105619
+ },
105012
105620
  engine: {
105013
105621
  title: "Recording engine",
105014
105622
  description: "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.",
@@ -105104,6 +105712,14 @@ var schemas_default = {
105104
105712
  "false"
105105
105713
  ]
105106
105714
  },
105715
+ name: {
105716
+ type: "string",
105717
+ description: 'Identifier for this recording. A later `stopRecord` step can target it by name (`stopRecord: "<name>"`), which is how you stop a specific recording when several overlap. Names must be unique among recordings that are active at the same time. If omitted, the recording is anonymous and is stopped LIFO by an untargeted `stopRecord`.',
105718
+ pattern: "\\S",
105719
+ transform: [
105720
+ "trim"
105721
+ ]
105722
+ },
105107
105723
  engine: {
105108
105724
  title: "Recording engine",
105109
105725
  description: "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.",
@@ -105339,13 +105955,52 @@ var schemas_default = {
105339
105955
  stopRecord: {
105340
105956
  $schema: "http://json-schema.org/draft-07/schema#",
105341
105957
  title: "stopRecord",
105342
- description: "Stop the current recording.",
105343
- type: [
105344
- "boolean",
105345
- "null"
105958
+ description: 'Stop a recording started by an earlier `record` step. With no target (`true`/`null`), stops the most recently started recording that is still active (LIFO). To stop a specific recording when several overlap, target it by name with a string (`stopRecord: "<name>"`) or an object (`stopRecord: { name: "<name>" }`).',
105959
+ anyOf: [
105960
+ {
105961
+ type: "boolean",
105962
+ title: "stopRecord (boolean)",
105963
+ description: "If `true`, stops the most recently started active recording (LIFO). If `false`, does nothing \u2014 an explicit no-op (mirrors `record: false`)."
105964
+ },
105965
+ {
105966
+ type: "null",
105967
+ title: "stopRecord (null)",
105968
+ description: "Stops the most recently started active recording (LIFO)."
105969
+ },
105970
+ {
105971
+ type: "string",
105972
+ title: "stopRecord (name)",
105973
+ description: "Name of the recording to stop. Matches the `name` given to a `record` step.",
105974
+ pattern: "\\S",
105975
+ transform: [
105976
+ "trim"
105977
+ ]
105978
+ },
105979
+ {
105980
+ type: "object",
105981
+ title: "stopRecord (detailed)",
105982
+ additionalProperties: false,
105983
+ required: [
105984
+ "name"
105985
+ ],
105986
+ properties: {
105987
+ name: {
105988
+ type: "string",
105989
+ description: "Name of the recording to stop. Matches the `name` given to a `record` step.",
105990
+ pattern: "\\S",
105991
+ transform: [
105992
+ "trim"
105993
+ ]
105994
+ }
105995
+ }
105996
+ }
105346
105997
  ],
105347
105998
  examples: [
105348
- true
105999
+ true,
106000
+ "demo",
106001
+ {
106002
+ name: "demo"
106003
+ }
105349
106004
  ]
105350
106005
  }
105351
106006
  },
@@ -106948,13 +107603,52 @@ var schemas_default = {
106948
107603
  stopRecord_v3: {
106949
107604
  $schema: "http://json-schema.org/draft-07/schema#",
106950
107605
  title: "stopRecord",
106951
- description: "Stop the current recording.",
106952
- type: [
106953
- "boolean",
106954
- "null"
107606
+ description: 'Stop a recording started by an earlier `record` step. With no target (`true`/`null`), stops the most recently started recording that is still active (LIFO). To stop a specific recording when several overlap, target it by name with a string (`stopRecord: "<name>"`) or an object (`stopRecord: { name: "<name>" }`).',
107607
+ anyOf: [
107608
+ {
107609
+ type: "boolean",
107610
+ title: "stopRecord (boolean)",
107611
+ description: "If `true`, stops the most recently started active recording (LIFO). If `false`, does nothing \u2014 an explicit no-op (mirrors `record: false`)."
107612
+ },
107613
+ {
107614
+ type: "null",
107615
+ title: "stopRecord (null)",
107616
+ description: "Stops the most recently started active recording (LIFO)."
107617
+ },
107618
+ {
107619
+ type: "string",
107620
+ title: "stopRecord (name)",
107621
+ description: "Name of the recording to stop. Matches the `name` given to a `record` step.",
107622
+ pattern: "\\S",
107623
+ transform: [
107624
+ "trim"
107625
+ ]
107626
+ },
107627
+ {
107628
+ type: "object",
107629
+ title: "stopRecord (detailed)",
107630
+ additionalProperties: false,
107631
+ required: [
107632
+ "name"
107633
+ ],
107634
+ properties: {
107635
+ name: {
107636
+ type: "string",
107637
+ description: "Name of the recording to stop. Matches the `name` given to a `record` step.",
107638
+ pattern: "\\S",
107639
+ transform: [
107640
+ "trim"
107641
+ ]
107642
+ }
107643
+ }
107644
+ }
106955
107645
  ],
106956
107646
  examples: [
106957
- true
107647
+ true,
107648
+ "demo",
107649
+ {
107650
+ name: "demo"
107651
+ }
106958
107652
  ]
106959
107653
  },
106960
107654
  test_v3: {
@@ -106984,6 +107678,10 @@ var schemas_default = {
106984
107678
  type: "boolean",
106985
107679
  description: "If `true`, captures a screenshot after every step in this test that runs in a browser. Overrides `autoScreenshot` set at the spec or config level. When unset, defers to the spec level, then the config level."
106986
107680
  },
107681
+ autoRecord: {
107682
+ type: "boolean",
107683
+ description: "If `true`, records a video of every browser context in this test. Overrides `autoRecord` set at the spec or config level. When unset, defers to the spec level, then the config level."
107684
+ },
106987
107685
  runOn: {
106988
107686
  type: "array",
106989
107687
  description: "Contexts to run the test in. Overrides contexts defined at the config and spec levels.",
@@ -113840,6 +114538,14 @@ var schemas_default = {
113840
114538
  "false"
113841
114539
  ]
113842
114540
  },
114541
+ name: {
114542
+ type: "string",
114543
+ description: 'Identifier for this recording. A later `stopRecord` step can target it by name (`stopRecord: "<name>"`), which is how you stop a specific recording when several overlap. Names must be unique among recordings that are active at the same time. If omitted, the recording is anonymous and is stopped LIFO by an untargeted `stopRecord`.',
114544
+ pattern: "\\S",
114545
+ transform: [
114546
+ "trim"
114547
+ ]
114548
+ },
113843
114549
  engine: {
113844
114550
  title: "Recording engine",
113845
114551
  description: "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.",
@@ -113935,6 +114641,14 @@ var schemas_default = {
113935
114641
  "false"
113936
114642
  ]
113937
114643
  },
114644
+ name: {
114645
+ type: "string",
114646
+ description: 'Identifier for this recording. A later `stopRecord` step can target it by name (`stopRecord: "<name>"`), which is how you stop a specific recording when several overlap. Names must be unique among recordings that are active at the same time. If omitted, the recording is anonymous and is stopped LIFO by an untargeted `stopRecord`.',
114647
+ pattern: "\\S",
114648
+ transform: [
114649
+ "trim"
114650
+ ]
114651
+ },
113938
114652
  engine: {
113939
114653
  title: "Recording engine",
113940
114654
  description: "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.",
@@ -114170,13 +114884,52 @@ var schemas_default = {
114170
114884
  stopRecord: {
114171
114885
  $schema: "http://json-schema.org/draft-07/schema#",
114172
114886
  title: "stopRecord",
114173
- description: "Stop the current recording.",
114174
- type: [
114175
- "boolean",
114176
- "null"
114887
+ description: 'Stop a recording started by an earlier `record` step. With no target (`true`/`null`), stops the most recently started recording that is still active (LIFO). To stop a specific recording when several overlap, target it by name with a string (`stopRecord: "<name>"`) or an object (`stopRecord: { name: "<name>" }`).',
114888
+ anyOf: [
114889
+ {
114890
+ type: "boolean",
114891
+ title: "stopRecord (boolean)",
114892
+ description: "If `true`, stops the most recently started active recording (LIFO). If `false`, does nothing \u2014 an explicit no-op (mirrors `record: false`)."
114893
+ },
114894
+ {
114895
+ type: "null",
114896
+ title: "stopRecord (null)",
114897
+ description: "Stops the most recently started active recording (LIFO)."
114898
+ },
114899
+ {
114900
+ type: "string",
114901
+ title: "stopRecord (name)",
114902
+ description: "Name of the recording to stop. Matches the `name` given to a `record` step.",
114903
+ pattern: "\\S",
114904
+ transform: [
114905
+ "trim"
114906
+ ]
114907
+ },
114908
+ {
114909
+ type: "object",
114910
+ title: "stopRecord (detailed)",
114911
+ additionalProperties: false,
114912
+ required: [
114913
+ "name"
114914
+ ],
114915
+ properties: {
114916
+ name: {
114917
+ type: "string",
114918
+ description: "Name of the recording to stop. Matches the `name` given to a `record` step.",
114919
+ pattern: "\\S",
114920
+ transform: [
114921
+ "trim"
114922
+ ]
114923
+ }
114924
+ }
114925
+ }
114177
114926
  ],
114178
114927
  examples: [
114179
- true
114928
+ true,
114929
+ "demo",
114930
+ {
114931
+ name: "demo"
114932
+ }
114180
114933
  ]
114181
114934
  }
114182
114935
  },
@@ -122314,6 +123067,14 @@ var schemas_default = {
122314
123067
  "false"
122315
123068
  ]
122316
123069
  },
123070
+ name: {
123071
+ type: "string",
123072
+ description: 'Identifier for this recording. A later `stopRecord` step can target it by name (`stopRecord: "<name>"`), which is how you stop a specific recording when several overlap. Names must be unique among recordings that are active at the same time. If omitted, the recording is anonymous and is stopped LIFO by an untargeted `stopRecord`.',
123073
+ pattern: "\\S",
123074
+ transform: [
123075
+ "trim"
123076
+ ]
123077
+ },
122317
123078
  engine: {
122318
123079
  title: "Recording engine",
122319
123080
  description: "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.",
@@ -122409,6 +123170,14 @@ var schemas_default = {
122409
123170
  "false"
122410
123171
  ]
122411
123172
  },
123173
+ name: {
123174
+ type: "string",
123175
+ description: 'Identifier for this recording. A later `stopRecord` step can target it by name (`stopRecord: "<name>"`), which is how you stop a specific recording when several overlap. Names must be unique among recordings that are active at the same time. If omitted, the recording is anonymous and is stopped LIFO by an untargeted `stopRecord`.',
123176
+ pattern: "\\S",
123177
+ transform: [
123178
+ "trim"
123179
+ ]
123180
+ },
122412
123181
  engine: {
122413
123182
  title: "Recording engine",
122414
123183
  description: "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.",
@@ -122644,13 +123413,52 @@ var schemas_default = {
122644
123413
  stopRecord: {
122645
123414
  $schema: "http://json-schema.org/draft-07/schema#",
122646
123415
  title: "stopRecord",
122647
- description: "Stop the current recording.",
122648
- type: [
122649
- "boolean",
122650
- "null"
123416
+ description: 'Stop a recording started by an earlier `record` step. With no target (`true`/`null`), stops the most recently started recording that is still active (LIFO). To stop a specific recording when several overlap, target it by name with a string (`stopRecord: "<name>"`) or an object (`stopRecord: { name: "<name>" }`).',
123417
+ anyOf: [
123418
+ {
123419
+ type: "boolean",
123420
+ title: "stopRecord (boolean)",
123421
+ description: "If `true`, stops the most recently started active recording (LIFO). If `false`, does nothing \u2014 an explicit no-op (mirrors `record: false`)."
123422
+ },
123423
+ {
123424
+ type: "null",
123425
+ title: "stopRecord (null)",
123426
+ description: "Stops the most recently started active recording (LIFO)."
123427
+ },
123428
+ {
123429
+ type: "string",
123430
+ title: "stopRecord (name)",
123431
+ description: "Name of the recording to stop. Matches the `name` given to a `record` step.",
123432
+ pattern: "\\S",
123433
+ transform: [
123434
+ "trim"
123435
+ ]
123436
+ },
123437
+ {
123438
+ type: "object",
123439
+ title: "stopRecord (detailed)",
123440
+ additionalProperties: false,
123441
+ required: [
123442
+ "name"
123443
+ ],
123444
+ properties: {
123445
+ name: {
123446
+ type: "string",
123447
+ description: "Name of the recording to stop. Matches the `name` given to a `record` step.",
123448
+ pattern: "\\S",
123449
+ transform: [
123450
+ "trim"
123451
+ ]
123452
+ }
123453
+ }
123454
+ }
122651
123455
  ],
122652
123456
  examples: [
122653
- true
123457
+ true,
123458
+ "demo",
123459
+ {
123460
+ name: "demo"
123461
+ }
122654
123462
  ]
122655
123463
  }
122656
123464
  },