Çoklu Kurulumlar
Vitest 3 ile birlikte, yeni browser.instances
seçeneğini kullanarak birden fazla tarayıcı kurulumu tanımlayabilirsiniz.
browser.instances
kullanmanın test projelerine kıyasla temel avantajı, geliştirilmiş önbellek yönetimidir. Her proje aynı Vite sunucusunu kullanır, bu da dosya dönüşümünün ve bağımlılık ön paketlemesinin yalnızca bir kez gerçekleşmesi gerektiği anlamına gelir.
Farklı Tarayıcılar
Farklı tarayıcılar için seçenekleri belirtmek üzere browser.instances
alanını kullanabilirsiniz. Örneğin, aynı testleri farklı tarayıcılarda çalıştırmak istiyorsanız, en basit yapılandırma şu şekilde olacaktır:
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
browser: {
enabled: true,
provider: 'playwright',
headless: true,
instances: [
{ browser: 'chromium' },
{ browser: 'firefox' },
{ browser: 'webkit' },
],
},
},
});
Farklı Kurulumlar
Tarayıcıdan bağımsız olarak farklı yapılandırma seçenekleri de belirtebilirsiniz (ancak, örnekler de browser
alanlarına sahip olabilir):
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('oran doğru çalışıyor', () => {
expect(inject('ratio') * globalSetupModifier).toBe(14);
});
Bu örnekte Vitest, tüm testleri chromium
tarayıcısında çalıştıracak, ancak './ratio-setup.ts'
dosyasını yalnızca ilk yapılandırmada yürütecek ve provide
alanına bağlı olarak farklı bir ratio
değeri enjekte edecektir.
WARNING
Aynı tarayıcı adını kullanıyorsanız özel bir name
değeri tanımlamanız gerektiğini unutmayın, aksi takdirde Vitest browser
'ı proje adı olarak atayacaktır.
Filtreleme
Hangi projelerin çalıştırılacağını --project
bayrağı ile filtreleyebilirsiniz. Vitest, manuel olarak atanmamışsa tarayıcı adını otomatik olarak proje adı olarak atayacaktır. Kök yapılandırmanın zaten bir adı varsa, Vitest bunları birleştirecektir: custom
-> custom (browser)
.
$ vitest --project=chromium
export default defineConfig({
test: {
browser: {
instances: [
// ad: chromium
{ browser: 'chromium' },
// ad: custom
{ browser: 'firefox', name: 'custom' },
]
}
}
})
export default defineConfig({
test: {
name: 'custom',
browser: {
instances: [
// ad: custom (chromium)
{ browser: 'chromium' },
// ad: manual
{ browser: 'firefox', name: 'manual' },
]
}
}
})
WARNING
Vitest, headless
modu false
olarak ayarlanmış (varsayılan davranış) birden fazla örneği aynı anda çalıştıramaz. Geliştirme sırasında, terminalinizde hangi projenin çalıştırılacağını seçebilirsiniz:
? 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
CI ortamında (yani, headless: false
yapılandırmada manuel olarak ayarlanmış ve CI ortamında geçersiz kılınmamışsa) birden fazla görsel arayüzlü projeniz varsa, Vitest çalıştırmayı başaramayacak ve hiçbir testi başlatmayacaktır.
Testleri başsız modda çalıştırma yeteneği bundan etkilenmez. Eğer headless: false
olarak ayarlanmamışlarsa, tüm örnekleri paralel olarak çalıştırabilirsiniz.