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=chromium
export 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
firefox
Pokud 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
.