Skip to content
Vitest 1
Main Navigation KılavuzAPIYapılandırmaİleri
3.2.0
2.1.9
1.6.1
0.34.6

Türkçe

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
čeština
magyar

Türkçe

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
čeština
magyar

Görünüm

Sidebar Navigation

Vitest Yapılandırma Dosyasını Yönetme

Vitest'in Yapılandırılması

Bu sayfada

Vitest'in Yapılandırılması ​

Vitest yapılandırma dosyası oluşturmak için kılavuzu inceleyin. Devam etmeden önce Vitest yapılandırma çözümleme mekanizmasını anladığınızdan emin olun.

WARNING

Burada listelenen tüm seçenekler, yapılandırma dosyasındaki bir test özelliği içinde yer alır:

ts
export default defineConfig({
  test: {
    exclude: [],
  },
});

TIP

Aşağıdaki seçeneklere ek olarak, Vite'den herhangi bir yapılandırma seçeneğini de kullanabilirsiniz. Örneğin, global değişkenleri tanımlamak için define veya takma adları tanımlamak için resolve.alias kullanabilirsiniz.

Bir çalışma alanı proje yapılandırması içinde desteklenmeyen tüm yapılandırma seçeneklerinin yanında * işareti bulunur.

include ​

  • Tür: string[]
  • Varsayılan: ['**/*.{test,spec}.?(c|m)[jt]s?(x)']
  • CLI: vitest [...include], vitest **/*.test.js

Test dosyalarınızla eşleşen glob desenlerinin listesidir.

exclude ​

  • Tür: string[]
  • Varsayılan: ['**/node_modules/**', '**/dist/**', '**/cypress/**', '**/.{idea,git,cache,output,temp}/**', '**/{karma,rollup,webpack,vite,vitest,jest,ava,babel,nyc,cypress,tsup,build}.config.*']
  • CLI: vitest --exclude "**/excluded-file"

Test dosyalarınızdan hariç tutulacak glob desenlerinin listesidir.

WARNING

Bu seçenek, kapsamı etkilemez. Kapsam raporundan belirli dosyaları kaldırmanız gerekiyorsa, coverage.exclude kullanın.

Bu seçenek, bir CLI bayrağı ile belirtilirse yapılandırmanızı tamamen geçersiz kılmaz. --exclude bayrağı aracılığıyla eklenen tüm glob desenleri, yapılandırmanın exclude bölümüne eklenecektir.

includeSource ​

  • Tür: string[]
  • Varsayılan: []

Kaynak kodun içindeki test dosyalarını bulmak için glob desenlerini belirtin.

Tanımlandığında, Vitest import.meta.vitest içeren tüm eşleşen dosyaları çalıştırır.

server 0.34.0+ ​

  • Tür: { sourcemap?, deps?, ... }

Vite-Node sunucu seçenekleri.

server.sourcemap ​

  • Tür: 'inline' | boolean
  • Varsayılan: 'inline'

Modüllere satır içi kaynak haritaları ekler.

server.debug ​

  • Tür: { dumpModules?, loadDumppedModules? }

Vite-Node hata ayıklayıcı seçenekleri.

server.debug.dumpModules ​

  • Tür: boolean | string

Dönüştürülmüş modülleri dosya sistemine kaydeder. Bir dize geçirilirse, belirtilen yola kaydedecektir.

server.debug.loadDumppedModules ​

  • Tür: boolean

Eğer varsa, dışa aktarılmış modülleri dosya sisteminden okur. Dosya sisteminden döküm sonucunu değiştirerek hata ayıklamak için kullanışlıdır.

server.deps ​

  • Tür: { external?, inline?, ... }

Bağımlılık çözümleme ayarları.

server.deps.external ​

  • Tür: (string | RegExp)[]
  • Varsayılan: [/\/node_modules\//]

Dışsallaştırma, Vite'nin paketi doğrudan Node'a aktaracağı anlamına gelir. Dışsallaştırılmış bağımlılıklara Vite'nin dönüştürücüleri ve çözümleyicileri uygulanmayacaktır, bu nedenle yeniden yüklemede HMR'yi desteklemezler. Varsayılan olarak, node_modules içindeki tüm paketler dışsallaştırılır.

Bu seçenekler, paket adlarını node_modules dizininde veya deps.moduleDirectories içinde belirtildiği gibi kabul eder. Örneğin, packages/some-name içinde bulunan @company/some-name paketi some-name olarak belirtilmeli ve packages deps.moduleDirectories'e dahil edilmelidir. Temel olarak, Vitest her zaman gerçek paket adını değil, dosya yolunu kontrol eder.

Normal ifade kullanılırsa, Vitest bunu paket adı yerine dosya yolu üzerinde uygular.

server.deps.inline ​

  • Tür: (string | RegExp)[] | true
  • Varsayılan: []

Vite, satır içi modülleri işler. Bu, ESM formatında .js dosyaları içeren (Node'un işleyemediği) paketler için kullanışlıdır.

true ise, her bağımlılık satır içine alınacaktır. ssr.noExternal içinde belirtilen tüm bağımlılıklar varsayılan olarak satır içine alınacaktır.

server.deps.fallbackCJS ​

  • Tür boolean
  • Varsayılan: false

Bir bağımlılık geçerli bir ESM paketi olduğunda, yola göre CJS sürümünü tahmin etmeye çalışır. Bir bağımlılığın hatalı bir ESM dosyası sunması durumunda faydalı olabilir.

Bir paketin ESM ve CJS modunda farklı mantığı varsa bu potansiyel olarak bazı yanlış hizalamalara neden olabilir.

server.deps.cacheDir ​

  • Tür string
  • Varsayılan: 'node_modules/.vite'

Önbellek dosyalarının saklanacağı dizin.

deps ​

  • Tür: { optimizer?, ... }

Bağımlılık çözümleme ayarları.

deps.optimizer 0.34.0+ ​

  • Tür: { ssr?, web? }
  • Ayrıca bakınız: Bağımlılık Optimizasyon Seçenekleri

Bağımlılık optimizasyonunu etkinleştirir. Çok sayıda testiniz varsa bu performansı artırabilir. Vitest 0.34.0'dan önce, deps.experimentalOptimizer olarak adlandırılıyordu.

Vitest, include içinde listelenen harici bir kitaplıkla karşılaştığında, esbuild kullanarak tek bir dosyada paketlenecek ve bir bütün modül olarak içe aktarılacaktır. Bu yaklaşımın avantajları:

  • Çok sayıda içe aktarma içeren paketleri içe aktarmak maliyetlidir. Bunları tek bir dosyada paketleyerek çok zaman kazanabiliriz.
  • UI kitaplıklarının içe aktarılması maliyetlidir çünkü bunlar Node.js ortamında çalışmak üzere tasarlanmamıştır.
  • alias yapılandırmanız, paketlenmiş bağımlılıklar içinde de geçerli olacaktır.
  • Testlerinizdeki kod, tarayıcıda çalışmasına daha benzer bir ortamda çalışmasını sağlar.

Yalnızca deps.optimizer?.[mode].include seçeneğindeki paketlerin paketlendiğini unutmayın (bazı eklentiler bunu otomatik olarak doldurur, örneğin Svelte). Vite belgelerinde (Vitest disable ve noDiscovery seçeneklerini desteklemez) mevcut seçenekler hakkında daha fazla bilgi edinebilirsiniz. Varsayılan olarak, Vitest jsdom ve happy-dom ortamları için optimizer.web ve node ve edge ortamları için optimizer.ssr kullanır, ancak transformMode tarafından yapılandırılabilir.

Bu seçenekler ayrıca optimizeDeps yapılandırmanızı da devralır (web için Vitest optimizeDeps'i genişletecek, ssr için - ssr.optimizeDeps). deps.optimizer içinde include/exclude seçeneğini yeniden tanımlarsanız, testleri çalıştırırken optimizeDeps'inizi genişletecektir. Vitest, exclude içinde listelenmişlerse, aynı seçenekleri include'dan otomatik olarak kaldırır.

TIP

Kod cacheDir veya test.cache.dir dizininde saklandığından, hata ayıklama için node_modules kodunuzu düzenleyemezsiniz. console.log ifadeleriyle hata ayıklamak istiyorsanız, doğrudan düzenleyin veya deps.optimizer?.[mode].force seçeneğiyle yeniden paketlemeyi zorlayın.

deps.optimizer.{mode}.enabled ​

  • Tür: boolean
  • Varsayılan: Vitest 1.3.0'dan beri false

Bağımlılık optimizasyonunu etkinleştirir.

WARNING

Bu seçenek yalnızca Vite 4.3.2 ve sonraki sürümlerde çalışır.

deps.web 0.34.2+ ​

  • Tür: { transformAssets?, ... }

Dönüştürme modu web olarak ayarlandığında harici dosyalara uygulanan seçenekler. Varsayılan olarak, jsdom ve happy-dom web modunu kullanırken, node ve edge ortamları ssr dönüştürme modunu kullanır, bu nedenle bu seçeneklerin bu ortamlardaki dosyalar üzerinde hiçbir etkisi olmayacaktır.

Genellikle, node_modules içindeki dosyalar dışsallaştırılır, ancak bu seçenekler server.deps.external içindeki dosyaları da etkiler.

deps.web.transformAssets ​

  • Tür: boolean
  • Varsayılan: true

Vitest, .png, .svg, .jpg gibi varlık dosyalarını Vite'nin tarayıcıdaki gibi işler ve çözümler.

Sorgu belirtilmemişse, bu modül varlığın dosya yolunu varsayılan export olarak döndürür.

WARNING

Şu anda, bu seçenek yalnızca vmThreads ve vmForks havuzlarıyla çalışır.

deps.web.transformCss ​

  • Tür: boolean
  • Varsayılan: true

Vitest, .css, .scss, .sass gibi CSS dosyalarını Vite'nin tarayıcıdaki gibi işler ve çözümler.

CSS dosyaları css seçenekleriyle devre dışı bırakılırsa, bu seçenek yalnızca ERR_UNKNOWN_FILE_EXTENSION hatalarını susturacaktır.

WARNING

Şu anda, bu seçenek yalnızca vmThreads ve vmForks havuzlarıyla çalışır.

deps.web.transformGlobPattern ​

  • Tür: RegExp | RegExp[]
  • Varsayılan: []

Dönüştürülecek harici dosyaları eşleştirmek için kullanılacak regex deseni.

Varsayılan olarak, node_modules içindeki dosyalar dışsallaştırılır ve dönüştürülmez, CSS veya bir varlık olmadığı ve karşılık gelen seçenek devre dışı bırakılmadığı sürece.

WARNING

Şu anda, bu seçenek yalnızca vmThreads ve vmForks havuzlarıyla çalışır.

deps.interopDefault ​

  • Tür: boolean
  • Varsayılan: true

CJS modüllerinin default export'larını named export olarak yorumlar. Bazı bağımlılıklar yalnızca CJS modüllerini paketler ve bir paket require yerine import sözdizimi kullanılarak içe aktarıldığında Node.js'nin statik olarak analiz edebileceği adlandırılmış dışa aktarmaları kullanmaz. Node ortamında adlandırılmış dışa aktarmalar kullanarak bu tür bağımlılıkları içe aktarırken, şu hatayı göreceksiniz:

import { read } from 'fs-jetpack';
         ^^^^
SyntaxError: Named export 'read' not found. The requested module 'fs-jetpack' is a CommonJS module, which may not support all module.exports as named exports.
CommonJS modules can always be imported via the default export.

Vitest statik analiz yapmaz ve kodunuzu çalıştırmadan önce başarısız olamaz, bu nedenle bu özellik devre dışı bırakılırsa, testleri çalıştırırken büyük olasılıkla bu hatayı göreceksiniz:

TypeError: createAsyncThunk is not a function
TypeError: default is not a function

Varsayılan olarak, Vitest bunu atlamak için bir paketleyici kullandığınızı varsayar ve başarısız olmaz, ancak kodunuz işlenmezse bu davranışı manuel olarak devre dışı bırakabilirsiniz.

deps.moduleDirectories ​

  • Tür: string[]
  • Varsayılan: ['node_modules']

Modül dizini olarak kabul edilecek dizinlerin listesi. Bu ayar vi.mock davranışını etkiler: hiçbir fabrika sağlanmadığında ve taklit ettiğiniz şeyin yolu moduleDirectories değerlerinden biriyle eşleştiğinde, Vitest projenin kökünde bir __mocks__ klasörü arayarak taklidi çözmeye çalışacaktır.

Bu seçenek, bağımlılıkları dışsallaştırırken bir dosyanın modül olarak kabul edilip edilmeyeceğini de etkileyecektir. Varsayılan olarak Vitest, harici modülleri Vite'nin dönüştürme adımını atlayarak doğrudan Node.js ile içe aktarır.

Bu seçeneği ayarlamak varsayılanı geçersiz kılar. node_modules dizinini de aramak istiyorsanız, bu dizini diğer dizinlerle birlikte belirtmelisiniz:

ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    deps: {
      moduleDirectories: ['node_modules', path.resolve('../../packages')],
    },
  },
});

