La performance n'est pas seulement une fonctionnalité souhaitable dans le développement web moderne ; c'est un composant critique de l'expérience utilisateur, du classement SEO et des taux de conversion. Avec l'introduction des Core Web Vitals par Google, la mesure de la performance est passée d'un exercice réactif à une exigence proactive. Cependant, s'appuyer sur des audits manuels n'est plus suffisant pour les équipes pratiquant l'intégration continue et le déploiement continu (CI/CD). Dans cet article, nous explorerons comment automatiser la surveillance et les alertes Core Web Vitals directement dans vos pipelines CI/CD pour détecter les régressions avant qu'elles n'atteignent la production.
Pourquoi intégrer la performance dans le CI/CD ?
Les tests de performance traditionnels ont souvent lieu après le déploiement ou dans des environnements isolés qui ne reflètent pas les conditions réelles. En intégrant des vérifications Core Web Vitals dans votre pipeline CI/CD, vous établissez un « budget de performance » pour chaque demande de tirage (pull request). Cette approche garantit que :
- Les régressions sont détectées tôt : Les modifications de code qui dégradent le LCP (Largest Contentful Paint), le FID (First Input Delay) ou le CLS (Cumulative Layout Shift) sont signalées immédiatement.
- La performance devient une responsabilité partagée : Les développeurs reçoivent un retour immédiat sur l'impact de leur code sur la performance.
- La confiance dans le déploiement augmente : Les vérifications automatisées offrent un filet de sécurité contre les baisses accidentelles de performance.
Choisir les bons outils
Bien que Lighthouse soit la référence pour générer des rapports de performance, son exécution dans un environnement de navigateur headless au sein d'un pipeline CI/CD peut être gourmand en ressources. Pour des vérifications légères et rapides, des outils comme puppeteer, playwright ou des services spécialisés tels que l'API WebPageTest sont d'excellents choix. Alternativement, lighthouse-ci fournit un outil CLI robuste spécifiquement conçu à cet effet.
Pour ce guide, nous nous concentrerons sur l'intégration de lighthouse-ci via GitHub Actions, car il offre un équilibre parfait entre des métriques détaillées et une facilité d'intégration.
Configuration du pipeline
Pour commencer, vous devez installer le CLI Lighthouse CI en tant que dépendance de développement dans votre projet. Cela vous permet d'exécuter des audits localement et dans votre environnement CI.
npm install --save-dev @lhci/cli
Ensuite, créez un fichier de configuration, .lighthouserc.json, pour définir vos budgets de performance. Ce fichier indique à l'outil CI quelles métriques suivre et quelles sont les seuils acceptables.
{
"ci": {
"collect": {
"numberOfRuns": 3,
"settings": {
"preset": "desktop"
}
},
"assert": {
"assertions": {
"categories:performance": ["error", { "minScore": 0.9 }],
"largest-contentful-paint": ["error", { "maxNumericValue": 2500 }],
"first-input-delay": ["error", { "maxNumericValue": 100 }],
"cumulative-layout-shift": ["error", { "maxNumericValue": 0.1 }]
}
},
"upload": {
"target": "filesystem"
}
}
}
Dans cette configuration, nous exigeons que la catégorie de performance globale obtienne un score d'au moins 0,9. Nous définissons également des limites numériques strictes pour le LCP (2,5 secondes), le FID (100 ms) et le CLS (0,1). Si l'un de ces seuils est dépassé, la build CI échouera.
Intégration avec GitHub Actions
Maintenant, connectons cela à votre pipeline CI/CD. Créez un fichier de workflow dans .github/workflows/performance.yml. Ce script se déclenchera à chaque demande de tirage, collectera les métriques et rapportera les résultats.
name: Performance CI
on: [pull_request]
jobs:
lighthouse-ci:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install dependencies
run: npm ci
- name: Run local server
run: npm start &
working-directory: ./
continue-on-error: true
- name: Audit URLs
run: npx @lhci/cli@0.9.x collect --url=http://localhost:3000
Pour garantir que le pipeline fournit des retours exploitables, vous devez également configurer le plugin Lighthouse CI pour publier des commentaires sur la demande de tirage. Cela offre une visibilité immédiate aux développeurs sur les métriques spécifiques qui ont échoué et de combien.
Alertes et surveillance avancées
Bien que l'échec d'une build soit efficace pour empêcher la fusion de code défectueux, cela n'aide pas à suivre les tendances dans le temps ou à alerter sur les anomalies en production. Pour une surveillance complète, envisagez d'intégrer des services comme l'API Google Lighthouse CI pour télécharger les rapports sur un tableau de bord. Vous pouvez ensuite configurer des alertes dans Slack ou par e-mail si un déploiement entraîne une baisse significative des scores Core Web Vitals par rapport à la ligne de base.
Conclusion
La mise en place de la surveillance Core Web Vitals dans votre pipeline CI/CD transforme la performance d'un concept abstrait en une métrique de qualité mesurable et applicable. En automatisant ces vérifications, vous permettez à votre équipe de livrer plus rapidement sans sacrifier l'expérience utilisateur. Commencez petit en ajoutant une seule métrique, et élargissez progressivement vos budgets de performance à mesure que votre application mûrit. Le résultat est une application web plus robuste, performante et conviviale.