Lewati ke konten
create-nextjs-kit

Pengujian dan CI

Terminal window
pnpm typecheck
pnpm test
pnpm build
pnpm smoke

Unit 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):

Terminal window
SMOKE_DB=1 SMOKE_E2E=1 pnpm smoke --preset saas-fullstack

SMOKE_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.

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.

Terminal window
SMOKE_E2E=1 pnpm smoke --mode frontend --modules "" --add bff-auth,openapi,msw
SMOKE_DB=1 SMOKE_E2E=1 pnpm smoke --mode fullstack --modules dal --add auth
SMOKE_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.

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 requires ditambahkan.

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:

Terminal window
node packages/create-nextjs-kit/dist/smoke-matrix.js

Output 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.