Összehasonlítás más tesztfuttatókkal
Jest
A Jest vezető szerepet tölt be a tesztelési keretrendszerek között, köszönhetően a legtöbb JavaScript projekt azonnali támogatásának, a kényelmes API-nak (it
és expect
), és a legtöbb konfigurációhoz szükséges teljes tesztfunkcióknak (pillanatképek, mock-ok, lefedettség). Köszönet a Jest csapatának és közösségének a kiváló tesztelési API megalkotásáért, és a ma már webes szabvánnyá vált tesztelési minták bevezetéséért.
A Jest használható Vite környezetben is. A @sodatea által fejlesztett vite-jest célja, hogy első osztályú Vite integrációt biztosítson a Jest számára. A Jest korábbi korlátozásait megoldották, így ez egy érvényes lehetőség az egységtesztekhez.
Azonban egy olyan világban, ahol a Vite támogatja a leggyakoribb webes eszközöket (TypeScript, JSX, legnépszerűbb UI Framework-ök), a Jest felesleges komplexitást jelenthet. Ha az alkalmazásod Vite-ot használ, indokolatlan két külön folyamatot konfigurálni és karbantartani. A Vitest-tel a fejlesztési, buildelési és tesztelési környezetek konfigurációja egyetlen folyamatban definiálható, ugyanazokat a bővítményeket és a vite.config.js
fájlt használva.
Még akkor is, ha a könyvtárad nem használja a Vite-ot (például, ha esbuild-del vagy Rollup-pal épül), a Vitest egy érdekes lehetőség, mivel gyorsabb futást kínál az egységtesztekhez, és jelentős fejlesztői élményt nyújt a Vite azonnali Hot Module Reload (HMR) funkcióját használó alapértelmezett figyelő módnak köszönhetően. A Vitest kompatibilitást kínál a Jest API és az ökoszisztéma könyvtárainak többségével, így a legtöbb projektben a Jest közvetlen helyettesítője lehet.
Cypress
A Cypress egy böngésző alapú tesztfuttató és egy kiegészítő eszköz a Vitest-hez. Ha szeretnéd használni a Cypress-t, javasoljuk, hogy a Vitest-et használd az alkalmazásod összes headless logikájához, a Cypress-t pedig a böngésző alapú logikához.
A Cypress végpontok közötti tesztelő eszközként ismert, de az új komponens tesztfuttatójuk nagyszerű támogatást nyújt a Vite komponensek teszteléséhez, és ideális választás minden böngészőben renderelődő elem tesztelésére.
A böngésző alapú futtatók, mint a Cypress, a WebdriverIO és a Web Test Runner, olyan problémákat fognak fel, amelyeket a Vitest nem tud, mert a valódi böngészőt és a valódi böngésző API-kat használják.
A Cypress tesztelési mechanizmusa arra összpontosít, hogy megállapítsa, hogy az elemek láthatóak, hozzáférhetőek és interaktívak-e. A Cypress kifejezetten a UI fejlesztésre és tesztelésre készült, és a DX a vizuális komponensek tesztvezérelt fejlesztésére összpontosít. A komponens a tesztjelentés mellett renderelve látható. A teszt befejezése után a komponens interaktív marad, és a böngésző fejlesztői eszközeivel hibakeresést végezhetsz a felmerülő hibákon.
Ezzel szemben a Vitest arra összpontosít, hogy a lehető legjobb DX-et biztosítsa a villámgyors, headless teszteléshez. A Node alapú futtatók, mint a Vitest, különböző részlegesen megvalósított böngészőkörnyezeteket támogatnak, mint például a jsdom
, amelyek elegendő funkciót valósítanak meg ahhoz, hogy gyorsan egységtesztelhess bármilyen kódot, amely böngésző API-kat használ. A kompromisszum az, hogy ezeknek a böngészőkörnyezeteknek korlátai vannak abban, hogy mit tudnak megvalósítani. Például a jsdom-ból hiányzik számos funkció, mint például a window.navigation
vagy egy layout engine (offsetTop
stb.).
Végül, a Web Test Runner-rel ellentétben a Cypress tesztfuttató inkább egy IDE, mint egy tesztfuttató, mert a valódi renderelt komponenst is látod a böngészőben, a teszteredményekkel és a naplókkal együtt.
A Cypress is integrálta a Vite-ot a termékeibe: újraépítve az alkalmazásuk UI-ját a Vitesse segítségével, és a Vite-ot használva a projektjük fejlesztésének tesztvezérelt fejlesztéséhez.
Úgy gondoljuk, hogy a Cypress nem a legjobb választás a headless kód egységtesztelésére, de a Cypress (E2E és komponens teszteléshez) és a Vitest (egységtesztekhez) használata lefedheti az alkalmazásod tesztelési igényeit.
WebdriverIO
A WebdriverIO a Cypress-hez hasonlóan egy böngésző alapú alternatív tesztfuttató és egy kiegészítő eszköz a Vitest-hez. Használható end-to-end tesztelő eszközként, valamint webkomponensek tesztelésére is. Még a Vitest komponenseit is használja a háttérben, például a mock-oláshoz és a stub-oláshoz a komponens teszteken belül.
A WebdriverIO ugyanazokkal az előnyökkel jár, mint a Cypress, lehetővé téve a logika valódi böngészőben történő tesztelését. Azonban tényleges webes szabványokat használ az automatizáláshoz, ami kiküszöböli a Cypress-ben történő tesztelés során felmerülő kompromisszumokat és korlátozásokat. Ezenkívül lehetővé teszi a tesztek futtatását mobilon is, így még több környezetben is tesztelheted az alkalmazásodat.
Web Test Runner
Ha @web/test-runner-t szeretnél használni egy Vite projekttel, használd a @remcovaes/web-test-runner-vite-plugin bővítményt. A @web/test-runner nem tartalmaz állítási vagy mock-oló könyvtárakat, ezért neked kell hozzáadnod őket.
uvu
Az uvu egy tesztfuttató a Node.js és a böngésző számára. A teszteket egyetlen szálon futtatja, így a tesztek nincsenek elkülönítve, és átterjedhetnek a fájlok között. A Vitest azonban munkaszálakat használ a tesztek elkülönítésére és párhuzamos futtatására. A kód átalakításához az uvu a require
és a loader hook-okra támaszkodik. A Vitest a Vite-ot használja, így a fájlok a Vite bővítményrendszer teljes kapacitásával dolgoznak. Egy olyan világban, ahol a Vite támogatja a leggyakoribb webes eszközöket (TypeScript, JSX, legnépszerűbb UI Framework-ök), az uvu felesleges komplexitást jelenthet. Ha az alkalmazásod Vite-ot használ, indokolatlan két külön folyamatot konfigurálni és karbantartani. A Vitest-tel a fejlesztési, buildelési és tesztelési környezetek konfigurációja egyetlen folyamatban definiálható, ugyanazokat a bővítményeket és ugyanazt a vite.config.js
fájlt használva. Az uvu nem rendelkezik intelligens figyelő móddal a megváltozott tesztek újrafuttatásához. Ezzel szemben a Vitest a Vite azonnali Hot Module Reload (HMR) funkcióját használó alapértelmezett figyelő módnak köszönhetően kiváló DX-et biztosít. Az uvu egy gyors lehetőség egyszerű tesztek futtatására, de a Vitest gyorsabb és megbízhatóbb lehet összetettebb tesztek és projektek számára.