Layar verifikasi email admin bawaan WordPress—yang muncul setiap beberapa bulan sejak versi 5.3—merusak otomatisasi Playwright yang memperbarui plugin pada situs tanpa akses SSH. Langkah tambahan ini memaksa skrip untuk menunggu tombol yang tidak pernah muncul, menyebabkan timeout dan penghentian deployment.
Apa yang memicu kemacetan ini
Saat skrip Playwright masuk ke wp-admin, ia mengharapkan dashboard dimuat segera. Sebaliknya, WordPress terkadang mengalihkan ke halaman yang URL-nya mengandung adminhash=. Halaman tersebut bertanya, “Is this still your address?” dengan dua tombol: Yes, this is my address dan I’ll wait. Manusia akan mengklik “I’ll wait” dan melanjutkan nanti; skrip yang berjalan tanpa pengawasan terus mencari elemen dashboard, tidak pernah menemukannya, dan akhirnya mengalami timeout.
Mengapa prompt ini ada
WordPress menambahkan prompt ini untuk mengonfirmasi bahwa alamat email admin masih dapat dijangkau. Ini muncul kira-kira setiap beberapa bulan, terlepas dari aktivitas situs, dan dimaksudkan sebagai pemeriksaan keamanan bagi pemilik situs yang mungkin telah kehilangan akses ke alamat tersebut.
Siapa yang terdampak
- Developer yang mengandalkan Playwright untuk mendorong pembaruan plugin, menjalankan pengujian UI, atau melakukan tugas admin massal.
- Penyedia hosting yang membatasi SSH, sehingga memaksa pengguna untuk melakukan otomatisasi melalui browser.
- Pemilik situs yang melihat pembaruan tertunda karena otomatisasi tidak pernah mencapai layar pembaruan.
Biayanya bukan sekadar pemborosan beberapa detik; kegagalan yang berulang dapat menghentikan jendela pemeliharaan terjadwal dan memaksa intervensi manual.
Mendeteksi layar yang tidak diinginkan
Kehadiran adminhash= pada URL saat ini adalah indikator yang andal. String tersebut hanya muncul pada halaman verifikasi email, bukan pada dashboard reguler atau layar admin lainnya.
Cara bypass sederhana
Masukkan pemeriksaan tepat setelah langkah login. Jika URL mengandung adminhash=, klik tombol “I’ll wait” dan tunggu hingga halaman stabil sebelum melanjutkan.
def ensure_past_email_check(page):
if "adminhash=" in page.url:
page.click("text=I'll wait")
page.wait_for_load_state("networkidle")
Panggil ensure_past_email_check(page) segera setelah setiap login yang berhasil. Fungsi ini tidak melakukan apa pun saat layar verifikasi tidak muncul, sehingga menjaga skrip tetap cepat dan deterministik.
Kapan harus menggunakan bypass
Untuk alur kerja otomatis yang harus berjalan tanpa pengawasan manusia—seperti pembaruan plugin malam hari atau pengujian UI continuous-integration—bypass ini sangat praktis. Ini memperlakukan langkah verifikasi sebagai pengalihan yang dapat diprediksi, bukan kegagalan acak.
Argumen sebaliknya
Beberapa administrator berpendapat bahwa menolak prompt secara otomatis dapat menutupi masalah pengiriman email yang sebenarnya. Jika email admin benar-benar tidak dapat dijangkau, situs mungkin melewatkan notifikasi penting. Dalam kasus seperti itu, pendekatan yang lebih bernuansa—seperti mencatat kejadian, mengirim peringatan, atau menghentikan sementara otomatisasi—mungkin lebih baik.
Apa yang perlu diperhatikan selanjutnya
- WordPress dapat mengubah pola URL atau menambahkan langkah verifikasi tambahan, yang akan merusak pemeriksaan
adminhash=. Pantau terus catatan rilis core. - Mesin selector Playwright terus berkembang; pastikan selector teks
"text=I'll wait"tetap cocok dengan tombol tersebut setelah adanya desain ulang UI apa pun. - Jika Anda mengelola banyak situs, pertimbangkan untuk memusatkan logika bypass dalam library bersama untuk menghindari duplikasi kode.
Dengan menangani halaman konfirmasi email admin secara eksplisit, developer mengubah timeout yang sesekali terjadi menjadi bagian rutin dari skrip Playwright mereka, menjaga otomatisasi WordPress tetap andal bahkan ketika platform menyertakan prompt keamanan yang tidak terduga.
