Blog ini, akan membuat Anda memahami cara mengimplementasikan pengujian e2e menggunakan Cypress dan melakukan integrasi dan pengiriman berkelanjutan dengan CircleCI untuk pengujian Anda.
Tentang cemara
Cypress adalah alat pengujian front end generasi berikutnya, dibuat untuk aplikasi web modern. Cypress hadir sepenuhnya dengan fitur-fitur seperti:
— Perjalanan waktu
— Kemampuan debug
— Penantian otomatis
— Tangkapan Layar dan Video
— Pengujian lintas browser
Dan banyak lagi…
Cypress secara arsitektur berbeda. Tidak seperti kebanyakan alat, alat ini beroperasi dalam run loop yang sama dengan aplikasi Anda. Ini menyinkronkan dengan proses Node dan mengelola komunikasi, sinkronisasi, dan melakukan tugas atas nama satu sama lain.
Pengaturan Proyek
Mari mulai menyiapkan proyek dasar Cypress
— Buat folder dengan nama cypress-circleci
dan inisialisasi proyek node Anda
$ mkdir cypress-circleci
$ npm init
- Instal cypress dengan perintah
npm install cypress --save
- Buka pohon cemara dari proyek Anda
npx cypress open
- Struktur folder akan terlihat seperti ini
circleci-cypress
│
└───fixtures
│ │ sampleData.json
│ │
└───integration
│ │ siteVerify.js
│
└───plugins
│ │ index.js
│
└───screenshots
│ │ img1.pmg
│
└───results
│ │ test
│
└───supports
│ │ commands.js
│ │ index.js
|
└───cypress.json
└───package.json
- Buat tes dasar untuk memverifikasi situs “https://dikshitashirodkar.com'. Dan Anda dapat mengonfigurasi url dasar situs Anda di dalam cypress.json
{
"baseUrl": "https://dikshitashirodkar.com/",
"video": false,
"reporterOptions": {
"mochaFile": "cypress/results/tests-[hash].xml",
"toConsole": true
}
}
Catatan: Secara default, cypress menyediakan rekaman video dari pengujian yang dijalankan, di sini kami secara jelas menonaktifkannya menggunakan tanda video. Dan menambahkan konfigurasi untuk laporan xml.
File pengujian di bawah ini menggunakan fixtures
(digunakan untuk menyimpan dan mengelola data pengujian, yang tidak lain adalah file json
).
File perlengkapan sederhana dengan nama sample.json
{
"imageName": "dikshita",
"heading": "QA Talking point"
}
Inilah tes dasar integration/test.js
. Tes berisi:
1. Kunjungi situs
2. Verifikasi status respon situs menjadi 200
3. Verifikasi judul blog menjadi 'QA Talking point'
4. Verifikasikan ikon gambar blog menjadi 'dikshita'
describe("Verify the website", function() { before(function() { cy.visit("/") })
beforeEach(function() { cy.fixture("sample").then(function(sample) { this.sample = sample }) })
it("verify the status of the site", function() { cy.request("/about").should(function(response) { expect(response.status).to.eq(200) }) })
it("verify the heading of the blog", function() { cy.get(".head-logo") .children("a") .should("have.text", this.sample.heading) })
it("verfiy the image icon on the site", function() { console.log(this.sample, "printing data") cy.get(".profile-img") .should("have.attr", "src") .and("include", this.sample.imageName) }) })
Mari jalankan tes menggunakan perintah:
npm run cypress run --browser chrome
Output dari hasilnya akan seperti ini:
Spec Tests Passing Failing Pending Skipped
┌────────────────────────────────────────────────────────────────────────────────────────────────┐
│ ✔ tests/verifySite.js 00:08 3 3 - - - │
└────────────────────────────────────────────────────────────────────────────────────────────────┘
✔ All specs passed! 00:08 3 3 - - -
Ini dia, Anda telah berhasil mengkonfigurasi dan mengeksekusi…🏅
Jalankan cemara dengan CircleCI
CircleCI adalah alat integrasi dan penerapan berkelanjutan, yang membantu tim mengintegrasikan kode mereka ke dalam repositori dan membuat pengujian, “n” tidak sebanyak kali dalam sehari. CircleCI menggunakan Orbs
yang merupakan paket elemen konfigurasi sumber terbuka dan dapat dibagikan yang dapat digunakan kembali, yang mencakup pekerjaan, perintah, dan pelaksana.
CircleCI juga menyediakan Orb
untuk pengujian cypress tanpa menghabiskan waktu mengonfigurasi CircleCI. Itu juga mencatat hasil & menyediakan GUI.
Mari beralih ke mengonfigurasi CircleCI
- Buat folder .circleci
di direktori root proyek Anda
- Tambahkan file di dalam folder .circleci
sebagai config.yml
version: 2.1
orbs:
cypress: cypress-io/cypress@1
executors:
with-chrome:
resource_class: small
docker:
- image: "cypress/browsers:node14.16.0-chrome90-ff88"
workflows:
build:
jobs:
- cypress/install
- cypress/run:
requires:
- cypress/install
executor: with-chrome
browser: chrome
post-steps:
- run: ls
- store_test_results:
path: cypress/results
- store_artifacts:
path: cypress/screenshots
Catatan: Tempatkan proyek cypress Anda ke dalam sistem yang dikontrol versi (github atau bitbucket). Dalam kasus kami, kami akan menempatkannya di github.
Siapkan akun CircleCI Anda
1. Anda dapat masuk ke portal CircleCI melalui gitHub dan Anda akan memiliki akses ke semua repositori github Anda di layar daftar Proyek.
2. Untuk menyiapkan lingkaran untuk proyek git hub Anda, pilih Setup project
. Ini kemudian akan meminta Anda untuk memilih cabang tempat Anda ingin menjalankan pengujian dan cabang tersebut harus berisi folder config.yml
di dalam .circleci
. Atau pilihan lain adalah membuat file konfigurasi baru.
Catatan:
Untuk postingan blog ini, kami memicu pipeline secara manual. Namun Anda pasti bisa, mengotomatiskan proses pemicu saluran pipa.
3. Saat Anda menyiapkan proyek, alur akan terpicu secara otomatis dan kemajuan pembangunan dapat dilihat
4. Keberhasilan jalur pipa akan terlihat seperti:
5. Saluran pipa yang gagal akan terlihat seperti ini
6. Kami telah menambahkan konfigurasi untuk menyimpan hasil pengujian & artefak di file config.yml
kami. Oleh karena itu, kami juga dapat melihat detail pengujian yang gagal, di bagian pengujian dan tautan tangkapan layar pengujian di bagian artefak
Itu saja untuk blog ini. Semoga Anda menikmatinya. Terima kasih sudah membaca…!