runner ​

  • Tür: VitestRunnerConstructor
  • Varsayılan: Testler çalıştırılırken node veya benchmarklar çalıştırılırken benchmark

Özel bir test çalıştırıcısının yolu. Bu gelişmiş bir özelliktir ve özel kitaplık çalıştırıcılarıyla kullanılmalıdır. Belgelerde bunun hakkında daha fazla bilgi edinebilirsiniz.

benchmark ​

  • Tür: { include?, exclude?, ... }

vitest bench çalıştırılırken kullanılan seçenekler.

benchmark.include ​

  • Tür: string[]
  • Varsayılan: ['**/*.{bench,benchmark}.?(c|m)[jt]s?(x)']

Benchmark test dosyaları için glob desenlerini belirtin.

benchmark.exclude ​

  • Tür: string[]
  • Varsayılan: ['node_modules', 'dist', '.idea', '.git', '.cache']

Benchmark test dosyaları için glob'ları hariç tutun.

benchmark.includeSource ​

  • Tür: string[]
  • Varsayılan: []

Kaynak içi benchmark test dosyaları için glob'ları dahil edin. Bu seçenek includeSource'a benzer.

Tanımlandığında, Vitest içinde import.meta.vitest bulunan tüm eşleşen dosyaları çalıştırır.

benchmark.reporters ​

  • Tür: Arrayable<BenchmarkBuiltinReporters | Reporter>
  • Varsayılan: 'default'

Çıktı için özel raporlayıcı. Bir veya daha fazla yerleşik rapor adı, muhabir örneği ve/veya özel muhabirlerin yollarını içerebilir.

benchmark.outputFile ​

  • Tür: string | Record<string, string>

--reporter=json seçeneği belirtildiğinde benchmark sonuçlarını dosyaya yazar. Bir dize yerine bir nesne sağlayarak, birden fazla muhabir kullanırken bireysel çıktıları tanımlayabilirsiniz.

CLI komutu aracılığıyla nesne sağlamak için aşağıdaki sözdizimini kullanın: --outputFile.json=./path --outputFile.junit=./other-path.

benchmark.outputJson 1.6.0+ ​

  • Tür: string | undefined
  • Varsayılan: undefined

Benchmark sonuçlarının saklanacağı dosya yolu, daha sonra --compare seçeneği için kullanılabilir.

Örneğin:

sh
# ana dalın sonucunu kaydedin
git checkout main
vitest bench --outputJson main.json

# bir dalı değiştirin ve ana dala karşı karşılaştırın
git checkout feature
vitest bench --compare main.json

benchmark.compare 1.6.0+ ​

  • Tür: string | undefined
  • Varsayılan: undefined

Mevcut çalıştırmalarla karşılaştırma yapmak için kullanılacak önceki benchmark sonuçlarının dosya yolu.

alias ​

  • Tür: Record<string, string> | Array<{ find: string | RegExp, replacement: string, customResolver?: ResolverFunction | ResolverObject }>

Testler sırasında kullanılacak özel alias'lar tanımlar. resolve.alias'tan takma adlarla birleştirileceklerdir.

WARNING

Vitest testleri çalıştırmak için Vite'nin SSR altyapısını kullanır, ancak bu bazı sınırlamalara sahiptir.

  1. Takma adlar yalnızca satır içine alınmış (varsayılan olarak tüm kaynak kodu satır içidir) bir modül tarafından doğrudan import ifadesiyle içe aktarılan modülleri etkiler.
  2. Vitest, require çağrılarını takma adlandırmayı desteklemez.
  3. Harici bir bağımlılığı takma adlandırıyorsanız (örneğin, react yerine preact kullanıyorsanız), bu değişikliğin haricileştirilmiş bağımlılıklar için de geçerli olması için doğrudan node_modules içindeki ilgili paketleri takma adlandırmanız gerekebilir. Hem Yarn hem de pnpm npm: öneki aracılığıyla takma adlandırmayı destekler.

globals ​

  • Tür: boolean
  • Varsayılan: false
  • CLI: --globals, --globals=false

Varsayılan olarak vitest netlik sağlamak için global API'leri sunmaz. Jest gibi API'leri global olarak kullanmayı tercih ederseniz, CLI'ye --globals seçeneğini geçirebilir veya yapılandırmada globals: true ekleyebilirsiniz.

ts
// vitest.config.ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    globals: true,
  },
});

TypeScript'te global API'leri kullanabilmek için, tsconfig.json dosyanızdaki types dizisine vitest/globals ekleyin.

json
// tsconfig.json
{
  "compilerOptions": {
    "types": ["vitest/globals"]
  }
}

Projenizde halihazırda unplugin-auto-import kullanıyorsanız, bu API'leri otomatik olarak içe aktarmak için doğrudan da kullanabilirsiniz.

ts
// vitest.config.ts
import { defineConfig } from 'vitest/config';
import AutoImport from 'unplugin-auto-import/vite';

export default defineConfig({
  plugins: [
    AutoImport({
      imports: ['vitest'],
      dts: true, // TypeScript bildirimi oluştur
    }),
  ],
});

environment ​

  • Tür: 'node' | 'jsdom' | 'happy-dom' | 'edge-runtime' | string
  • Varsayılan: 'node'
  • CLI: --environment=<env>

Testler için kullanılacak ortamı belirtir. Vitest'in varsayılan ortamı Node.js'dir. Bir web uygulaması geliştiriyorsanız, jsdom veya happy-dom kullanarak tarayıcı benzeri bir ortam kullanabilirsiniz. Edge fonksiyonları oluşturuyorsanız, edge-runtime ortamını kullanabilirsiniz.

Bir dosyadaki tüm testler için farklı bir ortam belirtmek için, dosyanın en üstüne bir @vitest-environment docblock'u veya yorumu ekleyebilirsiniz:

Docblock stili:

js
/**
 * @vitest-environment jsdom
 */

test('use jsdom in this test file', () => {
  const element = document.createElement('div');
  expect(element).not.toBeNull();
});

Yorum stili:

js
// @vitest-environment happy-dom

test('use happy-dom in this test file', () => {
  const element = document.createElement('div');
  expect(element).not.toBeNull();
});

Jest ile uyumluluk için @jest-environment da kullanılabilir:

js
/**
 * @jest-environment jsdom
 */

test('use jsdom in this test file', () => {
  const element = document.createElement('div');
  expect(element).not.toBeNull();
});

Vitest'i --isolate=false bayrağıyla çalıştırıyorsanız, testleriniz şu sırada çalıştırılır: node, jsdom, happy-dom, edge-runtime, custom environments (özel ortamlar). Bu, aynı ortama sahip testlerin gruplandırıldığı, ancak yine de sıralı olarak çalıştırıldığı anlamına gelir.

0.23.0 sürümünden itibaren, özel bir ortam da tanımlayabilirsiniz. Yerleşik olmayan bir ortam kullanıldığında, Vitest vitest-environment-${name} paketini yüklemeye çalışır. Bu paket, Environment tipinde bir nesne dışa aktarmalıdır:

ts
import type { Environment } from 'vitest';

export default <Environment>{
  name: 'custom',
  transformMode: 'ssr',
  setup() {
    // özel kurulum
    return {
      teardown() {
        // bu ortama sahip tüm testler çalıştırıldıktan sonra çağrılır
      },
    };
  },
};

Vitest, yalnızca genişletmek istemeniz durumunda vitest/environments girişi aracılığıyla builtinEnvironments'ı da sunar. Ortamları genişletme hakkında kılavuzumuzda daha fazla bilgi edinebilirsiniz.

TIP

Vitest 1.3.0'dan beri jsdom ortamı, mevcut JSDOM örneğine eşit olan jsdom global değişkenini sunar. TypeScript'in bunu tanımasını istiyorsanız, bu ortamı kullandığınızda tsconfig.json dosyanıza vitest/jsdom ekleyebilirsiniz:

json
{
  "compilerOptions": {
    "types": ["vitest/jsdom"]
  }
}

environmentOptions ​

  • Tür: Record<'jsdom' | string, unknown>
  • Varsayılan: {}

Bu seçenekler, mevcut environment öğesinin setup metoduna aktarılır. Varsayılan olarak, test ortamınız olarak kullanıyorsanız yalnızca JSDOM seçeneklerini yapılandırabilirsiniz.

environmentMatchGlobs ​

  • Tür: [string, EnvironmentName][]
  • Varsayılan: []

Glob'lara göre ortamı otomatik olarak atayın. İlk eşleşme kullanılacaktır.

Örneğin:

ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    environmentMatchGlobs: [
      // tests/dom içindeki tüm testler jsdom'da çalışacak
      ['tests/dom/**', 'jsdom'],
      // tests/ içindeki .edge.test.ts ile biten tüm testler edge-runtime'da çalışacak
      ['**/*.edge.test.ts', 'edge-runtime'],
      // ...
    ],
  },
});

poolMatchGlobs 0.29.4+ ​

  • Tür: [string, 'threads' | 'forks' | 'vmThreads' | 'vmForks' | 'typescript'][]
  • Varsayılan: []

Testlerin hangi havuzda çalışacağını glob'lara göre otomatik olarak atayın. İlk eşleşme kullanılacaktır.

