Di Cypress kita membuat custom reporter dengan bantuan Mocha. Sebagai contoh sederhana kita akan membuat reporter yang menampilkan Nama Test, Status
Bila test berhasil muncul PASS, dan begitu test gagal muncul FAIL
cypress http status

Saat tutorial ini dibuat versi Cypress 8.6.0 dan Mocha 9.1.2

Install Cypress

mkdir ~/custom-reporter
cd ~/custom-reporter
# buat project baru
npm init
# install cypress
npm install cypress@latest

buat folder untuk tempat membuat test Cypress dan juga reporter baru nantinya

mkdir -p cypress/{integration,reporter}

Buat file baru cypress/integration/check-http.spec.js

let url_satu = "https://example.com"
let url_dua = "https://wikipedia.com"
let url_tiga = "https://kadfjasdfjasdjfsadfdio1.com"
 
describe('Situs 1 ' , () => {
  it('Cek HTTP STATUS 200 : ' + url_satu, () => {
    cy.request(`${url_satu}`).then((response) => {
      expect(response.status).to.eq(200)
    })
 
  })
})
 
describe('Situs 2 ' , () => {
  it('Cek HTTP STATUS 200 : ' + url_dua, () => {
    cy.request(`${url_dua}`).then((response) => {
      expect(response.status).to.eq(200)
    })
 
  })
})
 
describe('Situs 3 ' , () => {
  it('Cek HTTP STATUS 200 : ' + url_tiga, () => {
    cy.request(`${url_tiga}`).then((response) => {
      expect(response.status).to.eq(200)
    })
 
  })
})

testing tersebut sudah bisa langsung dijalankan

$(npm bin)/cypress run

default cypress report

Install Mocha

Dari folder project cypress anda, install mocha

npm install mocha

Buat file cypress/reporter/status-reporter.js, yang berisi

'use strict';
 
const Mocha = require('mocha');
 
const {
  EVENT_TEST_FAIL,
  EVENT_TEST_PASS,
} = Mocha.Runner.constants;
 
class StatusReporter {
  constructor(runner) {
 
    runner
      .on(EVENT_TEST_PASS, test => {
        const data = `${test.fullTitle()}, ${test.duration}, PASS`
        console.log(data);
      })
      .on(EVENT_TEST_FAIL, (test, err) => {
        const data = `${test.fullTitle()}, ${test.duration}, FAILED`
        console.log(data);
      })
  }
 
}
 
module.exports = StatusReporter;

dari contoh code diatas, event yang akan kita ambil adalah sewaktu test berhasil, atau gagal. Setelah itu hasilnya ditampilkan di console, jalankan reporter tersebut

$(npm bin)/cypress run --reporter cypress/reporter/status-reporter.js

Setelah report tersebut selesai dibuat dan ditest, kita ingin menambahkan fitur untuk menulis report tersebut ke file pass.txt dan failed.txt. Untuk dapat mengakses file kita akan menggunakan module fs, yang merupakan bawaan nodejs.

Ubah code diatas menjadi

'use strict';
 
const Mocha = require('mocha');
const fs = require('fs');
const testPass = '/tmp/pass.txt'
const testFailed = '/tmp/failed.txt'
 
const {
  EVENT_TEST_FAIL,
  EVENT_TEST_PASS,
} = Mocha.Runner.constants;
 
class StatusReporter {
  constructor(runner) {
 
    runner
      .on(EVENT_TEST_PASS, test => {
        const data = `${test.fullTitle()}, ${test.duration}, PASS`
        console.log(data);
        fs.appendFileSync(testPass, data);
      })
      .on(EVENT_TEST_FAIL, (test, err) => {
        const data = `${test.fullTitle()}, ${test.duration}, FAILED`
        console.log(data);
        fs.appendFileSync(testFailed, data);
      })
  }
 
}
 
module.exports = StatusReporter;

dari ke 5 baris yang kita tambahkan tersebut, fs.appendFileSync adalah yang bertugas untuk menuliskan hasil test ke file. Cek isi file failed.txt dan pass.txt
file okay

Sampai sekian pembahasan cypress kita, dilain kesempatan akan kita bahas lagi mengenai Cypress.

Leave a comment

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