Több konfiguráció
A Vitest 3 megjelenése óta több különböző böngészőkonfigurációt is megadhat az új browser.instances
opcióval.
A browser.instances
használatának fő előnye a tesztprojektekkel szemben a gyorsítótárazás javulása. Minden projekt ugyanazt a Vite szervert fogja használni, ami azt jelenti, hogy a fájlátalakításnak és a függőségi előrecsomagolásnak csak egyszer kell megtörténnie.
Több böngésző
A browser.instances
mezőt használhatja különböző böngészőkhöz tartozó opciók megadására. Például, ha ugyanazokat a teszteket különböző böngészőkben szeretné futtatni, a minimális konfiguráció így néz ki:
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
browser: {
enabled: true,
provider: 'playwright',
headless: true,
instances: [
{ browser: 'chromium' },
{ browser: 'firefox' },
{ browser: 'webkit' },
],
},
},
});
Különböző beállítások
Különböző konfigurációs opciókat is megadhat, függetlenül a böngészőtől (bár a példányok is tartalmazhatnak browser
mezőket):
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);
});
Ebben a példában a Vitest az összes tesztet a chromium
böngészőben futtatja, de a './ratio-setup.ts'
fájlt csak az első példányban hajtja végre, és a provide
mezőtől függően különböző ratio
értéket injektál.
WARNING
Ne feledje, hogy egyedi name
értéket kell megadnia, ha ugyanazt a böngészőnevet használja, mert a Vitest egyébként a browser
nevet fogja projektneveként hozzárendelni.
Szűrés
A futtatandó projekteket a --project
kapcsoló segítségével szűrheti. A Vitest automatikusan a böngésző nevét rendeli hozzá projektnevéhez, ha az nincs manuálisan hozzárendelve. Ha a gyökérkonfigurációnak már van neve, a Vitest egyesíti a neveket: custom
-> custom (browser)
.
$ vitest --project=chromium
export default defineConfig({
test: {
browser: {
instances: [
// név: chromium
{ browser: 'chromium' },
// név: custom
{ browser: 'firefox', name: 'custom' },
]
}
}
})
export default defineConfig({
test: {
name: 'custom',
browser: {
instances: [
// név: custom (chromium)
{ browser: 'chromium' },
// név: manual
{ browser: 'firefox', name: 'manual' },
]
}
}
})
WARNING
A Vitest nem tud több olyan példányt futtatni, amelyek headless
módja false
értékre van állítva (az alapértelmezett viselkedés). Fejlesztés közben kiválaszthatja, melyik projektet szeretné futtatni a terminálban:
? 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
Ha több nem-headless projektje van a CI-ben (azaz a headless: false
manuálisan van beállítva a konfigurációban, és nincs felülírva a CI környezetben), a Vitest hibával fog leállni, és nem indít el semmilyen tesztet.
A tesztek headless módban való futtatásának lehetőségét ez nem befolyásolja. Továbbra is futtathatja az összes példányt párhuzamosan, amennyiben azok nem rendelkeznek headless: false
beállítással.