Pular para o conteúdo
SDETRole
SDETRole

Glossário · Automação de UI

Auto-waiting (espera automática)

Em inglês: Auto-waiting

Também chamado de: auto-wait, espera automática, actionability checks, verificações de acionabilidade

Definição

Recurso do framework que espera o elemento ficar pronto (visível, estável e habilitado) antes de interagir com ele, em vez de depender de sleeps fixos.

Auto-waiting (espera automática) significa que o framework de automação verifica se um elemento está pronto antes de executar uma ação e continua tentando até que esteja ou até que um timeout expire. Playwright e Cypress já trazem isso embutido. No Playwright, click() espera o elemento estar anexado ao DOM, visível, estável (sem animação), apto a receber eventos (não coberto por outro elemento) e habilitado. Você escreve a ação; o framework cuida do timing.

Exemplo

import { test, expect } from '@playwright/test';

test('saves the profile', async ({ page }) => {
  await page.goto('/profile');
  await page.getByLabel('Display name').fill('Ada');
  // Waits until the button is visible, stable, enabled and not covered
  await page.getByRole('button', { name: 'Save' }).click();
  // Retries until the toast appears or the expect timeout is reached
  await expect(page.getByRole('status')).toHaveText('Profile saved');
});

Não há nenhum waitForTimeout. Se o botão de salvar ficar desabilitado por um instante enquanto o formulário é validado, o clique espera em vez de falhar.

Diferença em relação às esperas explícitas e implícitas

O Selenium WebDriver não faz auto-waiting antes das ações. Você configura uma espera implícita, que só afeta quanto tempo o findElement fica consultando até o elemento existir, ou escreve uma espera explícita com WebDriverWait e uma condição de ExpectedConditions, como elementToBeClickable. O auto-waiting se parece mais com uma espera explícita que o framework escreve para você em cada ação, com verificações escolhidas para aquela ação: fill(), por exemplo, também exige que o elemento seja editável.

Limitações

  • Ele espera pelo elemento, não pelo estado do negócio. Se o botão já está clicável antes de os dados que ele envia terem carregado, o auto-waiting não vai te salvar. Faça primeiro uma asserção sobre o estado de que você precisa.
  • Não se aplica a valores lidos uma única vez. await locator.textContent() retorna o que estiver lá naquele momento. Para esperar por um texto, use uma web-first assertion como toHaveText.
  • Pode esconder lentidão. Um passo que sempre consome quase todo o timeout passa, mas é um sinal de performance que vale investigar no trace.
  • force: true pula as verificações. Às vezes é necessário para controles customizados, mas geralmente está mascarando um problema real.

Digite para buscar em todo o SDETRole.

Busca de texto completo com Pagefind · roda no seu navegador Abrir página de busca →