Встроенное в WordPress окно подтверждения административного email-адреса — появляющееся каждые несколько месяцев, начиная с версии 5.3 — нарушает работу автоматизации Playwright при обновлении плагинов на сайтах без доступа по SSH. Этот лишний шаг заставляет скрипты ждать кнопку, которая никогда не появляется, что приводит к таймаутам и остановке развертывания.

Что вызывает задержку

Когда скрипт Playwright авторизуется в wp-admin, он ожидает немедленной загрузки панели управления. Вместо этого WordPress иногда перенаправляет на страницу, URL которой содержит adminhash=. На странице отображается вопрос: «Is this still your address?» («Это все еще ваш адрес?») с двумя кнопками: Yes, this is my address («Да, это мой адрес») и I’ll wait («Я подожду»). Человек нажимает «I’ll wait» и продолжает работу позже; неконтролируемый скрипт продолжает искать элементы панели управления, не находит их и в итоге завершается по таймауту.

Зачем нужно это окно

WordPress добавил это окно, чтобы подтвердить, что административный email-адрес по-прежнему доступен. Оно появляется примерно каждые несколько месяцев, независимо от активности сайта, и служит проверкой безопасности для владельцев сайтов, которые могли потерять доступ к этому адресу.

Кого это касается

  • Разработчики, которые используют Playwright для обновления плагинов, проведения UI-тестов или выполнения массовых административных задач.
  • Хостинг-провайдеры, ограничивающие доступ по SSH, что вынуждает пользователей автоматизировать процессы через браузер.
  • Владельцы сайтов, которые сталкиваются с задержками обновлений, так как автоматизация не может добраться до экрана обновления.

Цена вопроса — не просто несколько потерянных секунд; повторяющиеся сбои могут сорвать запланированные окна технического обслуживания и потребовать ручного вмешательства.

Как обнаружить нежелательное окно

Наличие adminhash= в текущем URL является надежным индикатором. Эта строка появляется только на странице подтверждения email, а не в обычной панели управления или на других административных экранах.

Простой способ обхода

Вставьте проверку сразу после шага входа в систему. Если URL содержит adminhash=, нажмите кнопку «I’ll wait» и дождитесь завершения загрузки страницы, прежде чем продолжать.

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

Вызывайте ensure_past_email_check(page) сразу после каждого успешного входа. Если окно подтверждения не появляется, функция ничего не делает, что позволяет скрипту работать быстро и предсказуемо.

Когда стоит использовать обход

Для автоматизированных рабочих процессов, которые должны выполняться без участия человека — таких как ночные обновления плагинов или UI-тесты в рамках непрерывной интеграции (CI) — такой обход вполне практичен. Он рассматривает шаг подтверждения как предсказуемое отклонение, а не как случайный сбой.

Контраргумент

Некоторые администраторы утверждают, что автоматическое закрытие окна может скрыть реальную проблему с доставкой почты. Если административный email действительно станет недоступен, сайт может пропустить критически важные уведомления. В таких случаях предпочтительнее использовать более тонкий подход — например, логировать событие, отправлять оповещение или приостанавливать автоматизацию.

На что обратить внимание в будущем

  • WordPress может изменить шаблон URL или добавить дополнительные шаги проверки, что нарушит проверку adminhash=. Следите за описанием релизов ядра.
  • Движок селекторов Playwright постоянно развивается; убедитесь, что текстовый селектор "text=I'll wait" по-прежнему соответствует кнопке после любого редизайна интерфейса.
  • Если вы управляете множеством сайтов, рассмотрите возможность централизации логики обхода в общей библиотеке, чтобы избежать дублирования кода.

Явно обрабатывая страницу подтверждения административного email, разработчики превращают периодические таймауты в рутинную часть своих скриптов Playwright, обеспечивая надежность автоматизации WordPress даже тогда, когда платформа выдает неожиданное окно безопасности.

Источник: https://dev.to/susumun/browser-based-updates-getting-stuck-on-the-confirm-your-admin-email-screen-why-playwright-6io