E-Commerce Web Automation
Automation Cypress UI + API
- 38
- Test end-to-end
- 100%
- Pass rate
- 9
- Suite spec
Ringkasan
Suite Cypress yang menutup perjalanan belanja e-commerce secara utuh di situs demo Automation Exercise - mulai dari register dan login, lalu produk, keranjang, sampai checkout - berikut lapisan API-nya.
Pengujian API dibagi ke dua target: Restful Booker sebagai target CRUD-dengan-auth yang stabil, dan API Automation Exercise untuk pemeriksaan status code dan kasus negatif. Alur UI memakai Page Object Model.
Tujuan
Mengotomasi perjalanan register → login → jelajah produk → keranjang → checkout dengan assertion UI yang nyata, serta menutup REST API secara end-to-end: auth, CRUD, dan status code negatif.
Cakupan pengujian
Login & Register
- Menolak login dengan kredensial salah dan dengan email kosong
- Login berhasil dengan akun yang sudah terdaftar
- Mendaftarkan user baru sampai halaman Account Created
- Menolak registrasi dengan email yang sudah terdaftar
Produk
- Menampilkan semua produk dan membuka detail produk dari daftar
- Pencarian mengembalikan hasil yang cocok
- Pencarian produk yang tidak ada mengembalikan hasil kosong
- Filter berdasarkan kategori (Women > Dress)
Keranjang & Checkout
- Menambah satu dan beberapa produk; memverifikasi harga yang tampil
- Menghapus satu produk, dan menghapus satu dari beberapa produk tanpa mengacaukan sisanya
- Checkout end-to-end: keranjang → alamat → pembayaran → pesanan dibuat
- Tamu tidak bisa checkout - modal Register/Login muncul
Contact & Video Tutorials
- Mengirim form Contact Us beserta unggahan berkas
- Memblokir submit saat email wajib belum diisi
- Tautan Video Tutorials mengarah ke YouTube
API - Restful Booker (CRUD + auth)
- POST /auth mengembalikan token
- GET daftar, POST buat baru, GET berdasarkan id
- PUT update dan DELETE mewajibkan token
- GET booking yang sudah dihapus mengembalikan 404
API - Automation Exercise
- verifyLogin negatif: 404 user tidak dikenal, 400 email tidak ada, 405 method salah
- GET products dan GET brands
- POST pencarian produk berdasarkan kata kunci
- Siklus akun penuh: buat → verifikasi → hapus
Strategi pengujian
- Page Object Model dengan peta elemen per halaman dan action yang bisa dirantai.
- API dipisah: Restful Booker untuk CRUD yang stabil, Automation Exercise untuk status code.
- CRUD berurutan mengoper token auth dan booking id antar test.
- Data test dinamis - nama bertimestamp dan tanggal yang dihitung - menghindari tabrakan data.
- Unggah berkas dan validasi field wajib pada form Contact.
- GitHub Actions menjalankan suite dan menerbitkan laporan Mochawesome.
Arsitektur
- File specdescribe / it UI + API
- Page Objectpeta elemen + action
- Automation Exercise / Restful Bookersistem yang diuji
- GitHub ActionsCypress berjalan saat push
- Mochawesome → GitHub Pageslaporan yang dipublikasikan
Implementasi
class LoginPage {
elements = {
emailInput: () => cy.get('input[data-qa="login-email"]'),
passwordInput: () => cy.get('input[data-qa="login-password"]'),
loginButton: () => cy.get('[data-qa="login-button"]'),
};
visit() {
cy.visit('https://automationexercise.com');
cy.get('a[href="/login"]').click();
return this;
}
fillEmail(email) { this.elements.emailInput().type(email); return this; }
fillPassword(password) { this.elements.passwordInput().type(password); return this; }
submit() { this.elements.loginButton().click(); return this; }
}it('POST /auth returns a token', () => {
cy.request({
method: 'POST',
url: `${baseUrl}/auth`,
body: { username: 'admin', password: 'password123' },
}).then((res) => {
expect(res.status).to.eq(200)
expect(res.body.token).to.be.a('string').and.not.be.empty
token = res.body.token // reused by PUT & DELETE
})
})const fmt = (d) => d.toISOString().split('T')[0]
const checkout = new Date()
checkout.setDate(checkout.getDate() + 3)
const booking = {
firstname: `Fajar${Date.now()}`,
lastname: 'QA',
totalprice: 250,
depositpaid: true,
bookingdates: { checkin: fmt(new Date()), checkout: fmt(checkout) },
additionalneeds: 'Breakfast',
}Hasil
38
Test
di 9 suite spec
38
Lulus
0
Gagal
100%
Pass rate