Skip to content
Vitest 3
Main Navigation Guia & APIConfiguraçãoModo NavegadorAPI Avançada
3.2.0
2.1.9
1.6.1
0.34.6

Português – Brasil

English
简体中文
繁體中文
Español
Français
Русский
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

Português – Brasil

English
简体中文
繁體中文
Español
Français
Русский
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

Aparência

Sidebar Navigation

Introdução

Por que o Modo Navegador

Modo Navegador

Configuração

Referência de Configuração do Navegador

Configurando o Playwright

Configurando WebdriverIO

API

API de Contexto

API de Interatividade

Seletores

API de Asserções

Comandos

Guia

Múltiplas Configurações

Configurando o Vitest

Referência da API de Teste

APIs Avançadas

Nesta página

Referência de Configuração do Navegador ​

Você pode modificar a configuração do navegador atualizando o campo test.browser no seu arquivo de configuração. Um exemplo de um arquivo de configuração simples:

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

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

Consulte o artigo "Referência de Configuração" para exemplos de configurações diferentes.

WARNING

Todas as opções listadas nesta página estão localizadas dentro de uma propriedade test na configuração:

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

browser.enabled ​

  • Tipo: boolean
  • Padrão: false
  • CLI: --browser, --browser.enabled=false

Habilita a execução de todos os testes em um navegador por padrão. Note que --browser só funciona se você tiver pelo menos um item em browser.instances.

browser.instances ​

  • Tipo: BrowserConfig
  • Padrão: [{ browser: name }]

Define múltiplas configurações de navegador. Cada configuração deve ter pelo menos um campo browser. A configuração suporta as opções dos seus provedores:

  • Configurando Playwright
  • Configurando WebdriverIO

TIP

Para ter uma tipagem mais segura ao usar provedores embutidos, você deve referenciar um desses tipos (para o provedor que você está usando) no seu arquivo de configuração:

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

Adicionalmente, você pode especificar a maioria das opções de projeto (não marcadas com um ícone *) e algumas das opções browser como browser.testerHtmlPath.

WARNING

Cada configuração de navegador herda as opções da configuração raiz:

ts
export default defineConfig({
  test: {
    setupFile: ['./root-setup-file.js'],
    browser: {
      enabled: true,
      testerHtmlPath: './custom-path.html',
      instances: [
        {
          // terá ambos os arquivos de setup: "root" e "browser"
          setupFile: ['./browser-setup-file.js'],
          // implicitamente herda "testerHtmlPath" da configuração raiz
          // testerHtmlPath: './custom-path.html',
        },
      ],
    },
  },
})

Durante o desenvolvimento, o Vitest suporta apenas uma configuração não-headless. Você pode controlar qual projeto será executado com interface gráfica especificando headless: false na configuração, fornecendo a flag --browser.headless=false ou filtrando projetos com a flag --project=chromium.

Para mais exemplos, consulte o guia "Múltiplas Configurações".

Lista de opções browser disponíveis:

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

Por padrão, o Vitest cria um array com um único elemento que usa o valor do campo browser.name como o navegador. Note que este comportamento será removido com o Vitest 4.

Nos bastidores, o Vitest transforma essas instâncias em projetos de teste separados, compartilhando um único servidor Vite para melhor desempenho de cache.

browser.name depreciado ​

  • Tipo: string
  • CLI: --browser=safari

DEPRECIADO

Esta API está depreciada e será removida no Vitest 4. Por favor, use a opção browser.instances em vez disso.

Executa todos os testes em um navegador específico. Opções possíveis em diferentes provedores:

  • webdriverio: firefox, chrome, edge, safari
  • playwright: firefox, webkit, chromium
  • customizado: qualquer string que será passada para o provedor

browser.headless ​

  • Tipo: boolean
  • Padrão: process.env.CI
  • CLI: --browser.headless, --browser.headless=false

Executa o navegador em modo headless (sem interface gráfica). Se você estiver executando o Vitest em CI, será habilitado por padrão.

browser.isolate ​

  • Tipo: boolean
  • Padrão: true
  • CLI: --browser.isolate, --browser.isolate=false

Executa cada teste em um iframe separado.

browser.testerHtmlPath ​

  • Tipo: string

Um caminho para o arquivo HTML de entrada. Pode ser relativo à raiz do projeto. Este arquivo será processado pelo hook transformIndexHtml.

browser.api ​

  • Tipo: number | { port?, strictPort?, host? }
  • Padrão: 63315
  • CLI: --browser.api=63315, --browser.api.port=1234, --browser.api.host=example.com

Configura opções para o servidor Vite que disponibiliza o código no navegador. Não interfere na opção test.api. Por padrão, o Vitest atribui a porta 63315 para evitar conflitos com o servidor de desenvolvimento, permitindo que você execute ambos em paralelo.