Örneğin:

ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    poolMatchGlobs: [
      // "worker-specific" dizinindeki tüm testler, onlar için `--pool=threads`'i etkinleştirmişsiniz gibi bir worker içinde çalışacak
      ['**/tests/worker-specific/**', 'threads'],
      // "browser" dizinindeki tüm testleri gerçek bir tarayıcıda çalıştır
      ['**/tests/browser/**', 'browser'],
      // diğer tüm testler, başka glob'lar belirtmediyseniz "browser.enabled" ve "threads" seçeneklerine göre çalışacak
      // ...
    ],
  },
});

update* ​

  • Tür: boolean
  • Varsayılan: false
  • CLI: -u, --update, --update=false

Snapshot dosyalarını güncelleyin. Bu, tüm değiştirilen snapshot'ları güncelleyecek ve eskiyenleri silecektir.

watch* ​

  • Tür: boolean
  • Varsayılan: !process.env.CI
  • CLI: -w, --watch, --watch=false

İzleme modunu etkinleştirin.

root ​

  • Tür: string
  • CLI: -r <path>, --root=<path>

Proje kökü.

reporters* ​

  • Tür: Reporter | Reporter[]
  • Varsayılan: 'default'
  • CLI: --reporter=<name>, --reporter=<name1> --reporter=<name2>

Çıktı için özel raporlayıcılar. Raporlayıcılar bir Reporter örneği, yerleşik raporlayıcıları seçmek için bir dize veya özel bir uygulamaya giden bir yol olabilir (örneğin, './path/to/reporter.ts', '@scope/reporter').

outputFile* ​

  • Tür: string | Record<string, string>
  • CLI: --outputFile=<path>, --outputFile.json=./path

--reporter=json, --reporter=html veya --reporter=junit seçeneği de belirtildiğinde test sonuçlarını bir dosyaya yazın. Bir dize yerine bir nesne sağlayarak, birden çok raporlayıcı kullanırken ayrı ayrı çıktıları tanımlayabilirsiniz.

pool* 1.0.0+ ​

  • Tür: 'threads' | 'forks' | 'vmThreads' | 'vmForks'
  • Varsayılan: 'threads'
  • CLI: --pool=threads

Testleri çalıştırmak için kullanılan havuz.

threads* ​

tinypool ( Piscina'nın hafif bir fork'u) kullanarak çoklu iş parçacığını etkinleştirin. İş parçacıkları kullanırken process.chdir() gibi işlemle ilgili API'leri kullanamazsınız. Prisma, bcrypt ve canvas gibi yerel dillerde yazılmış bazı kitaplıklar, birden çok iş parçacığında çalışırken sorun yaşar ve segfault'lara neden olur. Bu durumlarda, bunun yerine forks havuzunu kullanmanız önerilir.

forks* ​

threads havuzuna benzer, ancak tinypool aracılığıyla worker_threads yerine child_process kullanır. Testler ve ana işlem arasındaki iletişim, threads havuzu kadar hızlı değildir. process.chdir() gibi işlemle ilgili API'ler forks havuzunda kullanılabilir.

vmThreads* ​

Testleri bir threads havuzunda VM context (korumalı bir ortam içinde) kullanarak çalıştırın.

Bu, testlerin daha hızlı çalışmasını sağlar, ancak ESM kodu çalıştırılırken VM modülü kararsızdır. Testleriniz bellek sızıntısı yapacaktır - bunu önlemek için poolOptions.vmThreads.memoryLimit değerini manuel olarak düzenlemeyi düşünün.

WARNING

Korumalı alanda kod çalıştırmanın bazı avantajları (daha hızlı testler) vardır, ancak aynı zamanda bir dizi dezavantajı da vardır.

  • (fs, path vb.) gibi yerel modüller içindeki global değişkenler, test ortamınızda bulunan global değişkenlerden farklıdır. Sonuç olarak, bu yerel modüller tarafından atılan herhangi bir hata, kodunuzda kullanılanla karşılaştırıldığında farklı bir Hata oluşturucusuna başvuracaktır:
ts
try {
  fs.writeFileSync('/doesnt exist');
} catch (err) {
  console.log(err instanceof Error); // false
}
  • ES modüllerini içe aktarmak, bunları süresiz olarak önbelleğe alır ve bu da çok sayıda bağlamınız (test dosyalarınız) varsa bellek sızıntılarına neden olur. Node.js'de bu önbelleği temizleyen bir API yoktur.
  • Korumalı bir ortamda global değişkenlere erişmek daha uzun sürer.

Lütfen bu seçeneği kullanırken bu sorunların farkında olun. Vitest ekibi, tarafımızdaki sorunlardan herhangi birini çözemez.

vmForks* ​

vmThreads havuzuna benzer, ancak tinypool aracılığıyla worker_threads yerine child_process kullanır. Testler ve ana işlem arasındaki iletişim, vmThreads havuzu kadar hızlı değildir. process.chdir() gibi işlemle ilgili API'ler vmForks havuzunda kullanılabilir. Lütfen bu havuzun vmThreads'de listelenen aynı tuzaklara sahip olduğunun farkında olun.

poolOptions* 1.0.0+ ​

  • Tür: Record<'threads' | 'forks' | 'vmThreads' | 'vmForks', {}>
  • Varsayılan: {}

poolOptions.threads ​

threads havuzu için seçenekler.

ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    poolOptions: {
      threads: {
        // İş parçacıklarıyla ilgili seçenekler burada
      },
    },
  },
});
poolOptions.threads.maxThreads* ​
  • Tür: number
  • Varsayılan: kullanılabilir CPU'lar

Maksimum iş parçacığı sayısı. VITEST_MAX_THREADS ortam değişkenini de kullanabilirsiniz.

poolOptions.threads.minThreads* ​
  • Tür: number
  • Varsayılan: kullanılabilir CPU'lar

Minimum iş parçacığı sayısı. VITEST_MIN_THREADS ortam değişkenini de kullanabilirsiniz.

poolOptions.threads.singleThread ​
  • Tür: boolean
  • Varsayılan: false

Aynı ortama sahip tüm testleri tek bir worker iş parçacığı içinde çalıştırın. Bu, yerleşik modül yalıtımını devre dışı bırakır (kaynak kodunuz veya satır içi kodunuz her test için yeniden değerlendirilecektir), ancak test performansını artırabilir.

WARNING

Bu seçenek testlerin birbiri ardına çalışmasını zorlasa bile, bu seçenek Jest'in --runInBand seçeneğinden farklıdır. Vitest, worker'ları yalnızca testleri paralel olarak çalıştırmak için değil, aynı zamanda yalıtım sağlamak için de kullanır. Bu seçeneği devre dışı bırakarak, testleriniz sıralı olarak, ancak aynı global bağlamda çalışacaktır, bu nedenle yalıtımı kendiniz sağlamanız gerekir.

Global duruma (ön uç çerçeveleri genellikle yapar) güveniyorsanız veya kodunuzun her test için ayrı olarak tanımlanmış bir ortama güveniyorsa, bu her türlü soruna neden olabilir. Ancak global duruma mutlaka güvenmeyen veya bunu kolayca atlatabilen testleriniz için bir hız artışı olabilir (3 kata kadar daha hızlı).

poolOptions.threads.useAtomics* ​
  • Tür: boolean
  • Varsayılan: false

İş parçacıklarını senkronize etmek için Atomics kullanın.

Bu, bazı durumlarda performansı artırabilir, ancak eski Node sürümlerinde segfault'a neden olabilir.

poolOptions.threads.isolate ​
  • Tür: boolean
  • Varsayılan: true

Her test dosyası için ortamı yalıtın.

poolOptions.threads.execArgv* ​
  • Tür: string[]
  • Varsayılan: []

İş parçacıklarındaki node'a ek argümanlar geçirin. Daha fazla bilgi için Command-line API | Node.js adresine bakın.

WARNING

Kullanırken dikkatli olun, çünkü bazı seçenekler worker'ın çökmesine neden olabilir, örneğin --prof, --title. Bkz. https://github.com/nodejs/node/issues/41103.

poolOptions.forks ​

forks havuzu için seçenekler.

ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    poolOptions: {
      forks: {
        // Forks ile ilgili seçenekler burada
      },
    },
  },
});
poolOptions.forks.maxForks* ​
  • Tür: number
  • Varsayılan: kullanılabilir CPU'lar

Maksimum fork sayısı.

poolOptions.forks.minForks* ​
  • Tür: number
  • Varsayılan: kullanılabilir CPU'lar

Minimum fork sayısı.

poolOptions.forks.isolate ​
  • Tür: boolean
  • Varsayılan: true

Her test dosyası için ortamı yalıtın.

poolOptions.forks.singleFork ​
  • Tür: boolean
  • Varsayılan: false

Aynı ortama sahip tüm testleri tek bir alt işlem içinde çalıştırın. Bu, yerleşik modül yalıtımını devre dışı bırakır (kaynak kodunuz veya satır içi kodunuz her test için yeniden değerlendirilecektir), ancak test performansını artırabilir.

WARNING

Bu seçenek testlerin birbiri ardına çalışmasını zorlasa bile, bu seçenek Jest'in --runInBand seçeneğinden farklıdır. Vitest, worker'ları yalnızca testleri paralel olarak çalıştırmak için değil, aynı zamanda yalıtım sağlamak için de kullanır. Bu seçeneği devre dışı bırakarak, testleriniz sıralı olarak, ancak aynı global bağlamda çalışacaktır, bu nedenle yalıtımı kendiniz sağlamanız gerekir.

Global duruma (ön uç çerçeveleri genellikle yapar) güveniyorsanız veya kodunuzun her test için ayrı olarak tanımlanmış bir ortama güveniyorsanız, bu her türlü soruna neden olabilir. Ancak global duruma mutlaka güvenmeyen veya bunu kolayca atlatabilen testleriniz için bir hız artışı olabilir (3 kata kadar daha hızlı).

poolOptions.forks.execArgv* ​
  • Tür: string[]
  • Varsayılan: []

Alt işlemlerdeki node işlemine ek argümanlar geçirin. Daha fazla bilgi için Command-line API | Node.js adresine bakın.

WARNING

Kullanırken dikkatli olun, çünkü bazı seçenekler worker'ın çökmesine neden olabilir, örneğin --prof, --title. Bkz. https://github.com/nodejs/node/issues/41103.

poolOptions.vmThreads ​

vmThreads havuzu için seçenekler.

ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    poolOptions: {
      vmThreads: {
        // VM iş parçacıklarıyla ilgili seçenekler burada
      },
    },
  },
});
poolOptions.vmThreads.maxThreads* ​
  • Tür: number
  • Varsayılan: kullanılabilir CPU'lar

Maksimum iş parçacığı sayısı. VITEST_MAX_THREADS ortam değişkenini de kullanabilirsiniz.

poolOptions.vmThreads.minThreads* ​
  • Tür: number
  • Varsayılan: kullanılabilir CPU'lar

Minimum iş parçacığı sayısı. VITEST_MIN_THREADS ortam değişkenini de kullanabilirsiniz.

poolOptions.vmThreads.memoryLimit* ​
  • Tür: string | number
  • Varsayılan: 1 / CPU Çekirdekleri

Worker'lar geri dönüştürülmeden önce bellek sınırını belirtir. Bu değer büyük ölçüde ortamınıza bağlıdır, bu nedenle varsayılana güvenmek yerine manuel olarak belirtmek daha iyidir.

TIP

