Perubahan kecil pada CSS, komponen, atau font dapat membuat halaman yang sebelumnya rapi menjadi berantakan. Tombol bisa bergeser, teks terpotong, jarak antarelemen berubah, atau tampilan mobile rusak tanpa menimbulkan error JavaScript. Masalah seperti ini sering lolos dari pengujian fungsional karena tombol masih bisa diklik dan halaman tetap terbuka. Untuk menguji perubahan tampilan secara otomatis, lihat panduan otomatisasi browser dengan WebDriver BiDi dan dokumentasi visual comparison testing dari Playwright.
Visual regression testing membantu menemukan perubahan tampilan yang tidak diharapkan dengan membandingkan tangkapan layar versi terbaru terhadap gambar acuan. Teknik ini berguna untuk situs berita, toko daring, dashboard, aplikasi web, maupun komponen antarmuka yang dipakai di banyak halaman. Tujuannya bukan membekukan desain, melainkan memastikan perubahan visual terjadi dengan sengaja.
Apa itu visual regression testing?
Pengujian ini mengambil screenshot pada kondisi yang sudah ditentukan, lalu membandingkannya dengan baseline atau gambar acuan. Perangkat pengujian menandai piksel atau area yang berbeda melebihi ambang tertentu. Tim kemudian meninjau perbedaan tersebut untuk memutuskan apakah itu perubahan yang benar atau regresi yang perlu diperbaiki.
Berbeda dari pengujian fungsional yang memeriksa perilaku, pengujian visual berfokus pada hasil yang terlihat. Keduanya saling melengkapi: formulir mungkin berhasil mengirim data, tetapi labelnya bisa bertumpuk pada layar kecil. Pengujian visual juga tidak menggantikan pemeriksaan aksesibilitas, kontras warna, atau penggunaan keyboard.
Menentukan halaman dan kondisi yang diuji
Mulailah dari halaman yang paling penting, bukan langsung mengambil screenshot seluruh situs. Pilih halaman yang sering dikunjungi, alur konversi utama, komponen bersama seperti header dan navigasi, serta tampilan yang pernah mengalami masalah. Untuk situs konten, contoh yang masuk akal adalah halaman artikel, halaman kategori, hasil pencarian, dan menu mobile.
Tentukan kondisi pengambilan gambar secara konsisten: ukuran viewport, skala perangkat, status login, data contoh, bahasa, tema, dan keadaan komponen. Jika satu screenshot diambil saat banner cookie muncul sementara baseline tidak menampilkannya, perbandingan akan menghasilkan banyak perbedaan yang tidak relevan. Data uji sebaiknya stabil dan tidak memuat informasi pribadi pengguna.
Membuat baseline yang dapat dipercaya
Baseline adalah referensi yang dianggap benar. Ambil gambar setelah desain dan konten ditinjau, lalu simpan bersama kode atau sistem pengujian agar perubahan dapat dilacak. Jangan otomatis menerima setiap screenshot baru sebagai baseline; kebiasaan itu dapat membuat regresi masuk tanpa pemeriksaan.
Gunakan lingkungan pengujian yang konsisten. Versi browser, font, pustaka, dan sistem operasi dapat memengaruhi hasil render. Tunggu hingga font dan gambar selesai dimuat, matikan animasi yang tidak diperlukan, dan gunakan data fixture yang tetap. Untuk elemen dinamis seperti jam, iklan, atau avatar acak, tetapkan nilai tetap atau kecualikan area tersebut secara selektif.
Alur kerja pengujian yang praktis
- Siapkan skenario. Catat URL, viewport, kondisi autentikasi, serta tindakan yang harus dilakukan sebelum screenshot diambil.
- Jalankan pengujian pada setiap perubahan. Integrasikan proses ke pipeline continuous integration agar perubahan tampilan diperiksa saat pull request, bukan hanya menjelang rilis.
- Tinjau diff visual. Lihat gambar acuan, hasil terbaru, dan overlay perbedaannya. Fokus pada perubahan yang memengaruhi keterbacaan, navigasi, hierarki, atau tindakan pengguna.
- Putuskan hasilnya. Jika perubahan memang disengaja, perbarui baseline setelah mendapat persetujuan. Jika tidak, perbaiki kode lalu jalankan pengujian kembali.
- Simpan bukti. Arsipkan screenshot dan laporan kegagalan agar tim dapat menelusuri kapan masalah muncul dan perubahan kode yang berkaitan.
Alat seperti Playwright menyediakan dukungan screenshot dan perbandingan snapshot. Dokumentasi resminya dapat dibaca di panduan visual comparisons Playwright. Pilihan alat lain dapat disesuaikan dengan framework, kebutuhan kolaborasi, dan biaya penyimpanan artefak pengujian.
Mengurangi false positive
Tidak semua perbedaan piksel berarti bug. Antialiasing font, rendering GPU, perubahan data, dan waktu pemuatan dapat menimbulkan noise. Kurangi sumber variasi terlebih dahulu sebelum memperbesar ambang toleransi. Ambang yang terlalu longgar justru dapat menyembunyikan masalah penting, sedangkan ambang terlalu ketat membuat tim lelah meninjau laporan.
Gunakan toleransi berdasarkan konteks. Pergeseran satu piksel pada ikon dekoratif mungkin tidak kritis, tetapi perubahan posisi tombol pembayaran atau teks peringatan patut diperiksa. Hindari mengecualikan seluruh bagian halaman hanya karena satu elemen dinamis. Pengecualian yang sempit membuat tes tetap bernilai.
Menentukan prioritas perbaikan
Ketika banyak perbedaan muncul, prioritaskan berdasarkan dampak pengguna. Perubahan yang membuat teks tidak terbaca, tombol utama tertutup, menu tidak dapat digunakan, atau layout meluber pada mobile harus didahulukan. Perubahan dekoratif kecil dapat ditinjau kemudian jika tidak memengaruhi konsistensi merek atau aksesibilitas.
Hubungkan laporan visual dengan pemilik komponen. Jika satu perubahan pada tombol mengubah puluhan halaman, komponen bersama itu kemungkinan menjadi sumber masalah. Pengujian komponen secara terisolasi dapat mempercepat diagnosis sebelum tes halaman penuh dijalankan kembali.
Checklist sebelum menerapkan
- Pilih halaman penting dan variasi viewport desktop serta mobile.
- Gunakan data, font, browser, dan keadaan antarmuka yang konsisten.
- Tinjau baseline sebelum menyetujuinya sebagai referensi baru.
- Jalankan tes di pipeline dan simpan artefak kegagalan.
- Gabungkan pengujian visual dengan tes fungsional serta pemeriksaan aksesibilitas.
Kesimpulan
Visual regression testing memberi lapisan perlindungan terhadap kerusakan antarmuka yang tidak selalu terlihat dari log atau tes fungsi. Hasil terbaik datang dari baseline yang terkontrol, lingkungan yang stabil, dan proses peninjauan yang membedakan perubahan desain yang disengaja dari bug. Mulailah dari halaman paling penting, ukur gangguan yang benar-benar dialami pengguna, lalu perluas cakupan secara bertahap.
Untuk menjaga proses tetap ringan, tetapkan batas cakupan yang realistis. Jalankan tes cepat pada komponen yang sering berubah untuk setiap commit, lalu jalankan rangkaian halaman utama pada pull request atau build malam. Catat durasi tes dan jumlah kegagalan yang benar-benar valid. Jika pengujian terlalu lambat atau terlalu bising, tinjau pemilihan skenario dan data uji sebelum menghapus tes yang bernilai. Dengan pendekatan bertahap, tim dapat memperoleh umpan balik lebih cepat tanpa menjadikan screenshot sebagai pengganti penilaian desain.
PENGALAMAN BARU Coba tampilan baru Penasaran dengan pengalaman membaca Nazuaf versi modern? Coba tampilan baru yang dirancang agar nyaman dibaca dari ponsel dan pc. Buka versi modern dan lanjutkan membaca artikel ini. Jelajahi tampilan baru Nazuaf versi modern · Ketuk kartu untuk mencoba