Episode ini mengupas sejarah dan latar belakang lahirnya Cypress, evolusinya dari proyek pribadi menjadi framework open-source, keunggulan real-time reload dan automatic waiting, serta perbandingan dengan Selenium, Playwright, dan Jest untuk menentukan kapan memilih Cypress.

Episode 0 sudah memastikan environment kalian siap. Sekarang saatnya memahami mengapa Cypress ada. Episode 1 menjawab tiga pertanyaan besar: dari mana Cypress berasal, keunggulan apa yang ditawarkannya, dan mengapa kalian memilihnya dibandingkan alat lain.
Banyak orang mulai memakai Cypress karena tutorial, padahal memahami latar belakangnya jauh lebih berharga. Dengan tahu masalah yang dipecahkan, kalian akan lebih mudah memutuskan kapan memakai Cypress, kapan memakai Playwright, dan bagaimana memposisikannya dalam strategi quality assurance tim.
Cypress dikembangkan oleh Brian Mann pada sekitar tahun 2015. Latar belakangnya sederhana: frustrasi dengan keterbatasan Selenium — test yang lambat, flaky, dan sulit di-debug karena berjalan melalui WebDriver di luar browser. Brian memilih arsitektur berbeda: Cypress berjalan di dalam browser bersama aplikasi yang diuji.
Cypress versi 1.0 dirilis publik pada tahun 2017, dan sejak tahun 2019 proyek ini menjadi open-source di bawah lisensi MIT. Berbeda dari model lama, tidak ada server terpisah dan tidak ada WebDriver — dan hal ini mengubah cara engineer menulis serta men-debug test.
Arsitektur yang unik membawa pertumbuhan cepat. Komunitas, plugin, dan dukungan CI tumbuh bersamaan, dan Cypress menjadi salah satu framework E2E paling banyak dipakai di dunia. Per 2026, Cypress terus diperbarui dengan fitur seperti component testing, cross-origin testing lewat cy.origin(), serta eksperimen pada manajemen memori browser agar suite besar tidak membengkak.
npx cypress versionPerintah npx cypress version menampilkan versi yang terpasang. Biasakan cek ini rutin karena Cypress rilis beberapa kali dalam setahun.
Perjalanan versi Cypress menandai kematangan fitur yang terus bertambah:
cy.intercept() yang menggantikan cy.route() untuk network stubbing.cy.origin() dan peningkatan stabilitas untuk suite berskala besar.Rilis terbaru juga membawa test retries bawaan dan integrasi yang lebih rapat dengan Git serta CI. Mengikuti changelog resmi menjadi kebiasaan yang baik sebelum memperbarui framework di project kalian.
Saat menulis test di Test Runner, Cypress me-reload test secara otomatis setiap file disimpan. Kalau kalian memperbaiki selector, hasil langsung terlihat tanpa menekan tombol. Pengalaman ini memperpendek feedback loop secara drastis — sesuatu yang tidak dimiliki Selenium klasik.
Cypress menunggu elemen secara otomatis sebelum menjalankan aksi. Perintah seperti cy.get() secara bawaan menunggu elemen muncul di DOM tanpa memerlukan sleep manual. Kita akan membedah mekanisme ini secara penuh di episode 5.
Tip
Bandingkan dengan Selenium klasik: kalian harus menulis explicit wait atau menebak-nebak durasi sleep yang aman. Cypress menghapus tebakan itu — fokuslah pada alur test, bukan pada timing.
Setiap perintah Cypress mencatat snapshot: kalian bisa menghover perintah di Test Runner dan melihat kondisi halaman tepat pada titik tersebut. Ditambah Cypress Dashboard untuk merekam video, screenshot, dan analisis run di CI, debugging menjadi jauh lebih mudah. Kita akan mengupas dashboard di episode 11.
| Aspek | Cypress | Selenium | Playwright | Jest |
|---|---|---|---|---|
| Arsitektur | In-browser + Node proxy | WebDriver | CDP + Node | Runtime Node |
| Automatic waiting | Bawaan | Manual | Bawaan | Tidak relevan |
| Bahasa | JavaScript/TypeScript | Banyak bahasa | JavaScript/Python/dll | JavaScript |
| Fokus | E2E + component | E2E lintas bahasa | E2E lintas browser | Unit/component |
| Cross-browser | Chrome/Edge/Firefox/WebKit | Sangat luas | Chrome/Firefox/WebKit | Tanpa browser |
Perbedaan kunci: Selenium menekankan fleksibilitas bahasa dan browser, Playwright menawarkan kontrol halus atas browser via Chrome DevTools Protocol, sementara Jest dipakai untuk unit testing, bukan E2E. Cypress unggul di kemudahan debugging dan pengalaman developer, sedangkan Playwright unggul di kecepatan eksekusi multi-browser.
Kalian tidak wajib memilih satu saja. Banyak tim memakai Jest untuk unit, Cypress untuk E2E, dan mungkin Playwright untuk kebutuhan tertentu. Yang penting memahami kekuatan masing-masing.
Kapan memilih Cypress? Ketika prioritas kalian adalah developer experience, debugging visual, dan satu bahasa (JavaScript) untuk seluruh tim. Kapan memilih Playwright? Ketika kalian butuh kecepatan eksekusi paralel yang agresif dan dukungan lintas bahasa. Keduanya bukan musuh — banyak organisasi bahkan menjalankan keduanya dalam pipeline yang sama.
Kasus utama Cypress: menguji alur lengkap dari UI ke backend. Login, checkout, pencarian, onboarding — semua yang dilakukan pengguna nyata bisa dipetakan menjadi test. Ini bagian inti dari fase 3 series ini.
describe("Alur checkout", () => {
it("menyelesaikan pembelian dari keranjang", () => {
cy.visit("/produk");
cy.get("[data-cy=add-to-cart]").click();
cy.get("[data-cy=checkout]").click();
cy.url().should("include", "/checkout");
});
});cy.get("[data-cy=add-to-cart]") memilih tombol tambah ke keranjang lewat attribute data-cy, lalu .click() menirukan klik pengguna. Pola visit, get, action, assert seperti ini akan kita dalami di episode 4.
Sejak Cypress 9, kalian bisa menguji komponen React, Vue, dan Angular secara terisolasi dengan kecepatan mendekati unit test, namun dengan rendering browser sungguhan. Kita akan membahas ini di episode 9.
Cypress juga cocok menguji kerja sama antar modul aplikasi, misalnya memastikan form frontend mengirim data yang benar ke API — baik API asli maupun hasil stub dengan cy.intercept(). Kita akan membedahnya di episode 12.
Episode 1 memberi kalian konteks: Cypress lahir sekitar 2015 dari frustrasi terhadap Selenium, dirilis publik pada 2017, dan open-source sejak 2019. Keunggulannya ada di real-time reload, automatic waiting, debuggability, dan dashboard. Dibandingkan Selenium, Playwright, dan Jest, Cypress menonjol di pengalaman developer serta fokus E2E dan component testing.
Inti yang harus dibawa pulang:
Di episode 2 selanjutnya kita akan membahas konsep dasar dan arsitektur Cypress — komponen Test Runner, Dashboard, dan plugins, bagaimana Cypress berjalan di browser dan Node.js, test lifecycle dengan hooks, serta struktur project dan konfigurasi dasar. Ini adalah fondasi arsitektural yang akan menemani seluruh series.