Tesztelés
Az ElyOS három tesztelési réteget használ a kód minőségének biztosítására.
Tesztelési rétegek
Szekció neve “Tesztelési rétegek”| Eszköz | Típus | Futtatás | Dokumentáció |
|---|---|---|---|
| Vitest | Egységtesztek | bun test | Vitest → |
| fast-check | Property-based tesztek | bun test:pbt | Property-based → |
| Playwright | E2E tesztek | bunx playwright test | E2E → |
Fontos: A teszteket az apps/web könyvtárból kell futtatni.
Mikor melyiket használd?
Szekció neve “Mikor melyiket használd?”Vitest (Unit tesztek)
Szekció neve “Vitest (Unit tesztek)”Mire való: Egyedi függvények, osztályok, komponensek tesztelése izoláltan.
Példák:
- Utility függvények (formázás, validáció, számítások)
- Store-ok állapotkezelése
- Server action logika
- Adatbázis repository függvények
Előnyök:
- Gyors futás
- Egyszerű debugolás
- Pontos hibajelzés
fast-check (Property-based tesztek)
Szekció neve “fast-check (Property-based tesztek)”Mire való: Invariánsok ellenőrzése véletlenszerű inputokkal.
Példák:
- Matematikai tulajdonságok (kommutatív, asszociatív)
- Adatstruktúra invariánsok
- Validációs logika
- Pagination számítások
Előnyök:
- Sok edge case automatikus tesztelése
- Rejtett bugok felfedezése
- Specifikáció dokumentálása
Playwright (E2E tesztek)
Szekció neve “Playwright (E2E tesztek)”Mire való: Teljes felhasználói folyamatok tesztelése böngészőben.
Példák:
- Bejelentkezési folyamat
- Alkalmazás megnyitása és használata
- Űrlap kitöltés és mentés
- Navigáció és routing
Előnyök:
- Valós felhasználói élmény tesztelése
- Böngésző kompatibilitás
- Vizuális regressziók észlelése
Tesztelési piramis
Szekció neve “Tesztelési piramis” /\ / \ E2E (Playwright) / \ - Kevés, lassú, törékeny /------\ / \ Property-based (fast-check) / \ - Közepes mennyiség, invariánsok /------------\/ \ Unit (Vitest)\______________/ - Sok, gyors, stabilGyors parancsok
Szekció neve “Gyors parancsok”# Unit tesztekcd apps/web && bun test
# Property-based tesztekcd apps/web && bun test:pbt
# E2E tesztekcd apps/web && bunx playwright test
# Watch mód (fejlesztés közben)cd apps/web && bunx vitestRészletes parancsok: Scripts referencia →
Tesztelési konvenciók
Szekció neve “Tesztelési konvenciók”- Fájlnév:
[fájlnév].test.tsvagy[fájlnév].spec.ts - Elhelyezés: A tesztelt fájl mellé
- Describe blokk: A tesztelt egység neve
- It blokk: Konkrét viselkedés leírása magyarul
- Minta: Arrange-Act-Assert
- Lefedettség: Minden publikus függvényhez legalább egy teszt
- Edge case-ek: Üres input, null, határértékek tesztelése
Faker – teszt adatok
Szekció neve “Faker – teszt adatok”Véletlenszerű, de valósághű teszt adatok generálása:
import { faker } from '@faker-js/faker';
const testUser = { name: faker.person.fullName(), email: faker.internet.email(), password: faker.internet.password({ length: 12 })};