Referenz für Browserkonfiguration
Sie können die Browserkonfiguration ändern, indem Sie das Feld test.browser in Ihrer Konfigurationsdatei aktualisieren. Ein Beispiel für eine einfache Konfigurationsdatei:
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
browser: {
enabled: true,
provider: 'playwright',
instances: [
{
browser: 'chromium',
setupFile: './chromium-setup.js',
},
],
},
},
});Bitte konsultieren Sie den Artikel "Konfigurationsreferenz" für verschiedene Konfigurationsbeispiele.
WARNING
Alle aufgeführten Optionen auf dieser Seite befinden sich innerhalb der test-Eigenschaft der Konfiguration:
export default defineConfig({
test: {
browser: {},
},
});browser.enabled
- Typ:
boolean - Standard:
false - CLI:
--browser,--browser.enabled=false
Führt standardmäßig alle Tests in der Browser-Umgebung aus. Beachten Sie, dass --browser nur funktioniert, wenn Sie mindestens einen Eintrag unter browser.instances definiert haben.
browser.instances
- Typ:
BrowserConfig - Standard:
[{ browser: name }]
Definiert mehrere Browser-Setups. Jede Konfiguration muss mindestens das Feld browser enthalten. Die Konfiguration unterstützt die Provider-Konfigurationen:
TIP
Um eine bessere Typsicherheit bei der Verwendung integrierter Provider zu gewährleisten, sollten Sie einen dieser Typen (für den von Ihnen verwendeten Provider) in Ihrer Konfigurationsdatei referenzieren:
/// <reference types="@vitest/browser/providers/playwright" />
/// <reference types="@vitest/browser/providers/webdriverio" />Zusätzlich können Sie auch die meisten der Projektoptionen (nicht mit einem *-Symbol gekennzeichnet) sowie einige der browser-Optionen wie browser.testerHtmlPath festlegen.
WARNING
Jede Browser-Konfiguration erbt Optionen von der Root-Konfiguration:
export default defineConfig({
test: {
setupFile: ['./root-setup-file.js'],
browser: {
enabled: true,
testerHtmlPath: './custom-path.html',
instances: [
{
// wird beide Setup-Dateien haben: "root" und "browser"
setupFile: ['./browser-setup-file.js'],
// erbt implizit "testerHtmlPath" aus der Root-Konfiguration
// testerHtmlPath: './custom-path.html',
},
],
},
},
})Während der Entwicklung unterstützt Vitest nur eine Konfiguration, die nicht im Headless-Modus läuft. Sie können das Headed-Projekt selbst einschränken, indem Sie headless: false in der Konfiguration angeben, das Flag --browser.headless=false verwenden oder Projekte mit dem Flag --project=chromium filtern.
Weitere Beispiele finden Sie im Leitfaden "Mehrere Setups".
Liste der verfügbaren browser-Optionen:
browser.headlessbrowser.locatorsbrowser.viewportbrowser.testerHtmlPathbrowser.screenshotDirectorybrowser.screenshotFailures
Standardmäßig erstellt Vitest ein Array mit einem einzelnen Element, das das Feld browser.name als Browser-Namen verwendet. Beachten Sie, dass dieses Verhalten ab Vitest 4 entfernt wird.
Im Hintergrund transformiert Vitest diese Instanzen in separate Testprojekte, die einen einzigen Vite-Server für eine bessere Caching-Leistung nutzen.
browser.name veraltet
- Typ:
string - CLI:
--browser=safari
VERALTET
Diese API ist veraltet und wird in Vitest 4 entfernt. Bitte verwenden Sie stattdessen die Option browser.instances.
Führt alle Tests in einem bestimmten Browser aus. Mögliche Optionen für verschiedene Provider:
webdriverio:firefox,chrome,edge,safariplaywright:firefox,webkit,chromium- benutzerdefiniert: beliebiger String, der an den Provider übergeben wird
browser.headless
- Typ:
boolean - Standard:
process.env.CI - CLI:
--browser.headless,--browser.headless=false
Startet den Browser im headless-Modus. Wenn Sie Vitest in CI ausführen, wird der Headless-Modus standardmäßig aktiviert.
browser.isolate
- Typ:
boolean - Standard:
true - CLI:
--browser.isolate,--browser.isolate=false
Führt jeden Test in einem eigenen Iframe aus.
browser.testerHtmlPath
- Typ:
string
Ein Pfad zum HTML-Einstiegspunkt. Kann relativ zum Root-Verzeichnis des Projekts sein. Diese Datei wird mit dem Hook transformIndexHtml verarbeitet.
browser.api
- Typ:
number | { port?, strictPort?, host? } - Standard:
63315 - CLI:
--browser.api=63315,--browser.api.port=1234, --browser.api.host=example.com
Konfiguriert Optionen für den Vite-Server, der Code im Browser ausliefert. Hat keinen Einfluss auf die Option test.api. Standardmäßig verwendet Vitest den Port 63315, um Konflikte mit dem Entwicklungsserver zu vermeiden, sodass Sie beide parallel ausführen können.
browser.provider
- Typ:
'webdriverio' | 'playwright' | 'preview' | string - Standard:
'preview' - CLI:
--browser.provider=playwright
Pfad zum Provider, der beim Ausführen von Browser-Tests verwendet wird. Vitest bietet drei Provider: preview (Standard), webdriverio und playwright. Benutzerdefinierte Provider müssen als default-Export bereitgestellt werden und diese Form haben:
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>;
}ERWEITERTE API
Die benutzerdefinierte Provider-API ist stark experimentell und kann sich mit Patches ändern. Wenn Sie Tests nur in einem Browser ausführen müssen, verwenden Sie stattdessen die Option browser.instances.
browser.providerOptions veraltet
- Typ:
BrowserProviderOptions
VERALTET
Diese API ist veraltet und wird in Vitest 4 entfernt. Bitte verwenden Sie stattdessen die Option browser.instances.
Optionen, die bei Aufruf von provider.initialize an den Provider übergeben werden.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
browser: {
providerOptions: {
launch: {
devtools: true,
},
},
},
},
});TIP
Um eine bessere Typsicherheit bei der Verwendung integrierter Provider zu gewährleisten, sollten Sie einen dieser Typen (für den von Ihnen verwendeten Provider) in Ihrer Konfigurationsdatei referenzieren:
/// <reference types="@vitest/browser/providers/playwright" />
/// <reference types="@vitest/browser/providers/webdriverio" />browser.ui
- Typ:
boolean - Standard:
!isCI - CLI:
--browser.ui=false
Soll die Vitest-Benutzeroberfläche in die Seite injiziert werden? Standardmäßig wird das UI-Iframe während der Entwicklung injiziert.
browser.viewport
- Typ:
{ width, height } - Standard:
414x896
Standard-Viewport für den Iframe.
browser.locators
Optionen für integrierte Browser-Locators.
browser.locators.testIdAttribute
- Typ:
string - Standard:
data-testid
Attribut zur Identifizierung von Elementen mit dem getByTestId-Locator.
browser.screenshotDirectory
- Typ:
string - Standard:
__screenshots__im Testdateiverzeichnis
Pfad zum Screenshot-Verzeichnis relativ zum Root-Verzeichnis.
browser.screenshotFailures
- Typ:
boolean - Standard:
!browser.ui
Soll Vitest bei Testfehlern Screenshots erstellen?
browser.orchestratorScripts
- Typ:
BrowserScript[] - Standard:
[]
Benutzerdefinierte Skripte, die vor der Initialisierung der Test-Iframes in das Orchestrator-HTML injiziert werden sollen. Dieses HTML-Dokument richtet nur Iframes ein und importiert Ihren Code nicht wirklich.
Die src- und content-Attribute des Skripts werden von Vite-Plugins verarbeitet. Das Skript sollte in der folgenden Form bereitgestellt werden:
export interface BrowserScript {
/**
* Wenn "content" bereitgestellt wird und der Typ "module" ist, ist dies seine Kennung.
*
* Wenn Sie TypeScript verwenden, können Sie hier beispielsweise die Erweiterung `.ts` hinzufügen.
* @default `injected-${index}.js`
*/
id?: string;
/**
* JavaScript-Inhalt, der injiziert werden soll. Dieser String wird von Vite-Plugins verarbeitet, wenn der Typ "module" ist.
*
* Sie können "id" verwenden, um Vite einen Hinweis auf die Dateierweiterung zu geben.
*/
content?: string;
/**
* Pfad zum Skript. Dieser Wert wird von Vite aufgelöst, sodass es sich um ein Node-Modul oder einen Dateipfad handeln kann.
*/
src?: string;
/**
* Ob das Skript asynchron geladen werden soll.
*/
async?: boolean;
/**
* Skripttyp.
* @default 'module'
*/
type?: string;
}browser.testerScripts
- Typ:
BrowserScript[] - Standard:
[]
VERALTET
Diese API ist veraltet und wird in Vitest 4 entfernt. Bitte verwenden Sie stattdessen das Feld browser.testerHtmlPath.
Benutzerdefinierte Skripte, die vor der Initialisierung der Testumgebung in das Tester-HTML injiziert werden sollen. Dies ist nützlich, um Polyfills zu injizieren, die für die Vitest-Browser-Implementierung erforderlich sind. Es wird empfohlen, in fast allen Fällen setupFiles stattdessen zu verwenden.
Die src- und content-Attribute des Skripts werden von Vite-Plugins verarbeitet.
browser.commands
- Typ:
Record<string, BrowserCommand> - Standard:
{ readFile, writeFile, ... }
Benutzerdefinierte Befehle, die während Browser-Tests von @vitest/browser/commands importiert werden können.
browser.connectTimeout
- Typ:
number - Standard:
60_000
Das Timeout in Millisekunden. Wenn die Verbindung zum Browser länger dauert, schlägt die Testsuite fehl.
INFO
Dies ist die Zeit, die der Browser benötigt, um die WebSocket-Verbindung mit dem Vitest-Server herzustellen. Unter normalen Umständen sollte dieses Timeout niemals erreicht werden.