ado-sync 0.1.64 → 0.1.67
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 +20 -15
- package/dist/__tests__/regressions.test.js +1011 -1
- package/dist/__tests__/regressions.test.js.map +1 -1
- package/dist/ai/generate-spec.d.ts +1 -1
- package/dist/ai/generate-spec.js +23 -0
- package/dist/ai/generate-spec.js.map +1 -1
- package/dist/ai/summarizer.d.ts +3 -2
- package/dist/ai/summarizer.js +50 -1
- package/dist/ai/summarizer.js.map +1 -1
- package/dist/azure/test-cases.d.ts +11 -1
- package/dist/azure/test-cases.js +286 -43
- package/dist/azure/test-cases.js.map +1 -1
- package/dist/cli.js +91 -14
- package/dist/cli.js.map +1 -1
- package/dist/config.js +74 -1
- package/dist/config.js.map +1 -1
- package/dist/id-markers.d.ts +1 -0
- package/dist/id-markers.js +13 -0
- package/dist/id-markers.js.map +1 -1
- package/dist/mcp-server.js +1 -1
- package/dist/mcp-server.js.map +1 -1
- package/dist/sync/cache.d.ts +2 -0
- package/dist/sync/cache.js.map +1 -1
- package/dist/sync/engine.d.ts +12 -1
- package/dist/sync/engine.js +210 -41
- package/dist/sync/engine.js.map +1 -1
- package/dist/types.d.ts +56 -4
- package/llms.txt +12 -11
- package/package.json +8 -1
- package/docs/advanced.md +0 -988
- package/docs/agent-setup.md +0 -204
- package/docs/capability-roadmap.md +0 -280
- package/docs/cli.md +0 -609
- package/docs/configuration.md +0 -322
- package/docs/examples/csharp-mstest-local-llm.yaml +0 -35
- package/docs/examples/csharp-mstest.yaml +0 -21
- package/docs/examples/csharp-nunit.yaml +0 -21
- package/docs/examples/csharp-specflow.yaml +0 -16
- package/docs/examples/cypress.yaml +0 -21
- package/docs/examples/detox-react-native.yaml +0 -21
- package/docs/examples/espresso-android.yaml +0 -21
- package/docs/examples/flutter-dart.yaml +0 -21
- package/docs/examples/java-junit.yaml +0 -21
- package/docs/examples/java-testng.yaml +0 -21
- package/docs/examples/js-jasmine-wdio.yaml +0 -21
- package/docs/examples/js-jest.yaml +0 -21
- package/docs/examples/playwright-js.yaml +0 -21
- package/docs/examples/playwright-ts.yaml +0 -21
- package/docs/examples/puppeteer.yaml +0 -21
- package/docs/examples/python-pytest.yaml +0 -21
- package/docs/examples/robot-framework.yaml +0 -19
- package/docs/examples/testcafe.yaml +0 -21
- package/docs/examples/xcuitest-ios.yaml +0 -21
- package/docs/mcp-server.md +0 -312
- package/docs/publish-test-results.md +0 -939
- package/docs/spec-formats.md +0 -1357
- package/docs/troubleshooting.md +0 -101
- package/docs/vscode-extension.md +0 -139
- package/docs/work-item-links.md +0 -115
- package/docs/workflows.md +0 -457
- package/mkdocs.yml +0 -40
- package/requirements-docs.txt +0 -4
- package/scripts/build_site.sh +0 -6
package/docs/workflows.md
DELETED
|
@@ -1,457 +0,0 @@
|
|
|
1
|
-
# Workflow Examples
|
|
2
|
-
|
|
3
|
-
Framework-specific end-to-end examples for using `ado-sync push`, `pull`, and `publish-test-results`.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Day-to-day
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
# Local changes first — edit your files, then push
|
|
11
|
-
ado-sync push
|
|
12
|
-
|
|
13
|
-
# Azure changes first — someone edited a Test Case in the ADO UI
|
|
14
|
-
ado-sync pull
|
|
15
|
-
|
|
16
|
-
# Check for drift before raising a PR
|
|
17
|
-
ado-sync status
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
---
|
|
21
|
-
|
|
22
|
-
## C# MSTest
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
# 1. Create TCs and write IDs back into .cs files
|
|
26
|
-
ado-sync push --dry-run # preview
|
|
27
|
-
ado-sync push # writes [TestProperty("tc","ID")] above each [TestMethod]
|
|
28
|
-
|
|
29
|
-
# 2. Run tests — TRX contains [TestProperty] values, TC IDs extracted automatically
|
|
30
|
-
dotnet test --logger "trx;LogFileName=results.trx"
|
|
31
|
-
|
|
32
|
-
# 3. Publish results
|
|
33
|
-
ado-sync publish-test-results --testResult results/results.trx
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
Recommended config:
|
|
37
|
-
```json
|
|
38
|
-
{
|
|
39
|
-
"orgUrl": "https://dev.azure.com/my-org",
|
|
40
|
-
"project": "MyProject",
|
|
41
|
-
"auth": { "type": "pat", "token": "$AZURE_DEVOPS_TOKEN" },
|
|
42
|
-
"testPlan": { "id": 1234 },
|
|
43
|
-
"local": {
|
|
44
|
-
"type": "csharp",
|
|
45
|
-
"include": ["**/RegressionTests/**/*.cs"],
|
|
46
|
-
"exclude": ["**/*BaseTest.cs", "**/*Helper.cs"]
|
|
47
|
-
},
|
|
48
|
-
"sync": { "markAutomated": true, "format": { "useExpectedResult": true } }
|
|
49
|
-
}
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
---
|
|
53
|
-
|
|
54
|
-
## C# NUnit
|
|
55
|
-
|
|
56
|
-
```bash
|
|
57
|
-
ado-sync push
|
|
58
|
-
|
|
59
|
-
# Use native NUnit XML logger — TRX omits [Property] values
|
|
60
|
-
dotnet test --logger "nunit3;LogFileName=results.xml"
|
|
61
|
-
|
|
62
|
-
ado-sync publish-test-results --testResult results/results.xml
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
---
|
|
66
|
-
|
|
67
|
-
## C# SpecFlow
|
|
68
|
-
|
|
69
|
-
```bash
|
|
70
|
-
ado-sync push # writes @tc:ID above each Scenario
|
|
71
|
-
|
|
72
|
-
dotnet test --logger "trx;LogFileName=results.trx"
|
|
73
|
-
ado-sync publish-test-results --testResult results/results.trx
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
Recommended config:
|
|
77
|
-
```json
|
|
78
|
-
{
|
|
79
|
-
"orgUrl": "https://dev.azure.com/my-org",
|
|
80
|
-
"project": "MyProject",
|
|
81
|
-
"auth": { "type": "pat", "token": "$AZURE_DEVOPS_TOKEN" },
|
|
82
|
-
"testPlan": { "id": 1234 },
|
|
83
|
-
"local": { "type": "gherkin", "include": ["Features/**/*.feature"] },
|
|
84
|
-
"sync": { "tagPrefix": "tc", "markAutomated": true }
|
|
85
|
-
}
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
---
|
|
89
|
-
|
|
90
|
-
## Java JUnit / TestNG
|
|
91
|
-
|
|
92
|
-
```bash
|
|
93
|
-
ado-sync push # writes // @tc:ID (JUnit 4/TestNG) or @Tag("tc:ID") (JUnit 5)
|
|
94
|
-
|
|
95
|
-
# Maven
|
|
96
|
-
mvn test # Surefire: target/surefire-reports/*.xml
|
|
97
|
-
|
|
98
|
-
# Gradle
|
|
99
|
-
./gradlew test # build/test-results/test/*.xml
|
|
100
|
-
|
|
101
|
-
ado-sync publish-test-results \
|
|
102
|
-
--testResult "target/surefire-reports/TEST-*.xml" \
|
|
103
|
-
--testResultFormat junit
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
Recommended config:
|
|
107
|
-
```json
|
|
108
|
-
{
|
|
109
|
-
"orgUrl": "https://dev.azure.com/my-org",
|
|
110
|
-
"project": "MyProject",
|
|
111
|
-
"auth": { "type": "pat", "token": "$AZURE_DEVOPS_TOKEN" },
|
|
112
|
-
"testPlan": { "id": 1234 },
|
|
113
|
-
"local": {
|
|
114
|
-
"type": "java",
|
|
115
|
-
"include": ["**/src/test/**/*.java"],
|
|
116
|
-
"exclude": ["**/*BaseTest.java", "**/*Helper.java"]
|
|
117
|
-
},
|
|
118
|
-
"sync": { "markAutomated": true }
|
|
119
|
-
}
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
---
|
|
123
|
-
|
|
124
|
-
## Python pytest
|
|
125
|
-
|
|
126
|
-
```bash
|
|
127
|
-
ado-sync push # writes @pytest.mark.tc(ID) above each def test_*()
|
|
128
|
-
|
|
129
|
-
pytest --junitxml=results/junit.xml
|
|
130
|
-
|
|
131
|
-
ado-sync publish-test-results --testResult results/junit.xml --testResultFormat junit
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
**Optional — embed TC IDs directly into JUnit XML** (more reliable than AutomatedTestName matching):
|
|
135
|
-
|
|
136
|
-
Add to `conftest.py`:
|
|
137
|
-
```python
|
|
138
|
-
def pytest_runtest_makereport(item, call):
|
|
139
|
-
for marker in item.iter_markers("tc"):
|
|
140
|
-
if marker.args:
|
|
141
|
-
item.user_properties.append(("tc", str(marker.args[0])))
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
Recommended config:
|
|
145
|
-
```json
|
|
146
|
-
{
|
|
147
|
-
"orgUrl": "https://dev.azure.com/my-org",
|
|
148
|
-
"project": "MyProject",
|
|
149
|
-
"auth": { "type": "pat", "token": "$AZURE_DEVOPS_TOKEN" },
|
|
150
|
-
"testPlan": { "id": 1234 },
|
|
151
|
-
"local": {
|
|
152
|
-
"type": "python",
|
|
153
|
-
"include": ["tests/**/*.py"],
|
|
154
|
-
"exclude": ["tests/conftest.py", "tests/**/helpers.py"]
|
|
155
|
-
},
|
|
156
|
-
"sync": { "markAutomated": true }
|
|
157
|
-
}
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
---
|
|
161
|
-
|
|
162
|
-
## JavaScript / TypeScript (Jest, Jasmine, WebdriverIO)
|
|
163
|
-
|
|
164
|
-
```bash
|
|
165
|
-
ado-sync push # writes // @tc:ID above each it() / test()
|
|
166
|
-
|
|
167
|
-
npx jest --reporters=default --reporters=jest-junit
|
|
168
|
-
# JEST_JUNIT_OUTPUT_DIR=results JEST_JUNIT_OUTPUT_NAME=junit.xml
|
|
169
|
-
|
|
170
|
-
ado-sync publish-test-results --testResult results/junit.xml --testResultFormat junit
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
Recommended config:
|
|
174
|
-
```json
|
|
175
|
-
{
|
|
176
|
-
"orgUrl": "https://dev.azure.com/my-org",
|
|
177
|
-
"project": "MyProject",
|
|
178
|
-
"auth": { "type": "pat", "token": "$AZURE_DEVOPS_TOKEN" },
|
|
179
|
-
"testPlan": { "id": 1234 },
|
|
180
|
-
"local": {
|
|
181
|
-
"type": "javascript",
|
|
182
|
-
"include": ["src/**/*.spec.ts", "tests/**/*.test.js"],
|
|
183
|
-
"exclude": ["**/*.helper.ts"]
|
|
184
|
-
},
|
|
185
|
-
"sync": { "markAutomated": true }
|
|
186
|
-
}
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
---
|
|
190
|
-
|
|
191
|
-
## Playwright
|
|
192
|
-
|
|
193
|
-
```bash
|
|
194
|
-
ado-sync push # writes annotation: { type: 'tc', description: 'ID' } into test options
|
|
195
|
-
|
|
196
|
-
# playwright.config.ts: reporter: [['json', { outputFile: 'results/playwright.json' }]]
|
|
197
|
-
npx playwright test
|
|
198
|
-
|
|
199
|
-
# TC IDs from native test.annotations; screenshots/videos from attachments[]
|
|
200
|
-
ado-sync publish-test-results \
|
|
201
|
-
--testResult results/playwright.json \
|
|
202
|
-
--attachmentsFolder test-results/
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
Recommended config:
|
|
206
|
-
```json
|
|
207
|
-
{
|
|
208
|
-
"orgUrl": "https://dev.azure.com/my-org",
|
|
209
|
-
"project": "MyProject",
|
|
210
|
-
"auth": { "type": "pat", "token": "$AZURE_DEVOPS_TOKEN" },
|
|
211
|
-
"testPlan": { "id": 1234 },
|
|
212
|
-
"local": {
|
|
213
|
-
"type": "playwright",
|
|
214
|
-
"include": ["tests/**/*.spec.ts"],
|
|
215
|
-
"exclude": ["**/*.helper.ts"]
|
|
216
|
-
},
|
|
217
|
-
"sync": { "markAutomated": true }
|
|
218
|
-
}
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
---
|
|
222
|
-
|
|
223
|
-
## Detox (React Native)
|
|
224
|
-
|
|
225
|
-
```bash
|
|
226
|
-
ado-sync push # writes // @tc:ID above each it() / test()
|
|
227
|
-
|
|
228
|
-
npx detox test --configuration ios.sim.release
|
|
229
|
-
|
|
230
|
-
ado-sync publish-test-results --testResult results/junit.xml --testResultFormat junit
|
|
231
|
-
```
|
|
232
|
-
|
|
233
|
-
Recommended config:
|
|
234
|
-
```json
|
|
235
|
-
{
|
|
236
|
-
"orgUrl": "https://dev.azure.com/my-org",
|
|
237
|
-
"project": "MyProject",
|
|
238
|
-
"auth": { "type": "pat", "token": "$AZURE_DEVOPS_TOKEN" },
|
|
239
|
-
"testPlan": { "id": 1234 },
|
|
240
|
-
"local": { "type": "detox", "include": ["e2e/**/*.test.ts"] },
|
|
241
|
-
"sync": { "markAutomated": true }
|
|
242
|
-
}
|
|
243
|
-
```
|
|
244
|
-
|
|
245
|
-
---
|
|
246
|
-
|
|
247
|
-
## Espresso (Android)
|
|
248
|
-
|
|
249
|
-
```bash
|
|
250
|
-
ado-sync push # writes // @tc:ID above @Test
|
|
251
|
-
|
|
252
|
-
./gradlew connectedAndroidTest
|
|
253
|
-
# XML: app/build/outputs/androidTest-results/connected/TEST-*.xml
|
|
254
|
-
|
|
255
|
-
ado-sync publish-test-results \
|
|
256
|
-
--testResult "app/build/outputs/androidTest-results/connected/TEST-*.xml" \
|
|
257
|
-
--testResultFormat junit
|
|
258
|
-
```
|
|
259
|
-
|
|
260
|
-
Recommended config:
|
|
261
|
-
```json
|
|
262
|
-
{
|
|
263
|
-
"orgUrl": "https://dev.azure.com/my-org",
|
|
264
|
-
"project": "MyProject",
|
|
265
|
-
"auth": { "type": "pat", "token": "$AZURE_DEVOPS_TOKEN" },
|
|
266
|
-
"testPlan": { "id": 1234 },
|
|
267
|
-
"local": {
|
|
268
|
-
"type": "espresso",
|
|
269
|
-
"include": ["app/src/androidTest/**/*.java", "app/src/androidTest/**/*.kt"],
|
|
270
|
-
"exclude": ["**/*BaseTest.java"]
|
|
271
|
-
},
|
|
272
|
-
"sync": { "markAutomated": true }
|
|
273
|
-
}
|
|
274
|
-
```
|
|
275
|
-
|
|
276
|
-
---
|
|
277
|
-
|
|
278
|
-
## XCUITest (iOS)
|
|
279
|
-
|
|
280
|
-
```bash
|
|
281
|
-
ado-sync push # writes // @tc:ID above func test*()
|
|
282
|
-
|
|
283
|
-
xcodebuild test \
|
|
284
|
-
-project MyApp.xcodeproj -scheme MyApp \
|
|
285
|
-
-destination 'platform=iOS Simulator,name=iPhone 15' \
|
|
286
|
-
-resultBundlePath TestResults.xcresult
|
|
287
|
-
xcrun xcresulttool get --path TestResults.xcresult --format junit > results/junit.xml
|
|
288
|
-
|
|
289
|
-
ado-sync publish-test-results --testResult results/junit.xml --testResultFormat junit
|
|
290
|
-
```
|
|
291
|
-
|
|
292
|
-
Recommended config:
|
|
293
|
-
```json
|
|
294
|
-
{
|
|
295
|
-
"orgUrl": "https://dev.azure.com/my-org",
|
|
296
|
-
"project": "MyProject",
|
|
297
|
-
"auth": { "type": "pat", "token": "$AZURE_DEVOPS_TOKEN" },
|
|
298
|
-
"testPlan": { "id": 1234 },
|
|
299
|
-
"local": {
|
|
300
|
-
"type": "xcuitest",
|
|
301
|
-
"include": ["UITests/**/*.swift"],
|
|
302
|
-
"exclude": ["UITests/**/*Helper.swift", "UITests/**/*Base.swift"]
|
|
303
|
-
},
|
|
304
|
-
"sync": { "markAutomated": true }
|
|
305
|
-
}
|
|
306
|
-
```
|
|
307
|
-
|
|
308
|
-
---
|
|
309
|
-
|
|
310
|
-
## Flutter
|
|
311
|
-
|
|
312
|
-
```bash
|
|
313
|
-
ado-sync push # writes // @tc:ID above testWidgets() / test()
|
|
314
|
-
|
|
315
|
-
flutter test --reporter junit > results/junit.xml
|
|
316
|
-
|
|
317
|
-
ado-sync publish-test-results --testResult results/junit.xml --testResultFormat junit
|
|
318
|
-
```
|
|
319
|
-
|
|
320
|
-
Recommended config:
|
|
321
|
-
```json
|
|
322
|
-
{
|
|
323
|
-
"orgUrl": "https://dev.azure.com/my-org",
|
|
324
|
-
"project": "MyProject",
|
|
325
|
-
"auth": { "type": "pat", "token": "$AZURE_DEVOPS_TOKEN" },
|
|
326
|
-
"testPlan": { "id": 1234 },
|
|
327
|
-
"local": {
|
|
328
|
-
"type": "flutter",
|
|
329
|
-
"include": ["test/**/*_test.dart", "integration_test/**/*_test.dart"]
|
|
330
|
-
},
|
|
331
|
-
"sync": { "markAutomated": true }
|
|
332
|
-
}
|
|
333
|
-
```
|
|
334
|
-
|
|
335
|
-
---
|
|
336
|
-
|
|
337
|
-
## Robot Framework
|
|
338
|
-
|
|
339
|
-
```bash
|
|
340
|
-
ado-sync push # inserts/updates tc:ID in [Tags] of each test case
|
|
341
|
-
|
|
342
|
-
robot --outputdir results tests/
|
|
343
|
-
|
|
344
|
-
ado-sync publish-test-results --testResult results/output.xml
|
|
345
|
-
```
|
|
346
|
-
|
|
347
|
-
TC IDs are read directly from the `tc:N` tag in `<tags>` in `output.xml` — no extra config needed.
|
|
348
|
-
|
|
349
|
-
Recommended config:
|
|
350
|
-
```json
|
|
351
|
-
{
|
|
352
|
-
"orgUrl": "https://dev.azure.com/my-org",
|
|
353
|
-
"project": "MyProject",
|
|
354
|
-
"auth": { "type": "pat", "token": "$AZURE_DEVOPS_TOKEN" },
|
|
355
|
-
"testPlan": { "id": 1234 },
|
|
356
|
-
"local": {
|
|
357
|
-
"type": "robot",
|
|
358
|
-
"include": ["tests/**/*.robot"],
|
|
359
|
-
"exclude": ["tests/resources/**"]
|
|
360
|
-
},
|
|
361
|
-
"sync": { "markAutomated": true }
|
|
362
|
-
}
|
|
363
|
-
```
|
|
364
|
-
|
|
365
|
-
---
|
|
366
|
-
|
|
367
|
-
## CI pipeline (GitHub Actions)
|
|
368
|
-
|
|
369
|
-
### Basic push + publish
|
|
370
|
-
|
|
371
|
-
```yaml
|
|
372
|
-
- name: Sync test cases to Azure DevOps
|
|
373
|
-
run: ado-sync push --config-override sync.disableLocalChanges=true
|
|
374
|
-
env:
|
|
375
|
-
AZURE_DEVOPS_TOKEN: ${{ secrets.AZURE_DEVOPS_TOKEN }}
|
|
376
|
-
|
|
377
|
-
- name: Publish test results
|
|
378
|
-
run: ado-sync publish-test-results --testResult results/test.trx
|
|
379
|
-
env:
|
|
380
|
-
AZURE_DEVOPS_TOKEN: ${{ secrets.AZURE_DEVOPS_TOKEN }}
|
|
381
|
-
```
|
|
382
|
-
|
|
383
|
-
Use `sync.disableLocalChanges=true` in CI so the pipeline never commits ID writeback files.
|
|
384
|
-
|
|
385
|
-
---
|
|
386
|
-
|
|
387
|
-
### PR comment bot
|
|
388
|
-
|
|
389
|
-
Copy [`.github/workflows/ado-sync-pr-check.yml`](../.github/workflows/ado-sync-pr-check.yml) into your repo. On every pull request it runs `ado-sync push --dry-run` and posts a comment showing:
|
|
390
|
-
|
|
391
|
-
- Unlinked specs that would be created in Azure DevOps
|
|
392
|
-
- Specs with drift vs. existing Test Cases
|
|
393
|
-
- Conflicts where both local and remote changed
|
|
394
|
-
|
|
395
|
-
Requires one secret: `ADO_PAT` (Azure DevOps PAT with Test Management read/write).
|
|
396
|
-
|
|
397
|
-
---
|
|
398
|
-
|
|
399
|
-
### Coverage gate + AC gate
|
|
400
|
-
|
|
401
|
-
Copy [`.github/workflows/ado-sync-coverage-gate.yml`](../.github/workflows/ado-sync-coverage-gate.yml) into your repo. Runs three checks on push/PR to main:
|
|
402
|
-
|
|
403
|
-
```
|
|
404
|
-
Step 1 — Spec coverage gate
|
|
405
|
-
ado-sync coverage --fail-below 80
|
|
406
|
-
Fails if fewer than 80% of local specs are linked to Azure Test Cases.
|
|
407
|
-
|
|
408
|
-
Step 2 — Acceptance criteria gate
|
|
409
|
-
ado-sync ac-gate --area-path "..."
|
|
410
|
-
Fails if any Active/Resolved story is missing AC or linked Test Cases.
|
|
411
|
-
|
|
412
|
-
Step 3 — Trend report (informational)
|
|
413
|
-
ado-sync trend --days 30
|
|
414
|
-
Optionally posts a Slack/Teams webhook summary. Never fails the build.
|
|
415
|
-
```
|
|
416
|
-
|
|
417
|
-
Configure via GitHub repository variables (no code changes needed):
|
|
418
|
-
|
|
419
|
-
| Variable | Description | Default |
|
|
420
|
-
|----------|-------------|---------|
|
|
421
|
-
| `ADO_SYNC_COVERAGE_MIN` | Minimum spec link rate % | `80` |
|
|
422
|
-
| `ADO_SYNC_AC_AREA_PATH` | Area path scope for AC gate | *(all stories)* |
|
|
423
|
-
| `ADO_SYNC_TREND_DAYS` | Days of history for trend report | `30` |
|
|
424
|
-
| `ADO_SYNC_TREND_WEBHOOK` | Slack/Teams webhook URL | *(none)* |
|
|
425
|
-
| `ADO_SYNC_TREND_WEBHOOK_TYPE` | `slack`, `teams`, or `generic` | `slack` |
|
|
426
|
-
|
|
427
|
-
---
|
|
428
|
-
|
|
429
|
-
### Stale TC cleanup in CI
|
|
430
|
-
|
|
431
|
-
To periodically retire stale Azure Test Cases (TCs that no longer have a local spec):
|
|
432
|
-
|
|
433
|
-
```yaml
|
|
434
|
-
- name: Retire stale test cases
|
|
435
|
-
run: ado-sync stale --retire --dry-run # remove --dry-run to apply
|
|
436
|
-
env:
|
|
437
|
-
AZURE_DEVOPS_TOKEN: ${{ secrets.AZURE_DEVOPS_TOKEN }}
|
|
438
|
-
```
|
|
439
|
-
|
|
440
|
-
This transitions orphaned TCs to `Closed` state and tags them `ado-sync:retired`. Use `--retire-state "Inactive"` if your process uses a different state name.
|
|
441
|
-
|
|
442
|
-
---
|
|
443
|
-
|
|
444
|
-
### Flaky test detection in CI
|
|
445
|
-
|
|
446
|
-
```yaml
|
|
447
|
-
- name: Detect flaky tests
|
|
448
|
-
run: |
|
|
449
|
-
ado-sync trend \
|
|
450
|
-
--days 14 \
|
|
451
|
-
--fail-on-flaky \
|
|
452
|
-
--webhook-url ${{ secrets.SLACK_WEBHOOK }}
|
|
453
|
-
env:
|
|
454
|
-
AZURE_DEVOPS_TOKEN: ${{ secrets.AZURE_DEVOPS_TOKEN }}
|
|
455
|
-
```
|
|
456
|
-
|
|
457
|
-
Exits 1 if any test both passed and failed in the last 14 days, and posts a summary to Slack. Drop `--fail-on-flaky` to run as informational-only.
|
package/mkdocs.yml
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
site_name: ADO Sync Documentation
|
|
2
|
-
site_description: Documentation for syncing Azure DevOps test results.
|
|
3
|
-
repo_name: PavanMudigonda/ado-sync
|
|
4
|
-
repo_url: https://github.com/PavanMudigonda/ado-sync
|
|
5
|
-
|
|
6
|
-
theme:
|
|
7
|
-
name: material
|
|
8
|
-
palette:
|
|
9
|
-
primary: indigo
|
|
10
|
-
accent: deep purple
|
|
11
|
-
|
|
12
|
-
docs_dir: docs
|
|
13
|
-
|
|
14
|
-
nav:
|
|
15
|
-
- Welcome: index.md
|
|
16
|
-
- CLI: cli.md
|
|
17
|
-
- Configuration: configuration.md
|
|
18
|
-
- Capability Roadmap: capability-roadmap.md
|
|
19
|
-
- Agent Setup: agent-setup.md
|
|
20
|
-
- MCP Server: mcp-server.md
|
|
21
|
-
- Work Item Links: work-item-links.md
|
|
22
|
-
- Workflows: workflows.md
|
|
23
|
-
- Publish Test Results: publish-test-results.md
|
|
24
|
-
- Spec Formats: spec-formats.md
|
|
25
|
-
- VS Code Extension: vscode-extension.md
|
|
26
|
-
- Troubleshooting: troubleshooting.md
|
|
27
|
-
- Advanced: advanced.md
|
|
28
|
-
- Examples:
|
|
29
|
-
- C#: examples/csharp-mstest.yaml
|
|
30
|
-
- Cypress: examples/cypress.yaml
|
|
31
|
-
- Playwright: examples/playwright-js.yaml
|
|
32
|
-
- Python: examples/python-pytest.yaml
|
|
33
|
-
- Java: examples/java-junit.yaml
|
|
34
|
-
|
|
35
|
-
markdown_extensions:
|
|
36
|
-
- pymdownx.highlight:
|
|
37
|
-
anchor_linenums: true
|
|
38
|
-
- pymdownx.inlinehilite
|
|
39
|
-
- pymdownx.snippets
|
|
40
|
-
- pymdownx.superfences
|
package/requirements-docs.txt
DELETED