ado-sync 0.1.31 → 0.1.33
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/README.md +37 -5
- package/dist/cli.js +13 -11
- package/dist/cli.js.map +1 -1
- package/dist/parsers/javascript.d.ts +12 -4
- package/dist/parsers/javascript.js +98 -6
- package/dist/parsers/javascript.js.map +1 -1
- package/dist/parsers/testcafe.d.ts +8 -2
- package/dist/parsers/testcafe.js +108 -15
- package/dist/parsers/testcafe.js.map +1 -1
- package/dist/sync/publish-results.js +34 -5
- package/dist/sync/publish-results.js.map +1 -1
- package/dist/sync/writeback.d.ts +35 -0
- package/dist/sync/writeback.js +185 -2
- package/dist/sync/writeback.js.map +1 -1
- package/dist/types.d.ts +26 -0
- package/docs/advanced.md +56 -1
- package/docs/publish-test-results.md +140 -4
- package/docs/spec-formats.md +106 -23
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -60,10 +60,10 @@ On the **first push**, a new Test Case is created in Azure DevOps and its ID is
|
|
|
60
60
|
| Java JUnit 5 | `@Tag("tc:12345")` above `@Test` |
|
|
61
61
|
| Python pytest | `@pytest.mark.tc(12345)` above `def test_*` |
|
|
62
62
|
| JavaScript/TS (Jest/Jasmine/WebdriverIO) | `// @tc:12345` comment above `it()`/`test()` |
|
|
63
|
-
| Playwright |
|
|
63
|
+
| Playwright | `annotation: { type: 'tc', description: '12345' }` in test options *(preferred)*; or `// @tc:12345` comment fallback |
|
|
64
64
|
| Puppeteer | `// @tc:12345` comment above `it()`/`test()` |
|
|
65
65
|
| Cypress | `// @tc:12345` comment above `it()`/`specify()` |
|
|
66
|
-
| TestCafe | `// @tc:12345` comment
|
|
66
|
+
| TestCafe | `test.meta('tc', '12345')('title', fn)` *(preferred)*; or `// @tc:12345` comment fallback |
|
|
67
67
|
| Detox | `// @tc:12345` comment above `it()`/`test()` |
|
|
68
68
|
| Espresso (Java/Kotlin) | `// @tc:12345` comment above `@Test` |
|
|
69
69
|
| XCUITest (Swift) | `// @tc:12345` comment above `func test*()` |
|
|
@@ -211,6 +211,7 @@ For code-based test types (`java`, `csharp`, `python`, `javascript`, `playwright
|
|
|
211
211
|
| `ollama` | Good–Excellent | Install [Ollama](https://ollama.com) + `ollama pull qwen2.5-coder:7b` |
|
|
212
212
|
| `openai` | Excellent | `--ai-key $OPENAI_API_KEY` |
|
|
213
213
|
| `anthropic` | Excellent | `--ai-key $ANTHROPIC_API_KEY` |
|
|
214
|
+
| `openai` + `--ai-url` | Excellent | Any OpenAI-compatible proxy: LiteLLM, Azure OpenAI, vLLM, LM Studio |
|
|
214
215
|
|
|
215
216
|
#### Option A — No setup (heuristic, instant)
|
|
216
217
|
|
|
@@ -276,6 +277,20 @@ ado-sync push --ai-provider openai --ai-key $OPENAI_API_KEY
|
|
|
276
277
|
ado-sync push --ai-provider anthropic --ai-key $ANTHROPIC_API_KEY
|
|
277
278
|
```
|
|
278
279
|
|
|
280
|
+
#### Option E — LiteLLM or any OpenAI-compatible proxy
|
|
281
|
+
|
|
282
|
+
[LiteLLM](https://github.com/BerriAI/litellm) is a proxy that routes to 100+ providers (Azure OpenAI, Bedrock, Gemini, Mistral, vLLM, and more) via a single OpenAI-compatible API. Point the `openai` provider at it with `--ai-url`:
|
|
283
|
+
|
|
284
|
+
```bash
|
|
285
|
+
ado-sync push \
|
|
286
|
+
--ai-provider openai \
|
|
287
|
+
--ai-url http://localhost:4000 \
|
|
288
|
+
--ai-key $LITELLM_API_KEY \
|
|
289
|
+
--ai-model gpt-4o-mini
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
The same pattern works for Azure OpenAI, vLLM, LM Studio, and LocalAI — just change `--ai-url` to the endpoint's base URL. See [docs/advanced.md](docs/advanced.md) for a full compatibility table.
|
|
293
|
+
|
|
279
294
|
#### Disable AI entirely
|
|
280
295
|
|
|
281
296
|
```bash
|
|
@@ -454,6 +469,23 @@ pytest --junitxml=results/junit.xml
|
|
|
454
469
|
ado-sync publish-test-results --testResult results/junit.xml --testResultFormat junit
|
|
455
470
|
```
|
|
456
471
|
|
|
472
|
+
By default, TC linking uses `AutomatedTestName` matching (requires `sync.markAutomated: true`).
|
|
473
|
+
|
|
474
|
+
**Optional — embed TC IDs into JUnit XML** for direct linking (more reliable, works even if the class/method is renamed):
|
|
475
|
+
|
|
476
|
+
Add this to `conftest.py`:
|
|
477
|
+
|
|
478
|
+
```python
|
|
479
|
+
# conftest.py
|
|
480
|
+
def pytest_runtest_makereport(item, call):
|
|
481
|
+
"""Write @pytest.mark.tc(N) as a JUnit XML property for ado-sync to pick up."""
|
|
482
|
+
for marker in item.iter_markers("tc"):
|
|
483
|
+
if marker.args:
|
|
484
|
+
item.user_properties.append(("tc", str(marker.args[0])))
|
|
485
|
+
```
|
|
486
|
+
|
|
487
|
+
pytest will then write each TC ID into the JUnit XML as `<property name="tc" value="N"/>`, and ado-sync will link the result directly to that Test Case — no AutomatedTestName matching needed.
|
|
488
|
+
|
|
457
489
|
Recommended `ado-sync.json` for Python:
|
|
458
490
|
|
|
459
491
|
```json
|
|
@@ -493,13 +525,13 @@ ado-sync publish-test-results --testResult results/junit.xml --testResultFormat
|
|
|
493
525
|
```bash
|
|
494
526
|
# 1. Create TCs and write IDs back into .ts spec files
|
|
495
527
|
ado-sync push --dry-run # preview
|
|
496
|
-
ado-sync push # writes
|
|
528
|
+
ado-sync push # writes annotation: { type: 'tc', description: 'ID' } into test options
|
|
497
529
|
|
|
498
|
-
# 2.
|
|
530
|
+
# 2. Run Playwright with JSON reporter
|
|
499
531
|
# playwright.config.ts: reporter: [['json', { outputFile: 'results/playwright.json' }]]
|
|
500
532
|
npx playwright test
|
|
501
533
|
|
|
502
|
-
# 3. Publish — TC IDs from
|
|
534
|
+
# 3. Publish — TC IDs from native test.annotations; screenshots/videos from attachments[]
|
|
503
535
|
ado-sync publish-test-results --testResult results/playwright.json
|
|
504
536
|
```
|
|
505
537
|
|
package/dist/cli.js
CHANGED
|
@@ -69,18 +69,20 @@ function collect(value, previous) {
|
|
|
69
69
|
}
|
|
70
70
|
// ─── AI summary helper ────────────────────────────────────────────────────────
|
|
71
71
|
/**
|
|
72
|
-
* Build AiSummaryOpts from parsed CLI opts.
|
|
73
|
-
* Returns undefined
|
|
72
|
+
* Build AiSummaryOpts from parsed CLI opts, falling back to config file values.
|
|
73
|
+
* CLI flags always take precedence. Returns undefined when provider is 'none'.
|
|
74
74
|
*/
|
|
75
|
-
function buildAiOpts(opts) {
|
|
76
|
-
|
|
75
|
+
function buildAiOpts(opts, config) {
|
|
76
|
+
const cfgAi = config?.sync?.ai;
|
|
77
|
+
// CLI --ai-provider none wins over config; config provider='none' also disables
|
|
78
|
+
const provider = opts.aiProvider ?? cfgAi?.provider ?? 'local';
|
|
79
|
+
if (provider === 'none')
|
|
77
80
|
return undefined;
|
|
78
|
-
const provider = (opts.aiProvider ?? 'local');
|
|
79
81
|
return {
|
|
80
|
-
provider,
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
82
|
+
provider: provider,
|
|
83
|
+
model: opts.aiModel ?? cfgAi?.model,
|
|
84
|
+
baseUrl: opts.aiUrl ?? cfgAi?.baseUrl,
|
|
85
|
+
apiKey: opts.aiKey ?? cfgAi?.apiKey,
|
|
84
86
|
heuristicFallback: true,
|
|
85
87
|
};
|
|
86
88
|
}
|
|
@@ -133,7 +135,7 @@ program
|
|
|
133
135
|
if (opts.configOverride?.length)
|
|
134
136
|
console.log(chalk_1.default.dim(`Overrides: ${opts.configOverride.join(', ')}`));
|
|
135
137
|
console.log('');
|
|
136
|
-
const aiSummary = buildAiOpts(opts);
|
|
138
|
+
const aiSummary = buildAiOpts(opts, config);
|
|
137
139
|
const isTTY = process.stdout.isTTY ?? false;
|
|
138
140
|
const onProgress = createProgressCallback(isTTY);
|
|
139
141
|
const results = await (0, engine_1.push)(config, configDir, { dryRun: opts.dryRun, tags: opts.tags, onProgress, aiSummary });
|
|
@@ -203,7 +205,7 @@ program
|
|
|
203
205
|
if (opts.tags)
|
|
204
206
|
console.log(chalk_1.default.dim(`Tags: ${opts.tags}`));
|
|
205
207
|
console.log('');
|
|
206
|
-
const aiSummary = buildAiOpts(opts);
|
|
208
|
+
const aiSummary = buildAiOpts(opts, config);
|
|
207
209
|
const isTTY = process.stdout.isTTY ?? false;
|
|
208
210
|
const onProgress = createProgressCallback(isTTY);
|
|
209
211
|
const results = await (0, engine_1.status)(config, configDir, { tags: opts.tags, onProgress, aiSummary });
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,12 +30,20 @@
|
|
|
30
30
|
* "N. Check: text" → TC Steps (expected result column)
|
|
31
31
|
* // @tags: smoke, regression → TC Tags (comma-separated list)
|
|
32
32
|
* // @smoke → TC Tag (single-word shorthand)
|
|
33
|
-
* // @{tagPrefix}:N comment above it()/test() → Azure TC ID (
|
|
34
|
-
* {fileBasename} > {describe} > {it title} → automatedTestName (Jest report format)
|
|
33
|
+
* // @{tagPrefix}:N comment above it()/test() → Azure TC ID (comment fallback)
|
|
35
34
|
*
|
|
36
|
-
*
|
|
35
|
+
* Playwright-native annotation (preferred over comment, read with higher priority):
|
|
36
|
+
* annotation: { type: '<tagPrefix>', description: 'N' } → Azure TC ID
|
|
37
|
+
* annotation: [{ type: '<tagPrefix>', description: 'N' }, ...] → Azure TC ID (array form)
|
|
38
|
+
* tag: '@<tagPrefix>:N' or tag: ['@<tagPrefix>:N', ...] → Azure TC ID (tag form)
|
|
39
|
+
* tag: '@smoke' etc. → TC Tags
|
|
40
|
+
*
|
|
41
|
+
* ID writeback for Playwright:
|
|
42
|
+
* Inserts / updates annotation: { type: 'tc', description: '12345' } in the test
|
|
43
|
+
* options object. Falls back to // @tc:12345 comment if options cannot be parsed.
|
|
44
|
+
*
|
|
45
|
+
* ID writeback for all other frameworks (Jest, Cypress, etc.):
|
|
37
46
|
* Inserts / updates // @tc:12345 immediately above the it() / test() line.
|
|
38
|
-
* No extra dependency required.
|
|
39
47
|
*
|
|
40
48
|
* Path-based auto-tagging: directory segments starting with '@' become tags.
|
|
41
49
|
*/
|
|
@@ -31,12 +31,20 @@
|
|
|
31
31
|
* "N. Check: text" → TC Steps (expected result column)
|
|
32
32
|
* // @tags: smoke, regression → TC Tags (comma-separated list)
|
|
33
33
|
* // @smoke → TC Tag (single-word shorthand)
|
|
34
|
-
* // @{tagPrefix}:N comment above it()/test() → Azure TC ID (
|
|
35
|
-
* {fileBasename} > {describe} > {it title} → automatedTestName (Jest report format)
|
|
34
|
+
* // @{tagPrefix}:N comment above it()/test() → Azure TC ID (comment fallback)
|
|
36
35
|
*
|
|
37
|
-
*
|
|
36
|
+
* Playwright-native annotation (preferred over comment, read with higher priority):
|
|
37
|
+
* annotation: { type: '<tagPrefix>', description: 'N' } → Azure TC ID
|
|
38
|
+
* annotation: [{ type: '<tagPrefix>', description: 'N' }, ...] → Azure TC ID (array form)
|
|
39
|
+
* tag: '@<tagPrefix>:N' or tag: ['@<tagPrefix>:N', ...] → Azure TC ID (tag form)
|
|
40
|
+
* tag: '@smoke' etc. → TC Tags
|
|
41
|
+
*
|
|
42
|
+
* ID writeback for Playwright:
|
|
43
|
+
* Inserts / updates annotation: { type: 'tc', description: '12345' } in the test
|
|
44
|
+
* options object. Falls back to // @tc:12345 comment if options cannot be parsed.
|
|
45
|
+
*
|
|
46
|
+
* ID writeback for all other frameworks (Jest, Cypress, etc.):
|
|
38
47
|
* Inserts / updates // @tc:12345 immediately above the it() / test() line.
|
|
39
|
-
* No extra dependency required.
|
|
40
48
|
*
|
|
41
49
|
* Path-based auto-tagging: directory segments starting with '@' become tags.
|
|
42
50
|
*/
|
|
@@ -203,6 +211,87 @@ function extractCommentMetadataAbove(lines, itLineIdx, tagPrefix) {
|
|
|
203
211
|
}
|
|
204
212
|
return { azureId, tags };
|
|
205
213
|
}
|
|
214
|
+
// ─── Playwright native annotation / tag extraction ────────────────────────────
|
|
215
|
+
/**
|
|
216
|
+
* Scan forward from the test call line to find Playwright-native metadata
|
|
217
|
+
* embedded in the second argument (options object):
|
|
218
|
+
*
|
|
219
|
+
* annotation: { type: 'tc', description: '12345' } (inline)
|
|
220
|
+
* annotation: { type: 'tc',\n description: '12345',\n} (multi-line)
|
|
221
|
+
* annotation: [{ type: 'tc', description: '12345' }, ...] (array form)
|
|
222
|
+
* tag: '@tc:12345' | tag: ['@smoke', '@tc:12345']
|
|
223
|
+
*
|
|
224
|
+
* Native annotation takes priority over comment-style in the caller.
|
|
225
|
+
* Comment-style // @tc:N is handled separately by extractCommentMetadataAbove.
|
|
226
|
+
*/
|
|
227
|
+
function extractPlaywrightNativeMetadata(lines, itLineIdx, tagPrefix) {
|
|
228
|
+
const tags = [];
|
|
229
|
+
let azureId;
|
|
230
|
+
const typeRe = new RegExp(`type\\s*:\\s*['"]${tagPrefix}['"]`);
|
|
231
|
+
const descRe = /description\s*:\s*['"](\d+)['"]/;
|
|
232
|
+
const tagTokenRe = /'@?([\w:]+)'|"@?([\w:]+)"/g;
|
|
233
|
+
const scanEnd = Math.min(itLineIdx + 25, lines.length);
|
|
234
|
+
let inTcAnnotationBlock = false;
|
|
235
|
+
for (let i = itLineIdx; i < scanEnd; i++) {
|
|
236
|
+
const trimmed = lines[i].trim();
|
|
237
|
+
// Stop when the async callback begins (options object is closed by then)
|
|
238
|
+
if (i > itLineIdx && /^async[\s(]/.test(trimmed))
|
|
239
|
+
break;
|
|
240
|
+
// annotation: { type: 'tc', ... } — detect type line
|
|
241
|
+
if (typeRe.test(trimmed)) {
|
|
242
|
+
inTcAnnotationBlock = true;
|
|
243
|
+
// description may be on the same line: { type: 'tc', description: '123' }
|
|
244
|
+
const dm = trimmed.match(descRe);
|
|
245
|
+
if (dm && azureId === undefined) {
|
|
246
|
+
const n = parseInt(dm[1], 10);
|
|
247
|
+
if (!isNaN(n)) {
|
|
248
|
+
azureId = n;
|
|
249
|
+
inTcAnnotationBlock = false;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
// description may be on the immediately preceding line (reversed order)
|
|
253
|
+
if (azureId === undefined && i > itLineIdx) {
|
|
254
|
+
const prev = lines[i - 1].trim().match(descRe);
|
|
255
|
+
if (prev) {
|
|
256
|
+
const n = parseInt(prev[1], 10);
|
|
257
|
+
if (!isNaN(n)) {
|
|
258
|
+
azureId = n;
|
|
259
|
+
inTcAnnotationBlock = false;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
// Still inside a tc annotation block — look for description on next lines
|
|
265
|
+
if (inTcAnnotationBlock && !typeRe.test(trimmed)) {
|
|
266
|
+
const dm = trimmed.match(descRe);
|
|
267
|
+
if (dm && azureId === undefined) {
|
|
268
|
+
const n = parseInt(dm[1], 10);
|
|
269
|
+
if (!isNaN(n)) {
|
|
270
|
+
azureId = n;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
if (trimmed === '}' || trimmed === '},')
|
|
274
|
+
inTcAnnotationBlock = false;
|
|
275
|
+
}
|
|
276
|
+
// tag: '@tc:12345' or tag: ['@smoke', '@tc:12345']
|
|
277
|
+
if (/\btag\s*:/.test(trimmed)) {
|
|
278
|
+
tagTokenRe.lastIndex = 0;
|
|
279
|
+
let m;
|
|
280
|
+
while ((m = tagTokenRe.exec(trimmed)) !== null) {
|
|
281
|
+
const t = (m[1] ?? m[2] ?? '').replace(/^@/, '');
|
|
282
|
+
if (t.startsWith(`${tagPrefix}:`)) {
|
|
283
|
+
const n = parseInt(t.slice(tagPrefix.length + 1), 10);
|
|
284
|
+
if (!isNaN(n) && azureId === undefined)
|
|
285
|
+
azureId = n;
|
|
286
|
+
}
|
|
287
|
+
else if (t) {
|
|
288
|
+
tags.push(t);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
return { azureId, tags };
|
|
294
|
+
}
|
|
206
295
|
// ─── JSDoc → title + steps ────────────────────────────────────────────────────
|
|
207
296
|
const NUMBERED_STEP_RE = /^\d+\.\s+(.+)$/;
|
|
208
297
|
const CHECK_RE = /^[Cc]heck:\s+(.+)$/;
|
|
@@ -250,9 +339,12 @@ function parseJavaScriptFile(filePath, tagPrefix, linkConfigs) {
|
|
|
250
339
|
if (!callTitle)
|
|
251
340
|
continue;
|
|
252
341
|
const jsdocLines = extractJsdocBefore(lines, itLineIdx);
|
|
253
|
-
const { azureId, tags: cTags } = extractCommentMetadataAbove(lines, itLineIdx, tagPrefix);
|
|
342
|
+
const { azureId: cId, tags: cTags } = extractCommentMetadataAbove(lines, itLineIdx, tagPrefix);
|
|
343
|
+
const { azureId: nId, tags: nTags } = extractPlaywrightNativeMetadata(lines, itLineIdx, tagPrefix);
|
|
254
344
|
const describes = findEnclosingDescribes(lines, itLineIdx);
|
|
255
|
-
|
|
345
|
+
// Native Playwright annotation takes priority over comment-style ID
|
|
346
|
+
const azureId = nId ?? cId;
|
|
347
|
+
const allTags = [...new Set([...pathTags, ...cTags, ...nTags])];
|
|
256
348
|
const { title, steps } = parseSummary(jsdocLines, callTitle);
|
|
257
349
|
// automatedTestName mirrors Jest's built-in test-result path format
|
|
258
350
|
const automatedTestName = [fileBaseName, ...describes, callTitle].join(' > ');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"javascript.js","sourceRoot":"","sources":["../../src/parsers/javascript.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"javascript.js","sourceRoot":"","sources":["../../src/parsers/javascript.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,9 @@
|
|
|
8
8
|
* test('title', async t => { ... })
|
|
9
9
|
* test.skip('title', async t => { ... })
|
|
10
10
|
* test.only('title', async t => { ... })
|
|
11
|
+
* test.meta('tc', '12345')('title', async t => { ... }) ← native meta, key-value
|
|
12
|
+
* test.meta({ tc: '12345' })('title', async t => { ... }) ← native meta, object form
|
|
13
|
+
* test.skip.meta(...)('title', ...) / test.meta(...).skip('title', ...)
|
|
11
14
|
*
|
|
12
15
|
* Detected fixture blocks (used as the test group / describe equivalent):
|
|
13
16
|
* fixture('Fixture title')
|
|
@@ -18,13 +21,16 @@
|
|
|
18
21
|
* JSDoc /** ... * / first non-numbered line → TC Title
|
|
19
22
|
* Numbered lines "N. text" → TC Steps (action)
|
|
20
23
|
* "N. Check: text" → TC Steps (expected result column)
|
|
24
|
+
* test.meta('<tagPrefix>', 'N') → Azure TC ID (preferred)
|
|
25
|
+
* test.meta({ <tagPrefix>: 'N' }) → Azure TC ID (object form)
|
|
21
26
|
* // @tags: smoke, regression → TC Tags (comma-separated list)
|
|
22
27
|
* // @smoke → TC Tag (single-word shorthand)
|
|
23
|
-
* // @{tagPrefix}:N comment above test() → Azure TC ID (
|
|
28
|
+
* // @{tagPrefix}:N comment above test() → Azure TC ID (comment fallback)
|
|
24
29
|
* {fileBasename} > {fixture} > {test title} → automatedTestName
|
|
25
30
|
*
|
|
26
31
|
* ID writeback:
|
|
27
|
-
* Inserts / updates
|
|
32
|
+
* Inserts / updates test.meta('<tagPrefix>', 'N') chained to the test call.
|
|
33
|
+
* Falls back to // @tc:12345 comment if the test call cannot be parsed.
|
|
28
34
|
*
|
|
29
35
|
* Path-based auto-tagging: directory segments starting with '@' become tags.
|
|
30
36
|
*/
|
package/dist/parsers/testcafe.js
CHANGED
|
@@ -9,6 +9,9 @@
|
|
|
9
9
|
* test('title', async t => { ... })
|
|
10
10
|
* test.skip('title', async t => { ... })
|
|
11
11
|
* test.only('title', async t => { ... })
|
|
12
|
+
* test.meta('tc', '12345')('title', async t => { ... }) ← native meta, key-value
|
|
13
|
+
* test.meta({ tc: '12345' })('title', async t => { ... }) ← native meta, object form
|
|
14
|
+
* test.skip.meta(...)('title', ...) / test.meta(...).skip('title', ...)
|
|
12
15
|
*
|
|
13
16
|
* Detected fixture blocks (used as the test group / describe equivalent):
|
|
14
17
|
* fixture('Fixture title')
|
|
@@ -19,13 +22,16 @@
|
|
|
19
22
|
* JSDoc /** ... * / first non-numbered line → TC Title
|
|
20
23
|
* Numbered lines "N. text" → TC Steps (action)
|
|
21
24
|
* "N. Check: text" → TC Steps (expected result column)
|
|
25
|
+
* test.meta('<tagPrefix>', 'N') → Azure TC ID (preferred)
|
|
26
|
+
* test.meta({ <tagPrefix>: 'N' }) → Azure TC ID (object form)
|
|
22
27
|
* // @tags: smoke, regression → TC Tags (comma-separated list)
|
|
23
28
|
* // @smoke → TC Tag (single-word shorthand)
|
|
24
|
-
* // @{tagPrefix}:N comment above test() → Azure TC ID (
|
|
29
|
+
* // @{tagPrefix}:N comment above test() → Azure TC ID (comment fallback)
|
|
25
30
|
* {fileBasename} > {fixture} > {test title} → automatedTestName
|
|
26
31
|
*
|
|
27
32
|
* ID writeback:
|
|
28
|
-
* Inserts / updates
|
|
33
|
+
* Inserts / updates test.meta('<tagPrefix>', 'N') chained to the test call.
|
|
34
|
+
* Falls back to // @tc:12345 comment if the test call cannot be parsed.
|
|
29
35
|
*
|
|
30
36
|
* Path-based auto-tagging: directory segments starting with '@' become tags.
|
|
31
37
|
*/
|
|
@@ -68,9 +74,17 @@ const fs = __importStar(require("fs"));
|
|
|
68
74
|
const path = __importStar(require("path"));
|
|
69
75
|
const shared_1 = require("./shared");
|
|
70
76
|
// ─── Test / fixture detection ─────────────────────────────────────────────────
|
|
77
|
+
/** Matches a regular test call (no .meta chaining). */
|
|
71
78
|
const TEST_CALL_RE = /^(?:test|test\.skip|test\.only)\s*\(/;
|
|
72
79
|
const TEST_TITLE_RE = /^(?:test|test\.skip|test\.only)\s*\(\s*(['"`])((?:\\.|[^\\])*?)\1/;
|
|
73
80
|
const FIXTURE_TITLE_RE = /^(?:fixture|fixture\.skip|fixture\.only)\s*\(\s*(['"`])((?:\\.|[^\\])*?)\1/;
|
|
81
|
+
/**
|
|
82
|
+
* Matches a meta-chained test call:
|
|
83
|
+
* test.meta(...)('title', fn)
|
|
84
|
+
* test.skip.meta(...)('title', fn)
|
|
85
|
+
* test.only.meta(...)('title', fn)
|
|
86
|
+
*/
|
|
87
|
+
const META_CHAIN_RE = /^test(?:\.(?:skip|only))?\.meta\s*\(/;
|
|
74
88
|
// ─── Indentation helpers ──────────────────────────────────────────────────────
|
|
75
89
|
function getIndentLength(line) {
|
|
76
90
|
return (line.match(/^(\s*)/) ?? ['', ''])[1].length;
|
|
@@ -156,6 +170,65 @@ function extractCommentMetadataAbove(lines, testLineIdx, tagPrefix) {
|
|
|
156
170
|
}
|
|
157
171
|
return { azureId, tags };
|
|
158
172
|
}
|
|
173
|
+
/**
|
|
174
|
+
* Parse a meta-chained TestCafe test call:
|
|
175
|
+
* test.meta('tc', '12345')('title', async t => { ... })
|
|
176
|
+
* test.meta({ tc: '12345', priority: 'high' })('title', async t => { ... })
|
|
177
|
+
*
|
|
178
|
+
* Collects up to 8 lines starting at startLineIdx to handle multi-line meta
|
|
179
|
+
* calls. The titleLineIdx in the result indicates where the title was found
|
|
180
|
+
* (used to advance the outer parsing loop past this test).
|
|
181
|
+
*
|
|
182
|
+
* Returns null if the pattern cannot be parsed.
|
|
183
|
+
*/
|
|
184
|
+
function extractMetaChainResult(lines, startLineIdx, tagPrefix) {
|
|
185
|
+
let azureId;
|
|
186
|
+
const tags = [];
|
|
187
|
+
const scanEnd = Math.min(startLineIdx + 8, lines.length);
|
|
188
|
+
// Accumulate trimmed source lines until we can see the )(title pattern
|
|
189
|
+
let collected = '';
|
|
190
|
+
for (let i = startLineIdx; i < scanEnd; i++) {
|
|
191
|
+
collected += (i > startLineIdx ? ' ' : '') + lines[i].trim();
|
|
192
|
+
// Have we closed the .meta(...) call and opened the title call?
|
|
193
|
+
// Pattern: ) followed by ( with a quoted string
|
|
194
|
+
const titleMatch = collected.match(/\)\s*\(\s*(['"`])((?:\\.|[^\\])*?)\1/);
|
|
195
|
+
if (!titleMatch)
|
|
196
|
+
continue;
|
|
197
|
+
const callTitle = titleMatch[2]
|
|
198
|
+
.replace(/\\'/g, "'")
|
|
199
|
+
.replace(/\\"/g, '"')
|
|
200
|
+
.replace(/\\`/g, '`')
|
|
201
|
+
.replace(/\\\\/g, '\\');
|
|
202
|
+
if (!callTitle)
|
|
203
|
+
return null;
|
|
204
|
+
// Extract TC ID — key-value form: .meta('tc', '12345')
|
|
205
|
+
const kvRe = new RegExp(`\\.meta\\s*\\(\\s*['"]${tagPrefix}['"]\\s*,\\s*['"]([\\d]+)['"]`);
|
|
206
|
+
const kvMatch = collected.match(kvRe);
|
|
207
|
+
if (kvMatch) {
|
|
208
|
+
azureId = parseInt(kvMatch[1], 10);
|
|
209
|
+
}
|
|
210
|
+
// Extract TC ID — object form: .meta({ tc: '12345', ... }) or .meta({ "tc": '12345' })
|
|
211
|
+
if (azureId === undefined) {
|
|
212
|
+
const objRe = new RegExp(`\\.meta\\s*\\(\\s*\\{[^}]*['"]?${tagPrefix}['"]?\\s*:\\s*['"]([\\d]+)['"]`);
|
|
213
|
+
const objMatch = collected.match(objRe);
|
|
214
|
+
if (objMatch) {
|
|
215
|
+
azureId = parseInt(objMatch[1], 10);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
// Extract extra tags from object form (non-tc string values)
|
|
219
|
+
const metaObjMatch = collected.match(/\.meta\s*\(\s*\{([^}]*)\}/);
|
|
220
|
+
if (metaObjMatch) {
|
|
221
|
+
const pairRe = /['"]?([\w]+)['"]?\s*:\s*['"]([^'"]+)['"]/g;
|
|
222
|
+
let pm;
|
|
223
|
+
while ((pm = pairRe.exec(metaObjMatch[1])) !== null) {
|
|
224
|
+
if (pm[1] !== tagPrefix)
|
|
225
|
+
tags.push(pm[2]);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
return { callTitle, azureId, tags, titleLineIdx: i };
|
|
229
|
+
}
|
|
230
|
+
return null;
|
|
231
|
+
}
|
|
159
232
|
// ─── JSDoc → title + steps ────────────────────────────────────────────────────
|
|
160
233
|
const NUMBERED_STEP_RE = /^\d+\.\s+(.+)$/;
|
|
161
234
|
const CHECK_RE = /^[Cc]heck:\s+(.+)$/;
|
|
@@ -194,23 +267,43 @@ function parseTestCafeFile(filePath, tagPrefix, linkConfigs) {
|
|
|
194
267
|
const results = [];
|
|
195
268
|
for (let i = 0; i < lines.length; i++) {
|
|
196
269
|
const trimmed = lines[i].trim();
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
if (
|
|
270
|
+
let testLineIdx = i; // line used for JSDoc / comment extraction (start of test expression)
|
|
271
|
+
let callTitle = '';
|
|
272
|
+
let metaAzureId;
|
|
273
|
+
let metaTags = [];
|
|
274
|
+
if (META_CHAIN_RE.test(trimmed)) {
|
|
275
|
+
// ── meta-chained test: test.meta(...)('title', fn) ──────────────────────
|
|
276
|
+
const extracted = extractMetaChainResult(lines, i, tagPrefix);
|
|
277
|
+
if (!extracted)
|
|
278
|
+
continue;
|
|
279
|
+
callTitle = extracted.callTitle;
|
|
280
|
+
metaAzureId = extracted.azureId;
|
|
281
|
+
metaTags = extracted.tags;
|
|
282
|
+
// testLineIdx stays at i (start of meta chain, used for JSDoc/comment/writeback)
|
|
283
|
+
i = extracted.titleLineIdx; // advance past multi-line meta to avoid re-parsing
|
|
284
|
+
}
|
|
285
|
+
else if (TEST_CALL_RE.test(trimmed)) {
|
|
286
|
+
// ── regular test: test('title', fn) ─────────────────────────────────────
|
|
287
|
+
const m = trimmed.match(TEST_TITLE_RE);
|
|
288
|
+
if (!m)
|
|
289
|
+
continue;
|
|
290
|
+
callTitle = m[2]
|
|
291
|
+
.replace(/\\'/g, "'")
|
|
292
|
+
.replace(/\\"/g, '"')
|
|
293
|
+
.replace(/\\`/g, '`')
|
|
294
|
+
.replace(/\\\\/g, '\\');
|
|
295
|
+
}
|
|
296
|
+
else {
|
|
202
297
|
continue;
|
|
203
|
-
|
|
204
|
-
.replace(/\\'/g, "'")
|
|
205
|
-
.replace(/\\"/g, '"')
|
|
206
|
-
.replace(/\\`/g, '`')
|
|
207
|
-
.replace(/\\\\/g, '\\');
|
|
298
|
+
}
|
|
208
299
|
if (!callTitle)
|
|
209
300
|
continue;
|
|
210
301
|
const jsdocLines = extractJsdocBefore(lines, testLineIdx);
|
|
211
|
-
const { azureId, tags: cTags } = extractCommentMetadataAbove(lines, testLineIdx, tagPrefix);
|
|
302
|
+
const { azureId: cId, tags: cTags } = extractCommentMetadataAbove(lines, testLineIdx, tagPrefix);
|
|
212
303
|
const fixture = findEnclosingFixture(lines, testLineIdx);
|
|
213
|
-
|
|
304
|
+
// Native .meta() ID takes priority over comment-style ID
|
|
305
|
+
const azureId = metaAzureId ?? cId;
|
|
306
|
+
const allTags = [...new Set([...pathTags, ...cTags, ...metaTags])];
|
|
214
307
|
const { title, steps } = parseSummary(jsdocLines, callTitle);
|
|
215
308
|
const automatedTestName = fixture
|
|
216
309
|
? [fileBaseName, fixture, callTitle].join(' > ')
|
|
@@ -221,7 +314,7 @@ function parseTestCafeFile(filePath, tagPrefix, linkConfigs) {
|
|
|
221
314
|
steps,
|
|
222
315
|
tags: allTags,
|
|
223
316
|
azureId: azureId !== undefined && !isNaN(azureId) ? azureId : undefined,
|
|
224
|
-
line: testLineIdx + 1,
|
|
317
|
+
line: testLineIdx + 1, // 1-based; writeback starts from here
|
|
225
318
|
linkRefs: (0, shared_1.extractLinkRefs)(allTags, linkConfigs),
|
|
226
319
|
automatedTestName,
|
|
227
320
|
});
|