Episode ini membahas migrasi dan upgrade Jest: meng-upgrade versi dengan aman, bermigrasi dari framework lain, menangani breaking changes dan refactoring test, serta menjaga stabilitas suite dalam jangka panjang.

Jest terus berkembang, dan suite kalian pun harus ikut. Episode 18 membahas migrating & upgrading Jest — proses meng-upgrade versi dengan aman, bermigrasi dari framework testing lain, menangani breaking changes dan refactoring test, serta menjaga stabilitas suite dalam jangka panjang.
Migrasi yang ceroboh bisa menghentikan seluruh tim selama berhari-hari. Dengan pendekatan yang terstruktur, upgrade menjadi rutinitas yang tenang dan bisa diprediksi.
Sebelum meng-upgrade, ketahui posisi kalian saat ini:
npx jest --version
npm outdated jestnpx jest --version menunjukkan versi yang terinstall, sedangkan npm outdated jest menampilkan versi terbaru yang tersedia. Catat juga perubahan besar antar versi — setiap major version biasanya punya daftar breaking changes di release notes.
Jangan pernah melompat beberapa major version sekaligus tanpa jeda. Langkah yang aman:
npm install --save-dev jest@29
npm testPerintah npm install --save-dev jest@29 menetapkan versi major tertentu secara eksplisit. Jalankan npm test setelahnya; kegagalan yang muncul adalah daftar kerja nyata untuk perbaikan.
Mocha, Jasmine, dan Ava memakai pola yang mirip dengan Jest. Sebagian besar test bisa dipetakan langsung:
describe dan it → sudah identik di Jest.expect(x).to.equal(y) → expect(x).toBe(y).assert.ok → expect(x).toBeTruthy().// Sebelum (Chai):
// expect(nilai).to.be.above(10);
// Sesudah (Jest):
test("nilai di atas 10", () => {
expect(nilai).toBeGreaterThan(10);
});expect(nilai).toBeGreaterThan(10) adalah padanan Jest dari expect(nilai).to.be.above(10). Pemetaan ini bisa dikerjakan secara mekanis untuk sebagian besar test.
Sinon dan spy library lain perlu dipetakan ke mocking engine Jest: sinon.spy menjadi jest.spyOn, sinon.stub menjadi jest.fn dengan mockReturnValue, dan sinon.mock digantikan pola jest.mock. Fokuskan perhatian di sini — mocking adalah bagian migrasi yang paling sering menimbulkan kejutan.
Beberapa kategori breaking changes yang umum saat upgrade Jest:
transform yang harus disesuaikan.testEnvironment.Untuk snapshot yang berubah karena format baru, jalankan --updateSnapshot hanya setelah memverifikasi diff — jangan menerima begitu saja.
Refactoring test bukan sekadar memperbaiki kegagalan. Ini kesempatan membersihkan: hapus test yang duplikat, gabungkan yang berpola sama dengan test.each, dan pisahkan helper yang tumbuh terlalu besar. Test yang rapi lebih mudah dirawat ketika upgrade berikutnya datang.
Stabilitas suite adalah produk dari kebiasaan, bukan keberuntungan. Beberapa praktik yang menjaga suite tetap stabil:
for i in 1 2 3; do npm test || break; donePerintah npm test || break dalam loop menjalankan suite tiga kali untuk mendeteksi flakiness. Jika suite gagal hanya di iterasi tertentu, ada test yang tidak deterministik dan perlu diselidiki.
Episode 18 membahas migrasi dan upgrade: meng-upgrade versi secara bertahap dan aman, memetakan API saat bermigrasi dari framework lain, menangani breaking changes dengan refactoring yang teratur, serta menjaga stabilitas suite lewat kebiasaan jangka panjang.
Inti yang harus dibawa pulang:
test.each untuk pola sama.Di episode 19 selanjutnya kita akan membahas operational readiness & runbooks — runbook untuk suite gagal dan flaky test, pengelolaan debugging dan kepemilikan test, strategi maintenance skala besar, serta pemulihan dari test regressions.