@vitest-agent/mcp 1.0.1 → 1.2.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/README.md +1 -2
- package/bin/vitest-agent-mcp.js +1 -17
- package/index.d.ts +324 -315
- package/index.js +2 -4
- package/middleware/idempotency.js +1 -1
- package/package.json +2 -2
- package/server.js +2 -4
- package/tools/acceptance-metrics.js +1 -1
- package/tools/cache-health.js +1 -1
- package/tools/commit-changes.js +1 -1
- package/tools/configure.js +1 -1
- package/tools/coverage.js +1 -1
- package/tools/errors.js +1 -1
- package/tools/failure-signature-get.js +1 -1
- package/tools/file-coverage.js +1 -1
- package/tools/history.js +1 -1
- package/tools/inventory.js +1 -1
- package/tools/overview.js +1 -1
- package/tools/run-tests.js +15 -3
- package/tools/settings-list.js +1 -1
- package/tools/status.js +1 -1
- package/tools/tdd-artifact.js +1 -1
- package/tools/tdd-task.js +1 -1
- package/tools/test.js +1 -1
- package/tools/trends.js +1 -1
- package/tools/turn-search.js +1 -1
- package/public/patterns/_meta.json +0 -67
- package/public/patterns/authoring-a-custom-vitest-agent-reporter.md +0 -82
- package/public/patterns/known-issues-and-caveats.md +0 -52
- package/public/patterns/operating-vitest-agent-as-an-agent.md +0 -53
- package/public/patterns/running-tests-via-mcp.md +0 -58
- package/public/patterns/silencing-leaking-output-in-tests.md +0 -91
- package/public/patterns/testing-effect-schema-definitions.md +0 -71
- package/public/patterns/testing-effect-services-with-mock-layers.md +0 -63
- package/public/vendor/vitest-docs/ATTRIBUTION.md +0 -5
- package/public/vendor/vitest-docs/api/advanced/artifacts.md +0 -189
- package/public/vendor/vitest-docs/api/advanced/metadata.md +0 -68
- package/public/vendor/vitest-docs/api/advanced/plugin.md +0 -168
- package/public/vendor/vitest-docs/api/advanced/reporters.md +0 -342
- package/public/vendor/vitest-docs/api/advanced/runner.md +0 -334
- package/public/vendor/vitest-docs/api/advanced/test-case.md +0 -302
- package/public/vendor/vitest-docs/api/advanced/test-collection.md +0 -89
- package/public/vendor/vitest-docs/api/advanced/test-module.md +0 -140
- package/public/vendor/vitest-docs/api/advanced/test-project.md +0 -321
- package/public/vendor/vitest-docs/api/advanced/test-specification.md +0 -96
- package/public/vendor/vitest-docs/api/advanced/test-suite.md +0 -230
- package/public/vendor/vitest-docs/api/advanced/vitest.md +0 -684
- package/public/vendor/vitest-docs/api/assert-type.md +0 -22
- package/public/vendor/vitest-docs/api/assert.md +0 -1960
- package/public/vendor/vitest-docs/api/browser/assertions.md +0 -1277
- package/public/vendor/vitest-docs/api/browser/commands.md +0 -154
- package/public/vendor/vitest-docs/api/browser/context.md +0 -338
- package/public/vendor/vitest-docs/api/browser/interactivity.md +0 -681
- package/public/vendor/vitest-docs/api/browser/locators.md +0 -1171
- package/public/vendor/vitest-docs/api/browser/react.md +0 -346
- package/public/vendor/vitest-docs/api/browser/svelte.md +0 -292
- package/public/vendor/vitest-docs/api/browser/vue.md +0 -222
- package/public/vendor/vitest-docs/api/describe.md +0 -374
- package/public/vendor/vitest-docs/api/expect-typeof.md +0 -571
- package/public/vendor/vitest-docs/api/expect.md +0 -2304
- package/public/vendor/vitest-docs/api/hooks.md +0 -463
- package/public/vendor/vitest-docs/api/mock.md +0 -701
- package/public/vendor/vitest-docs/api/test.md +0 -926
- package/public/vendor/vitest-docs/api/vi.md +0 -1372
- package/public/vendor/vitest-docs/config/alias.md +0 -13
- package/public/vendor/vitest-docs/config/allowonly.md +0 -32
- package/public/vendor/vitest-docs/config/api.md +0 -27
- package/public/vendor/vitest-docs/config/attachmentsdir.md +0 -6
- package/public/vendor/vitest-docs/config/bail.md +0 -9
- package/public/vendor/vitest-docs/config/benchmark.md +0 -65
- package/public/vendor/vitest-docs/config/browser/api.md +0 -23
- package/public/vendor/vitest-docs/config/browser/commands.md +0 -6
- package/public/vendor/vitest-docs/config/browser/connecttimeout.md +0 -10
- package/public/vendor/vitest-docs/config/browser/detailspanelposition.md +0 -38
- package/public/vendor/vitest-docs/config/browser/enabled.md +0 -40
- package/public/vendor/vitest-docs/config/browser/expect.md +0 -250
- package/public/vendor/vitest-docs/config/browser/headless.md +0 -7
- package/public/vendor/vitest-docs/config/browser/instances.md +0 -47
- package/public/vendor/vitest-docs/config/browser/isolate.md +0 -11
- package/public/vendor/vitest-docs/config/browser/locators.md +0 -24
- package/public/vendor/vitest-docs/config/browser/orchestratorscripts.md +0 -39
- package/public/vendor/vitest-docs/config/browser/playwright.md +0 -214
- package/public/vendor/vitest-docs/config/browser/preview.md +0 -32
- package/public/vendor/vitest-docs/config/browser/provider.md +0 -79
- package/public/vendor/vitest-docs/config/browser/screenshotdirectory.md +0 -6
- package/public/vendor/vitest-docs/config/browser/screenshotfailures.md +0 -6
- package/public/vendor/vitest-docs/config/browser/testerhtmlpath.md +0 -5
- package/public/vendor/vitest-docs/config/browser/trace.md +0 -43
- package/public/vendor/vitest-docs/config/browser/trackunhandlederrors.md +0 -10
- package/public/vendor/vitest-docs/config/browser/ui.md +0 -7
- package/public/vendor/vitest-docs/config/browser/viewport.md +0 -6
- package/public/vendor/vitest-docs/config/browser/webdriverio.md +0 -64
- package/public/vendor/vitest-docs/config/cache.md +0 -26
- package/public/vendor/vitest-docs/config/chaiconfig.md +0 -29
- package/public/vendor/vitest-docs/config/clearmocks.md +0 -22
- package/public/vendor/vitest-docs/config/coverage.md +0 -455
- package/public/vendor/vitest-docs/config/css.md +0 -47
- package/public/vendor/vitest-docs/config/dangerouslyignoreunhandlederrors.md +0 -23
- package/public/vendor/vitest-docs/config/deps.md +0 -127
- package/public/vendor/vitest-docs/config/detectasyncleaks.md +0 -39
- package/public/vendor/vitest-docs/config/diff.md +0 -96
- package/public/vendor/vitest-docs/config/dir.md +0 -7
- package/public/vendor/vitest-docs/config/disableconsoleintercept.md +0 -15
- package/public/vendor/vitest-docs/config/env.md +0 -5
- package/public/vendor/vitest-docs/config/environment.md +0 -96
- package/public/vendor/vitest-docs/config/environmentoptions.md +0 -30
- package/public/vendor/vitest-docs/config/exclude.md +0 -49
- package/public/vendor/vitest-docs/config/execargv.md +0 -10
- package/public/vendor/vitest-docs/config/expandsnapshotdiff.md +0 -7
- package/public/vendor/vitest-docs/config/expect.md +0 -38
- package/public/vendor/vitest-docs/config/experimental.md +0 -510
- package/public/vendor/vitest-docs/config/faketimers.md +0 -51
- package/public/vendor/vitest-docs/config/fileparallelism.md +0 -11
- package/public/vendor/vitest-docs/config/forcereruntriggers.md +0 -19
- package/public/vendor/vitest-docs/config/globals.md +0 -42
- package/public/vendor/vitest-docs/config/globalsetup.md +0 -72
- package/public/vendor/vitest-docs/config/hideskippedtests.md +0 -7
- package/public/vendor/vitest-docs/config/hooktimeout.md +0 -7
- package/public/vendor/vitest-docs/config/include-source.md +0 -115
- package/public/vendor/vitest-docs/config/include.md +0 -71
- package/public/vendor/vitest-docs/config/includetasklocation.md +0 -17
- package/public/vendor/vitest-docs/config/index.md +0 -85
- package/public/vendor/vitest-docs/config/isolate.md +0 -13
- package/public/vendor/vitest-docs/config/logheapusage.md +0 -7
- package/public/vendor/vitest-docs/config/maxconcurrency.md +0 -9
- package/public/vendor/vitest-docs/config/maxworkers.md +0 -49
- package/public/vendor/vitest-docs/config/mockreset.md +0 -22
- package/public/vendor/vitest-docs/config/mode.md +0 -7
- package/public/vendor/vitest-docs/config/name.md +0 -111
- package/public/vendor/vitest-docs/config/onconsolelog.md +0 -25
- package/public/vendor/vitest-docs/config/onstacktrace.md +0 -32
- package/public/vendor/vitest-docs/config/onunhandlederror.md +0 -35
- package/public/vendor/vitest-docs/config/open.md +0 -7
- package/public/vendor/vitest-docs/config/outputfile.md +0 -7
- package/public/vendor/vitest-docs/config/passwithnotests.md +0 -7
- package/public/vendor/vitest-docs/config/pool.md +0 -45
- package/public/vendor/vitest-docs/config/printconsoletrace.md +0 -6
- package/public/vendor/vitest-docs/config/projects.md +0 -6
- package/public/vendor/vitest-docs/config/provide.md +0 -45
- package/public/vendor/vitest-docs/config/reporters.md +0 -69
- package/public/vendor/vitest-docs/config/resolvesnapshotpath.md +0 -36
- package/public/vendor/vitest-docs/config/restoremocks.md +0 -22
- package/public/vendor/vitest-docs/config/retry.md +0 -140
- package/public/vendor/vitest-docs/config/root.md +0 -6
- package/public/vendor/vitest-docs/config/runner.md +0 -6
- package/public/vendor/vitest-docs/config/sequence.md +0 -158
- package/public/vendor/vitest-docs/config/server.md +0 -68
- package/public/vendor/vitest-docs/config/setupfiles.md +0 -40
- package/public/vendor/vitest-docs/config/silent.md +0 -9
- package/public/vendor/vitest-docs/config/slowtestthreshold.md +0 -7
- package/public/vendor/vitest-docs/config/snapshotenvironment.md +0 -27
- package/public/vendor/vitest-docs/config/snapshotformat.md +0 -28
- package/public/vendor/vitest-docs/config/snapshotserializers.md +0 -6
- package/public/vendor/vitest-docs/config/stricttags.md +0 -30
- package/public/vendor/vitest-docs/config/tags.md +0 -141
- package/public/vendor/vitest-docs/config/teardowntimeout.md +0 -7
- package/public/vendor/vitest-docs/config/testnamepattern.md +0 -21
- package/public/vendor/vitest-docs/config/testtimeout.md +0 -7
- package/public/vendor/vitest-docs/config/typecheck.md +0 -77
- package/public/vendor/vitest-docs/config/ui.md +0 -15
- package/public/vendor/vitest-docs/config/unstubenvs.md +0 -20
- package/public/vendor/vitest-docs/config/unstubglobals.md +0 -20
- package/public/vendor/vitest-docs/config/update.md +0 -16
- package/public/vendor/vitest-docs/config/vmmemorylimit.md +0 -30
- package/public/vendor/vitest-docs/config/watch.md +0 -11
- package/public/vendor/vitest-docs/config/watchtriggerpatterns.md +0 -29
- package/public/vendor/vitest-docs/guide/advanced/index.md +0 -147
- package/public/vendor/vitest-docs/guide/advanced/pool.md +0 -148
- package/public/vendor/vitest-docs/guide/advanced/reporters.md +0 -93
- package/public/vendor/vitest-docs/guide/advanced/tests.md +0 -125
- package/public/vendor/vitest-docs/guide/browser/aria-snapshots.md +0 -470
- package/public/vendor/vitest-docs/guide/browser/component-testing.md +0 -571
- package/public/vendor/vitest-docs/guide/browser/index.md +0 -630
- package/public/vendor/vitest-docs/guide/browser/multiple-setups.md +0 -121
- package/public/vendor/vitest-docs/guide/browser/trace-view.md +0 -126
- package/public/vendor/vitest-docs/guide/browser/visual-regression-testing.md +0 -734
- package/public/vendor/vitest-docs/guide/cli-generated.md +0 -972
- package/public/vendor/vitest-docs/guide/cli.md +0 -234
- package/public/vendor/vitest-docs/guide/common-errors.md +0 -163
- package/public/vendor/vitest-docs/guide/coverage.md +0 -515
- package/public/vendor/vitest-docs/guide/debugging.md +0 -127
- package/public/vendor/vitest-docs/guide/environment.md +0 -101
- package/public/vendor/vitest-docs/guide/extending-matchers.md +0 -160
- package/public/vendor/vitest-docs/guide/features.md +0 -310
- package/public/vendor/vitest-docs/guide/filtering.md +0 -175
- package/public/vendor/vitest-docs/guide/ide.md +0 -43
- package/public/vendor/vitest-docs/guide/improving-performance.md +0 -245
- package/public/vendor/vitest-docs/guide/in-source.md +0 -159
- package/public/vendor/vitest-docs/guide/index.md +0 -128
- package/public/vendor/vitest-docs/guide/learn/async.md +0 -147
- package/public/vendor/vitest-docs/guide/learn/debugging-tests.md +0 -210
- package/public/vendor/vitest-docs/guide/learn/matchers.md +0 -277
- package/public/vendor/vitest-docs/guide/learn/mock-functions.md +0 -277
- package/public/vendor/vitest-docs/guide/learn/setup-teardown.md +0 -240
- package/public/vendor/vitest-docs/guide/learn/snapshots.md +0 -166
- package/public/vendor/vitest-docs/guide/learn/testing-in-practice.md +0 -430
- package/public/vendor/vitest-docs/guide/learn/writing-tests-with-ai.md +0 -127
- package/public/vendor/vitest-docs/guide/learn/writing-tests.md +0 -231
- package/public/vendor/vitest-docs/guide/lifecycle.md +0 -379
- package/public/vendor/vitest-docs/guide/migration.md +0 -863
- package/public/vendor/vitest-docs/guide/mocking/classes.md +0 -158
- package/public/vendor/vitest-docs/guide/mocking/dates.md +0 -52
- package/public/vendor/vitest-docs/guide/mocking/file-system.md +0 -74
- package/public/vendor/vitest-docs/guide/mocking/functions.md +0 -61
- package/public/vendor/vitest-docs/guide/mocking/globals.md +0 -20
- package/public/vendor/vitest-docs/guide/mocking/modules.md +0 -414
- package/public/vendor/vitest-docs/guide/mocking/requests.md +0 -114
- package/public/vendor/vitest-docs/guide/mocking/timers.md +0 -48
- package/public/vendor/vitest-docs/guide/mocking.md +0 -239
- package/public/vendor/vitest-docs/guide/open-telemetry.md +0 -156
- package/public/vendor/vitest-docs/guide/parallelism.md +0 -82
- package/public/vendor/vitest-docs/guide/profiling-test-performance.md +0 -243
- package/public/vendor/vitest-docs/guide/projects.md +0 -291
- package/public/vendor/vitest-docs/guide/recipes.md +0 -59
- package/public/vendor/vitest-docs/guide/reporters.md +0 -723
- package/public/vendor/vitest-docs/guide/snapshot.md +0 -620
- package/public/vendor/vitest-docs/guide/test-annotations.md +0 -103
- package/public/vendor/vitest-docs/guide/test-context.md +0 -902
- package/public/vendor/vitest-docs/guide/test-tags.md +0 -314
- package/public/vendor/vitest-docs/guide/testing-types.md +0 -149
- package/public/vendor/vitest-docs/guide/ui.md +0 -160
- package/public/vendor/vitest-docs/guide/using-plugins.md +0 -5
- package/public/vendor/vitest-docs/manifest.json +0 -1691
- package/resources/index.js +0 -166
- package/resources/indexes.js +0 -77
- package/resources/manifest-schema.js +0 -46
- package/resources/paths.js +0 -20
- package/resources/patterns.js +0 -22
- package/resources/upstream-docs.js +0 -22
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
# Multiple Setups
|
|
2
|
-
|
|
3
|
-
You can specify several different browser setups using the [`browser.instances`](/config/browser/instances) option.
|
|
4
|
-
|
|
5
|
-
The main advantage of using the `browser.instances` over the [test projects](/guide/projects) is improved caching. Every project will use the same Vite server meaning the file transform and [dependency pre-bundling](https://vite.dev/guide/dep-pre-bundling.html) has to happen only once.
|
|
6
|
-
|
|
7
|
-
## Several Browsers
|
|
8
|
-
|
|
9
|
-
You can use the `browser.instances` field to specify options for different browsers. For example, if you want to run the same tests in different browsers, the minimal configuration will look like this:
|
|
10
|
-
|
|
11
|
-
```ts [vitest.config.ts]
|
|
12
|
-
import { defineConfig } from 'vitest/config'
|
|
13
|
-
import { playwright } from '@vitest/browser-playwright'
|
|
14
|
-
|
|
15
|
-
export default defineConfig({
|
|
16
|
-
test: {
|
|
17
|
-
browser: {
|
|
18
|
-
enabled: true,
|
|
19
|
-
provider: playwright(),
|
|
20
|
-
headless: true,
|
|
21
|
-
instances: [
|
|
22
|
-
{ browser: 'chromium' },
|
|
23
|
-
{ browser: 'firefox' },
|
|
24
|
-
{ browser: 'webkit' },
|
|
25
|
-
],
|
|
26
|
-
},
|
|
27
|
-
},
|
|
28
|
-
})
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
## Different Setups
|
|
32
|
-
|
|
33
|
-
You can also specify different config options independently from the browser (although, the instances _can_ also have `browser` fields):
|
|
34
|
-
|
|
35
|
-
::: code-group
|
|
36
|
-
```ts [vitest.config.ts]
|
|
37
|
-
import { defineConfig } from 'vitest/config'
|
|
38
|
-
import { playwright } from '@vitest/browser-playwright'
|
|
39
|
-
|
|
40
|
-
export default defineConfig({
|
|
41
|
-
test: {
|
|
42
|
-
browser: {
|
|
43
|
-
enabled: true,
|
|
44
|
-
provider: playwright(),
|
|
45
|
-
headless: true,
|
|
46
|
-
instances: [
|
|
47
|
-
{
|
|
48
|
-
browser: 'chromium',
|
|
49
|
-
name: 'chromium-1',
|
|
50
|
-
setupFiles: ['./ratio-setup.ts'],
|
|
51
|
-
provide: {
|
|
52
|
-
ratio: 1,
|
|
53
|
-
},
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
browser: 'chromium',
|
|
57
|
-
name: 'chromium-2',
|
|
58
|
-
provide: {
|
|
59
|
-
ratio: 2,
|
|
60
|
-
},
|
|
61
|
-
},
|
|
62
|
-
],
|
|
63
|
-
},
|
|
64
|
-
},
|
|
65
|
-
})
|
|
66
|
-
```
|
|
67
|
-
```ts [example.test.ts]
|
|
68
|
-
import { expect, inject, test } from 'vitest'
|
|
69
|
-
import { globalSetupModifier } from './example.js'
|
|
70
|
-
|
|
71
|
-
test('ratio works', () => {
|
|
72
|
-
expect(inject('ratio') * globalSetupModifier).toBe(14)
|
|
73
|
-
})
|
|
74
|
-
```
|
|
75
|
-
:::
|
|
76
|
-
|
|
77
|
-
In this example Vitest will run all tests in `chromium` browser, but execute a `'./ratio-setup.ts'` file only in the first configuration and inject a different `ratio` value depending on the [`provide` field](/config/provide).
|
|
78
|
-
|
|
79
|
-
::: warning
|
|
80
|
-
Note that you need to define the custom `name` value if you are using the same browser name because Vitest will assign the `browser` as the project name otherwise.
|
|
81
|
-
:::
|
|
82
|
-
|
|
83
|
-
## Filtering
|
|
84
|
-
|
|
85
|
-
You can filter what projects to run with the [`--project` flag](/guide/cli#project). Vitest will automatically assign the browser name as a project name if it is not assigned manually. If the root config already has a name, Vitest will merge them: `custom` -> `custom (browser)`.
|
|
86
|
-
|
|
87
|
-
```shell
|
|
88
|
-
$ vitest --project=chromium
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
::: code-group
|
|
92
|
-
```ts{6,8} [default]
|
|
93
|
-
export default defineConfig({
|
|
94
|
-
test: {
|
|
95
|
-
browser: {
|
|
96
|
-
instances: [
|
|
97
|
-
// name: chromium
|
|
98
|
-
{ browser: 'chromium' },
|
|
99
|
-
// name: custom
|
|
100
|
-
{ browser: 'firefox', name: 'custom' },
|
|
101
|
-
]
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
})
|
|
105
|
-
```
|
|
106
|
-
```ts{3,7,9} [custom]
|
|
107
|
-
export default defineConfig({
|
|
108
|
-
test: {
|
|
109
|
-
name: 'custom',
|
|
110
|
-
browser: {
|
|
111
|
-
instances: [
|
|
112
|
-
// name: custom (chromium)
|
|
113
|
-
{ browser: 'chromium' },
|
|
114
|
-
// name: manual
|
|
115
|
-
{ browser: 'firefox', name: 'manual' },
|
|
116
|
-
]
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
})
|
|
120
|
-
```
|
|
121
|
-
:::
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
# Trace View
|
|
2
|
-
|
|
3
|
-
Vitest Browser Mode supports generating Playwright's [trace files](https://playwright.dev/docs/trace-viewer#viewing-remote-traces). To enable tracing, you need to set the [`trace`](/config/browser/trace) option in the `test.browser` configuration.
|
|
4
|
-
|
|
5
|
-
::: warning
|
|
6
|
-
Generating trace files is only available when using the [Playwright provider](/config/browser/playwright).
|
|
7
|
-
:::
|
|
8
|
-
|
|
9
|
-
::: code-group
|
|
10
|
-
```ts [vitest.config.js]
|
|
11
|
-
import { defineConfig } from 'vitest/config'
|
|
12
|
-
import { playwright } from '@vitest/browser-playwright'
|
|
13
|
-
|
|
14
|
-
export default defineConfig({
|
|
15
|
-
test: {
|
|
16
|
-
browser: {
|
|
17
|
-
provider: playwright(),
|
|
18
|
-
trace: 'on',
|
|
19
|
-
},
|
|
20
|
-
},
|
|
21
|
-
})
|
|
22
|
-
```
|
|
23
|
-
```bash [CLI]
|
|
24
|
-
vitest --browser.trace=on
|
|
25
|
-
```
|
|
26
|
-
:::
|
|
27
|
-
|
|
28
|
-
By default, Vitest will generate a trace file for each test. You can also configure it to only generate traces on test failures by setting `trace` to `'on-first-retry'`, `'on-all-retries'` or `'retain-on-failure'`. The files will be saved in `__traces__` folder next to your test files. The name of the trace includes the project name, the test name, the [`repeats`](/api/test#repeats) count and [`retry`](/api/test#retry) count:
|
|
29
|
-
|
|
30
|
-
```
|
|
31
|
-
chromium-my-test-0-0.trace.zip
|
|
32
|
-
^^^^^^^^ project name
|
|
33
|
-
^^^^^^ test name
|
|
34
|
-
^ repeat count
|
|
35
|
-
^ retry count
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
To change the output directory, you can set the `tracesDir` option in the `test.browser.trace` configuration. This way all traces will be stored in the same directory, grouped by the test file.
|
|
39
|
-
|
|
40
|
-
```ts [vitest.config.js]
|
|
41
|
-
import { defineConfig } from 'vitest/config'
|
|
42
|
-
import { playwright } from '@vitest/browser-playwright'
|
|
43
|
-
|
|
44
|
-
export default defineConfig({
|
|
45
|
-
test: {
|
|
46
|
-
browser: {
|
|
47
|
-
provider: playwright(),
|
|
48
|
-
trace: {
|
|
49
|
-
mode: 'on',
|
|
50
|
-
// the path is relative to the root of the project
|
|
51
|
-
tracesDir: './playwright-traces',
|
|
52
|
-
},
|
|
53
|
-
},
|
|
54
|
-
},
|
|
55
|
-
})
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
The traces are available in reporters as [annotations](/guide/test-annotations). For example, in the HTML reporter, you can find the link to the trace file in the test details.
|
|
59
|
-
|
|
60
|
-
## Trace markers
|
|
61
|
-
|
|
62
|
-
You can add explicit named markers to make the trace timeline easier to read:
|
|
63
|
-
|
|
64
|
-
```ts
|
|
65
|
-
import { page } from 'vitest/browser'
|
|
66
|
-
|
|
67
|
-
document.body.innerHTML = `
|
|
68
|
-
<button type="button">Sign in</button>
|
|
69
|
-
`
|
|
70
|
-
|
|
71
|
-
await page.getByRole('button', { name: 'Sign in' }).mark('sign in button rendered')
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
Both `page.mark(name)` and `locator.mark(name)` are available.
|
|
75
|
-
|
|
76
|
-
You can also group multiple operations under one marker with `page.mark(name, callback)`:
|
|
77
|
-
|
|
78
|
-
```ts
|
|
79
|
-
await page.mark('sign in flow', async () => {
|
|
80
|
-
await page.getByRole('textbox', { name: 'Email' }).fill('john@example.com')
|
|
81
|
-
await page.getByRole('textbox', { name: 'Password' }).fill('secret')
|
|
82
|
-
await page.getByRole('button', { name: 'Sign in' }).click()
|
|
83
|
-
})
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
You can also wrap reusable helpers with [`vi.defineHelper()`](/api/vi#vi-defineHelper) so trace entries point to where the helper is called, not its internals:
|
|
87
|
-
|
|
88
|
-
```ts
|
|
89
|
-
import { vi } from 'vitest'
|
|
90
|
-
import { page } from 'vitest/browser'
|
|
91
|
-
|
|
92
|
-
const myRender = vi.defineHelper(async (content: string) => {
|
|
93
|
-
document.body.innerHTML = content
|
|
94
|
-
await page.elementLocator(document.body).mark('render helper')
|
|
95
|
-
})
|
|
96
|
-
|
|
97
|
-
test('renders content', async () => {
|
|
98
|
-
await myRender('<button>Hello</button>') // trace points to this line
|
|
99
|
-
})
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
## Preview
|
|
103
|
-
|
|
104
|
-
To open the trace file, you can use the Playwright Trace Viewer. Run the following command in your terminal:
|
|
105
|
-
|
|
106
|
-
```bash
|
|
107
|
-
npx playwright show-trace "path-to-trace-file"
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
This will start the Trace Viewer and load the specified trace file.
|
|
111
|
-
|
|
112
|
-
Alternatively, you can open the Trace Viewer in your browser at https://trace.playwright.dev and upload the trace file there.
|
|
113
|
-
|
|
114
|
-
<img alt="Trace Viewer showing the trace timeline and rendered component" img-light src="/trace-viewer-light.png">
|
|
115
|
-
<img alt="Trace Viewer showing the trace timeline and rendered component" img-dark src="/trace-viewer-dark.png">
|
|
116
|
-
|
|
117
|
-
## Source Location
|
|
118
|
-
|
|
119
|
-
When you open a trace, you'll notice that Vitest groups browser interactions and links them back to the exact line in your test that triggered them. This happens automatically for:
|
|
120
|
-
|
|
121
|
-
- `expect.element(...)` assertions
|
|
122
|
-
- Interactive actions like `click`, `fill`, `type`, `hover`, `selectOptions`, `upload`, `dragAndDrop`, `tab`, `keyboard`, `wheel`, and screenshots
|
|
123
|
-
|
|
124
|
-
Under the hood, Playwright still records its own low-level action events as usual. Vitest wraps them with source-location groups so you can jump straight from the trace timeline to the relevant line in your test.
|
|
125
|
-
|
|
126
|
-
For anything not covered automatically, you can use `page.mark()` or `locator.mark()` to add your own trace groups — see [Trace markers](#trace-markers) above.
|