WordPress'in yerleşik yönetici e-postası doğrulama ekranı—sürüm 5.3'ten beri birkaç ayda bir gösterilir—SSH erişimi olmayan sitelerde eklentileri güncelleyen Playwright otomasyonunu bozuyor. Bu ekstra adım, betiklerin asla görünmeyen bir düğme için beklemesine neden olarak zaman aşımına ve aksayan dağıtımlara yol açıyor.

Duraksamaya ne sebep oluyor

Bir Playwright betiği wp-admin'e giriş yaptığında, panelin hemen yüklenmesini bekler. Bunun yerine WordPress, bazen URL'si adminhash= içeren bir sayfaya yönlendirme yapar. Sayfa, "Bu hala adresiniz mi?" diye sorar ve iki düğme sunar: Evet, bu benim adresim ve Bekleyeceğim. Bir insan "Bekleyeceğim"e tıklar ve daha sonra devam eder; denetimsiz bir betik ise panel öğelerini aramaya devam eder, onları asla bulamaz ve sonunda zaman aşımına uğrar.

Bu uyarı neden var

WordPress, yönetici e-posta adresinin hala erişilebilir olduğunu doğrulamak için bu uyarıyı ekledi. Site etkinliğinden bağımsız olarak yaklaşık her birkaç ayda bir görünür ve adrese erişimini kaybetmiş olabilecek site sahipleri için bir güvenlik kontrolü olarak tasarlanmıştır.

Kimler etkileniyor

  • Geliştiriciler; eklenti güncellemelerini göndermek, UI testleri çalıştırmak veya toplu yönetici görevlerini yerine getirmek için Playwright'a güvenenler.
  • Barındırma sağlayıcıları; SSH erişimini kısıtlayarak kullanıcıları tarayıcı üzerinden otomasyon yapmaya zorlayanlar.
  • Site sahipleri; otomasyon güncelleme ekranına asla ulaşamadığı için gecikmiş güncellemelerle karşılaşanlar.

Maliyet sadece birkaç saniyelik kayıp değildir; tekrarlanan hatalar planlı bakım pencerelerini durdurabilir ve manuel müdahale gerektirebilir.

İstenmeyen ekranın tespiti

Mevcut URL'de adminhash= ifadesinin bulunması güvenilir bir göstergedir. Bu dize yalnızca e-posta doğrulama sayfasında görünür; normal panelde veya diğer yönetici ekranlarında görünmez.

Basit bir atlatma yöntemi

Giriş adımından hemen sonra bir kontrol ekleyin. Eğer URL adminhash= içeriyorsa, “Bekleyeceğim” düğmesine tıklayın ve devam etmeden önce sayfanın oturmasını bekleyin.

def ensure_past_email_check(page):
    if "adminhash=" in page.url:
        page.click("text=I'll wait")
        page.wait_for_load_state("networkidle")

Her başarılı girişten hemen sonra ensure_past_email_check(page) fonksiyonunu çağırın. Fonksiyon, doğrulama ekranı görünmediğinde hiçbir şey yapmaz; böylece betiğin hızlı ve deterministik kalmasını sağlar.

Atlatma yöntemi ne zaman kullanılmalı

Gece eklenti güncellemeleri veya sürekli entegrasyon (CI) UI testleri gibi insan denetimi olmadan çalışması gereken otomatik iş akışları için bu atlatma yöntemi pratiktir. Doğrulama adımını rastgele bir hata yerine öngörülebilir bir sapma olarak ele alır.

Karşı görüş

Bazı yöneticiler, uyarının otomatik olarak reddedilmesinin gerçek bir e-posta iletim sorununu maskeleyebileceğini savunuyor. Eğer yönetici e-postasına gerçekten ulaşılamaz hale gelinirse, site kritik bildirimleri kaçırabilir. Bu gibi durumlarda; olayı günlüğe kaydetmek, bir uyarı göndermek veya otomasyonu duraklatmak gibi daha hassas bir yaklaşım tercih edilebilir.

Bundan sonra nelere dikkat edilmeli

  • WordPress URL desenini değiştirebilir veya ek doğrulama adımları ekleyebilir, bu da adminhash= kontrolünü bozabilir. Çekirdek sürüm notlarını takip edin.
  • Playwright'ın seçici motoru gelişmektedir; herhangi bir UI tasarım değişikliğinden sonra "text=I'll wait" metin seçicisinin düğmeyle eşleşmeye devam ettiğinden emin olun.
  • Çok sayıda site yönetiyorsanız, kod tekrarını önlemek için atlatma mantığını paylaşılan bir kütüphanede merkezileştirmeyi düşünün.

Geliştiriciler, yönetici e-postası onay sayfasını açıkça ele alarak, ara sıra yaşanan zaman aşımını Playwright betiklerinin rutin bir parçası haline getirir ve platform beklenmedik bir güvenlik uyarısı çıkarsa bile WordPress otomasyonunun güvenilir kalmasını sağlar.

Kaynak: https://dev.to/susumun/browser-based-updates-getting-stuck-on-the-confirm-your-admin-email-screen-why-playwright-6io