Vai al contenuto
SDETRole
SDETRole

Glossario · Automazione della UI

Auto-waiting (attesa automatica)

In inglese: Auto-waiting

Detto anche: auto-wait, attesa automatica, actionability checks

Definizione

Una funzione del framework che attende che un elemento sia pronto (visibile, stabile e abilitato) prima di agire, invece di affidarsi a pause fisse.

Auto-waiting (attesa automatica) significa che il framework di automazione verifica che un elemento sia pronto prima di eseguire un’azione, e continua a riprovare finché non lo è o finché non scade un timeout. Playwright e Cypress lo integrano nativamente. In Playwright, click() attende che l’elemento sia collegato al DOM, visibile, stabile (non in animazione), in grado di ricevere eventi (non coperto da un altro elemento) e abilitato. Tu scrivi l’azione; della tempistica si occupa il framework.

Esempio

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

Non c’è nessun waitForTimeout. Se il pulsante di salvataggio resta disabilitato per un attimo mentre il form viene validato, il clic attende invece di fallire.

Differenza rispetto alle attese esplicite e implicite

Selenium WebDriver non applica l’auto-waiting prima delle azioni. Puoi impostare un’attesa implicita, che influisce solo su quanto a lungo findElement interroga la pagina in attesa che un elemento esista, oppure scrivere un’attesa esplicita con WebDriverWait e una condizione ExpectedConditions come elementToBeClickable. L’auto-waiting è simile a un’attesa esplicita che il framework scrive per te a ogni azione, con controlli scelti in base all’azione: fill(), per esempio, richiede anche che l’elemento sia modificabile.

Limiti

  • Attende l’elemento, non lo stato del tuo business. Se il pulsante è cliccabile prima che i dati da inviare siano stati caricati, l’auto-waiting non ti salva. Prima fai un’asserzione sullo stato che ti serve.
  • Non si applica ai valori letti una sola volta. await locator.textContent() restituisce quello che c’è in quel momento. Per attendere un testo, usa un’asserzione web-first come toHaveText.
  • Può nascondere la lentezza. Uno step che consuma sempre quasi tutto il timeout passa, ma è un segnale di performance che vale la pena esaminare nella trace.
  • force: true salta i controlli. A volte serve per controlli personalizzati, ma di solito maschera un problema reale.

Scrivi per cercare in tutto SDETRole.

Ricerca full-text con Pagefind · funziona nel tuo browser Apri la pagina di ricerca →