playwright
Catatan teknis seputar web development, DevOps, dan integrasi AI.
19 artikel
- 08.07testing
E2E Modul Admin: Menguji Guard Role dan Bidang Lewat UI
Tiga spec Playwright buat area admin: login via UI beneran, CRUD sampai hapus permanen dengan verifikasi API, dan guard role/bidang yang diuji di level server.
TL;DR: Gue kira redirect frontend buat blokir editor dari menu Pengguna, ternyata gampang dibobol kalau backend gak ikut ngejaga. Jadi tes e2e nya ngecek dua lapis, menu yang ngilang di UI dan server yang wajib ngasih 403 kalau dipaksa bikin user. Ada trik login pakai exact biar gak salah klik, isi Tiptap lewat ProseMirror, sama cek hapus data langsung via API.
#playwright#e2e#testing - 04.19testing
Test E2E yang Bisa Dipanggil Ulang Pakai Nama Modul
Lupa nama file spec tiap mau nge-test satu halaman? Resolver tipis plus ledger cakupan yang boleh jujur.
TL;DR: Daripada pusing cari file test peta manual, sekarang tinggal pakai run_page.sh buat ngejalanin modulnya langsung. Dia cuma nerjemahin nama jadi file spec Playwright, jadi simpel banget. Terus ada INDEX.md yang jujur nyatet modul mana udah ada test mana belum.
#testing#playwright#e2e - 04.14testing
Unit Testing yang Isinya Bukan Cuma Unit Test
Satu script per tier testing: vet, integration MySQL asli, smoke gate, sampai E2E Playwright.
TL;DR: Dulu push kode ribet harus ketik command panjang manual suka ada yang kelupaan pas buru-buru. Sekarang semua diringkas jadi empat script backend frontend e2e sama smoke yang otomatis berhenti kalau ada yang gagal. Ditambah ada panduan jelas di README kapan harus jalanin tes yang mana jadi nggak nebak-nebak lagi.
#testing#bash#go - 22.08tooling
Selektor Otomasi Tiba-tiba Gagal Saat UI Berubah Bahasa
Profil browser ber-locale id-ID merender Tanya Qwen dan Salin, dan selector exact match langsung gagal. Pola regex alternation plus penguncian locale menyelesaikannya.
TL;DR: Skrip otomasi gua error gara-gara profil browser kebetulan pakai locale id-ID, jadi tombolnya dirender "Tanya Qwen" bukan "Ask Qwen", dan selector exact match langsung gagal. Solusinya pakai regex alternation kayak (?:Ask|Tanya) biar dua bahasa kecakup, plus kunci locale browser. Tambah juga tes assert sederhana biar tahu cepat kalau polanya pecah lagi.
#automation#playwright#regex - 18.37devops
Container Healthy, Browser Mati: Jebakan Migrasi Docker Compose
Status healthy lima jam padahal browser di dalam kontainer mati sejak awal. Pelajaran soal user default, HOME, dan healthcheck dari satu migrasi compose.
#docker#playwright#debugging - 11.30tooling
Login DeepSeek Hilang? Pindahkan Sesi, Jangan Rebuild Profil
Profil Camofox kehilangan login DeepSeek? Saya pindahkan cookies HttpOnly dan userToken localStorage ke profil yang sama, tanpa rebuild.
TL;DR: Sesi login DeepSeek di profil Camofox hilang karena ternyata ada dua lapis yang harus dipulihkan sekaligus: cookie HttpOnly di storage-state.json dan userToken di localStorage. Solusinya migrasi, bukan rebuild: ekspor cookies, dedupe by pasangan name-domain, injeksikan token via tiga skrip, plus keepalive polling tiap lima menit. Ingat, storage state itu kredensial plaintext—jaga seperti password dan regenerasi berkala.
#automation#playwright#deepseek - 22.34frontend
Textarea React Diotomasi, Tapi Diam Saja
Teks terlihat di layar tapi React tidak tahu ada perubahan. Kenapa manual assignment gagal, dan cara bypass controlled component pakai native prototype setter.
TL;DR: Kalau isi textarea lewat assignment biasa, React tidak sadar karena setter aslinya sudah diganti wrapper React yang menelan event buatan. Solusinya panggil setter asli dari HTMLTextAreaElement.prototype, lalu dispatch event input dengan bubbles: true supaya React menangkap perubahannya. Tombol kirim yang cuma ikon tanpa teks? Cukup tekan Enter lewat API keyboard Playwright.
#deepseek#react#automation - 04.43ai
Scraper Jawaban Chat AI Nyangkut di Gema Prompt
Capture scraper chat AI malah menangkap prompt sendiri. Solusinya: filter gema, klik Copy lalu baca clipboard, plus sidecar URL untuk recover jawaban.
TL;DR: Scraper sempat menangkap gema prompt sendiri karena anchor cocok di bubble prompt, lalu diperbaiki dengan filter marker dan syarat panjang minimal. Karena DOM chat tervirtualisasi, ekstraksi dipindah ke clipboard: tombol Copy diklik Playwright lalu teksnya dibaca lewat clipboard API. File sidecar URL menyediakan mode recover, menguatkan prinsipnya: ambil data dari clipboard, bukan render, dan siapkan jalur pemulihan sejak awal.
#automation#playwright#qwen - 02.40frontend
DOM Chat AI Cuma Nyimpen Setengah Jawaban
Scraping jawaban chat AI dari DOM cuma dapat setengah karena virtualisasi. Jalur utuhnya: klik Copy, baca clipboard, plus kontrak output ke model.
TL;DR: Chat modern pakai virtualisasi, jadi DOM cuma snapshot yang terus berubah dan scraping innerText selalu kepotong. Solusinya klik tombol Copy lalu baca clipboard, dilapis accessibility tree dan innerText, dengan polling di tab baru biar stabil. Paling murah, kasih kontrak ke model: bungkus jawaban dalam blok kode ditutup sentinel ===SELESAI===.
#automation#playwright#llm