WordPress’s built-in admin-email verification screen—shown every few months since version 5.3—breaks Playwright automation that updates plugins on sites without SSH access. The extra step forces scripts to wait for a button that never appears, causing timeouts and stalled deployments.

O que causa a interrupção

Quando um script do Playwright faz login no wp-admin, ele espera que o dashboard carregue imediatamente. Em vez disso, o WordPress às vezes redireciona para uma página cuja URL contém adminhash=. A página pergunta: “Is this still your address?” com dois botões: Yes, this is my address e I’ll wait. Um humano clica em “I’ll wait” e prossegue mais tarde; um script não supervisionado continua procurando pelos elementos do dashboard, nunca os encontra e, eventualmente, sofre um timeout.

Por que o aviso existe

O WordPress adicionou o aviso para confirmar que o endereço de e-mail do administrador ainda é acessível. Ele aparece aproximadamente a cada poucos meses, independentemente da atividade do site, e tem o objetivo de ser uma verificação de segurança para proprietários de sites que possam ter perdido o acesso ao endereço.

Quem é afetado

  • Desenvolvedores que dependem do Playwright para aplicar atualizações de plugins, executar testes de UI ou realizar tarefas administrativas em massa.
  • Provedores de hospedagem que restringem o SSH, forçando os usuários a automatizar através do navegador.
  • Proprietários de sites que veem atualizações atrasadas porque a automação nunca chega à tela de atualização.

O custo não é apenas alguns segundos perdidos; falhas repetidas podem interromper janelas de manutenção agendadas e forçar intervenção manual.

Detectando a tela indesejada

A presença de adminhash= na URL atual é um indicador confiável. A string aparece apenas na página de verificação de e-mail, não no dashboard regular ou em qualquer outra tela de administração.

Um bypass simples

Insira uma verificação logo após a etapa de login. Se a URL contiver adminhash=, clique no botão “I’ll wait” e aguarde a página estabilizar antes de continuar.

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

Chame ensure_past_email_check(page) imediatamente após cada login bem-sucedido. A função não faz nada quando a tela de verificação não aparece, mantendo o script rápido e determinístico.

Quando usar o bypass

Para fluxos de trabalho automatizados que devem ser executados sem supervisão humana — como atualizações noturnas de plugins ou testes de UI de integração contínua — o bypass é prático. Ele trata a etapa de verificação como um desvio previsível em vez de uma falha aleatória.

Contraponto

Alguns administradores argumentam que descartar o aviso automaticamente pode mascarar um problema real de entrega de e-mail. Se o e-mail do administrador realmente se tornar inacessível, o site pode perder notificações críticas. Nesses casos, uma abordagem mais sutil — registrar o evento, enviar um alerta ou pausar a automação — pode ser preferível.

O que observar a seguir

  • O WordPress pode alterar o padrão da URL ou adicionar etapas de verificação adicionais, o que quebraria a verificação de adminhash=. Fique atento às notas de lançamento do core.
  • O mecanismo de seletores do Playwright evolui; certifique-se de que o seletor de texto "text=I'll wait" continue correspondendo ao botão após qualquer redesenho de UI.
  • Se você gerencia muitos sites, considere centralizar a lógica de bypass em uma biblioteca compartilhada para evitar código duplicado.

Ao lidar explicitamente com a página de confirmação de e-mail do administrador, os desenvolvedores transformam um timeout ocasional em uma parte rotineira de seus scripts do Playwright, mantendo a automação do WordPress confiável mesmo quando a plataforma apresenta um aviso de segurança inesperado.

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