testdriverai 7.0.0 → 7.1.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/AGENTS.md +550 -0
- package/CODEOWNERS +0 -1
- package/README.md +126 -0
- package/agent/index.js +43 -18
- package/agent/lib/commands.js +794 -135
- package/agent/lib/redraw.js +124 -39
- package/agent/lib/sandbox.js +10 -1
- package/agent/lib/sdk.js +21 -0
- package/docs/MIGRATION.md +425 -0
- package/docs/PRESETS.md +210 -0
- package/docs/docs.json +91 -37
- package/docs/guide/best-practices-polling.mdx +154 -0
- package/docs/v7/api/dashcam.mdx +497 -0
- package/docs/v7/api/doubleClick.mdx +102 -0
- package/docs/v7/api/mouseDown.mdx +161 -0
- package/docs/v7/api/mouseUp.mdx +164 -0
- package/docs/v7/api/rightClick.mdx +123 -0
- package/docs/v7/getting-started/configuration.mdx +380 -0
- package/docs/v7/getting-started/quickstart.mdx +273 -140
- package/docs/v7/guides/best-practices.mdx +486 -0
- package/docs/v7/guides/caching-ai.mdx +215 -0
- package/docs/v7/guides/caching-selectors.mdx +292 -0
- package/docs/v7/guides/caching.mdx +366 -0
- package/docs/v7/guides/ci-cd/azure.mdx +587 -0
- package/docs/v7/guides/ci-cd/circleci.mdx +523 -0
- package/docs/v7/guides/ci-cd/github-actions.mdx +457 -0
- package/docs/v7/guides/ci-cd/gitlab.mdx +498 -0
- package/docs/v7/guides/ci-cd/jenkins.mdx +664 -0
- package/docs/v7/guides/ci-cd/travis.mdx +438 -0
- package/docs/v7/guides/debugging.mdx +349 -0
- package/docs/v7/guides/faq.mdx +393 -0
- package/docs/v7/guides/performance.mdx +517 -0
- package/docs/v7/guides/troubleshooting.mdx +526 -0
- package/docs/v7/guides/vitest-plugin.mdx +477 -0
- package/docs/v7/guides/vitest.mdx +535 -0
- package/docs/v7/platforms/linux.mdx +308 -0
- package/docs/v7/platforms/macos.mdx +433 -0
- package/docs/v7/platforms/windows.mdx +430 -0
- package/docs/v7/presets/chrome-extension.mdx +223 -0
- package/docs/v7/presets/chrome.mdx +287 -0
- package/docs/v7/presets/electron.mdx +435 -0
- package/docs/v7/presets/vscode.mdx +398 -0
- package/docs/v7/presets/webapp.mdx +396 -0
- package/docs/v7/progressive-apis/CORE.md +459 -0
- package/docs/v7/progressive-apis/HOOKS.md +360 -0
- package/docs/v7/progressive-apis/PROGRESSIVE_DISCLOSURE.md +230 -0
- package/docs/v7/progressive-apis/PROVISION.md +266 -0
- package/interfaces/vitest-plugin.mjs +186 -100
- package/package.json +12 -1
- package/sdk.d.ts +335 -42
- package/sdk.js +756 -95
- package/src/core/Dashcam.js +469 -0
- package/src/core/index.d.ts +150 -0
- package/src/core/index.js +12 -0
- package/src/presets/index.mjs +331 -0
- package/src/vitest/extended.mjs +108 -0
- package/src/vitest/hooks.d.ts +119 -0
- package/src/vitest/hooks.mjs +298 -0
- package/src/vitest/index.mjs +64 -0
- package/src/vitest/lifecycle.mjs +277 -0
- package/src/vitest/utils.mjs +150 -0
- package/test/dashcam.test.js +137 -0
- package/testdriver/acceptance-sdk/assert.test.mjs +13 -31
- package/testdriver/acceptance-sdk/auto-cache-key-demo.test.mjs +56 -0
- package/testdriver/acceptance-sdk/chrome-extension.test.mjs +89 -0
- package/testdriver/acceptance-sdk/drag-and-drop.test.mjs +7 -19
- package/testdriver/acceptance-sdk/element-not-found.test.mjs +6 -19
- package/testdriver/acceptance-sdk/exec-js.test.mjs +6 -18
- package/testdriver/acceptance-sdk/exec-output.test.mjs +8 -20
- package/testdriver/acceptance-sdk/exec-pwsh.test.mjs +13 -25
- package/testdriver/acceptance-sdk/focus-window.test.mjs +8 -20
- package/testdriver/acceptance-sdk/formatted-logging.test.mjs +5 -20
- package/testdriver/acceptance-sdk/hooks-example.test.mjs +38 -0
- package/testdriver/acceptance-sdk/hover-image.test.mjs +10 -19
- package/testdriver/acceptance-sdk/hover-text-with-description.test.mjs +7 -19
- package/testdriver/acceptance-sdk/hover-text.test.mjs +5 -19
- package/testdriver/acceptance-sdk/match-image.test.mjs +7 -19
- package/testdriver/acceptance-sdk/presets-example.test.mjs +87 -0
- package/testdriver/acceptance-sdk/press-keys.test.mjs +5 -19
- package/testdriver/acceptance-sdk/prompt.test.mjs +6 -18
- package/testdriver/acceptance-sdk/scroll-keyboard.test.mjs +6 -20
- package/testdriver/acceptance-sdk/scroll-until-image.test.mjs +6 -18
- package/testdriver/acceptance-sdk/scroll-until-text.test.mjs +9 -23
- package/testdriver/acceptance-sdk/scroll.test.mjs +12 -21
- package/testdriver/acceptance-sdk/setup/testHelpers.mjs +124 -352
- package/testdriver/acceptance-sdk/sully-ai.test.mjs +234 -0
- package/testdriver/acceptance-sdk/test-console-logs.test.mjs +42 -0
- package/testdriver/acceptance-sdk/type.test.mjs +19 -58
- package/vitest.config.mjs +1 -0
- package/.vscode/mcp.json +0 -9
- package/MIGRATION.md +0 -389
- package/PLUGIN_MIGRATION.md +0 -222
- package/PROMPT_CACHE.md +0 -200
- package/SDK_LOGGING.md +0 -222
- package/SDK_MIGRATION.md +0 -474
- package/SDK_README.md +0 -1122
- package/debug-screenshot-1763401388589.png +0 -0
- package/examples/run-tests-with-recording.sh +0 -70
- package/examples/screenshot-example.js +0 -63
- package/examples/sdk-awesome-logs-demo.js +0 -177
- package/examples/sdk-cache-thresholds.js +0 -96
- package/examples/sdk-element-properties.js +0 -155
- package/examples/sdk-simple-example.js +0 -65
- package/examples/test-recording-example.test.js +0 -166
- package/mcp-server/AI_GUIDELINES.md +0 -57
- package/test-find-api.js +0 -73
- package/test-prompt-cache.js +0 -96
- package/test-sandbox-render.js +0 -28
- package/test-sdk-methods.js +0 -15
- package/test-sdk-refactor.js +0 -53
- package/test-stack-trace.mjs +0 -57
- package/testdriver/acceptance-sdk/setup/lifecycleHelpers.mjs +0 -239
|
@@ -0,0 +1,498 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "GitLab CI"
|
|
3
|
+
description: "Run TestDriver tests in GitLab CI/CD"
|
|
4
|
+
icon: "gitlab"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Basic Setup
|
|
8
|
+
|
|
9
|
+
Create `.gitlab-ci.yml`:
|
|
10
|
+
|
|
11
|
+
```yaml
|
|
12
|
+
stages:
|
|
13
|
+
- test
|
|
14
|
+
|
|
15
|
+
test:
|
|
16
|
+
stage: test
|
|
17
|
+
image: node:18
|
|
18
|
+
|
|
19
|
+
before_script:
|
|
20
|
+
- npm ci
|
|
21
|
+
|
|
22
|
+
script:
|
|
23
|
+
- npx vitest
|
|
24
|
+
|
|
25
|
+
variables:
|
|
26
|
+
TD_API_KEY: $TD_API_KEY
|
|
27
|
+
|
|
28
|
+
artifacts:
|
|
29
|
+
when: always
|
|
30
|
+
paths:
|
|
31
|
+
- test-results/
|
|
32
|
+
reports:
|
|
33
|
+
junit: test-results/junit.xml
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Add API Key
|
|
37
|
+
|
|
38
|
+
1. Go to **Settings** → **CI/CD** → **Variables**
|
|
39
|
+
2. Click **Add variable**
|
|
40
|
+
3. Key: `TD_API_KEY`
|
|
41
|
+
4. Value: Your API key from [dashboard.testdriver.ai](https://dashboard.testdriver.ai)
|
|
42
|
+
5. Check **Protect variable** (recommended)
|
|
43
|
+
6. Check **Mask variable** (recommended)
|
|
44
|
+
7. Click **Add variable**
|
|
45
|
+
|
|
46
|
+
## Parallel Jobs
|
|
47
|
+
|
|
48
|
+
Run tests in parallel:
|
|
49
|
+
|
|
50
|
+
```yaml
|
|
51
|
+
test:
|
|
52
|
+
stage: test
|
|
53
|
+
image: node:18
|
|
54
|
+
parallel: 4
|
|
55
|
+
|
|
56
|
+
before_script:
|
|
57
|
+
- npm ci
|
|
58
|
+
|
|
59
|
+
script:
|
|
60
|
+
- npx vitest --shard=$CI_NODE_INDEX/$CI_NODE_TOTAL
|
|
61
|
+
|
|
62
|
+
variables:
|
|
63
|
+
TD_API_KEY: $TD_API_KEY
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
GitLab automatically sets `CI_NODE_INDEX` (1-4) and `CI_NODE_TOTAL` (4).
|
|
67
|
+
|
|
68
|
+
## Cache Dependencies
|
|
69
|
+
|
|
70
|
+
Speed up builds with caching:
|
|
71
|
+
|
|
72
|
+
```yaml
|
|
73
|
+
test:
|
|
74
|
+
stage: test
|
|
75
|
+
image: node:18
|
|
76
|
+
|
|
77
|
+
cache:
|
|
78
|
+
paths:
|
|
79
|
+
- node_modules/
|
|
80
|
+
key:
|
|
81
|
+
files:
|
|
82
|
+
- package-lock.json
|
|
83
|
+
|
|
84
|
+
before_script:
|
|
85
|
+
- npm ci
|
|
86
|
+
|
|
87
|
+
script:
|
|
88
|
+
- npx vitest
|
|
89
|
+
|
|
90
|
+
variables:
|
|
91
|
+
TD_API_KEY: $TD_API_KEY
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Save Dashcam URLs
|
|
95
|
+
|
|
96
|
+
Extract replay URLs from test output:
|
|
97
|
+
|
|
98
|
+
```yaml
|
|
99
|
+
test:
|
|
100
|
+
stage: test
|
|
101
|
+
image: node:18
|
|
102
|
+
|
|
103
|
+
script:
|
|
104
|
+
- npx vitest 2>&1 | tee test-output.log
|
|
105
|
+
- grep -o 'https://dashcam.testdriver.ai/[a-zA-Z0-9-]*' test-output.log > dashcam-urls.txt || true
|
|
106
|
+
|
|
107
|
+
variables:
|
|
108
|
+
TD_API_KEY: $TD_API_KEY
|
|
109
|
+
|
|
110
|
+
artifacts:
|
|
111
|
+
when: always
|
|
112
|
+
paths:
|
|
113
|
+
- test-results/
|
|
114
|
+
- test-output.log
|
|
115
|
+
- dashcam-urls.txt
|
|
116
|
+
reports:
|
|
117
|
+
junit: test-results/junit.xml
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## Scheduled Pipelines
|
|
121
|
+
|
|
122
|
+
Run tests on schedule:
|
|
123
|
+
|
|
124
|
+
1. Go to **CI/CD** → **Schedules**
|
|
125
|
+
2. Click **New schedule**
|
|
126
|
+
3. Description: "Nightly tests"
|
|
127
|
+
4. Interval pattern: `0 2 * * *` (2 AM daily)
|
|
128
|
+
5. Target branch: `main`
|
|
129
|
+
6. Click **Save pipeline schedule**
|
|
130
|
+
|
|
131
|
+
Or use `only` in `.gitlab-ci.yml`:
|
|
132
|
+
|
|
133
|
+
```yaml
|
|
134
|
+
test:
|
|
135
|
+
script:
|
|
136
|
+
- npx vitest
|
|
137
|
+
|
|
138
|
+
only:
|
|
139
|
+
- schedules
|
|
140
|
+
- merge_requests
|
|
141
|
+
- main
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## Retry Failed Tests
|
|
145
|
+
|
|
146
|
+
Automatically retry on failure:
|
|
147
|
+
|
|
148
|
+
```yaml
|
|
149
|
+
test:
|
|
150
|
+
stage: test
|
|
151
|
+
image: node:18
|
|
152
|
+
|
|
153
|
+
retry:
|
|
154
|
+
max: 2
|
|
155
|
+
when:
|
|
156
|
+
- runner_system_failure
|
|
157
|
+
- stuck_or_timeout_failure
|
|
158
|
+
|
|
159
|
+
script:
|
|
160
|
+
- npx vitest
|
|
161
|
+
|
|
162
|
+
variables:
|
|
163
|
+
TD_API_KEY: $TD_API_KEY
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## Multiple Node Versions
|
|
167
|
+
|
|
168
|
+
Test across Node.js versions:
|
|
169
|
+
|
|
170
|
+
```yaml
|
|
171
|
+
.test_template:
|
|
172
|
+
stage: test
|
|
173
|
+
|
|
174
|
+
before_script:
|
|
175
|
+
- npm ci
|
|
176
|
+
|
|
177
|
+
script:
|
|
178
|
+
- npx vitest
|
|
179
|
+
|
|
180
|
+
variables:
|
|
181
|
+
TD_API_KEY: $TD_API_KEY
|
|
182
|
+
|
|
183
|
+
test:node16:
|
|
184
|
+
extends: .test_template
|
|
185
|
+
image: node:16
|
|
186
|
+
|
|
187
|
+
test:node18:
|
|
188
|
+
extends: .test_template
|
|
189
|
+
image: node:18
|
|
190
|
+
|
|
191
|
+
test:node20:
|
|
192
|
+
extends: .test_template
|
|
193
|
+
image: node:20
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
## Environment-Specific Tests
|
|
197
|
+
|
|
198
|
+
Test against different environments:
|
|
199
|
+
|
|
200
|
+
```yaml
|
|
201
|
+
test:staging:
|
|
202
|
+
stage: test
|
|
203
|
+
image: node:18
|
|
204
|
+
|
|
205
|
+
script:
|
|
206
|
+
- npx vitest
|
|
207
|
+
|
|
208
|
+
variables:
|
|
209
|
+
TD_API_KEY: $TD_API_KEY
|
|
210
|
+
TEST_URL: https://staging.example.com
|
|
211
|
+
|
|
212
|
+
only:
|
|
213
|
+
- merge_requests
|
|
214
|
+
|
|
215
|
+
test:production:
|
|
216
|
+
stage: test
|
|
217
|
+
image: node:18
|
|
218
|
+
|
|
219
|
+
script:
|
|
220
|
+
- npx vitest
|
|
221
|
+
|
|
222
|
+
variables:
|
|
223
|
+
TD_API_KEY: $TD_API_KEY
|
|
224
|
+
TEST_URL: https://example.com
|
|
225
|
+
|
|
226
|
+
only:
|
|
227
|
+
- main
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
## Conditional Execution
|
|
231
|
+
|
|
232
|
+
Skip tests on documentation changes:
|
|
233
|
+
|
|
234
|
+
```yaml
|
|
235
|
+
test:
|
|
236
|
+
stage: test
|
|
237
|
+
image: node:18
|
|
238
|
+
|
|
239
|
+
script:
|
|
240
|
+
- npx vitest
|
|
241
|
+
|
|
242
|
+
variables:
|
|
243
|
+
TD_API_KEY: $TD_API_KEY
|
|
244
|
+
|
|
245
|
+
except:
|
|
246
|
+
changes:
|
|
247
|
+
- "*.md"
|
|
248
|
+
- "docs/**/*"
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
Or run only on specific changes:
|
|
252
|
+
|
|
253
|
+
```yaml
|
|
254
|
+
test:
|
|
255
|
+
only:
|
|
256
|
+
changes:
|
|
257
|
+
- "src/**/*"
|
|
258
|
+
- "test/**/*"
|
|
259
|
+
- "package.json"
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
## Docker-in-Docker
|
|
263
|
+
|
|
264
|
+
If you need Docker for your tests:
|
|
265
|
+
|
|
266
|
+
```yaml
|
|
267
|
+
test:
|
|
268
|
+
stage: test
|
|
269
|
+
image: docker:latest
|
|
270
|
+
|
|
271
|
+
services:
|
|
272
|
+
- docker:dind
|
|
273
|
+
|
|
274
|
+
variables:
|
|
275
|
+
DOCKER_DRIVER: overlay2
|
|
276
|
+
TD_API_KEY: $TD_API_KEY
|
|
277
|
+
|
|
278
|
+
before_script:
|
|
279
|
+
- apk add --no-cache nodejs npm
|
|
280
|
+
- npm ci
|
|
281
|
+
|
|
282
|
+
script:
|
|
283
|
+
- npx vitest
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
## Matrix Jobs
|
|
287
|
+
|
|
288
|
+
Test multiple configurations:
|
|
289
|
+
|
|
290
|
+
```yaml
|
|
291
|
+
test:
|
|
292
|
+
stage: test
|
|
293
|
+
parallel:
|
|
294
|
+
matrix:
|
|
295
|
+
- NODE_VERSION: ['16', '18', '20']
|
|
296
|
+
OS: ['debian', 'alpine']
|
|
297
|
+
|
|
298
|
+
image: node:${NODE_VERSION}-${OS}
|
|
299
|
+
|
|
300
|
+
script:
|
|
301
|
+
- npm ci
|
|
302
|
+
- npx vitest
|
|
303
|
+
|
|
304
|
+
variables:
|
|
305
|
+
TD_API_KEY: $TD_API_KEY
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
## Code Coverage
|
|
309
|
+
|
|
310
|
+
Generate and publish coverage reports:
|
|
311
|
+
|
|
312
|
+
```yaml
|
|
313
|
+
test:
|
|
314
|
+
stage: test
|
|
315
|
+
image: node:18
|
|
316
|
+
|
|
317
|
+
script:
|
|
318
|
+
- npx vitest --coverage
|
|
319
|
+
|
|
320
|
+
coverage: '/All files[^|]*\|[^|]*\s+([\d\.]+)/'
|
|
321
|
+
|
|
322
|
+
artifacts:
|
|
323
|
+
reports:
|
|
324
|
+
coverage_report:
|
|
325
|
+
coverage_format: cobertura
|
|
326
|
+
path: coverage/cobertura-coverage.xml
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
## Fail Fast
|
|
330
|
+
|
|
331
|
+
Stop pipeline on first failure:
|
|
332
|
+
|
|
333
|
+
```yaml
|
|
334
|
+
workflow:
|
|
335
|
+
rules:
|
|
336
|
+
- when: always
|
|
337
|
+
|
|
338
|
+
test:
|
|
339
|
+
stage: test
|
|
340
|
+
parallel: 4
|
|
341
|
+
|
|
342
|
+
script:
|
|
343
|
+
- npx vitest --shard=$CI_NODE_INDEX/$CI_NODE_TOTAL --bail
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
## Manual Triggers
|
|
347
|
+
|
|
348
|
+
Add manual approval step:
|
|
349
|
+
|
|
350
|
+
```yaml
|
|
351
|
+
test:
|
|
352
|
+
stage: test
|
|
353
|
+
when: manual
|
|
354
|
+
allow_failure: false
|
|
355
|
+
|
|
356
|
+
script:
|
|
357
|
+
- npx vitest
|
|
358
|
+
|
|
359
|
+
variables:
|
|
360
|
+
TD_API_KEY: $TD_API_KEY
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
## Troubleshooting
|
|
364
|
+
|
|
365
|
+
### Tests timeout
|
|
366
|
+
|
|
367
|
+
Increase timeout:
|
|
368
|
+
|
|
369
|
+
```yaml
|
|
370
|
+
test:
|
|
371
|
+
timeout: 30m # Default is 1 hour
|
|
372
|
+
|
|
373
|
+
script:
|
|
374
|
+
- npx vitest
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
### API key not found
|
|
378
|
+
|
|
379
|
+
Debug variables:
|
|
380
|
+
|
|
381
|
+
```yaml
|
|
382
|
+
test:
|
|
383
|
+
script:
|
|
384
|
+
- echo "Has TD_API_KEY ${TD_API_KEY:+yes}"
|
|
385
|
+
- npx vitest
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
### Cache not working
|
|
389
|
+
|
|
390
|
+
Clear cache and retry:
|
|
391
|
+
|
|
392
|
+
```yaml
|
|
393
|
+
test:
|
|
394
|
+
cache:
|
|
395
|
+
paths:
|
|
396
|
+
- node_modules/
|
|
397
|
+
key:
|
|
398
|
+
files:
|
|
399
|
+
- package-lock.json
|
|
400
|
+
policy: pull-push # Always update cache
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
Or clear manually: **CI/CD** → **Pipelines** → **Clear runner caches**
|
|
404
|
+
|
|
405
|
+
## Complete Example
|
|
406
|
+
|
|
407
|
+
Full-featured pipeline:
|
|
408
|
+
|
|
409
|
+
```yaml
|
|
410
|
+
stages:
|
|
411
|
+
- test
|
|
412
|
+
- report
|
|
413
|
+
|
|
414
|
+
variables:
|
|
415
|
+
NODE_VERSION: '18'
|
|
416
|
+
|
|
417
|
+
.test_template:
|
|
418
|
+
image: node:${NODE_VERSION}
|
|
419
|
+
|
|
420
|
+
cache:
|
|
421
|
+
paths:
|
|
422
|
+
- node_modules/
|
|
423
|
+
key:
|
|
424
|
+
files:
|
|
425
|
+
- package-lock.json
|
|
426
|
+
|
|
427
|
+
before_script:
|
|
428
|
+
- npm ci
|
|
429
|
+
|
|
430
|
+
variables:
|
|
431
|
+
TD_API_KEY: $TD_API_KEY
|
|
432
|
+
|
|
433
|
+
test:
|
|
434
|
+
extends: .test_template
|
|
435
|
+
stage: test
|
|
436
|
+
parallel: 4
|
|
437
|
+
|
|
438
|
+
retry:
|
|
439
|
+
max: 2
|
|
440
|
+
when:
|
|
441
|
+
- runner_system_failure
|
|
442
|
+
|
|
443
|
+
script:
|
|
444
|
+
- npx vitest --shard=$CI_NODE_INDEX/$CI_NODE_TOTAL 2>&1 | tee test-output.log
|
|
445
|
+
- grep -o 'https://dashcam.testdriver.ai/[a-zA-Z0-9-]*' test-output.log > dashcam-urls.txt || true
|
|
446
|
+
|
|
447
|
+
artifacts:
|
|
448
|
+
when: always
|
|
449
|
+
expire_in: 1 week
|
|
450
|
+
paths:
|
|
451
|
+
- test-results/
|
|
452
|
+
- test-output.log
|
|
453
|
+
- dashcam-urls.txt
|
|
454
|
+
reports:
|
|
455
|
+
junit: test-results/junit.xml
|
|
456
|
+
|
|
457
|
+
only:
|
|
458
|
+
- merge_requests
|
|
459
|
+
- main
|
|
460
|
+
- schedules
|
|
461
|
+
|
|
462
|
+
report:
|
|
463
|
+
stage: report
|
|
464
|
+
image: alpine:latest
|
|
465
|
+
|
|
466
|
+
dependencies:
|
|
467
|
+
- test
|
|
468
|
+
|
|
469
|
+
script:
|
|
470
|
+
- echo "Tests completed"
|
|
471
|
+
- cat dashcam-urls.txt || true
|
|
472
|
+
|
|
473
|
+
when: on_failure
|
|
474
|
+
|
|
475
|
+
only:
|
|
476
|
+
- merge_requests
|
|
477
|
+
- main
|
|
478
|
+
```
|
|
479
|
+
|
|
480
|
+
## See Also
|
|
481
|
+
|
|
482
|
+
<CardGroup cols={2}>
|
|
483
|
+
<Card title="CI/CD Overview" icon="arrows-spin" href="/v7/guides/ci-cd/overview">
|
|
484
|
+
CI/CD concepts
|
|
485
|
+
</Card>
|
|
486
|
+
|
|
487
|
+
<Card title="Performance" icon="gauge" href="/v7/guides/performance">
|
|
488
|
+
Optimize tests
|
|
489
|
+
</Card>
|
|
490
|
+
|
|
491
|
+
<Card title="Troubleshooting" icon="circle-question" href="/v7/guides/troubleshooting">
|
|
492
|
+
Common issues
|
|
493
|
+
</Card>
|
|
494
|
+
|
|
495
|
+
<Card title="GitLab CI Docs" icon="book" href="https://docs.gitlab.com/ee/ci/">
|
|
496
|
+
Official docs
|
|
497
|
+
</Card>
|
|
498
|
+
</CardGroup>
|