Uygulama, Jest'in workerIdleMemoryLimit öğesine dayanmaktadır.

Sınır farklı şekillerde belirtilebilir ve sonuç ne olursa olsun, bir tamsayı değerine dönüştürmek için Math.floor kullanılır:

  • <= 1 - Değerin sistem belleğinin bir yüzdesi olduğu varsayılır. Bu nedenle 0,5, worker'ın bellek sınırını toplam sistem belleğinin yarısına ayarlar

  • \> 1 - Sabit bir bayt değeri olduğu varsayılır. Önceki kural nedeniyle, 1 baytlık bir değer istiyorsanız (nedenini bilmiyorum) 1,1 kullanabilirsiniz.

  • Birimlerle

    • %50 - Yukarıdaki gibi, toplam sistem belleğinin bir yüzdesi

    • 100KB, 65MB vb. - Sabit bir bellek sınırını belirtmek için birimlerle.

      • K / KB - Kilobayt (x1000)
      • KiB - Kibibayt (x1024)
      • M / MB - Megabayt
      • MiB - Mebibayt
      • G / GB - Gigabayt
      • GiB - Gibibayt

WARNING

Yüzde tabanlı bellek sınırı, yanlış sistem belleği raporlandığı için Linux CircleCI worker'larında çalışmaz.

poolOptions.vmThreads.useAtomics* ​
  • Tür: boolean
  • Varsayılan: false

İş parçacıklarını senkronize etmek için Atomics kullanın.

Bu, bazı durumlarda performansı artırabilir, ancak eski Node sürümlerinde segfault'a neden olabilir.

poolOptions.vmThreads.execArgv* ​
  • Tür: string[]
  • Varsayılan: []

VM bağlamındaki node işlemine ek argümanlar geçirin. Daha fazla bilgi için Command-line API | Node.js adresine bakın.

WARNING

Kullanırken dikkatli olun, çünkü bazı seçenekler worker'ın çökmesine neden olabilir, örneğin --prof, --title. Bkz. https://github.com/nodejs/node/issues/41103.

poolOptions.vmForks ​

vmForks havuzu için seçenekler.

ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    poolOptions: {
      vmForks: {
        // VM forks ile ilgili seçenekler burada
      },
    },
  },
});
poolOptions.vmForks.maxForks* ​
  • Tür: number
  • Varsayılan: kullanılabilir CPU'lar

Maksimum iş parçacığı sayısı. VITEST_MAX_FORKS ortam değişkenini de kullanabilirsiniz.

poolOptions.vmForks.minForks* ​
  • Tür: number
  • Varsayılan: kullanılabilir CPU'lar

Minimum iş parçacığı sayısı. VITEST_MIN_FORKS ortam değişkenini de kullanabilirsiniz.

poolOptions.vmForks.memoryLimit* ​
  • Tür: string | number
  • Varsayılan: 1 / CPU Çekirdekleri

Worker'lar geri dönüştürülmeden önce bellek sınırını belirtir. Bu değer büyük ölçüde ortamınıza bağlıdır, bu nedenle varsayılana güvenmek yerine manuel olarak belirtmek daha iyidir. Değerin nasıl hesaplandığı poolOptions.vmThreads.memoryLimit içinde açıklanmıştır.

poolOptions.vmForks.execArgv* ​
  • Tür: string[]
  • Varsayılan: []

VM bağlamındaki node işlemine ek argümanlar geçirin. Daha fazla bilgi için Command-line API | Node.js adresine bakın.

WARNING

Kullanırken dikkatli olun, çünkü bazı seçenekler worker'ın çökmesine neden olabilir, örneğin --prof, --title. Bkz. https://github.com/nodejs/node/issues/41103.

fileParallelism 1.1.0+ ​

  • Tür: boolean
  • Varsayılan: true
  • CLI: --no-file-parallelism, --fileParallelism=false

Tüm test dosyaları paralel olarak mı çalıştırılmalı? Bu değeri false olarak ayarlamak, maxWorkers ve minWorkers seçeneklerini 1 olarak ayarlar.

TIP

Bu seçenek, aynı dosya içindeki testlerin paralel çalışmasını etkilemez. Bunları paralel çalıştırmak için describe üzerinde concurrent seçeneğini kullanın veya bir yapılandırma aracılığıyla ayarlayın.

maxWorkers 1.1.0+ ​

  • Tür: number

Testlerin çalıştırılmasında kullanılacak maksimum çalışan sayısı. poolOptions.{threads,vmThreads}.maxThreads/poolOptions.forks.maxForks seçenekleri daha yüksek önceliğe sahiptir.

minWorkers 1.1.0+ ​

  • Tür: number

Testlerin çalıştırılacağı minimum çalışan sayısı. poolOptions.{threads,vmThreads}.minThreads/poolOptions.forks.minForks seçenekleri daha yüksek önceliğe sahiptir.

testTimeout ​

  • Tür: number
  • Varsayılan: 5000
  • CLI: --test-timeout=5000, --testTimeout=5000

Bir test için varsayılan zaman aşımı süresi (milisaniye).

hookTimeout ​

  • Tür: number
  • Varsayılan: 10000
  • CLI: --hook-timeout=10000, --hookTimeout=10000

Bir hook için varsayılan zaman aşımı süresi (milisaniye).

teardownTimeout* ​

  • Tür: number
  • Varsayılan: 10000
  • CLI: --teardown-timeout=5000, --teardownTimeout=5000

Vitest kapanırken tamamlanması için beklenecek varsayılan zaman aşımı süresi (milisaniye).

silent* ​

  • Tür: boolean
  • Varsayılan: false
  • CLI: --silent, --silent=false

Testlerin konsol çıktılarını sessiz modda çalıştırma.

setupFiles ​

  • Tür: string | string[]

Kurulum dosyalarının yolları. Her test dosyasından önce çalıştırılır.

INFO

Kurulum dosyalarını değiştirmek, tüm testlerin yeniden çalıştırılmasına neden olur.

İş parçacıkları arasında ayrım yapmak için process.env.VITEST_POOL_ID (sayısal dize) kullanabilirsiniz.

TIP

--isolate=false kullanıyorsanız, bu kurulum dosyasının aynı global kapsamda birden çok kez çalıştırılacağını unutmayın. Bu, her testten önce aynı global nesneye eriştiğiniz anlamına gelir, bu nedenle gereksiz yere aynı işlemi tekrar yapmadığınızdan emin olun.

Örneğin, global bir değişken kullanabilirsiniz:

ts
import { config } from '@some-testing-lib';

if (!globalThis.defined) {
  config.plugins = [myCoolPlugin];
  computeHeavyThing();
  globalThis.defined = true;
}

// hooks are reset before each suite
afterEach(() => {
  cleanup();
});

globalThis.resetBeforeEachTest = true;

globalSetup ​

  • Tür: string | string[]

Proje köküne göre global kurulum dosyalarının yolu.

Global bir kurulum dosyası, setup ve teardown adında fonksiyonlar veya bir temizleme (teardown) fonksiyonu döndüren bir default fonksiyonu dışa aktarabilir (örnek).

INFO

Birden çok globalSetup dosyası kullanılabilir. Setup ve teardown fonksiyonları, teardown fonksiyonları ters sırada olacak şekilde sıralı olarak çalıştırılır.

WARNING

Vitest 1.0.0-beta'dan itibaren, global kurulum yalnızca en az bir çalışan test varsa çalışır. Bu, bir test dosyası değiştirildikten sonra (test dosyası çalışmadan önce global kurulumun bitmesini bekleyecektir) izleme modunda global kurulumun çalışmaya başlayabileceği anlamına gelir.

Global kurulumun farklı bir global kapsamda çalıştığına dikkat edin, bu nedenle testleriniz burada tanımlanan değişkenlere doğrudan erişemez. Ancak 1.0.0 sürümünden itibaren, provide metodu ile serileştirilebilir verileri testlere aktarabilirsiniz.

js
export default function setup({ provide }) {
  provide('wsPort', 3000);
}
ts
import type { GlobalSetupContext } from 'vitest/node';

export default function setup({ provide }: GlobalSetupContext) {
  provide('wsPort', 3000);
}

// You can also extend `ProvidedContext` type
// to have type safe access to `provide/inject` methods:
declare module 'vitest' {
  export interface ProvidedContext {
    wsPort: number;
  }
}
ts
import { inject } from 'vitest';

inject('wsPort') === 3000;

watchExclude* ​

  • Tür: string[]
  • Varsayılan: ['**/node_modules/**', '**/dist/**']
  • Kullanımdan kaldırıldı: server.watch.ignored kullanın

İzleme döngüsünü tetiklememesi için hariç tutulacak dosya yollarının glob deseni.

forceRerunTriggers* ​

  • Tür: string[]
  • Varsayılan: ['**/package.json/**', '**/vitest.config.*/**', '**/vite.config.*/**']

Tüm test grubunun (suite) yeniden çalıştırılmasını tetikleyecek dosya yollarının glob deseni. --changed argümanıyla eşleştirildiğinde, tetikleyici git diff'inde bulunursa tüm test suite'ini çalıştırır.

Vite bir modül grafiği oluşturamadığı için CLI komutlarını çağırmayı test ediyorsanız kullanışlıdır:

ts
test('execute a script', async () => {
  // Vitest cannot rerun this test, if content of `dist/index.js` changes
  await execa('node', ['dist/index.js']);
});

TIP

Dosyalarınızın watchExclude tarafından hariç tutulmadığından emin olun.

coverage* ​

Kod kapsamı analizi için v8, istanbul veya özel bir kapsam sağlayıcısı kullanabilirsiniz.

Nokta gösterimi ile CLI'ya kapsam seçenekleri sağlayabilirsiniz:

sh
npx vitest --coverage.enabled --coverage.provider=istanbul --coverage.all

WARNING

Nokta gösterimiyle kapsam seçenekleri kullanıyorsanız, --coverage.enabled belirtmeyi unutmayın. Bu durumda tek bir --coverage seçeneği sağlamayın.

coverage.provider ​

  • Tür: 'v8' | 'istanbul' | 'custom'
  • Varsayılan: 'v8'
  • CLI: --coverage.provider=<provider>

Kapsam toplama için kullanılacak aracı seçmek için provider kullanın.

coverage.enabled ​

  • Tür: boolean
  • Varsayılan: false
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'
  • CLI: --coverage.enabled, --coverage.enabled=false

Kapsam analizini etkinleştirir. --coverage CLI seçeneği kullanılarak geçersiz kılınabilir.

coverage.include ​

  • Tür: string[]
  • Varsayılan: ['**']
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'
  • CLI: --coverage.include=<path>, --coverage.include=<path1> --coverage.include=<path2>

Kapsam analizine dahil edilecek dosyaların glob desenleri listesi.

coverage.extension ​

  • Tür: string | string[]
  • Varsayılan: ['.js', '.cjs', '.mjs', '.ts', '.mts', '.cts', '.tsx', '.jsx', '.vue', '.svelte', '.marko']
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'
  • CLI: --coverage.extension=<extension>, --coverage.extension=<extension1> --coverage.extension=<extension2>

coverage.exclude ​

  • Tür: string[]
  • Varsayılan:
