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:
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:
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:
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:
/// <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:
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.headlessbrowser.locatorsbrowser.viewportbrowser.testerHtmlPathbrowser.screenshotDirectorybrowser.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,safariplaywright: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:
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.
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:
/// <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:
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.