Melakukan end to end testing kita akan menggunakan Cypress, beberapa kelebihan yang dimilikinya adalah multi browser support (Firefox, Electron, Google Chrome), mudah untuk membuat testing baik untuk API ataupun Web UI.

Kelebihan cypress yang lain:
1. Time travel, bisa digunakan untuk merekam saat script dijalankan baik dalam bentuk screenshot ataupun video.
2. Debuggability, mudah untuk di debug karena tersedia GUI
3. Network Traffic Control, mengontrol kecepatan internet yang ingin digunakan, contoh ADSL, 3G, 4G, 5G, Fiber.

mari kita mulai langkah demi langkah install cypress sampai membuat testing sederhana.

Pastikan anda sudah menginstall nodejs, lalu buat folder tempat menyimpan cypress

mkdir ~/cypress-testing
cd ~/cypress-testing
npm init

biarkan semua nilai default
npm init terminal linux

Install Cypress

Pindah ke folder yang baru dibuat, lalu install cypress

cd ~/cypress-testing
npm install cypress --save-dev

cek versi yang terinstall

$ node_modules/.bin/cypress -v
# output
Cypress package version: 7.4.0
Cypress binary version: 7.4.0
Electron version: 12.0.0-beta.14
Bundled Node version: 14.15.1

untuk pertama kali jalankan cypress, setelah menjalankan ini cypress akan menggenerate folder baru, beserta beberapa test file

node_modules/.bin/cypress open

keluar dari GUI cypress. Lalu hapus file test yang di generate oleh cypress, karena kita akan membuat dari awal.
cypress gui
bila anda mulai dari awal, ada baiknya buat sendiri folder cypress biar tidak ada file yang digenerate. Tetapi untuk pemula cara ini lebih diutamakan karena anda bisa langsung menggunakan fitur-fitur testing cypress tanpa perlu membuat test.

Hapus folder cypress dan buat baru

rm -fr cypress
mkdir -p cypress/integration

Sebagai contoh kita akan membuat script untuk membuka situs https://jaranguda.com, lalu di cek apakah situs tersebut bisa dibuka. Biasanya bila balikan dari server jaranguda.com adalah 200 (HTTP status 200) itu tandanya situs tersebut berhasil dibuka.

Buat file cypress/integration/jaranguda.spec.js yang berisi

context("jaranguda-com", () => {
  it("Buka situs jaranguda.com", () => {
    cy.request('https://jaranguda.com').should((response) => {
      expect(200).to.equal(response.status)
    })
  });
});

jalankan script test diatas dengan mode headless

node_modules/.bin/cypress run

cypress headless result
saya lebih prefer headless daripada menggunakan browser, karena lebih cepat dijalankan. Untuk menjalankan dengan GUI ganti run menjadi open.

dengan cy.request() kita bisa lihat respon header dari server. Untuk tes selanjutnya kita akan menggunakan cy.visit(), untuk membuka website dan mengklik link di situs tersebut

context("jaranguda-com", () => {
  it("Buka situs jaranguda.com", () => {
    cy.request('https://jaranguda.com').should((response) => {
      expect(200).to.equal(response.status)
    })
  });
 
  it("Buka situs jaranguda.com dan klik link", () => {
    cy.visit("https://jaranguda.com");
    cy.get('#recent-posts-12 > .widget-wrap > ul > :nth-child(2) > a').click();
  });
 
});

test cypress beberapa step

Join the Conversation

1 Comment

Your email address will not be published. Required fields are marked *