Skip to content
Vitest 3
Main Navigation Руководство & APIКонфигурацияРежим браузераРасширенный API
3.2.0
2.1.9
1.6.1
0.34.6

Русский

English
简体中文
繁體中文
Español
Français
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

Русский

English
简体中文
繁體中文
Español
Français
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

Внешний вид

Sidebar Navigation

Введение

Почему режим браузера

Режим браузера

Конфигурация

Справочник по настройке браузера

Настройка Playwright

Настройка WebdriverIO

API

Context API

Interactivity API

Локаторы

Assertion API

Команды

Руководство

Несколько конфигураций

Настройка Vitest

Справочник по API тестирования

Расширенный API

Содержание страницы

Справочник по настройке браузера ​

Вы можете изменить конфигурацию браузера, обновив поле test.browser в вашем файле конфигурации. Пример простого конфигурационного файла:

ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    browser: {
      enabled: true,
      provider: 'playwright',
      instances: [
        {
          browser: 'chromium',
          setupFile: './chromium-setup.js',
        },
      ],
    },
  },
});

Пожалуйста, ознакомьтесь со статьей "Справочник по конфигурации" для различных примеров конфигурации.

WARNING

Все перечисленные опции на этой странице находятся внутри свойства test в конфигурации:

ts
export default defineConfig({
  test: {
    browser: {},
  },
});

browser.enabled ​

  • Тип: boolean
  • По умолчанию: false
  • CLI: --browser, --browser.enabled=false

По умолчанию все тесты запускаются в браузере. Обратите внимание, что --browser работает только в том случае, если у вас есть хотя бы один элемент browser.instances.

browser.instances ​

  • Тип: BrowserConfig
  • По умолчанию: [{ browser: name }]

Определяет несколько конфигураций браузера. Каждая конфигурация должна содержать хотя бы поле browser. Конфигурация поддерживает настройки для ваших провайдеров:

  • Настройка Playwright
  • Настройка WebdriverIO

TIP

Для лучшей типобезопасности при использовании встроенных провайдеров, вам следует ссылаться на один из этих типов (для используемого вами провайдера) в вашем файле конфигурации:

ts
/// <reference types="@vitest/browser/providers/playwright" />
/// <reference types="@vitest/browser/providers/webdriverio" />

Кроме того, вы также можете указать большинство опций проекта (за исключением отмеченных значком *) и некоторые опции browser, такие как browser.testerHtmlPath.

WARNING

Каждая конфигурация браузера наследует опции из корневой конфигурации:

ts
export default defineConfig({
  test: {
    setupFile: ['./root-setup-file.js'],
    browser: {
      enabled: true,
      testerHtmlPath: './custom-path.html',
      instances: [
        {
          // будут использоваться оба файла настройки: "root" и "browser"
          setupFile: ['./browser-setup-file.js'],
          // неявно наследует "testerHtmlPath" из корневой конфигурации
          // testerHtmlPath: './custom-path.html',
        },
      ],
    },
  },
})

Во время разработки Vitest поддерживает только одну конфигурацию без режима headless. Вы можете запустить проект в режиме с видимым окном, указав headless: false в конфигурации, или используя флаг --browser.headless=false, или отфильтровав проекты с флагом --project=chromium.

Для получения дополнительных примеров обратитесь к руководству "Несколько настроек".

Список доступных опций browser:

  • browser.headless
  • browser.locators
  • browser.viewport
  • browser.testerHtmlPath
  • browser.screenshotDirectory
  • browser.screenshotFailures

По умолчанию Vitest создает массив с одним элементом, где поле browser.name используется как имя браузера. Обратите внимание, что это поведение будет удалено в Vitest 4.

Внутренне Vitest преобразует эти экземпляры в отдельные тестовые проекты, использующие один сервер Vite для повышения производительности кэширования.

browser.name устарело ​

  • Тип: string
  • CLI: --browser=safari

УСТАРЕЛО

Этот API устарел и будет удален в Vitest 4. Пожалуйста, используйте опцию browser.instances вместо него.

Запускает все тесты в указанном браузере. Возможные опции в разных провайдерах:

  • webdriverio: firefox, chrome, edge, safari
  • playwright: firefox, webkit, chromium
  • custom: любая строка, которая будет передана провайдеру

browser.headless ​

  • Тип: boolean
  • По умолчанию: process.env.CI
  • CLI: --browser.headless, --browser.headless=false

Запускает браузер в безголовом режиме. Если вы запускаете Vitest в CI, он будет включен по умолчанию.

browser.isolate ​

  • Тип: boolean
  • По умолчанию: true
  • CLI: --browser.isolate, --browser.isolate=false

Запускает каждый тест в отдельном iframe.

browser.testerHtmlPath ​

  • Тип: string

Путь к входному HTML-файлу. Может быть относительным к корню проекта. Этот файл будет обработан с помощью хука transformIndexHtml.

browser.api ​

  • Тип: number | { port?, strictPort?, host? }
  • По умолчанию: 63315
  • CLI: --browser.api=63315, --browser.api.port=1234, --browser.api.host=example.com

Настраивает параметры для сервера Vite, который обслуживает код в браузере. Не затрагивает опцию test.api. По умолчанию Vitest назначает порт 63315, чтобы избежать конфликтов с сервером разработки и обеспечить их параллельный запуск.

browser.provider ​

  • Тип: 'webdriverio' | 'playwright' | 'preview' | string
  • По умолчанию: 'preview'
  • CLI: --browser.provider=playwright

