Architecture de framework & CI/CD · Leçon 4 sur 6

CI avec GitHub Actions : exécuter UI + API à chaque push

Un framework que personne n'exécute est du code mort. La CI corrige ça — elle exécute vos tests automatiquement à chaque push, pour que les problèmes apparaissent en minutes au lieu de sprints.

Par Shahriyar · Mis à jour

L'idée, en une ligne

La CI est un robot qui exécute vos suites de tests pour vous à chaque changement de code. Avec GitHub Actions vous décrivez ce robot dans un fichier YAML sous .github/workflows/.

Les mots à connaître

▸ try it
name: tests
on:
  push:
  pull_request:

jobs:
  api:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.12"
      - run: pip install -r requirements.txt
      - run: pytest tests/api --alluredir=allure-results
      - uses: actions/upload-artifact@v4
        if: always()               # upload even when tests fail
        with:
          name: allure-api
          path: allure-results

  ui:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        browser: [chromium, firefox]   # fan out across browsers
    steps:
      - uses: actions/checkout@v4
      - run: pytest tests/ui --browser=${{ matrix.browser }}

Lisez-le de haut en bas : deux jobs, api et ui, s'exécutent côte à côte. Le job api installe Python, lance les tests d'API, et sauvegarde le rapport. Le job ui lance ses tests une fois par navigateur.

Avancé — deux touches qui marquent un senior

Basé sur la doc officielle de la syntaxe des workflows GitHub Actions et le README d'actions/upload-artifact

Toutes les leçons de Architecture de framework & CI/CD

  1. Concevoir un framework de zéro : les couches
  2. Les quatre patterns que les SDET utilisent vraiment
  3. Données de test : fixtures vs factories vs ensemencement
  4. CI avec GitHub Actions : exécuter UI + API à chaque push
  5. Docker & Selenium Grid : des environnements de test reproductibles
  6. Parallèle, réessais & quarantaine des tests instables