Aller au contenu
SDETRole
SDETRole

Glossaire · Automatisation de l’UI

Page Object Model (POM)

En anglais : Page Object Model

Également appelé : POM, page object, page objects, modèle page objet

Définition

Design pattern qui encapsule chaque page ou composant de l'interface dans une classe, pour que les tests appellent des méthodes métier au lieu de répéter les locators.

Le Page Object Model (POM) regroupe dans une seule classe tout ce qu’un test doit savoir d’une page : ses locators et les actions qu’un utilisateur peut y effectuer. Les tests se lisent alors comme le parcours utilisateur (loginPage.signIn(user)), et lorsque le markup change, vous corrigez une seule classe au lieu de chaque test.

Un exemple minimal (Playwright, TypeScript)

import { type Page, type Locator } from '@playwright/test';

export class LoginPage {
  readonly email: Locator;
  readonly password: Locator;
  readonly submit: Locator;

  constructor(private readonly page: Page) {
    this.email = page.getByLabel('Email');
    this.password = page.getByLabel('Password');
    this.submit = page.getByRole('button', { name: 'Sign in' });
  }

  async goto() {
    await this.page.goto('/login');
  }

  async signIn(email: string, password: string) {
    await this.email.fill(email);
    await this.password.fill(password);
    await this.submit.click();
  }
}

Les règles qui gardent les page objects utiles

  • Pas d’assertions dans les page objects, sauf pour vérifier que la page elle-même s’est chargée. C’est le test qui décide de ce que « correct » veut dire.
  • Renvoyez le page object suivant depuis les actions qui naviguent, ou ne renvoyez rien. Évitez de renvoyer des handles d’éléments bruts.
  • Modélisez des composants, pas seulement des pages. Un en-tête, un tableau de données ou un sélecteur de date présent sur de nombreuses pages mérite sa propre classe.
  • Gardez-les légers. Les règles métier, les données de test et les appels d’API relèvent d’autres couches, comme les fixtures et les clients d’API.

Critique fréquente

Les gros page objects deviennent des « god classes » aux dizaines de méthodes. Les découper par composant, et utiliser des fixtures pour créer les page objects de chaque test, permet de les garder petits. Certaines équipes préfèrent le pattern Screenplay pour les très grosses suites, mais le POM reste la structure la plus répandue dans les frameworks Selenium et Playwright, et celle que les recruteurs s’attendent à vous voir expliquer en entretien.

Saisissez un terme pour rechercher sur SDETRole.

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