Continuous Testing di TypeScript adalah bagian penting dari praktik pengembangan modern yang memastikan kualitas kode tetap terjaga setiap kali ada perubahan. Dengan mengintegrasikan testing otomatis ke dalam pipeline CI/CD (Continuous Integration dan Continuous Deployment), developer dapat mendeteksi bug lebih awal, mempercepat proses rilis, dan menjaga stabilitas proyek dalam jangka panjang.
TypeScript, dengan sistem tipenya yang ketat, sudah membantu mencegah banyak bug di tahap penulisan kode. Namun, kombinasi dengan Jest atau Vitest serta pipeline otomatis seperti GitHub Actions dan GitLab CI membuat proses pengujian semakin kuat dan efisien.
Apa Itu Continuous Testing dan CI/CD?
Continuous Testing berarti setiap kali ada perubahan kode — baik commit, push, atau merge — sistem akan otomatis menjalankan test untuk memastikan semuanya tetap berfungsi. Ini adalah bagian dari proses CI/CD, yang meliputi:
-
Continuous Integration (CI): Menyatukan kode dari banyak developer dan menjalankan pengujian otomatis.
-
Continuous Deployment (CD): Mengotomatisasi proses build, test, dan deploy ke server produksi.
Dengan pendekatan ini, kamu tidak perlu menjalankan test manual setiap kali update — pipeline otomatis akan melakukannya untukmu.
Persiapan Proyek TypeScript dengan Jest/Vitest
Pastikan proyek kamu sudah memiliki struktur testing dasar dengan Jest atau Vitest.
Contoh instalasi dasar:
npm install --save-dev jest ts-jest @types/jest npx ts-jest config:init
Atau jika kamu menggunakan Vitest:
npm install --save-dev vitest
Tambahkan script testing di file package.json:
{
"scripts": {
"test": "jest --coverage"
}
}
Atau untuk Vitest:
{
"scripts": {
"test": "vitest run --coverage"
}
}
Integrasi Continuous Testing dengan GitHub Actions
GitHub Actions memungkinkan kamu menjalankan proses otomatis setiap kali ada commit atau pull request. Untuk memulai, buat file:
.github/workflows/test.yml
Berikut contoh konfigurasi pipeline untuk testing TypeScript dengan Jest:
name: TypeScript Testing
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main, develop ]
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout kode
uses: actions/checkout@v3
- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: 18
- name: Install dependencies
run: npm install
- name: Jalankan testing Jest
run: npm test
Untuk Vitest, ubah langkah terakhir:
- name: Jalankan testing Vitest run: npx vitest run --coverage
Pipeline ini akan otomatis dijalankan setiap kali ada perubahan di branch main atau develop. Jika ada test yang gagal, GitHub akan menandai build sebagai error.
Integrasi Testing dengan GitLab CI
Jika proyek kamu menggunakan GitLab, pipeline bisa diatur melalui file:
.gitlab-ci.yml
Berikut contoh konfigurasi CI untuk proyek TypeScript menggunakan Jest:
stages:
- test
test_job:
image: node:18
stage: test
script:
- npm install
- npm test
only:
- main
- develop
Dan untuk Vitest:
stages:
- test
vitest_job:
image: node:18
stage: test
script:
- npm install
- npx vitest run --coverage
only:
- main
- develop
GitLab akan menjalankan job ini setiap kali kamu melakukan push ke branch yang ditentukan. Hasil test akan ditampilkan langsung di dashboard pipeline GitLab.
Menambahkan Coverage Report ke CI
Untuk memastikan kualitas kode, kamu bisa menambahkan laporan coverage agar pipeline menampilkan persentase pengujian.
Contoh di GitHub Actions:
- name: Generate coverage report
run: npm test -- --coverage
- name: Upload coverage artifact
uses: actions/upload-artifact@v4
with:
name: coverage-report
path: coverage
Contoh di GitLab CI:
script:
- npm test -- --coverage
- cat coverage/lcov.info | grep -A2 'All files' | grep '%'
artifacts:
paths:
- coverage/
expire_in: 1 week
Dengan begitu, tim dapat memantau perkembangan pengujian dari waktu ke waktu dan memastikan bahwa setiap commit meningkatkan kualitas, bukan menurunkannya.
Tips Praktis Continuous Testing TypeScript
Agar pipeline CI/CD kamu optimal:
✅ Gunakan cache dependencies agar instalasi lebih cepat.
✅ Pisahkan job lint, test, dan build untuk modularitas.
✅ Tambahkan badge status build di README.
✅ Gunakan --bail pada Jest untuk menghentikan test saat gagal pertama kali.
✅ Pastikan tsconfig.json memiliki strict: true agar pemeriksaan tipe maksimal.
Kesimpulan
Continuous Testing di TypeScript adalah fondasi utama untuk menjaga kualitas proyek jangka panjang. Dengan mengintegrasikan Jest atau Vitest ke dalam pipeline GitHub Actions atau GitLab CI, kamu bisa memastikan setiap perubahan kode otomatis diuji sebelum digabungkan atau dirilis.
Proses ini tidak hanya mempercepat pengembangan, tapi juga mengurangi risiko bug di produksi. TypeScript menambah lapisan keamanan dengan sistem tipe yang ketat, sedangkan CI/CD memastikan pengujian dilakukan secara konsisten dan transparan. Hasilnya? Aplikasi yang stabil, tim yang efisien, dan deployment yang lebih percaya diri.