Saltar al contenido
SDETRole
SDETRole

Glosario · Automatización de UI

Auto-waiting (espera automática)

En inglés: Auto-waiting

También llamado: auto-wait, espera automática, auto waiting, actionability checks

Definición

Función de un framework que espera a que un elemento esté listo (visible, estable y habilitado) antes de actuar sobre él, en lugar de usar pausas fijas.

El auto-waiting significa que el framework de automatización comprueba que un elemento está listo antes de realizar una acción, y sigue reintentando hasta que lo está o hasta que vence un timeout. Playwright y Cypress lo traen integrado. En Playwright, click() espera a que el elemento esté adjunto al DOM, visible, estable (sin animaciones), capaz de recibir eventos (que no lo tape otro elemento) y habilitado. Tú escribes la acción; el framework se encarga de los tiempos.

Ejemplo

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');
});

No hay ningún waitForTimeout. Si el botón de guardar queda deshabilitado un momento mientras el formulario se valida, el clic espera en lugar de fallar.

En qué se diferencia de las esperas explícitas e implícitas

Selenium WebDriver no espera automáticamente antes de las acciones. O bien configuras una espera implícita, que solo afecta al tiempo que findElement sigue buscando un elemento hasta que exista, o bien escribes una espera explícita con WebDriverWait y una condición de ExpectedConditions como elementToBeClickable. El auto-waiting se parece más a una espera explícita que el framework escribe por ti en cada acción, con comprobaciones elegidas para esa acción: fill(), por ejemplo, también exige que el elemento sea editable.

Límites

  • Espera al elemento, no al estado de negocio. Si el botón se puede pulsar antes de que hayan cargado los datos que envía, el auto-waiting no te salvará. Primero haz una assertion sobre el estado que necesitas.
  • No se aplica a valores que lees una sola vez. await locator.textContent() devuelve lo que haya en ese momento. Para esperar un texto, usa una web-first assertion como toHaveText.
  • Puede ocultar lentitud. Un paso que siempre consume casi todo su timeout pasa, pero es una señal de rendimiento que vale la pena revisar en el trace.
  • force: true se salta las comprobaciones. A veces hace falta con controles personalizados, pero normalmente está tapando un problema real.

Escribe para buscar en todo SDETRole.

Búsqueda de texto completo con Pagefind · se ejecuta en tu navegador Abrir la página de búsqueda →