Wbudowany w WordPress mechanizm weryfikacji adresu e-mail administratora — pojawiający się co kilka miesięcy od wersji 5.3 — przerywa automatyzację Playwright na stronach bez dostępu do SSH. Ten dodatkowy krok zmusza skrypty do oczekiwania na przycisk, który nigdy się nie pojawia, co powoduje przekroczenia czasu oczekiwania (timeouts) i wstrzymanie wdrożeń.

Co powoduje wstrzymanie procesu

Gdy skrypt Playwright loguje się do wp-admin, oczekuje, że pulpit nawigacyjny załaduje się natychmiast. Zamiast tego WordPress czasami przekierowuje na stronę, której adres URL zawiera adminhash=. Strona wyświetla pytanie: „Czy to nadal Twój adres?”, oferując dwa przyciski: Tak, to mój adres oraz Poczekam. Człowiek klika „Poczekam” i kontynuuje później; skrypt działający bez nadzoru wciąż szuka elementów pulpitu, nigdy ich nie znajduje i ostatecznie przekracza limit czasu.

Dlaczego ten komunikat istnieje

WordPress dodał ten komunikat, aby potwierdzić, że adres e-mail administratora jest nadal dostępny. Pojawia się on mniej więcej co kilka miesięcy, niezależnie od aktywności strony, i służy jako sprawdzenie bezpieczeństwa dla właścicieli witryn, którzy mogliby stracić dostęp do danego adresu.

Kogo to dotyczy

  • Programiści, którzy polegają na Playwright w celu przesyłania aktualizacji wtyczek, przeprowadzania testów UI lub wykonywania masowych zadań administracyjnych.
  • Dostawcy hostingu, którzy ograniczają dostęp do SSH, zmuszając użytkowników do automatyzacji poprzez przeglądarkę.
  • Właściciele stron, którzy doświadczają opóźnień w aktualizacjach, ponieważ automatyzacja nigdy nie dociera do ekranu aktualizacji.

Kosztem nie jest tylko kilka straconych sekund; powtarzające się niepowodzenia mogą wstrzymać zaplanowane okna konserwacyjne i wymusić ręczną interwencję.

Wykrywanie niechcianego ekranu

Obecność adminhash= w aktualnym adresie URL jest wiarygodnym wskaźnikiem. Ten ciąg znaków pojawia się wyłącznie na stronie weryfikacji e-mail, a nie na standardowym pulpicie ani żadnym innym ekranie administracyjnym.

Proste obejście

Wstaw sprawdzenie bezpośrednio po kroku logowania. Jeśli adres URL zawiera adminhash=, kliknij przycisk „Poczekam” i poczekaj, aż strona się załaduje, zanim przejdziesz dalej.

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

Wywołaj ensure_past_email_check(page) natychmiast po każdym udanym logowaniu. Funkcja nie robi nic, gdy ekran weryfikacji się nie pojawia, dzięki czemu skrypt pozostaje szybki i przewidywalny.

Kiedy stosować obejście

W przypadku zautomatyzowanych procesów, które muszą działać bez nadzoru człowieka — takich jak nocne aktualizacje wtyczek czy testy UI w ramach ciągłej integracji (CI) — obejście jest praktycznym rozwiązaniem. Traktuje ono krok weryfikacji jako przewidywalny objazd, a nie losową awarię.

Kontrargument

Niektórzy administratorzy argumentują, że automatyczne odrzucanie komunikatu może maskować rzeczywisty problem z dostarczaniem wiadomości e-mail. Jeśli adres e-mail administratora faktycznie stanie się niedostępny, strona może nie otrzymać krytycznych powiadomień. W takich przypadkach lepszym podejściem może być bardziej zniuansowane rozwiązanie — np. logowanie zdarzenia, wysłanie alertu lub wstrzymanie automatyzacji.

Na co zwrócić uwagę w przyszłości

  • WordPress może zmienić wzorzec adresu URL lub dodać dodatkowe kroki weryfikacji, co uniemożliwi działanie sprawdzenia adminhash=. Należy śledzić notatki z wydania wersji podstawowej.
  • Silnik selektorów Playwright ewoluuje; upewnij się, że selektor tekstowy "text=I'll wait" nadal pasuje do przycisku po ewentualnej zmianie projektu interfejsu użytkownika (UI).
  • Jeśli zarządzasz wieloma stronami, rozważ scentralizowanie logiki obejścia w wspólnej bibliotece, aby uniknąć duplikowania kodu.

Poprzez jawne obsłużenie strony potwierdzenia adresu e-mail administratora, programiści zmieniają sporadyczne przekroczenie czasu oczekiwania w rutynową część swoich skryptów Playwright, zapewniając niezawodność automatyzacji WordPressa, nawet gdy platforma wyświetla nieoczekiwany komunikat bezpieczeństwa.

Źródło: https://dev.to/susumun/browser-based-updates-getting-stuck-on-the-confirm-your-admin-email-screen-why-playwright-6io