Více nastavení
Od Vitestu 3 můžete specifikovat několik různých nastavení prohlížeče pomocí nové možnosti browser.instances.
Hlavní výhoda použití browser.instances oproti testovacím projektům spočívá ve vylepšeném ukládání do mezipaměti. Každý projekt bude používat stejný Vite server, což znamená, že transformace souborů a předbalení závislostí se musí provést pouze jednou.
Několik prohlížečů
Pole browser.instances můžete použít k určení možností pro různé prohlížeče. Například, pokud chcete spustit stejné testy v různých prohlížečích, minimální konfigurace vypadá takto:
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
browser: {
enabled: true,
provider: 'playwright',
headless: true,
instances: [
{ browser: 'chromium' },
{ browser: 'firefox' },
{ browser: 'webkit' },
],
},
},
});Různá nastavení
Také můžete specifikovat různé možnosti konfigurace nezávisle na prohlížeči (ačkoliv, instance mohou mít rovněž pole browser):
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
browser: {
enabled: true,
provider: 'playwright',
headless: true,
instances: [
{
browser: 'chromium',
name: 'chromium-1',
setupFiles: ['./ratio-setup.ts'],
provide: {
ratio: 1,
},
},
{
browser: 'chromium',
name: 'chromium-2',
provide: {
ratio: 2,
},
},
],
},
},
});import { expect, inject, test } from 'vitest';
import { globalSetupModifier } from './example.js';
test('ratio works', () => {
expect(inject('ratio') * globalSetupModifier).toBe(14);
});V tomto příkladu Vitest spustí všechny testy v prohlížeči chromium, ale soubor './ratio-setup.ts' se spustí pouze v první konfiguraci a poskytne jinou hodnotu ratio v závislosti na poli provide.
WARNING
Pozor: Pokud používáte stejný název prohlížeče, musíte definovat vlastní hodnotu name, protože Vitest jinak přiřadí browser jako název projektu.
Filtrování
Můžete filtrovat, které projekty se mají spustit, pomocí příznaku --project. Vitest automaticky použije název prohlížeče jako název projektu, pokud není ručně přiřazen. Pokud má hlavní konfigurace již název, Vitest je sloučí: custom -> custom (browser).
$ vitest --project=chromiumexport default defineConfig({
test: {
browser: {
instances: [
// název: chromium
{ browser: 'chromium' },
// název: custom
{ browser: 'firefox', name: 'custom' },
]
}
}
})export default defineConfig({
test: {
name: 'custom',
browser: {
instances: [
// název: custom (chromium)
{ browser: 'chromium' },
// název: manual
{ browser: 'firefox', name: 'manual' },
]
}
}
})WARNING
Vitest nemůže spustit více instancí, které mají headless režim nastavený na false (výchozí chování). Během vývoje si můžete v terminálu vybrat projekt ke spuštění:
? Found multiple projects that run browser tests in headed mode: "chromium", "firefox".
Vitest cannot run multiple headed browsers at the same time. Select a single project
to run or cancel and run tests with "headless: true" option. Note that you can also
start tests with --browser=name or --project=name flag. › - Use arrow-keys. Return to submit.
❯ chromium
firefoxPokud máte v CI několik projektů s nastavením headless: false (tj. headless: false je ručně nastaveno v konfiguraci a není přepsáno v CI prostředí), Vitest selže a nespustí žádné testy.
Schopnost spouštět testy v headless režimu tímto není dotčena. Stále můžete spouštět všechny instance paralelně, pokud u nich není nastaveno headless: false.