Настройка Playwright
По умолчанию TypeScript не распознает опции провайдеров и дополнительные свойства expect
. Убедитесь, что вы ссылаетесь на @vitest/browser/providers/playwright
, чтобы TypeScript мог получить определения для пользовательских опций:
/// <reference types="@vitest/browser/providers/playwright" />
В качестве альтернативы вы также можете добавить это в поле compilerOptions.types
в вашем файле tsconfig.json
. Обратите внимание, что любое указание в этом поле отключит автоматическую загрузку пакетов @types/*
.
{
"compilerOptions": {
"types": ["@vitest/browser/providers/playwright"]
}
}
Vitest использует одну страницу для запуска всех тестов в одном файле. Вы можете настроить свойства launch
, connect
и context
в instances
:
import { defineConfig } from 'vitest/config'
export default defineConfig({
test: {
browser: {
instances: [
{
browser: 'firefox',
launch: {},
connect: {},
context: {},
},
],
},
},
})
WARNING
До Vitest 3 эти опции находились в свойстве test.browser.providerOptions
:
export default defineConfig({
test: {
browser: {
providerOptions: {
launch: {},
context: {},
},
},
},
});
providerOptions
устарело и заменено на instances
.
launch
Эти опции напрямую передаются в команду playwright[browser].launch
. Вы можете узнать больше о команде и доступных аргументах в документации Playwright.
WARNING
Vitest игнорирует опцию launch.headless
. Вместо этого используйте test.browser.headless
.
Обратите внимание, что Vitest добавляет отладочные флаги в launch.args
, если включен --inspect
.
connect 3.2.0+
Эти опции напрямую передаются в команду playwright[browser].connect
. Вы можете узнать больше о команде и доступных аргументах в документации Playwright.
WARNING
Поскольку эта команда подключается к существующему серверу Playwright, любые опции launch
будут проигнорированы.
context
Vitest создает новый контекст для каждого тестового файла, вызывая метод browser.newContext()
. Вы можете настроить это поведение, указав пользовательские аргументы.
TIP
Обратите внимание, что контекст создается для каждого тестового файла, а не для каждого теста, в отличие от тестового раннера Playwright.
WARNING
Vitest всегда устанавливает ignoreHTTPSErrors
в true
, если ваш сервер обслуживается по HTTPS, и serviceWorkers
в 'allow'
для поддержки мокирования модулей через MSW.
Также рекомендуется использовать test.browser.viewport
вместо его указания здесь, так как он теряется при запуске тестов в безголовом режиме.
actionTimeout
3.0.0+
- По умолчанию: нет таймаута, 1 секунда до 3.0.0
Это значение настраивает таймаут по умолчанию, в течение которого Playwright ожидает завершения всех проверок доступности и выполнения действия.
Вы также можете настроить таймаут для каждого действия отдельно:
import { page, userEvent } from '@vitest/browser/context';
await userEvent.click(page.getByRole('button'), {
timeout: 1_000,
});