browser.provider ​

  • Tipo: 'webdriverio' | 'playwright' | 'preview' | string
  • Padrão: 'preview'
  • CLI: --browser.provider=playwright

Define o caminho para o provedor que será usado ao executar testes de navegador. O Vitest fornece três provedores: preview (padrão), webdriverio e playwright. Provedores personalizados devem ser exportados usando a exportação default e ter a seguinte estrutura:

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 AVANÇADA

A API de provedor personalizado é altamente experimental e pode sofrer alterações entre patches. Se você precisar apenas executar testes em um navegador, use a opção browser.instances em vez disso.

browser.providerOptions depreciado ​

  • Tipo: BrowserProviderOptions

DEPRECIADO

Esta API está depreciada e será removida no Vitest 4. Por favor, use a opção browser.instances em vez disso.

Opções que serão passadas ao provedor ao chamar provider.initialize.

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

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

TIP

Para ter uma tipagem mais segura ao usar provedores embutidos, você deve referenciar um desses tipos (para o provedor que você está usando) no seu arquivo de configuração:

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

browser.ui ​

  • Tipo: boolean
  • Padrão: !isCI
  • CLI: --browser.ui=false

Define se a UI do Vitest deve ser injetada na página. Por padrão, o iframe da UI é injetado durante o desenvolvimento.

browser.viewport ​

  • Tipo: { width, height }
  • Padrão: 414x896

Define o viewport padrão do iframe.

browser.locators ​

Opções para localizadores de navegador integrados.

browser.locators.testIdAttribute ​

  • Tipo: string
  • Padrão: data-testid

Define o atributo usado para encontrar elementos com o localizador getByTestId.

browser.screenshotDirectory ​

  • Tipo: string
  • Padrão: __screenshots__ no diretório do arquivo de teste

Define o caminho para o diretório de capturas de tela relativo à root.

browser.screenshotFailures ​

  • Tipo: boolean
  • Padrão: !browser.ui

Define se o Vitest deve tirar capturas de tela se o teste falhar.

browser.orchestratorScripts ​

  • Tipo: BrowserScript[]
  • Padrão: []

Scripts personalizados a serem injetados no HTML do orquestrador antes que os iframes de teste sejam iniciados. Este documento HTML apenas configura iframes e não carrega o seu código.

Os atributos src e content dos scripts serão processados pelos plugins do Vite. O script deve ser fornecido na seguinte forma:

ts
export interface BrowserScript {
  /**
   * Se "content" for fornecido e o tipo for "module", este será usado como seu identificador.
   *
   * Se você estiver usando TypeScript, você pode adicionar a extensão `.ts` aqui, por exemplo.
   * @default `injected-${index}.js`
   */
  id?: string;
  /**
   * Conteúdo JavaScript para ser injetado. Esta string será processada pelos plugins do Vite se o tipo for "module".
   *
   * Você pode usar `id` para fornecer ao Vite uma indicação sobre a extensão do arquivo.
   */
  content?: string;
  /**
   * Caminho para o script. Este valor é resolvido pelo Vite, então pode ser um módulo Node.js ou um caminho de arquivo.
   */
  src?: string;
  /**
   * Define se o script deve ser carregado assincronamente.
   */
  async?: boolean;
  /**
   * Tipo de script.
   * @default 'module'
   */
  type?: string;
}

browser.testerScripts ​

  • Tipo: BrowserScript[]
  • Padrão: []

DEPRECIADO

Esta API está depreciada e será removida no Vitest 4. Por favor, use o campo browser.testerHtmlPath em vez disso.

Scripts personalizados a serem injetados no HTML do testador antes que o ambiente de testes seja iniciado. É útil para injetar polyfills necessários para a implementação do navegador Vitest. Recomenda-se usar setupFiles em quase todos os casos, em seu lugar.

Os atributos src e content dos scripts serão processados pelos plugins do Vite.

browser.commands ​

  • Tipo: Record<string, BrowserCommand>
  • Padrão: { readFile, writeFile, ... }

Comandos personalizados a serem importados durante os testes de navegador de @vitest/browser/commands.

browser.connectTimeout ​

  • Tipo: number
  • Padrão: 60_000

Define o tempo limite em milissegundos. Se a conexão com o navegador levar mais tempo, os testes falharão.

INFO

Este é o tempo que o navegador leva para estabelecer a conexão WebSocket com o servidor Vitest. Em circunstâncias normais, este tempo limite não deveria ser atingido.

Pager
AnteriorModo Navegador
PróximoConfigurando o Playwright

Distribuído sob a Licença MIT.

Copyright (c) 2021-Present Vitest Team

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

Distribuído sob a Licença MIT.

Copyright (c) 2021-Present Vitest Team