assuremind 1.2.3 → 1.4.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.d.mts CHANGED
@@ -14,16 +14,25 @@ declare const HealingConfigSchema: z.ZodObject<{
14
14
  maxLevel: z.ZodNumber;
15
15
  dailyBudget: z.ZodNumber;
16
16
  autoPR: z.ZodBoolean;
17
+ /**
18
+ * Opt-in: when a locator INSIDE an assertion fails to resolve (e.g. a wrong
19
+ * frame selector in expect(...).toBeVisible()), re-resolve just the locator
20
+ * while preserving the matcher and asserted content. Off by default — a
21
+ * genuine "element found but state/value wrong" assertion is never healed.
22
+ */
23
+ healAssertionLocators: z.ZodDefault<z.ZodBoolean>;
17
24
  }, "strip", z.ZodTypeAny, {
18
25
  enabled: boolean;
19
26
  maxLevel: number;
20
27
  dailyBudget: number;
21
28
  autoPR: boolean;
29
+ healAssertionLocators: boolean;
22
30
  }, {
23
31
  enabled: boolean;
24
32
  maxLevel: number;
25
33
  dailyBudget: number;
26
34
  autoPR: boolean;
35
+ healAssertionLocators?: boolean | undefined;
27
36
  }>;
28
37
  declare const ReportingConfigSchema: z.ZodObject<{
29
38
  allure: z.ZodBoolean;
@@ -81,16 +90,25 @@ declare const AutotestConfigSchema: z.ZodObject<{
81
90
  maxLevel: z.ZodNumber;
82
91
  dailyBudget: z.ZodNumber;
83
92
  autoPR: z.ZodBoolean;
93
+ /**
94
+ * Opt-in: when a locator INSIDE an assertion fails to resolve (e.g. a wrong
95
+ * frame selector in expect(...).toBeVisible()), re-resolve just the locator
96
+ * while preserving the matcher and asserted content. Off by default — a
97
+ * genuine "element found but state/value wrong" assertion is never healed.
98
+ */
99
+ healAssertionLocators: z.ZodDefault<z.ZodBoolean>;
84
100
  }, "strip", z.ZodTypeAny, {
85
101
  enabled: boolean;
86
102
  maxLevel: number;
87
103
  dailyBudget: number;
88
104
  autoPR: boolean;
105
+ healAssertionLocators: boolean;
89
106
  }, {
90
107
  enabled: boolean;
91
108
  maxLevel: number;
92
109
  dailyBudget: number;
93
110
  autoPR: boolean;
111
+ healAssertionLocators?: boolean | undefined;
94
112
  }>;
95
113
  reporting: z.ZodObject<{
96
114
  allure: z.ZodBoolean;
@@ -259,6 +277,21 @@ declare const AutotestConfigSchema: z.ZodObject<{
259
277
  actionTimeout: number;
260
278
  idleTimeout: number;
261
279
  }>>;
280
+ /**
281
+ * CI/CD pipeline integration.
282
+ *
283
+ * When `writeToRepo` is enabled, the Studio's CI Config Generator can write the
284
+ * generated workflow file directly into the project (e.g. .github/workflows/
285
+ * assuremind.yml) instead of being copy/download-only. Off by default — the user
286
+ * reviews and commits the file via the Git Control Center.
287
+ */
288
+ ci: z.ZodDefault<z.ZodObject<{
289
+ writeToRepo: z.ZodBoolean;
290
+ }, "strip", z.ZodTypeAny, {
291
+ writeToRepo: boolean;
292
+ }, {
293
+ writeToRepo: boolean;
294
+ }>>;
262
295
  }, "strip", z.ZodTypeAny, {
263
296
  baseUrl: string;
264
297
  environment: "dev" | "stage" | "test" | "prod";
@@ -286,6 +319,7 @@ declare const AutotestConfigSchema: z.ZodObject<{
286
319
  maxLevel: number;
287
320
  dailyBudget: number;
288
321
  autoPR: boolean;
322
+ healAssertionLocators: boolean;
289
323
  };
290
324
  reporting: {
291
325
  allure: boolean;
@@ -327,6 +361,9 @@ declare const AutotestConfigSchema: z.ZodObject<{
327
361
  actionTimeout: number;
328
362
  idleTimeout: number;
329
363
  };
364
+ ci: {
365
+ writeToRepo: boolean;
366
+ };
330
367
  activeProfile?: string | undefined;
331
368
  device?: string | undefined;
332
369
  }, {
@@ -344,6 +381,7 @@ declare const AutotestConfigSchema: z.ZodObject<{
344
381
  maxLevel: number;
345
382
  dailyBudget: number;
346
383
  autoPR: boolean;
384
+ healAssertionLocators?: boolean | undefined;
347
385
  };
348
386
  reporting: {
349
387
  allure: boolean;
@@ -399,6 +437,9 @@ declare const AutotestConfigSchema: z.ZodObject<{
399
437
  actionTimeout: number;
400
438
  idleTimeout: number;
401
439
  } | undefined;
440
+ ci?: {
441
+ writeToRepo: boolean;
442
+ } | undefined;
402
443
  }>;
403
444
  type HealingConfig = z.infer<typeof HealingConfigSchema>;
404
445
  type ReportingConfig = z.infer<typeof ReportingConfigSchema>;
@@ -947,6 +988,8 @@ declare const TestCaseResultSchema: z.ZodObject<{
947
988
  finishedAt: z.ZodString;
948
989
  videoPath: z.ZodOptional<z.ZodString>;
949
990
  tracePath: z.ZodOptional<z.ZodString>;
991
+ /** Files downloaded during the case (absolute paths under results/downloads/). */
992
+ downloadPaths: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
950
993
  dataRowIndex: z.ZodOptional<z.ZodNumber>;
951
994
  dataRow: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
952
995
  pageLoads: z.ZodDefault<z.ZodArray<z.ZodObject<{
@@ -1099,6 +1142,7 @@ declare const TestCaseResultSchema: z.ZodObject<{
1099
1142
  browser: string;
1100
1143
  startedAt: string;
1101
1144
  finishedAt: string;
1145
+ downloadPaths: string[];
1102
1146
  pageLoads: {
1103
1147
  url: string;
1104
1148
  stepIndex: number;
@@ -1173,6 +1217,7 @@ declare const TestCaseResultSchema: z.ZodObject<{
1173
1217
  device?: string | undefined;
1174
1218
  videoPath?: string | undefined;
1175
1219
  tracePath?: string | undefined;
1220
+ downloadPaths?: string[] | undefined;
1176
1221
  dataRowIndex?: number | undefined;
1177
1222
  dataRow?: Record<string, string> | undefined;
1178
1223
  pageLoads?: {
@@ -1325,6 +1370,8 @@ declare const SuiteResultSchema: z.ZodObject<{
1325
1370
  finishedAt: z.ZodString;
1326
1371
  videoPath: z.ZodOptional<z.ZodString>;
1327
1372
  tracePath: z.ZodOptional<z.ZodString>;
1373
+ /** Files downloaded during the case (absolute paths under results/downloads/). */
1374
+ downloadPaths: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
1328
1375
  dataRowIndex: z.ZodOptional<z.ZodNumber>;
1329
1376
  dataRow: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
1330
1377
  pageLoads: z.ZodDefault<z.ZodArray<z.ZodObject<{
@@ -1477,6 +1524,7 @@ declare const SuiteResultSchema: z.ZodObject<{
1477
1524
  browser: string;
1478
1525
  startedAt: string;
1479
1526
  finishedAt: string;
1527
+ downloadPaths: string[];
1480
1528
  pageLoads: {
1481
1529
  url: string;
1482
1530
  stepIndex: number;
@@ -1551,6 +1599,7 @@ declare const SuiteResultSchema: z.ZodObject<{
1551
1599
  device?: string | undefined;
1552
1600
  videoPath?: string | undefined;
1553
1601
  tracePath?: string | undefined;
1602
+ downloadPaths?: string[] | undefined;
1554
1603
  dataRowIndex?: number | undefined;
1555
1604
  dataRow?: Record<string, string> | undefined;
1556
1605
  pageLoads?: {
@@ -1632,6 +1681,7 @@ declare const SuiteResultSchema: z.ZodObject<{
1632
1681
  browser: string;
1633
1682
  startedAt: string;
1634
1683
  finishedAt: string;
1684
+ downloadPaths: string[];
1635
1685
  pageLoads: {
1636
1686
  url: string;
1637
1687
  stepIndex: number;
@@ -1716,6 +1766,7 @@ declare const SuiteResultSchema: z.ZodObject<{
1716
1766
  device?: string | undefined;
1717
1767
  videoPath?: string | undefined;
1718
1768
  tracePath?: string | undefined;
1769
+ downloadPaths?: string[] | undefined;
1719
1770
  dataRowIndex?: number | undefined;
1720
1771
  dataRow?: Record<string, string> | undefined;
1721
1772
  pageLoads?: {
@@ -1874,6 +1925,8 @@ declare const RunResultSchema: z.ZodObject<{
1874
1925
  finishedAt: z.ZodString;
1875
1926
  videoPath: z.ZodOptional<z.ZodString>;
1876
1927
  tracePath: z.ZodOptional<z.ZodString>;
1928
+ /** Files downloaded during the case (absolute paths under results/downloads/). */
1929
+ downloadPaths: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
1877
1930
  dataRowIndex: z.ZodOptional<z.ZodNumber>;
1878
1931
  dataRow: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
1879
1932
  pageLoads: z.ZodDefault<z.ZodArray<z.ZodObject<{
@@ -2026,6 +2079,7 @@ declare const RunResultSchema: z.ZodObject<{
2026
2079
  browser: string;
2027
2080
  startedAt: string;
2028
2081
  finishedAt: string;
2082
+ downloadPaths: string[];
2029
2083
  pageLoads: {
2030
2084
  url: string;
2031
2085
  stepIndex: number;
@@ -2100,6 +2154,7 @@ declare const RunResultSchema: z.ZodObject<{
2100
2154
  device?: string | undefined;
2101
2155
  videoPath?: string | undefined;
2102
2156
  tracePath?: string | undefined;
2157
+ downloadPaths?: string[] | undefined;
2103
2158
  dataRowIndex?: number | undefined;
2104
2159
  dataRow?: Record<string, string> | undefined;
2105
2160
  pageLoads?: {
@@ -2181,6 +2236,7 @@ declare const RunResultSchema: z.ZodObject<{
2181
2236
  browser: string;
2182
2237
  startedAt: string;
2183
2238
  finishedAt: string;
2239
+ downloadPaths: string[];
2184
2240
  pageLoads: {
2185
2241
  url: string;
2186
2242
  stepIndex: number;
@@ -2265,6 +2321,7 @@ declare const RunResultSchema: z.ZodObject<{
2265
2321
  device?: string | undefined;
2266
2322
  videoPath?: string | undefined;
2267
2323
  tracePath?: string | undefined;
2324
+ downloadPaths?: string[] | undefined;
2268
2325
  dataRowIndex?: number | undefined;
2269
2326
  dataRow?: Record<string, string> | undefined;
2270
2327
  pageLoads?: {
@@ -2361,6 +2418,7 @@ declare const RunResultSchema: z.ZodObject<{
2361
2418
  browser: string;
2362
2419
  startedAt: string;
2363
2420
  finishedAt: string;
2421
+ downloadPaths: string[];
2364
2422
  pageLoads: {
2365
2423
  url: string;
2366
2424
  stepIndex: number;
@@ -2458,6 +2516,7 @@ declare const RunResultSchema: z.ZodObject<{
2458
2516
  device?: string | undefined;
2459
2517
  videoPath?: string | undefined;
2460
2518
  tracePath?: string | undefined;
2519
+ downloadPaths?: string[] | undefined;
2461
2520
  dataRowIndex?: number | undefined;
2462
2521
  dataRow?: Record<string, string> | undefined;
2463
2522
  pageLoads?: {
@@ -2676,7 +2735,12 @@ interface HealingDecision {
2676
2735
  strategy?: 'individual' | 'batch';
2677
2736
  reason: string;
2678
2737
  }
2679
- type FailureKind = 'assertion' | 'infra';
2738
+ /**
2739
+ * - 'assertion' → element found but the asserted state/value is wrong (real bug; never healed)
2740
+ * - 'assertion-locator-missing'→ the locator inside an expect() didn't resolve (path broken; healable when opted in)
2741
+ * - 'infra' → broken selector/action on an interaction step (always healable)
2742
+ */
2743
+ type FailureKind = 'assertion' | 'assertion-locator-missing' | 'infra';
2680
2744
  interface StepFailure {
2681
2745
  stepId: string;
2682
2746
  instruction: string;
package/dist/index.d.ts CHANGED
@@ -14,16 +14,25 @@ declare const HealingConfigSchema: z.ZodObject<{
14
14
  maxLevel: z.ZodNumber;
15
15
  dailyBudget: z.ZodNumber;
16
16
  autoPR: z.ZodBoolean;
17
+ /**
18
+ * Opt-in: when a locator INSIDE an assertion fails to resolve (e.g. a wrong
19
+ * frame selector in expect(...).toBeVisible()), re-resolve just the locator
20
+ * while preserving the matcher and asserted content. Off by default — a
21
+ * genuine "element found but state/value wrong" assertion is never healed.
22
+ */
23
+ healAssertionLocators: z.ZodDefault<z.ZodBoolean>;
17
24
  }, "strip", z.ZodTypeAny, {
18
25
  enabled: boolean;
19
26
  maxLevel: number;
20
27
  dailyBudget: number;
21
28
  autoPR: boolean;
29
+ healAssertionLocators: boolean;
22
30
  }, {
23
31
  enabled: boolean;
24
32
  maxLevel: number;
25
33
  dailyBudget: number;
26
34
  autoPR: boolean;
35
+ healAssertionLocators?: boolean | undefined;
27
36
  }>;
28
37
  declare const ReportingConfigSchema: z.ZodObject<{
29
38
  allure: z.ZodBoolean;
@@ -81,16 +90,25 @@ declare const AutotestConfigSchema: z.ZodObject<{
81
90
  maxLevel: z.ZodNumber;
82
91
  dailyBudget: z.ZodNumber;
83
92
  autoPR: z.ZodBoolean;
93
+ /**
94
+ * Opt-in: when a locator INSIDE an assertion fails to resolve (e.g. a wrong
95
+ * frame selector in expect(...).toBeVisible()), re-resolve just the locator
96
+ * while preserving the matcher and asserted content. Off by default — a
97
+ * genuine "element found but state/value wrong" assertion is never healed.
98
+ */
99
+ healAssertionLocators: z.ZodDefault<z.ZodBoolean>;
84
100
  }, "strip", z.ZodTypeAny, {
85
101
  enabled: boolean;
86
102
  maxLevel: number;
87
103
  dailyBudget: number;
88
104
  autoPR: boolean;
105
+ healAssertionLocators: boolean;
89
106
  }, {
90
107
  enabled: boolean;
91
108
  maxLevel: number;
92
109
  dailyBudget: number;
93
110
  autoPR: boolean;
111
+ healAssertionLocators?: boolean | undefined;
94
112
  }>;
95
113
  reporting: z.ZodObject<{
96
114
  allure: z.ZodBoolean;
@@ -259,6 +277,21 @@ declare const AutotestConfigSchema: z.ZodObject<{
259
277
  actionTimeout: number;
260
278
  idleTimeout: number;
261
279
  }>>;
280
+ /**
281
+ * CI/CD pipeline integration.
282
+ *
283
+ * When `writeToRepo` is enabled, the Studio's CI Config Generator can write the
284
+ * generated workflow file directly into the project (e.g. .github/workflows/
285
+ * assuremind.yml) instead of being copy/download-only. Off by default — the user
286
+ * reviews and commits the file via the Git Control Center.
287
+ */
288
+ ci: z.ZodDefault<z.ZodObject<{
289
+ writeToRepo: z.ZodBoolean;
290
+ }, "strip", z.ZodTypeAny, {
291
+ writeToRepo: boolean;
292
+ }, {
293
+ writeToRepo: boolean;
294
+ }>>;
262
295
  }, "strip", z.ZodTypeAny, {
263
296
  baseUrl: string;
264
297
  environment: "dev" | "stage" | "test" | "prod";
@@ -286,6 +319,7 @@ declare const AutotestConfigSchema: z.ZodObject<{
286
319
  maxLevel: number;
287
320
  dailyBudget: number;
288
321
  autoPR: boolean;
322
+ healAssertionLocators: boolean;
289
323
  };
290
324
  reporting: {
291
325
  allure: boolean;
@@ -327,6 +361,9 @@ declare const AutotestConfigSchema: z.ZodObject<{
327
361
  actionTimeout: number;
328
362
  idleTimeout: number;
329
363
  };
364
+ ci: {
365
+ writeToRepo: boolean;
366
+ };
330
367
  activeProfile?: string | undefined;
331
368
  device?: string | undefined;
332
369
  }, {
@@ -344,6 +381,7 @@ declare const AutotestConfigSchema: z.ZodObject<{
344
381
  maxLevel: number;
345
382
  dailyBudget: number;
346
383
  autoPR: boolean;
384
+ healAssertionLocators?: boolean | undefined;
347
385
  };
348
386
  reporting: {
349
387
  allure: boolean;
@@ -399,6 +437,9 @@ declare const AutotestConfigSchema: z.ZodObject<{
399
437
  actionTimeout: number;
400
438
  idleTimeout: number;
401
439
  } | undefined;
440
+ ci?: {
441
+ writeToRepo: boolean;
442
+ } | undefined;
402
443
  }>;
403
444
  type HealingConfig = z.infer<typeof HealingConfigSchema>;
404
445
  type ReportingConfig = z.infer<typeof ReportingConfigSchema>;
@@ -947,6 +988,8 @@ declare const TestCaseResultSchema: z.ZodObject<{
947
988
  finishedAt: z.ZodString;
948
989
  videoPath: z.ZodOptional<z.ZodString>;
949
990
  tracePath: z.ZodOptional<z.ZodString>;
991
+ /** Files downloaded during the case (absolute paths under results/downloads/). */
992
+ downloadPaths: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
950
993
  dataRowIndex: z.ZodOptional<z.ZodNumber>;
951
994
  dataRow: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
952
995
  pageLoads: z.ZodDefault<z.ZodArray<z.ZodObject<{
@@ -1099,6 +1142,7 @@ declare const TestCaseResultSchema: z.ZodObject<{
1099
1142
  browser: string;
1100
1143
  startedAt: string;
1101
1144
  finishedAt: string;
1145
+ downloadPaths: string[];
1102
1146
  pageLoads: {
1103
1147
  url: string;
1104
1148
  stepIndex: number;
@@ -1173,6 +1217,7 @@ declare const TestCaseResultSchema: z.ZodObject<{
1173
1217
  device?: string | undefined;
1174
1218
  videoPath?: string | undefined;
1175
1219
  tracePath?: string | undefined;
1220
+ downloadPaths?: string[] | undefined;
1176
1221
  dataRowIndex?: number | undefined;
1177
1222
  dataRow?: Record<string, string> | undefined;
1178
1223
  pageLoads?: {
@@ -1325,6 +1370,8 @@ declare const SuiteResultSchema: z.ZodObject<{
1325
1370
  finishedAt: z.ZodString;
1326
1371
  videoPath: z.ZodOptional<z.ZodString>;
1327
1372
  tracePath: z.ZodOptional<z.ZodString>;
1373
+ /** Files downloaded during the case (absolute paths under results/downloads/). */
1374
+ downloadPaths: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
1328
1375
  dataRowIndex: z.ZodOptional<z.ZodNumber>;
1329
1376
  dataRow: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
1330
1377
  pageLoads: z.ZodDefault<z.ZodArray<z.ZodObject<{
@@ -1477,6 +1524,7 @@ declare const SuiteResultSchema: z.ZodObject<{
1477
1524
  browser: string;
1478
1525
  startedAt: string;
1479
1526
  finishedAt: string;
1527
+ downloadPaths: string[];
1480
1528
  pageLoads: {
1481
1529
  url: string;
1482
1530
  stepIndex: number;
@@ -1551,6 +1599,7 @@ declare const SuiteResultSchema: z.ZodObject<{
1551
1599
  device?: string | undefined;
1552
1600
  videoPath?: string | undefined;
1553
1601
  tracePath?: string | undefined;
1602
+ downloadPaths?: string[] | undefined;
1554
1603
  dataRowIndex?: number | undefined;
1555
1604
  dataRow?: Record<string, string> | undefined;
1556
1605
  pageLoads?: {
@@ -1632,6 +1681,7 @@ declare const SuiteResultSchema: z.ZodObject<{
1632
1681
  browser: string;
1633
1682
  startedAt: string;
1634
1683
  finishedAt: string;
1684
+ downloadPaths: string[];
1635
1685
  pageLoads: {
1636
1686
  url: string;
1637
1687
  stepIndex: number;
@@ -1716,6 +1766,7 @@ declare const SuiteResultSchema: z.ZodObject<{
1716
1766
  device?: string | undefined;
1717
1767
  videoPath?: string | undefined;
1718
1768
  tracePath?: string | undefined;
1769
+ downloadPaths?: string[] | undefined;
1719
1770
  dataRowIndex?: number | undefined;
1720
1771
  dataRow?: Record<string, string> | undefined;
1721
1772
  pageLoads?: {
@@ -1874,6 +1925,8 @@ declare const RunResultSchema: z.ZodObject<{
1874
1925
  finishedAt: z.ZodString;
1875
1926
  videoPath: z.ZodOptional<z.ZodString>;
1876
1927
  tracePath: z.ZodOptional<z.ZodString>;
1928
+ /** Files downloaded during the case (absolute paths under results/downloads/). */
1929
+ downloadPaths: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
1877
1930
  dataRowIndex: z.ZodOptional<z.ZodNumber>;
1878
1931
  dataRow: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
1879
1932
  pageLoads: z.ZodDefault<z.ZodArray<z.ZodObject<{
@@ -2026,6 +2079,7 @@ declare const RunResultSchema: z.ZodObject<{
2026
2079
  browser: string;
2027
2080
  startedAt: string;
2028
2081
  finishedAt: string;
2082
+ downloadPaths: string[];
2029
2083
  pageLoads: {
2030
2084
  url: string;
2031
2085
  stepIndex: number;
@@ -2100,6 +2154,7 @@ declare const RunResultSchema: z.ZodObject<{
2100
2154
  device?: string | undefined;
2101
2155
  videoPath?: string | undefined;
2102
2156
  tracePath?: string | undefined;
2157
+ downloadPaths?: string[] | undefined;
2103
2158
  dataRowIndex?: number | undefined;
2104
2159
  dataRow?: Record<string, string> | undefined;
2105
2160
  pageLoads?: {
@@ -2181,6 +2236,7 @@ declare const RunResultSchema: z.ZodObject<{
2181
2236
  browser: string;
2182
2237
  startedAt: string;
2183
2238
  finishedAt: string;
2239
+ downloadPaths: string[];
2184
2240
  pageLoads: {
2185
2241
  url: string;
2186
2242
  stepIndex: number;
@@ -2265,6 +2321,7 @@ declare const RunResultSchema: z.ZodObject<{
2265
2321
  device?: string | undefined;
2266
2322
  videoPath?: string | undefined;
2267
2323
  tracePath?: string | undefined;
2324
+ downloadPaths?: string[] | undefined;
2268
2325
  dataRowIndex?: number | undefined;
2269
2326
  dataRow?: Record<string, string> | undefined;
2270
2327
  pageLoads?: {
@@ -2361,6 +2418,7 @@ declare const RunResultSchema: z.ZodObject<{
2361
2418
  browser: string;
2362
2419
  startedAt: string;
2363
2420
  finishedAt: string;
2421
+ downloadPaths: string[];
2364
2422
  pageLoads: {
2365
2423
  url: string;
2366
2424
  stepIndex: number;
@@ -2458,6 +2516,7 @@ declare const RunResultSchema: z.ZodObject<{
2458
2516
  device?: string | undefined;
2459
2517
  videoPath?: string | undefined;
2460
2518
  tracePath?: string | undefined;
2519
+ downloadPaths?: string[] | undefined;
2461
2520
  dataRowIndex?: number | undefined;
2462
2521
  dataRow?: Record<string, string> | undefined;
2463
2522
  pageLoads?: {
@@ -2676,7 +2735,12 @@ interface HealingDecision {
2676
2735
  strategy?: 'individual' | 'batch';
2677
2736
  reason: string;
2678
2737
  }
2679
- type FailureKind = 'assertion' | 'infra';
2738
+ /**
2739
+ * - 'assertion' → element found but the asserted state/value is wrong (real bug; never healed)
2740
+ * - 'assertion-locator-missing'→ the locator inside an expect() didn't resolve (path broken; healable when opted in)
2741
+ * - 'infra' → broken selector/action on an interaction step (always healable)
2742
+ */
2743
+ type FailureKind = 'assertion' | 'assertion-locator-missing' | 'infra';
2680
2744
  interface StepFailure {
2681
2745
  stepId: string;
2682
2746
  instruction: string;