js
[
  'coverage/**',
  'dist/**',
  '**/[.]**',
  'packages/*/test?(s)/**',
  '**/*.d.ts',
  '**/virtual:*',
  '**/__x00__*',
  '**/\x00*',
  'cypress/**',
  'test?(s)/**',
  'test?(-*).?(c|m)[jt]s?(x)',
  '**/*{.,-}{test,spec}?(-d).?(c|m)[jt]s?(x)',
  '**/__tests__/**',
  '**/{karma,rollup,webpack,vite,vitest,jest,ava,babel,nyc,cypress,tsup,build}.config.*',
  '**/vitest.{workspace,projects}.[jt]s?(on)',
  '**/.{eslint,mocha,prettier}rc.{?(c|m)js,yml}',
];
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'
  • CLI: --coverage.exclude=<path>, --coverage.exclude=<path1> --coverage.exclude=<path2>

Kapsam analizinden hariç tutulacak dosyaların glob desenleri listesi.

Bu seçenek tüm varsayılan seçenekleri geçersiz kılar. Yoksayılacak yeni desenler eklerken varsayılan seçenekleri genişletin:

ts
import { coverageConfigDefaults, defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    coverage: {
      exclude: ['**/custom-pattern/**', ...coverageConfigDefaults.exclude],
    },
  },
});

coverage.all ​

  • Tür: boolean
  • Varsayılan: true (Vitest 1.0.0'dan beri)
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'
  • CLI: --coverage.all, --coverage.all=false

Test edilmemiş dosyalar da dahil olmak üzere tüm dosyaların rapora dahil edilip edilmeyeceği.

coverage.clean ​

  • Tür: boolean
  • Varsayılan: true
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'
  • CLI: --coverage.clean, --coverage.clean=false

Testler çalıştırılmadan önce kapsam sonuçlarını temizle.

coverage.cleanOnRerun ​

  • Tür: boolean
  • Varsayılan: true
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'
  • CLI: --coverage.cleanOnRerun, --coverage.cleanOnRerun=false

İzleme döngüsünde kapsam raporunu temizle.

coverage.reportsDirectory ​

  • Tür: string
  • Varsayılan: './coverage'
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'
  • CLI: --coverage.reportsDirectory=<path>

WARNING

coverage.clean etkinse (varsayılan değer), Vitest testleri çalıştırmadan önce bu dizini silecektir.

Kapsam raporunun yazılacağı dizin.

HTML reporter çıktısında kapsam raporunu önizlemek için, bu seçeneğin html rapor dizininin bir alt dizini olarak ayarlanması gerekir (örneğin ./html/coverage).

coverage.reporter ​

  • Tür: string | string[] | [string, {}][]
  • Varsayılan: ['text', 'html', 'clover', 'json']
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'
  • CLI: --coverage.reporter=<reporter>, --coverage.reporter=<reporter1> --coverage.reporter=<reporter2>

Kullanılacak kapsam raporlayıcıları. Tüm raporlayıcıların ayrıntılı listesi için istanbul belgelerine bakın. Muhabire özgü seçenekler hakkında ayrıntılar için @types/istanbul-reporter adresine bakın.

Muhabirin üç farklı türü vardır:

  • Tek bir muhabir: { reporter: 'html' }
  • Seçeneksiz birden çok muhabir: { reporter: ['html', 'json'] }
  • Muhabir seçenekleriyle tek veya birden çok muhabir:
    ts
    {
      reporter: [
        ['lcov', { projectRoot: './src' }],
        ['json', { file: 'coverage.json' }],
        ['text'],
      ];
    }

Vitest 1.2.0'dan beri, özel kapsam muhabirlerini de geçirebilirsiniz. Daha fazla bilgi için Rehber - Özel Kapsam Muhabiri bölümüne bakın.

ts
{
  reporter: [
    // Specify reporter using name of the NPM package
    '@vitest/custom-coverage-reporter',
    ['@vitest/custom-coverage-reporter', { someOption: true }],

    // Specify reporter using local path
    '/absolute/path/to/custom-reporter.cjs',
    ['/absolute/path/to/custom-reporter.cjs', { someOption: true }],
  ];
}

Vitest 0.31.0'dan beri, kapsam raporunuzu Vitest UI'da kontrol edebilirsiniz: daha fazla ayrıntı için Vitest UI Kapsamı bölümüne bakın.

coverage.reportOnFailure 0.31.2+ ​

  • Tür: boolean
  • Varsayılan: false (Vitest 0.34.0'dan beri)
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'
  • CLI: --coverage.reportOnFailure, --coverage.reportOnFailure=false

Testler başarısız olsa bile kapsam raporu oluştur.

coverage.allowExternal ​

  • Tür: boolean
  • Varsayılan: false
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'
  • CLI: --coverage.allowExternal, --coverage.allowExternal=false

Proje root dizini dışındaki dosyaların kapsamını dahil et.

coverage.skipFull ​

  • Tür: boolean
  • Varsayılan: false
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'
  • CLI: --coverage.skipFull, --coverage.skipFull=false

%100 ifade, dal ve fonksiyon kapsamına sahip dosyaları gösterme.

coverage.thresholds ​

Kapsam eşikleri için seçenekler.

coverage.thresholds.lines ​
  • Tür: number
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'
  • CLI: --coverage.thresholds.lines=<number>

Satırlar için genel eşik. Daha fazla bilgi için istanbul belgelerine bakın.

coverage.thresholds.functions ​
  • Tür: number
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'
  • CLI: --coverage.thresholds.functions=<number>

Fonksiyonlar için genel eşik. Daha fazla bilgi için istanbul belgelerine bakın.

coverage.thresholds.branches ​
  • Tür: number
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'
  • CLI: --coverage.thresholds.branches=<number>

Dallar için genel eşik. Daha fazla bilgi için istanbul belgelerine bakın.

coverage.thresholds.statements ​
  • Tür: number
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'
  • CLI: --coverage.thresholds.statements=<number>

İfadeler için genel eşik. Daha fazla bilgi için istanbul belgelerine bakın.

coverage.thresholds.perFile ​
  • Tür: boolean
  • Varsayılan: false
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'
  • CLI: --coverage.thresholds.perFile, --coverage.thresholds.perFile=false

Dosya başına eşik kontrolü yap.

coverage.thresholds.autoUpdate ​
  • Tür: boolean
  • Varsayılan: false
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'
  • CLI: --coverage.thresholds.autoUpdate=<boolean>

Mevcut kapsam, yapılandırılmış eşiklerin üzerindeyse, lines, functions, branches ve statements değerlerini yapılandırma dosyasında otomatik olarak güncelle. Bu seçenek, kapsam iyileştirildiğinde eşikleri korumaya yardımcı olur.

coverage.thresholds.100 ​
  • Tür: boolean
  • Varsayılan: false
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'
  • CLI: --coverage.thresholds.100, --coverage.thresholds.100=false

Genel eşikleri 100'e ayarla. --coverage.thresholds.lines 100 --coverage.thresholds.functions 100 --coverage.thresholds.branches 100 --coverage.thresholds.statements 100 için kısayol.

coverage.thresholds[glob-pattern] ​
  • Tür: { statements?: number functions?: number branches?: number lines?: number }
  • Varsayılan: undefined
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'

Glob deseniyle eşleşen dosyalar için eşikler ayarlar.

ts
{
  coverage: {
    thresholds: {
      // Thresholds for all files
      functions: 95,
      branches: 70,

      // Thresholds for matching glob pattern
      'src/utils/**.ts': {
        statements: 95,
        functions: 90,
        branches: 85,
        lines: 80,
      },

      // Files matching this pattern will only have lines thresholds set.
      // Global thresholds are not inherited.
      '**/math.ts': {
        lines: 100,
      }
    }
  }
}

coverage.ignoreEmptyLines ​

  • Tür: boolean
  • Varsayılan: false
  • Sağlayıcılar için kullanılabilir: 'v8'
  • CLI: --coverage.ignoreEmptyLines=<boolean>

Boş satırları, yorumları ve Typescript tipleri gibi çalışma zamanında kullanılmayan kodları yoksay.

Bu seçenek yalnızca kullanılan derleyici yorumları ve diğer çalışma zamanı olmayan kodları dönüştürülmüş koddan kaldırırsa çalışır. Varsayılan olarak Vite, .ts, .tsx ve .jsx dosyalarından yorumları ve Typescript türlerini kaldıran ESBuild'i kullanır.

ESBuild'i diğer dosyalara da uygulamak istiyorsanız, bunları esbuild seçeneklerinde tanımlayın:

ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  esbuild: {
    // Transpile all files with ESBuild to remove comments from code coverage.
    // Required for `test.coverage.ignoreEmptyLines` to work:
    include: ['**/*.js', '**/*.jsx', '**/*.mjs', '**/*.ts', '**/*.tsx'],
  },
  test: {
    coverage: {
      provider: 'v8',
      ignoreEmptyLines: true,
    },
  },
});

coverage.ignoreClassMethods ​

  • Tür: string[]
  • Varsayılan: []
  • Sağlayıcılar için kullanılabilir: 'istanbul'
  • CLI: --coverage.ignoreClassMethods=<method>

Kapsam analizinde yoksayılacak sınıf metotlarının adlarını bir dizi olarak belirtin. Daha fazla bilgi için istanbul belgelerine bakın.

coverage.watermarks ​

  • Tür:
ts
{
  statements?: [number, number],
  functions?: [number, number],
  branches?: [number, number],
  lines?: [number, number]
}
  • Varsayılan:
ts
{
  statements: [50, 80],
  functions: [50, 80],
  branches: [50, 80],
  lines: [50, 80]
}
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'
  • CLI: --coverage.watermarks.statements=50,80, --coverage.watermarks.branches=50,80

İfadeler, satırlar, dallar ve fonksiyonlar için eşik değerleri. Daha fazla bilgi için istanbul belgelerine bakın.

coverage.processingConcurrency ​

  • Tür: boolean
  • Varsayılan: Math.min(20, os.availableParallelism?.() ?? os.cpus().length)
  • Sağlayıcılar için kullanılabilir: 'v8' | 'istanbul'
  • CLI: --coverage.processingConcurrency=<number>

Kapsam sonuçları işlenirken kullanılan eş zamanlılık limiti.

coverage.customProviderModule ​

  • Tür: string
  • Sağlayıcılar için kullanılabilir: 'custom'
  • CLI: --coverage.customProviderModule=<path or module name>

Özel kapsam sağlayıcı modülünün modül adını veya dosya yolunu belirtir. Daha fazla bilgi için Rehber - Özel Kapsam Sağlayıcısı bölümüne bakın.

testNamePattern* ​

  • Tür: string | RegExp
  • CLI: -t <pattern>, --testNamePattern=<pattern>, --test-name-pattern=<pattern>

Bu özellik, belirtilen kalıpla eşleşen tam adlara sahip testleri çalıştırır. Eğer bu özelliğe OnlyRunThis değeri atanırsa, test adında OnlyRunThis kelimesini içermeyen testler atlanır.

js
import { expect, test } from 'vitest';

// Çalıştırılır
test('OnlyRunThis', () => {
  expect(true).toBe(true);
});

// Atlanır
test('doNotRun', () => {
  expect(true).toBe(true);
});

open* ​

  • Tür: boolean
  • Varsayılan: !process.env.CI
  • CLI: --open, --open=false