Указывает путь к провайдеру, который будет использоваться при запуске тестов в браузере. Vitest предоставляет три провайдера: preview (по умолчанию), webdriverio и playwright. Пользовательские провайдеры должны быть экспортированы по умолчанию (default) и соответствовать следующей структуре:

ts
export interface BrowserProvider {
  name: string;
  supportsParallelism: boolean;
  getSupportedBrowsers: () => readonly string[];
  beforeCommand?: (command: string, args: unknown[]) => Awaitable<void>;
  afterCommand?: (command: string, args: unknown[]) => Awaitable<void>;
  getCommandsContext: (sessionId: string) => Record<string, unknown>;
  openPage: (
    sessionId: string,
    url: string,
    beforeNavigate?: () => Promise<void>
  ) => Promise<void>;
  getCDPSession?: (sessionId: string) => Promise<CDPSession>;
  close: () => Awaitable<void>;
  initialize(
    ctx: TestProject,
    options: BrowserProviderInitializationOptions
  ): Awaitable<void>;
}

РАСШИРЕННЫЙ API

API пользовательских провайдеров является крайне экспериментальным и может изменяться в последующих версиях (патчах). Если вам просто нужно запустить тесты в браузере, используйте опцию browser.instances.

browser.providerOptions устарело ​

  • Тип: BrowserProviderOptions

УСТАРЕЛО

Этот API устарел и будет удален в Vitest 4. Пожалуйста, используйте опцию browser.instances вместо него.

Параметры, передаваемые провайдеру при вызове provider.initialize.

ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    browser: {
      providerOptions: {
        launch: {
          devtools: true,
        },
      },
    },
  },
});

TIP

Для лучшей типобезопасности при использовании встроенных провайдеров, вам следует ссылаться на один из этих типов (для используемого вами провайдера) в вашем файле конфигурации:

ts
/// <reference types="@vitest/browser/providers/playwright" />
/// <reference types="@vitest/browser/providers/webdriverio" />

browser.ui ​

  • Тип: boolean
  • По умолчанию: !isCI
  • CLI: --browser.ui=false

Определяет, должен ли Vitest UI быть внедрен на страницу. По умолчанию встраивает UI iframe во время разработки.

browser.viewport ​

  • Тип: { width, height }
  • По умолчанию: 414x896

Размер области просмотра iframe по умолчанию.

browser.locators ​

Настройки для встроенных локаторов браузера.

browser.locators.testIdAttribute ​

  • Тип: string
  • По умолчанию: data-testid

Атрибут, который используется для поиска элементов с помощью локатора getByTestId.

browser.screenshotDirectory ​

  • Тип: string
  • По умолчанию: __screenshots__ в каталоге тестового файла

Путь к каталогу скриншотов относительно корня проекта.

browser.screenshotFailures ​

  • Тип: boolean
  • По умолчанию: !browser.ui

Определяет, должен ли Vitest делать скриншоты в случае сбоя теста.

browser.orchestratorScripts ​

  • Тип: BrowserScript[]
  • По умолчанию: []

Пользовательские скрипты, которые будут внедрены в HTML-файл оркестратора до инициализации тестовых iframe. Этот HTML-документ только настраивает iframe и не импортирует ваш код.

Поля src и content скрипта будут обработаны плагинами Vite. Скрипт должен соответствовать следующей структуре:

ts
export interface BrowserScript {
  /**
   * Если предоставлен "content" и тип "module", это будет его идентификатор.
   *
   * Например, если вы используете TypeScript, можно добавить расширение `.ts`.
   * @default `injected-${index}.js`
   */
  id?: string;
  /**
   * Содержимое JavaScript для встраивания. Эта строка будет обработана плагинами Vite, если тип "module".
   *
   * Вы можете использовать `id`, чтобы указать Vite на расширение файла.
   */
  content?: string;
  /**
   * Путь к скрипту. Это значение разрешается Vite, поэтому может быть модулем Node.js или путем к файлу.
   */
  src?: string;
  /**
   * Определяет, должен ли скрипт загружаться асинхронно.
   */
  async?: boolean;
  /**
   * Тип скрипта.
   * @default 'module'
   */
  type?: string;
}

browser.testerScripts ​

  • Тип: BrowserScript[]
  • По умолчанию: []

УСТАРЕЛО

Этот API устарел и будет удален в Vitest 4. Пожалуйста, используйте поле browser.testerHtmlPath вместо него.

Пользовательские скрипты, которые будут внедрены в HTML-файл тестера до инициализации тестовой среды. Это полезно для внедрения полифиллов, необходимых для работы Vitest в браузере. В большинстве случаев вместо этого рекомендуется использовать setupFiles.

Поля src и content скрипта будут обработаны плагинами Vite.

browser.commands ​

  • Тип: Record<string, BrowserCommand>
  • По умолчанию: { readFile, writeFile, ... }

Пользовательские команды, которые можно импортировать во время тестов в браузере из @vitest/browser/commands.

browser.connectTimeout ​

  • Тип: number
  • По умолчанию: 60_000

Время ожидания (таймаут) в миллисекундах. Если подключение к браузеру превышает указанное время, тестовый набор завершится с ошибкой.

INFO

Это время, необходимое браузеру для установки WebSocket-соединения с сервером Vitest. В обычных условиях этот таймаут, как правило, не должен быть достигнут.

Pager
Предыдущая страницаРежим браузера
Следующая страницаНастройка Playwright

Выпущено на условиях лицензии MIT.

Авторские права (c) 2021-Present Vitest Team

https://vitest.dev/guide/browser/config

Выпущено на условиях лицензии MIT.

Авторские права (c) 2021-Present Vitest Team