Pengujian dan CI
Pemeriksaan lokal
Section titled “Pemeriksaan lokal”pnpm typecheckpnpm testpnpm buildpnpm smokeUnit test CLI memeriksa resolver, slot, hasil scaffold, preset, dan cakupan pairwise. Smoke test menjalankan CLI hasil build, meng-install dependency, lalu typecheck, lint, format check, unit test, dan build aplikasi yang dihasilkan. Tanpa flag, kedua mode diuji dengan pnpm.
Untuk preset fullstack lengkap (butuh Docker dan browser Chromium):
SMOKE_DB=1 SMOKE_E2E=1 pnpm smoke --preset saas-fullstackSMOKE_DB=1 menyalakan Postgres bila proyek punya Docker Compose, menjalankan migrasi, mengecek
tabel, dan menjalankan test integrasi bila tersedia. SMOKE_E2E=1 menambahkan Playwright.
Container dan volume smoke memakai nama proyek Compose yang unik dan dibersihkan setelah proses
selesai. SMOKE_KEEP=1 menyimpan folder hasil generate untuk inspeksi.
CI pull request
Section titled “CI pull request”Workflow ci.yml menjalankan typecheck, unit test, dan build repo. Job smoke menguji kedua mode,
preset enterprise-frontend, modul fullstack dal, auth, kombinasi keduanya, dan preset
saas-fullstack dengan npm/pnpm. Job database memakai Postgres sungguhan dan E2E.
Smoke penambahan modul
Section titled “Smoke penambahan modul”SMOKE_E2E=1 pnpm smoke --mode frontend --modules "" --add bff-auth,openapi,mswSMOKE_DB=1 SMOKE_E2E=1 pnpm smoke --mode fullstack --modules dal --add authSMOKE_DB=1 SMOKE_E2E=1 pnpm smoke --mode fullstack --modules auth --add dal --pm npm--add menguji dry run, penerapan, lalu penambahan ulang untuk memeriksa idempotensi sebelum
menjalankan pemeriksaan aplikasi. Job smoke-add menjalankan ketiga skenario dengan npm/pnpm.
Unit test mencakup konflik dependency/script/berkas, metadata, symlink, perubahan setelah preview,
serta rollback ketika penulisan gagal.
Nightly pairwise
Section titled “Nightly pairwise”Workflow nightly.yml berjalan setiap hari pukul 01:23 WIB (18:23 UTC), atau manual lewat
workflow_dispatch. Setiap job menjalankan smoke lengkap, termasuk database bila dibutuhkan.
Maksimal empat job berjalan bersamaan.
Proyek Yarn dihasilkan dengan linker node_modules, dan install pertama CLI dapat membuat
lockfile meskipun berjalan di CI. Install pada CI proyek selanjutnya tetap memakai --immutable.
Generator mengambil mode dan modul dari registry, menyelesaikan dependensi, menolak kombinasi yang tidak valid, lalu memilih subset kandidat secara greedy. Faktor yang dicakup:
- Mode
frontend/fullstack. - Package manager npm, pnpm, yarn, dan bun.
- Status aktif/nonaktif setiap modul setelah dependensi
requiresditambahkan.
Setiap pasangan nilai yang mungkin muncul dalam kombinasi valid harus tercakup. Contohnya,
auth aktif tanpa db aktif tidak menjadi target karena kombinasi itu mustahil. Semua pasangan
modul aktif yang kompatibel juga ikut diuji. Pairwise tidak menjamin cakupan semua interaksi tiga
modul atau lebih; karena itu preset lengkap tetap diuji di CI PR.
Inspeksi matriks setelah build:
node packages/create-nextjs-kit/dist/smoke-matrix.jsOutput berupa satu baris JSON { "include": [...] } untuk fromJSON() GitHub Actions. Hasilnya
stabil selama registry tidak berubah; unit test membandingkan cakupannya dengan enumerasi semua
kombinasi valid. Saat modul baru ditambahkan, matriks ikut diperbarui otomatis.