Vitest Arayüzünü açar (Geliştirme Aşamasında).

api ​

  • Tür: boolean | number
  • Varsayılan: false
  • CLI: --api, --api.port, --api.host, --api.strictPort

Belirli bir portu dinler ve bir API sunar. true olarak ayarlandığında, varsayılan port 51204 olur.

browser 0.29.4+ ​

  • Tür: { enabled?, name?, provider?, headless?, api?, slowHijackESM? }
  • Varsayılan: { enabled: false, headless: process.env.CI, api: 63315 }
  • CLI: --browser, --browser=<name>, --browser.name=chrome --browser.headless

Vitest testlerini bir tarayıcıda çalıştırır. Testleri çalıştırmak için varsayılan olarak WebdriverIO kullanılır, ancak browser.provider seçeneğiyle yapılandırılabilir.

NOT

Gerçek bir tarayıcıda test etme hakkında daha fazla bilgiyi rehber sayfasında bulabilirsiniz.

WARNING

Bu deneysel bir özelliktir. Kırıcı değişiklikler SemVer'i takip etmeyebilir, bu nedenle kullanırken lütfen Vitest sürümünüzü sabitleyin.

browser.enabled ​

  • Tür: boolean
  • Varsayılan: false
  • CLI: --browser, --browser.enabled=false

Varsayılan olarak tüm testleri tarayıcıda çalıştırır. poolMatchGlobs seçeneği ile bu davranışı geçersiz kılabilirsiniz.

browser.name ​

  • Tür: string
  • CLI: --browser=safari

Tüm testleri belirtilen tarayıcıda çalıştırır. Farklı sağlayıcılarda olası seçenekler:

  • webdriverio: firefox, chrome, edge, safari
  • playwright: firefox, webkit, chromium
  • özel: sağlayıcıya iletilecek herhangi bir dize

browser.headless ​

  • Tür: boolean
  • Varsayılan: process.env.CI
  • CLI: --browser.headless, --browser.headless=false

Tarayıcıyı headless modda çalıştırır. Vitest'i CI ortamında çalıştırıyorsanız, bu özellik varsayılan olarak etkindir.

browser.isolate ​

  • Tür: boolean
  • Varsayılan: true
  • CLI: --browser.isolate, --browser.isolate=false

Her testi ayrı bir iframe içinde çalıştırır.

browser.fileParallelism 1.3.0+ ​

  • Tür: boolean
  • Varsayılan: fileParallelism ile aynı
  • CLI: --browser.fileParallelism=false

Tüm test iframe'lerini aynı anda oluşturarak testlerin paralel çalışmasını sağlar.

Bu, tıklama veya üzerine gelme gibi etkileşimli API'lerin kullanımını zorlaştırabilir, çünkü ekranda aynı anda birden fazla iframe bulunur. Ancak testleriniz bu API'lere ihtiyaç duymuyorsa, tümünü aynı anda çalıştırmak daha hızlı olabilir.

TIP

browser.isolate=false aracılığıyla izolasyonu devre dışı bıraktıysanız, test dosyalarınız test çalıştırıcısının doğası gereği yine de birbiri ardına çalışacaktır.

browser.api ​

  • Tür: number | { port?, strictPort?, host? }
  • Varsayılan: 63315
  • CLI: --browser.api=63315, --browser.api.port=1234, --browser.api.host=example.com

Tarayıcıda kodu sunan Vite sunucusu için seçenekleri yapılandırır. Bu seçenek, test.api seçeneğini etkilemez.

browser.provider ​

  • Tür: 'webdriverio' | 'playwright' | string
  • Varsayılan: 'webdriverio'
  • CLI: --browser.provider=playwright

Tarayıcı testleri çalıştırılırken kullanılacak sağlayıcının yolunu belirtir. Vitest, webdriverio (varsayılan) ve playwright olmak üzere iki yerleşik sağlayıcı sunar. Özel sağlayıcılar default olarak dışa aktarılmalı ve aşağıdaki gibi bir yapıya sahip olmalıdır:

ts
export interface BrowserProvider {
  name: string;
  getSupportedBrowsers: () => readonly string[];
  initialize: (
    ctx: Vitest,
    options: { browser: string; options?: BrowserProviderOptions }
  ) => Awaitable<void>;
  openPage: (url: string) => Awaitable<void>;
  close: () => Awaitable<void>;
}

WARNING

Bu, kütüphane yazarları için gelişmiş bir API'dir. Sadece testleri bir tarayıcıda çalıştırmanız gerekiyorsa, browser seçeneğini kullanın.

browser.providerOptions 1.0.0+ ​

  • Tür: BrowserProviderOptions

provider.initialize fonksiyonu çağrıldığında sağlayıcıya iletilecek seçeneklerdir.

ts
export default defineConfig({
  test: {
    browser: {
      providerOptions: {
        launch: {
          devtools: true,
        },
      },
    },
  },
});

TIP

Yerleşik sağlayıcıları kullanırken daha iyi bir tür güvenliğine sahip olmak için, tsconfig dosyanızın compilerOptions.types alanına kullandığınız sağlayıcı için bu türlerden birini ekleyebilirsiniz:

json
{
  "compilerOptions": {
    "types": [
      "@vitest/browser/providers/webdriverio",
      "@vitest/browser/providers/playwright"
    ]
  }
}

browser.slowHijackESM 0.31.0+ ​

  • Tür: boolean
  • Varsayılan: false

Node.js'de testler çalıştırılırken Vitest, vi.mock sözdizimi ile modülleri kolayca taklit etmek için kendi modül çözümlemesini kullanabilir. Ancak tarayıcıda ES modülü çözümlemesini birebir aynı şekilde uygulamak kolay değildir. Bu nedenle, tarayıcı kullanmadan önce kaynak dosyalarınızın dönüştürülmesi gerekir.

Bu seçeneğin Node.js içinde çalışan testler üzerinde hiçbir etkisi yoktur.

vi.spyOn ile ES modüllerini gözetlemeye güveniyorsanız, modül dışa aktarımlarını gözetlemeye izin vermek için bu deneysel özelliği etkinleştirebilirsiniz.

browser.indexScripts 1.6.0+ ​

  • Tür: BrowserScript[]
  • Varsayılan: []

Test iframe'leri başlatılmadan önce index HTML'sine enjekte edilmesi gereken özel komut dosyalarıdır. Bu HTML belgesi sadece iframe'leri oluşturur ve kodunuzu doğrudan içe aktarmaz.

src ve content komut dosyası Vite eklentileri tarafından işlenecektir. Komut dosyası aşağıdaki şekilde sağlanmalıdır:

ts
export interface BrowserScript {
  /**
   * "content" sağlanmışsa ve tür "module" ise, bu onun tanımlayıcısı olacaktır.
   *
   * TypeScript kullanıyorsanız, örneğin buraya `.ts` uzantısı ekleyebilirsiniz.
   * @default `injected-${index}.js`
   */
  id?: string;
  /**
   * Enjekte edilecek JavaScript içeriği. Bu dize, tür "module" ise Vite eklentileri tarafından işlenir.
   *
   * Vite'ye dosya uzantısı hakkında bir ipucu vermek için `id` kullanabilirsiniz.
   */
  content?: string;
  /**
   * Komut dosyasının yolu. Bu değer Vite tarafından çözülür, böylece bir node modülü veya bir dosya yolu olabilir.
   */
  src?: string;
  /**
   * Komut dosyası eşzamansız olarak yüklenmeli mi?
   */
  async?: boolean;
  /**
   * Komut dosyası türü.
   * @default 'module'
   */
  type?: string;
}

browser.testerScripts 1.6.0+ ​

  • Tür: BrowserScript[]
  • Varsayılan: []

Test ortamı başlatılmadan önce test HTML'sine enjekte edilecek özel betiklerdir. Bu, Vitest tarayıcı uygulaması için gereken polyfill'leri enjekte etmek için kullanışlıdır. Neredeyse tüm durumlarda bunun yerine setupFiles kullanılması önerilir.

src ve content komut dosyası Vite eklentileri tarafından işlenecektir.

clearMocks ​

  • Tür: boolean
  • Varsayılan: false

Her testten önce tüm mock'larda .mockClear() fonksiyonunu çağırır. Bu, mock geçmişini temizler, ancak uygulamasını varsayılan değerine sıfırlamaz.

mockReset ​

  • Tür: boolean
  • Varsayılan: false

Her testten önce tüm mock'larda .mockReset() fonksiyonunu çağırır. Bu, mock geçmişini temizler ve uygulamasını boş bir fonksiyona sıfırlar ( undefined döndürür).

restoreMocks ​

  • Tür: boolean
  • Varsayılan: false

Her testten önce tüm mock'larda .mockRestore() fonksiyonunu çağırır. Bu, mock geçmişini temizler ve uygulamasını orijinal haline sıfırlar.

unstubEnvs 0.26.0+ ​

  • Tür: boolean
  • Varsayılan: false

Her testten önce vi.unstubAllEnvs fonksiyonunu çağırır.

unstubGlobals 0.26.0+ ​

  • Tür: boolean
  • Varsayılan: false

Her testten önce vi.unstubAllGlobals fonksiyonunu çağırır.

testTransformMode 0.34.0+ ​

  • Tür: { web?, ssr? }

Glob deseniyle eşleşen bir testin içine aktarılan tüm modüllerin dönüştürme yöntemini belirler. Varsayılan olarak, ortama bağlıdır. Örneğin, JSDOM ortamına sahip testler tüm dosyaları ssr: false bayrağıyla işler ve Node ortamına sahip testler tüm modülleri ssr: true ile işler.

testTransformMode.ssr ​

  • Tür: string[]
  • Varsayılan: []

Belirtilen testlerin içindeki tüm modüller için SSR dönüştürme hattını kullanır. Vite eklentileri, bu dosyaları işlerken ssr: true bayrağını alacaktır.

testTransformMode.web ​

  • Tür: string[]
  • Varsayılan: []

Önce normal bir dönüştürme hattı (tarayıcıyı hedefleyen) uygular, ardından kodu Node'da çalıştırmak için bir SSR yeniden yazma işlemi yapar. Vite eklentileri, bu dosyaları işlerken ssr: false bayrağını alacaktır.

snapshotFormat* ​

  • Tür: PrettyFormatOptions

Snapshot testleri için biçimlendirme seçenekleridir. Bu seçenekler pretty-format kütüphanesine aktarılır.

TIP

Bu nesnedeki plugins alanının yoksayılacağını unutmayın.

Anlık görüntü serileştiricisini pretty-format eklentileri aracılığıyla genişletmeniz gerekiyorsa, lütfen expect.addSnapshotSerializer API'sini veya snapshotSerializers seçeneğini kullanın.

snapshotSerializers* 1.3.0+ ​

  • Tür: string[]
  • Varsayılan: []

Özel anlık görüntü serileştiricileri eklemek istiyorsanız, anlık görüntü testi için anlık görüntü serileştirici modüllerine giden bir yol listesidir. Daha fazla bilgi için Özel Serileştirici bölümüne bakın.

resolveSnapshotPath* ​

  • Tür: (testPath: string, snapExtension: string) => string
  • Varsayılan: anlık görüntü dosyalarını __snapshots__ dizininde saklar

