ado-sync 0.1.36 → 0.1.38
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/ai/summarizer.d.ts +9 -1
- package/dist/ai/summarizer.js +118 -9
- package/dist/ai/summarizer.js.map +1 -1
- package/dist/azure/test-cases.d.ts +5 -0
- package/dist/azure/test-cases.js +9 -0
- package/dist/azure/test-cases.js.map +1 -1
- package/dist/config.js +23 -1
- package/dist/config.js.map +1 -1
- package/dist/sync/engine.js +47 -6
- package/dist/sync/engine.js.map +1 -1
- package/dist/sync/publish-results.js +14 -4
- package/dist/sync/publish-results.js.map +1 -1
- package/dist/sync/writeback.d.ts +1 -1
- package/dist/sync/writeback.js +1 -0
- package/dist/sync/writeback.js.map +1 -1
- package/dist/types.d.ts +61 -3
- package/package.json +1 -1
package/dist/types.d.ts
CHANGED
|
@@ -19,6 +19,23 @@ export interface SuiteCondition {
|
|
|
19
19
|
*/
|
|
20
20
|
tags?: string;
|
|
21
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Routes a test case to a specific primary suite based on a tag expression.
|
|
24
|
+
* Evaluated in order; the first matching route wins.
|
|
25
|
+
* When no route matches, falls back to suiteId or plan root suite.
|
|
26
|
+
*/
|
|
27
|
+
export interface SuiteRoute {
|
|
28
|
+
/**
|
|
29
|
+
* Tag expression filter (e.g. '@smoke', '@regression and not @wip').
|
|
30
|
+
* When omitted, this route acts as a catch-all default.
|
|
31
|
+
*/
|
|
32
|
+
tags?: string;
|
|
33
|
+
/**
|
|
34
|
+
* Target suite: a suite name (created if absent) or a numeric suite ID.
|
|
35
|
+
* e.g. "Smoke Tests" or 12345
|
|
36
|
+
*/
|
|
37
|
+
suite: string | number;
|
|
38
|
+
}
|
|
22
39
|
export interface TestPlanEntry {
|
|
23
40
|
id: number;
|
|
24
41
|
suiteId?: number;
|
|
@@ -28,6 +45,26 @@ export interface TestPlanEntry {
|
|
|
28
45
|
include?: string | string[];
|
|
29
46
|
/** Override local.exclude for this plan */
|
|
30
47
|
exclude?: string | string[];
|
|
48
|
+
/**
|
|
49
|
+
* Tag-condition-based primary suite routing for this plan entry.
|
|
50
|
+
* Routes are evaluated in order; the first match wins.
|
|
51
|
+
* Allows multiple suites under a single test plan without separate testPlans entries.
|
|
52
|
+
*
|
|
53
|
+
* Example:
|
|
54
|
+
* suiteRouting:
|
|
55
|
+
* - tags: "@smoke"
|
|
56
|
+
* suite: "Smoke Tests"
|
|
57
|
+
* - tags: "@regression"
|
|
58
|
+
* suite: "Regression"
|
|
59
|
+
* - suite: "All Tests" # catch-all
|
|
60
|
+
*/
|
|
61
|
+
suiteRouting?: SuiteRoute[];
|
|
62
|
+
/**
|
|
63
|
+
* Additional condition-based suite assignment for this plan entry.
|
|
64
|
+
* Overrides sync.suiteConditions for this plan. TCs are added to each
|
|
65
|
+
* matching suite in addition to the primary suite.
|
|
66
|
+
*/
|
|
67
|
+
suiteConditions?: SuiteCondition[];
|
|
31
68
|
}
|
|
32
69
|
export interface StateConfig {
|
|
33
70
|
/** Set the TC State field to this value when the scenario has changed. e.g. "Design" */
|
|
@@ -189,13 +226,27 @@ export interface SyncConfig {
|
|
|
189
226
|
suiteId?: number;
|
|
190
227
|
/** 'flat' (default) or 'byFolder' to mirror folder structure as nested suites */
|
|
191
228
|
suiteMapping?: 'flat' | 'byFolder';
|
|
229
|
+
/**
|
|
230
|
+
* Tag-condition-based primary suite routing.
|
|
231
|
+
* Routes are evaluated in order; the first match wins.
|
|
232
|
+
* Allows multiple suites under a single test plan.
|
|
233
|
+
*
|
|
234
|
+
* Example:
|
|
235
|
+
* suiteRouting:
|
|
236
|
+
* - tags: "@smoke"
|
|
237
|
+
* suite: "Smoke Tests"
|
|
238
|
+
* - tags: "@regression"
|
|
239
|
+
* suite: "Regression Suite"
|
|
240
|
+
* - suite: "All Tests" # catch-all default
|
|
241
|
+
*/
|
|
242
|
+
suiteRouting?: SuiteRoute[];
|
|
192
243
|
};
|
|
193
244
|
/** Multi-plan mode: if present, overrides testPlan for each entry */
|
|
194
245
|
testPlans?: TestPlanEntry[];
|
|
195
246
|
/** Local spec sources */
|
|
196
247
|
local: {
|
|
197
|
-
/** 'gherkin' for .feature files, 'markdown' for .md, 'csharp' for MSTest/NUnit .cs, 'java' for JUnit/TestNG .java, 'python' for pytest .py, 'javascript' for Jest/Jasmine/WebdriverIO .js/.ts, 'playwright' for Playwright Test .spec.ts/.spec.js, 'puppeteer' for Puppeteer + Jest/Mocha .js/.ts, 'cypress' for Cypress .cy.js/.cy.ts, 'testcafe' for TestCafe .js/.ts, 'detox' for Detox (React Native) .js/.ts, 'espresso' for Android Espresso .java/.kt, 'xcuitest' for iOS XCUITest .swift, 'flutter' for Flutter/Dart _test.dart */
|
|
198
|
-
type: 'gherkin' | 'markdown' | 'csv' | 'excel' | 'csharp' | 'java' | 'python' | 'javascript' | 'playwright' | 'puppeteer' | 'cypress' | 'testcafe' | 'detox' | 'espresso' | 'xcuitest' | 'flutter';
|
|
248
|
+
/** 'gherkin' for .feature files, 'reqnroll' for ReqNRoll .feature files (SpecFlow successor), 'markdown' for .md, 'csharp' for MSTest/NUnit .cs, 'java' for JUnit/TestNG .java, 'python' for pytest .py, 'javascript' for Jest/Jasmine/WebdriverIO .js/.ts, 'playwright' for Playwright Test .spec.ts/.spec.js, 'puppeteer' for Puppeteer + Jest/Mocha .js/.ts, 'cypress' for Cypress .cy.js/.cy.ts, 'testcafe' for TestCafe .js/.ts, 'detox' for Detox (React Native) .js/.ts, 'espresso' for Android Espresso .java/.kt, 'xcuitest' for iOS XCUITest .swift, 'flutter' for Flutter/Dart _test.dart */
|
|
249
|
+
type: 'gherkin' | 'reqnroll' | 'markdown' | 'csv' | 'excel' | 'csharp' | 'java' | 'python' | 'javascript' | 'playwright' | 'puppeteer' | 'cypress' | 'testcafe' | 'detox' | 'espresso' | 'xcuitest' | 'flutter';
|
|
199
250
|
/** Glob pattern(s) relative to config file location */
|
|
200
251
|
include: string | string[];
|
|
201
252
|
/** Glob pattern(s) to exclude */
|
|
@@ -287,13 +338,20 @@ export interface SyncConfig {
|
|
|
287
338
|
/**
|
|
288
339
|
* For 'local': absolute path to a GGUF model file.
|
|
289
340
|
* For 'ollama': model tag, e.g. 'qwen2.5-coder:7b'.
|
|
290
|
-
* For 'openai'/'anthropic': model name, e.g. 'gpt-4o-mini'.
|
|
341
|
+
* For 'openai'/'anthropic': model name, e.g. 'gpt-4o-mini' or 'claude-sonnet-4-6'.
|
|
291
342
|
*/
|
|
292
343
|
model?: string;
|
|
293
344
|
/** Base URL for 'ollama' or an OpenAI-compatible endpoint. e.g. 'http://localhost:4000' */
|
|
294
345
|
baseUrl?: string;
|
|
295
346
|
/** API key for 'openai' or 'anthropic'. Supports $ENV_VAR references. */
|
|
296
347
|
apiKey?: string;
|
|
348
|
+
/**
|
|
349
|
+
* When true, use AI to analyze test failure messages and generate a human-readable
|
|
350
|
+
* root cause summary. The summary is added as a comment on the Azure test result.
|
|
351
|
+
* Only applies when publishing test results. Requires a non-heuristic provider.
|
|
352
|
+
* Default: false.
|
|
353
|
+
*/
|
|
354
|
+
analyzeFailures?: boolean;
|
|
297
355
|
};
|
|
298
356
|
};
|
|
299
357
|
}
|