Aller au contenu
SDETRole
SDETRole

Glossaire · Automatisation de l’UI

Auto-waiting (attente automatique)

En anglais : Auto-waiting

Également appelé : auto-wait, attente automatique, actionability checks, vérifications d’actionnabilité

Définition

Une fonctionnalité du framework qui attend qu’un élément soit prêt (visible, stable, activé) avant d’agir dessus, au lieu de s’appuyer sur des pauses fixes.

L’auto-waiting signifie que le framework d’automatisation vérifie qu’un élément est prêt avant d’effectuer une action, et réessaie jusqu’à ce qu’il le soit ou qu’un timeout expire. Playwright et Cypress l’intègrent nativement. Dans Playwright, click() attend que l’élément soit attaché au DOM, visible, stable (pas en cours d’animation), capable de recevoir des événements (pas recouvert par un autre élément) et activé. Vous écrivez l’action ; le framework gère le timing.

Exemple

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

Il n’y a aucun waitForTimeout. Si le bouton d’enregistrement est désactivé un instant pendant la validation du formulaire, le clic attend au lieu d’échouer.

Différence avec les attentes explicites et implicites

Selenium WebDriver n’attend pas automatiquement avant les actions. Soit vous définissez une attente implicite, qui n’influe que sur la durée pendant laquelle findElement interroge le DOM pour qu’un élément existe, soit vous écrivez une attente explicite avec WebDriverWait et une condition ExpectedConditions comme elementToBeClickable. L’auto-waiting ressemble à une attente explicite que le framework écrit pour vous à chaque action, avec des vérifications adaptées à cette action : fill(), par exemple, exige aussi que l’élément soit éditable.

Limites

  • Il attend l’élément, pas votre état métier. Si le bouton est cliquable avant que les données qu’il envoie ne soient chargées, l’auto-waiting ne vous sauvera pas. Vérifiez d’abord l’état dont vous avez besoin par une assertion.
  • Il ne s’applique pas aux valeurs lues une seule fois. await locator.textContent() renvoie ce qui est présent à cet instant. Pour attendre un texte, utilisez une assertion web-first comme toHaveText.
  • Il peut masquer la lenteur. Une étape qui consomme toujours l’essentiel de son timeout passe, mais c’est un signal de performance à examiner dans la trace.
  • force: true désactive les vérifications. C’est parfois nécessaire pour des contrôles personnalisés, mais cela masque généralement un vrai problème.

Saisissez un terme pour rechercher sur SDETRole.

Recherche plein texte par Pagefind · s’exécute dans votre navigateur Ouvrir la page de recherche →