Varsayılan anlık görüntü yolunu geçersiz kılar. Örneğin, anlık görüntüleri test dosyalarının yanında saklamak için:

ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    resolveSnapshotPath: (testPath, snapExtension) => testPath + snapExtension,
  },
});

allowOnly ​

  • Tür: boolean
  • Varsayılan: !process.env.CI
  • CLI: --allowOnly, --allowOnly=false

Sadece (.only) olarak işaretlenmiş testlere ve test gruplarına izin verir.

dangerouslyIgnoreUnhandledErrors* ​

  • Tür: boolean
  • Varsayılan: false
  • CLI: --dangerouslyIgnoreUnhandledErrors --dangerouslyIgnoreUnhandledErrors=false

Oluşan işlenmemiş hataları görmezden gelir.

passWithNoTests* ​

  • Tür: boolean
  • Varsayılan: false
  • CLI: --passWithNoTests, --passWithNoTests=false

Test bulunamazsa Vitest hata vermez.

logHeapUsage ​

  • Tür: boolean
  • Varsayılan: false
  • CLI: --logHeapUsage, --logHeapUsage=false

Her testten sonra heap kullanımını gösterir. Bellek sızıntılarını ayıklamak için kullanışlıdır.

css ​

  • Tür: boolean | { include?, exclude?, modules? }

CSS işlemenin yapılıp yapılmayacağını ayarlar. Dışarıda bırakıldığında, sonraki işlemleri engellemek için CSS dosyaları boş dizelerle değiştirilir. CSS Modülleri, çalışma zamanını etkilememek için bir proxy döndürecektir.

css.include ​

  • Tür: RegExp | RegExp[]
  • Varsayılan: []

Gerçek CSS içeriği döndürmesi gereken ve Vite işlem hattı tarafından işlenecek dosyalar için RegExp deseni.

TIP

Tüm CSS dosyalarını işlemek için /.+/ kullanın.

css.exclude ​

  • Tür: RegExp | RegExp[]
  • Varsayılan: []

Boş bir CSS dosyası döndürecek dosyalar için RegExp deseni.

css.modules ​

  • Tür: { classNameStrategy? }
  • Varsayılan: {}

css.modules.classNameStrategy ​

  • Tür: 'stable' | 'scoped' | 'non-scoped'
  • Varsayılan: 'stable'

CSS dosyalarını işlemeye karar verirseniz, CSS modüllerinin içindeki sınıf adlarının kapsamlı olup olmayacağını yapılandırabilirsiniz. Aşağıdaki seçeneklerden birini seçebilirsiniz:

  • stable: sınıf adları _${name}_${hashedFilename} olarak oluşturulacaktır. Bu, CSS içeriği değiştirilirse oluşturulan sınıfın aynı kalacağı, ancak dosyanın adı değiştirilirse veya dosya başka bir klasöre taşınırsa değişeceği anlamına gelir. Bu ayar, anlık görüntü özelliğini kullanıyorsanız kullanışlıdır.
  • scoped: Sınıf adları normal şekilde oluşturulur, eğer tanımlanmışsa css.modules.generateScopeName yöntemi kullanılır ve CSS işleme etkinleştirilir. Varsayılan olarak, dosya adı _${name}_${hash} olarak oluşturulacaktır; burada hash, dosya adını ve dosyanın içeriğini içerir.
  • non-scoped: sınıf adları karma hale getirilmeyecektir.

WARNING

Varsayılan olarak, Vitest bir proxy olarak dışa aktarılır ve CSS Modülleri işlenmez. Sınıflarınızdaki CSS özelliklerine güveniyorsanız, include seçeneğini kullanarak CSS işlemeyi etkinleştirmeniz gerekir.

maxConcurrency ​

  • Tür: number (sayı)
  • Varsayılan: 5
  • CLI: --max-concurrency=10, --maxConcurrency=10

test.concurrent ile işaretlenmiş testlerden, aynı anda çalışmasına izin verilen maksimum test sayısı.

Bu limiti aşan testler, uygun bir yuva açıldığında çalıştırılmak üzere sıraya alınır.

cache* ​

  • Tür: false
  • CLI: --no-cache, --cache=false

Önbellekleme özelliğini devre dışı bırakmak için bu seçeneği kullanın. Vitest, daha uzun süren ve başarısız olan testleri önceliklendirmek için test sonuçlarını önbelleğe alır.

sequence ​

  • Tür: { sequencer?, shuffle?, seed?, hooks?, setupFiles? }

Testlerin nasıl sıralanacağına ilişkin seçenekler.

Nokta notasyonu ile CLI'ya sıralama seçenekleri sağlayabilirsiniz:

sh
npx vitest --sequence.shuffle --sequence.seed=1000

sequence.sequencer* ​

  • Tür: TestSequencerConstructor
  • Varsayılan: BaseSequencer

Parçalama (sharding) ve sıralama yöntemlerini tanımlayan özel bir sınıf. Yalnızca sort veya shard yöntemlerinden birini yeniden tanımlamanız gerekiyorsa vitest/node'dan BaseSequencer'ı genişletebilirsiniz, ancak her iki yöntem de mevcut olmalıdır.

Parçalama, sıralamadan önce gerçekleşir ve yalnızca --shard seçeneği sağlandığında uygulanır.

sequence.shuffle ​

  • Tür: boolean | { files?, tests? }
  • Varsayılan: false
  • CLI: --sequence.shuffle, --sequence.shuffle=false

Dosyaların ve testlerin rastgele sırada çalışmasını sağlamak için bu seçeneği veya CLI argümanı --sequence.shuffle'ı kullanabilirsiniz.

Dosyalarınız ve testleriniz rastgele sırada çalışırsa, performans iyileştirmeleri kaybolabilir. Ancak bu, yanlışlıkla önceki çalıştırmalara bağımlı olan testleri tespit etmenize yardımcı olabilir.

sequence.shuffle.files 1.4.0+ ​

  • Tür: boolean
  • Varsayılan: false
  • CLI: --sequence.shuffle.files, --sequence.shuffle.files=false

Dosyaların rastgele sıralanıp sıralanmayacağını belirler. Bu seçeneği etkinleştirirseniz, uzun süren testlerin öncelikli olarak başlamayacağını unutmayın.

sequence.shuffle.tests 1.4.0+ ​

  • Tür: boolean
  • Varsayılan: false
  • CLI: --sequence.shuffle.tests, --sequence.shuffle.tests=false

Testlerin rastgele sırada çalıştırılıp çalıştırılmayacağını belirler.

sequence.concurrent 0.32.2+ ​

  • Tür: boolean
  • Varsayılan: false
  • CLI: --sequence.concurrent, --sequence.concurrent=false

Testlerin paralel olarak çalışmasını istiyorsanız, bu seçeneği veya CLI argümanı --sequence.concurrent ile etkinleştirebilirsiniz.

sequence.seed* ​

  • Tür: number (sayı)
  • Varsayılan: Date.now()
  • CLI: --sequence.seed=1000

Testler rastgele sırada çalışıyorsa, rastgeleleştirme için kullanılacak çekirdeği ayarlar.

sequence.hooks ​

  • Tür: 'stack' | 'list' | 'parallel'
  • Varsayılan: 'parallel'
  • CLI: --sequence.hooks=<value>

Kancaların (hooks) yürütülme sırasını değiştirir.

  • stack, "after" kancalarını ters sırada sıralar, "before" kancaları tanımlandıkları sırada çalışır.
  • list, tüm kancaları tanımlandıkları sırada sıralar.
  • parallel, kancaları tek bir grupta paralel olarak çalıştırır (üst suite'lerdeki kancalar, mevcut suite'in kancalarından önce çalışmaya devam eder).

TIP

Bu seçenek onTestFinished'ı etkilemez. Her zaman ters sırada çağrılır.

sequence.setupFiles 0.29.3+ ​

  • Tür: 'list' | 'parallel'
  • Varsayılan: 'parallel'
  • CLI: --sequence.setupFiles=<value>

Kurulum dosyalarının (setup files) yürütülme sırasını değiştirir.

  • list, kurulum dosyalarını tanımlandıkları sırada çalıştırır.
  • parallel, kurulum dosyalarını paralel olarak çalıştırır.

typecheck ​

Tür denetimi (typechecking) test ortamını yapılandırma seçenekleri.

typecheck.enabled 1.0.0+ ​

  • Tür: boolean
  • Varsayılan: false
  • CLI: --typecheck, --typecheck.enabled

Normal testlerinizin yanı sıra tür denetimini etkinleştirin.

typecheck.only 1.0.0+ ​

  • Tür: boolean
  • Varsayılan: false
  • CLI: --typecheck.only

Tür denetimi etkinleştirildiğinde yalnızca tür denetimi testlerini çalıştırın. CLI kullanırken, bu seçenek otomatik olarak tür denetimini etkinleştirir.

typecheck.checker ​

  • Tür: 'tsc' | 'vue-tsc' | string
  • Varsayılan: tsc

Tür denetimi için hangi aracın kullanılacağını belirtir. Vitest, türe bağlı olarak, daha kolay ayrıştırma sağlamak için belirli parametrelerle bir işlem başlatır. Denetleyici (checker), tsc --noEmit --pretty false komutuyla aynı çıktı biçimini vermelidir.

Tür denetleyicisini kullanmak için ilgili paketi yüklemeniz gerekir:

  • tsc için typescript paketi gereklidir.
  • vue-tsc için vue-tsc paketi gereklidir.

Ayrıca, tsc --noEmit --pretty false ile aynı çıktıyı üreten özel bir ikili dosya veya komut yolunu da belirtebilirsiniz.

typecheck.include ​

  • Tür: string[]
  • Varsayılan: ['**/*.{test,spec}-d.?(c|m)[jt]s?(x)']

Test dosyası olarak kabul edilecek dosyalar için glob deseni.

typecheck.exclude ​

  • Tür: string[]
  • Varsayılan: ['**/node_modules/**', '**/dist/**', '**/cypress/**', '**/.{idea,git,cache,output,temp}/**']

Test dosyası olarak kabul edilmeyecek dosyalar için glob deseni.

typecheck.allowJs ​

  • Tür: boolean
  • Varsayılan: false

@ts-check yorumuna sahip JS dosyalarını kontrol edin. Tsconfig'de etkinleştirilmişse, bu ayar onu geçersiz kılmaz.

typecheck.ignoreSourceErrors ​

  • Tür: boolean
  • Varsayılan: false

Vitest, test dosyaları dışındaki kaynak kodunda hatalar bulsa bile testin başarısız sayılmamasını sağlar. Bu, test dışı hataların raporlanmasını engeller.

Varsayılan olarak, Vitest kaynak kodda bir hata bulursa, test suite'i başarısız olur.

typecheck.tsconfig ​

  • Tür: string
  • Varsayılan: en yakın tsconfig.json dosyasını bulmaya çalışır

Proje köküne göre özel tsconfig dosyasına giden yol.

slowTestThreshold* ​

  • Tür: number (sayı)
  • Varsayılan: 300
  • CLI: --slow-test-threshold=<number>, --slowTestThreshold=<number>

Bir testin yavaş olarak kabul edildiği ve sonuçlarda bu şekilde raporlandığı milisaniye cinsinden süre.

