Tovább a tartalomhoz

Tesztelés

Az ElyOS három tesztelési réteget használ a kód minőségének biztosítására.

EszközTípusFuttatásDokumentáció
VitestEgységtesztekbun testVitest →
fast-checkProperty-based tesztekbun test:pbtProperty-based →
PlaywrightE2E tesztekbunx playwright testE2E →

Fontos: A teszteket az apps/web könyvtárból kell futtatni.

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

Részletek →


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

Részletek →


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

Részletek →


/\
/ \ E2E (Playwright)
/ \ - Kevés, lassú, törékeny
/------\
/ \ Property-based (fast-check)
/ \ - Közepes mennyiség, invariánsok
/------------\
/ \ Unit (Vitest)
\______________/ - Sok, gyors, stabil
Terminál
# Unit tesztek
cd apps/web && bun test
# Property-based tesztek
cd apps/web && bun test:pbt
# E2E tesztek
cd apps/web && bunx playwright test
# Watch mód (fejlesztés közben)
cd apps/web && bunx vitest

Részletes parancsok: Scripts referencia →

  • Fájlnév: [fájlnév].test.ts vagy [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

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 })
};