···17111711```
1712171217131713::: tip
17141714-To have a better type safety when using built-in providers, you can add one of these types (for provider that you are using) to your tsconfig's `compilerOptions.types` field:
17141714+To have a better type safety when using built-in providers, you should reference one of these types (for provider that you are using) in your [config file](/config/file):
1715171517161716-```json
17171717-{
17181718- "compilerOptions": {
17191719- "types": [
17201720- "@vitest/browser/providers/webdriverio",
17211721- "@vitest/browser/providers/playwright"
17221722- ]
17231723- }
17241724-}
17161716+```ts
17171717+/// <reference types="@vitest/browser/providers/playwright" />
17181718+/// <reference types="@vitest/browser/providers/webdriverio" />
17251719```
17261720:::
17271721
packages/browser/dummy.js
+1
packages/browser/matchers.d.ts
···4455declare module 'vitest' {
66 interface JestAssertion<T = any> extends jsdomMatchers.default.TestingLibraryMatchers<void, T> {}
77+ interface AsymmetricMatchersContaining extends jsdomMatchers.default.TestingLibraryMatchers<void, void> {}
7889 type Promisify<O> = {
910 [K in keyof O]: O[K] extends (...args: infer A) => infer R
···3232- [`toHaveRole`](https://github.com/testing-library/jest-dom#toHaveRole)
3333- [`toHaveErrorMessage`](https://github.com/testing-library/jest-dom#toHaveErrorMessage)
34343535-If you are using TypeScript or want to have correct type hints in `expect`, make sure you have either `@vitest/browser/providers/playwright` or `@vitest/browser/providers/webdriverio` specified in your `tsconfig` depending on the provider you use. If you use the default `preview` provider, you can specify `@vitest/browser/matchers` instead.
3535+If you are using [TypeScript](/guide/browser/#typescript) or want to have correct type hints in `expect`, make sure you have either `@vitest/browser/providers/playwright` or `@vitest/browser/providers/webdriverio` referenced in your [setup file](/config/#setupfile) or a [config file](/config/file) depending on the provider you use. If you use the default `preview` provider, you can specify `@vitest/browser/matchers` instead.
36363737::: code-group
3838-```json [preview]
3939-{
4040- "compilerOptions": {
4141- "types": [
4242- "@vitest/browser/matchers"
4343- ]
4444- }
4545-}
3838+```ts [preview]
3939+/// <reference types="@vitest/browser/matchers" />
4640```
4747-```json [playwright]
4848-{
4949- "compilerOptions": {
5050- "types": [
5151- "@vitest/browser/providers/playwright"
5252- ]
5353- }
5454-}
4141+```ts [playwright]
4242+/// <reference types="@vitest/browser/providers/playwright" />
5543```
5656-```json [webdriverio]
5757-{
5858- "compilerOptions": {
5959- "types": [
6060- "@vitest/browser/providers/webdriverio"
6161- ]
6262- }
6363-}
4444+```ts [webdriverio]
4545+/// <reference types="@vitest/browser/providers/webdriverio" />
6446```
6547:::
6648
+6-18
docs/guide/browser/commands.md
···149149```
150150151151::: tip
152152-If you are using TypeScript, don't forget to add `@vitest/browser/providers/playwright` to your `tsconfig` "compilerOptions.types" field to get autocompletion in the config and on `userEvent` and `page` options:
152152+If you are using TypeScript, don't forget to reference `@vitest/browser/providers/playwright` in your [setup file](/config/#setupfile) or a [config file](/config/file) to get autocompletion in the config and in `userEvent` and `page` options:
153153154154-```json
155155-{
156156- "compilerOptions": {
157157- "types": [
158158- "@vitest/browser/providers/playwright"
159159- ]
160160- }
161161-}
154154+```ts
155155+/// <reference types="@vitest/browser/providers/playwright" />
162156```
163157:::
164158···171165Vitest automatically switches the `webdriver` context to the test iframe by calling `browser.switchToFrame` before the command is called, so `$` and `$$` methods refer to the elements inside the iframe, not in the orchestrator, but non-webdriver APIs will still refer to the parent frame context.
172166173167::: tip
174174-If you are using TypeScript, don't forget to add `@vitest/browser/providers/webdriverio` to your `tsconfig` "compilerOptions.types" field to get autocompletion:
168168+If you are using TypeScript, don't forget to reference `@vitest/browser/providers/webdriverio` in your [setup file](/config/#setupfile) or a [config file](/config/file) to get autocompletion:
175169176176-```json
177177-{
178178- "compilerOptions": {
179179- "types": [
180180- "@vitest/browser/providers/webdriverio"
181181- ]
182182- }
183183-}
170170+```ts
171171+/// <reference types="@vitest/browser/providers/webdriverio" />
184172```
185173:::
+41-4
docs/guide/browser/index.md
···245245 },
246246})
247247```
248248-249249-To have type hints, add `@vitest/browser/providers/playwright` to `compilerOptions.types` in your `tsconfig.json` file.
250248== WebdriverIO
251249You can configure what [options](https://webdriver.io/docs/configuration#webdriverio) Vitest should use when starting a browser via [`providerOptions`](/config/#browser-provideroptions) field:
252250···266264 },
267265})
268266```
269269-270270-To have type hints, add `@vitest/browser/providers/webdriverio` to `compilerOptions.types` in your `tsconfig.json` file.
271267:::
272268273269## Browser Option Types
···283279 - `firefox`
284280 - `webkit`
285281 - `chromium`
282282+283283+## TypeScript
284284+285285+By default, TypeScript doesn't recognize providers options and extra `expect` properties. If you don't use any providers, make sure the `@vitest/browser/matchers` is referenced somewhere in your tests, [setup file](/config/#setupfile) or a [config file](/config/file) to pick up the extra `expect` definitions. If you are using custom providers, make sure to add `@vitest/browser/providers/playwright` or `@vitest/browser/providers/webdriverio` to the same file so TypeScript can pick up definitions for custom options:
286286+287287+::: code-block
288288+```ts [default]
289289+/// <reference types="@vitest/browser/matchers" />
290290+```
291291+```ts [playwright]
292292+/// <reference types="@vitest/browser/providers/playwright" />
293293+```
294294+```ts [webdriverio]
295295+/// <reference types="@vitest/browser/providers/webdriverio" />
296296+```
297297+298298+Alternatively, you can also add them to `compilerOptions.types` field in your `tsconfig.json` file. Note that specifying anything in this field will disable [auto loading](https://www.typescriptlang.org/tsconfig/#types) of `@types/*` packages.
299299+300300+::: code-block
301301+```json [default]
302302+{
303303+ "compilerOptions": {
304304+ "types": ["@vitest/browser/matchers"]
305305+ }
306306+}
307307+```
308308+```json [playwright]
309309+{
310310+ "compilerOptions": {
311311+ "types": ["@vitest/browser/providers/playwright"]
312312+ }
313313+}
314314+```
315315+```json [webdriverio]
316316+{
317317+ "compilerOptions": {
318318+ "types": ["@vitest/browser/providers/webdriverio"]
319319+ }
320320+}
321321+```
322322+:::
286323287324## Browser Compatibility
288325
+5-17
docs/guide/browser/interactivity-api.md
···1212await userEvent.click(document.querySelector('.button'))
1313```
14141515-Almost every `userEvent` method inherits its provider options. To see all available options in your IDE, add `webdriver` or `playwright` types (depending on your provider) to your `tsconfig.json` file:
1515+Almost every `userEvent` method inherits its provider options. To see all available options in your IDE, add `webdriver` or `playwright` types (depending on your provider) to your [setup file](/config/#setupfile) or a [config file](/config/file) (depending on what is in `included` in your `tsconfig.json`):
16161717::: code-group
1818-```json [playwright]
1919-{
2020- "compilerOptions": {
2121- "types": [
2222- "@vitest/browser/providers/playwright"
2323- ]
2424- }
2525-}
1818+```ts [playwright]
1919+/// <reference types="@vitest/browser/providers/playwright" />
2620```
2727-```json [webdriverio]
2828-{
2929- "compilerOptions": {
3030- "types": [
3131- "@vitest/browser/providers/webdriverio"
3232- ]
3333- }
3434-}
2121+```ts [webdriverio]
2222+/// <reference types="@vitest/browser/providers/webdriverio" />
3523```
3624:::
3725