chaiConfig 0.30.0+ ​

  • Tür: { includeStack?, showDiff?, truncateThreshold? }
  • Varsayılan: { includeStack: false, showDiff: true, truncateThreshold: 40 }

Chai yapılandırmasına karşılık gelir.

chaiConfig.includeStack ​

  • Tür: boolean
  • Varsayılan: false

Yığın izlemenin (stack trace) Assertion (iddia) hata mesajına dahil edilip edilmeyeceğini kontrol eder. Varsayılan false değeri, hata mesajındaki yığın izlemeyi gizler.

chaiConfig.showDiff ​

  • Tür: boolean
  • Varsayılan: true

showDiff işaretinin oluşturulan AssertionError nesnelerine dahil edilip edilmeyeceğini kontrol eder. false değeri her zaman false olacaktır; true değeri, assertion bir farkın (diff) gösterilmesini istediğinde true olacaktır.

chaiConfig.truncateThreshold ​

  • Tür: number (sayı)
  • Varsayılan: 40

Assertion hatalarındaki gerçek ve beklenen değerler için uzunluk eşiğini ayarlar. Bu eşik aşılırsa, özellikle büyük veri yapıları için, değer [ Array(3) ] veya { Object (prop1, prop2) } gibi bir ifadeyle değiştirilir. Tamamen kesmeyi devre dışı bırakmak için 0 olarak ayarlayın.

Bu yapılandırma seçeneği, test.each başlıklarındaki ve assertion hata mesajlarının içindeki değerlerin kesilmesini etkiler.

bail 0.31.0+ ​

  • Tür: number (sayı)
  • Varsayılan: 0
  • CLI: --bail=<value>

Belirli sayıda test başarısız olduğunda test yürütmesini durdurur.

Bu durum, yalnızca %100 başarılı derlemelerin hedeflendiği ve test hataları oluştuğunda test yürütmesinin mümkün olan en kısa sürede durdurulmasının istendiği CI süreçleri için uygun olabilir. bail seçeneği, hatalar oluştuğunda daha fazla testin çalışmasını engelleyerek CI çalıştırmalarını hızlandırmak için kullanılabilir.

retry 0.32.3+ ​

  • Tür: number (sayı)
  • Varsayılan: 0
  • CLI: --retry=<value>

Başarısız olursa testi belirli sayıda kez yeniden dener.

onConsoleLog* ​

  • Tür: (log: string, type: 'stdout' | 'stderr') => boolean | void

Testlerdeki console.log çağrıları için özel işleyici. false döndürürseniz, Vitest günlüğü konsola yazdırmaz.

Üçüncü taraf kitaplıklardan gelen günlükleri filtrelemek için yararlı olabilir.

ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    onConsoleLog(log: string, type: 'stdout' | 'stderr'): boolean | void {
      return !(log === 'message from third party library' && type === 'stdout');
    },
  },
});

onStackTrace* 1.0.0+ ​

  • Tür: (error: Error, frame: ParsedStack) => boolean | void

Hataları işlerken her yığın izlemedeki her bir çerçeveye bir filtreleme işlevi uygulayın. İlk argüman olan error, standart bir Error ile aynı özelliklere sahip bir nesnedir, ancak gerçek bir Error örneği değildir.

Üçüncü taraf kitaplıklardan gelen yığın izleme çerçevelerini filtrelemek için yararlı olabilir.

ts
import type { ParsedStack } from 'vitest';
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    onStackTrace(error: Error, { file }: ParsedStack): boolean | void {
      // Eğer bir ReferenceError ile karşılaşırsak, tüm yığın izlemesini göster.
      if (error.name === 'ReferenceError') return;

      // Üçüncü taraf kitaplıklardan gelen tüm çerçeveleri reddet.
      if (file.includes('node_modules')) return false;
    },
  },
});

diff 0.34.5+ ​

  • Tür: string
  • CLI: --diff=<value>

Fark (diff) arayüzü oluşturmak için kullanılacak bir fark yapılandırmasına giden yol. Fark görüntüsünü özelleştirmek istiyorsanız kullanışlıdır.

ts
import type { DiffOptions } from 'vitest';
import c from 'picocolors';

export default {
  aIndicator: c.bold('--'),
  bIndicator: c.bold('++'),
  omitAnnotationLines: true,
} satisfies DiffOptions;
ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    diff: './vitest.diff.ts',
  },
});

diff.truncateThreshold ​

  • Tür: number (sayı)
  • Varsayılan: 0

Görüntülenecek fark sonucunun maksimum uzunluğu. Bu eşiğin üzerindeki farklar kesilecektir. Varsayılan değer olan 0, kesme işleminin gerçekleşmemesi anlamına gelir.

diff.truncateAnnotation ​

  • Tür: string
  • Varsayılan: '... Diff result is truncated'

Kesme işlemi yapılmışsa, fark sonucunun sonunda görüntülenecek açıklama.

diff.truncateAnnotationColor ​

  • Tür: DiffOptionsColor = (arg: string) => string
  • Varsayılan: noColor = (string: string): string => string

Kesme açıklamasının rengi. Varsayılan olarak renksiz çıktı alınır.

fakeTimers ​

  • Tür: FakeTimerInstallOpts

Vitest'in vi.useFakeTimers() kullanırken @sinon/fake-timers'a ileteceği seçenekler.

fakeTimers.now ​

  • Tür: number | Date (sayı | Tarih)
  • Varsayılan: Date.now()

Sahte zamanlayıcıları belirtilen Unix zaman damgası ile başlatır.

fakeTimers.toFake ​

  • Tür: ('setTimeout' | 'clearTimeout' | 'setImmediate' | 'clearImmediate' | 'setInterval' | 'clearInterval' | 'Date' | 'nextTick' | 'hrtime' | 'requestAnimationFrame' | 'cancelAnimationFrame' | 'requestIdleCallback' | 'cancelIdleCallback' | 'performance' | 'queueMicrotask')[]
  • Varsayılan: ['setTimeout', 'clearTimeout', 'setImmediate', 'clearImmediate', 'setInterval', 'clearInterval', 'Date']

Sahte sürümleri oluşturulacak global yöntemlerin ve API'lerin adlarını içeren bir dizi.

Yalnızca setTimeout() ve nextTick()'i taklit etmek için, bu özelliği ['setTimeout', 'nextTick'] olarak belirtin.

Vitest --pool=forks kullanılarak node:child_process içinde çalıştırıldığında nextTick'in mock'lanması desteklenmez. NodeJS, node:child_process içinde dahili olarak process.nextTick kullanır ve taklit edildiğinde askıda kalır. nextTick'in mock'lanması, Vitest --pool=threads ile çalıştırıldığında desteklenir.

fakeTimers.loopLimit ​

  • Tür: number (sayı)
  • Varsayılan: 10_000

vi.runAllTimers() çağrıldığında çalıştırılacak maksimum zamanlayıcı sayısı.

fakeTimers.shouldAdvanceTime ​

  • Tür: boolean
  • Varsayılan: false

@sinonjs/fake-timers'a, taklit edilen zamanı gerçek sistem zamanındaki değişime göre otomatik olarak artırmasını söyler.

fakeTimers.advanceTimeDelta ​

  • Tür: number (sayı)
  • Varsayılan: 20

Yalnızca shouldAdvanceTime: true ile kullanıldığında geçerlidir. Gerçek sistem zamanındaki her advanceTimeDelta milisaniyelik değişiklik için taklit edilen zamanı advanceTimeDelta milisaniye artırın.

fakeTimers.shouldClearNativeTimers ​

  • Tür: boolean
  • Varsayılan: false

Sahte zamanlayıcılara, ilgili işleyicilerine devrederek "yerel" (yani sahte olmayan) zamanlayıcıları temizlemesini söyler. Bunlar varsayılan olarak temizlenmez, bu da sahte zamanlayıcı oturumu başlatılmadan önce zamanlayıcılar varsa potansiyel olarak beklenmedik davranışlara yol açar.

workspace* 1.1.0+ ​

  • Tür: string
  • CLI: --workspace=./file.js
  • Varsayılan: Yapılandırma dosyasına veya kök dizine yakın olan vitest.{workspace,projects}.{js,ts,json} dosyaları

Kök'e göre bir çalışma alanı yapılandırma dosyasına giden yol.

isolate 1.1.0+ ​

  • Tür: boolean
  • Varsayılan: true
  • CLI: --no-isolate, --isolate=false

Testleri yalıtılmış bir ortamda çalıştırın. Bu seçeneğin vmThreads ve vmForks havuzları üzerinde bir etkisi yoktur.

Eğer kodunuz yan etkilere bağımlı değilse (ki bu genellikle node ortamına sahip projeler için geçerlidir), bu seçeneği devre dışı bırakmak performansı artırabilir.

TIP

poolOptions özelliğini kullanarak belirli havuzlar için yalıtımı devre dışı bırakabilirsiniz.

includeTaskLocation 1.4.0+ ​

  • Tür: boolean
  • Varsayılan: false

Vitest API'si raporlayıcılarda görevleri alırken location özelliğinin eklenip eklenmeyeceğini belirler. Çok sayıda testiniz varsa, bu durum küçük bir performans düşüşüne neden olabilir.

location özelliği, orijinal dosyada test veya describe konumuna karşılık gelen column ve line değerlerini içerir.

TIP

Buna dayanan özel kod kullanmıyorsanız bu seçeneğin bir etkisi yoktur.

snapshotEnvironment 1.6.0+ ​

  • Tür: string

Özel bir anlık görüntü (snapshot) ortamı uygulamasına giden yol. Bu, testlerinizi Node.js API'lerini desteklemeyen bir ortamda çalıştırıyorsanız kullanışlıdır. Bu seçeneğin bir tarayıcı çalıştırıcısı üzerinde bir etkisi yoktur.

Bu nesne SnapshotEnvironment yapısında olmalı ve anlık görüntü dosyalarını çözümlemek, okumak ve yazmak için kullanılır:

ts
export interface SnapshotEnvironment {
  getVersion: () => string;
  getHeader: () => string;
  resolvePath: (filepath: string) => Promise<string>;
  resolveRawPath: (testPath: string, rawPath: string) => Promise<string>;
  saveSnapshotFile: (filepath: string, snapshot: string) => Promise<void>;
  readSnapshotFile: (filepath: string) => Promise<string | null>;
  removeSnapshotFile: (filepath: string) => Promise<void>;
}

API'nin yalnızca bir bölümünü geçersiz kılmanız gerekiyorsa, vitest/snapshot giriş noktasından varsayılan VitestSnapshotEnvironment'ı genişletebilirsiniz.

WARNING

Bu düşük seviyeli bir seçenektir ve yalnızca varsayılan Node.js API'lerine erişiminizin olmadığı gelişmiş durumlar için kullanılmalıdır.

Yalnızca anlık görüntü özelliğini yapılandırmanız gerekiyorsa, snapshotFormat veya resolveSnapshotPath seçeneklerini kullanın.

Pager
Önceki sayfaVitest Yapılandırma Dosyasını Yönetme

MIT Lisansı altında yayınlanmıştır.

Copyright (c) 2021-Present Vitest Team

https://v1.vitest.dev/config/

MIT Lisansı altında yayınlanmıştır.

Copyright (c) 2021-Present Vitest Team