- Le NYT a mis à niveau React 16 vers React 18 et, à cette occasion, a remplacé l’utilitaire de test Enzyme par React Testing Library
- Enzyme était utilisé depuis 2016, mais la plateforme React recommandant désormais React Testing Library, une transition est devenue nécessaire
- Enzyme génère une représentation textuelle de l’arbre DOM, tandis que React Testing Library crée le véritable arbre DOM et effectue le rendu comme une partie du DOM complet
- Comme il fallait convertir des centaines de fichiers, il était essentiel de maintenir le trafic du site et d’éviter toute interruption de service
Trois stratégies de migration
- Approche Bulldozer
- Consiste à modifier massivement l’ensemble des fichiers en une seule fois
- Risque élevé de conflits de code et collaboration difficile
- Approche Consensus
- Méthode collaborative où les ingénieurs avancent en gardant chacun la responsabilité de leurs fichiers
- Adaptée aux nouveaux projets ou aux projets critiques
- Approche Piecemeal
- Consiste à corriger progressivement les fichiers individuellement, de manière stratégique
- Des mises à jour régulières au quotidien créent une dynamique progressive
Le choix du New York Times : l’approche Piecemeal
- Les modifications ont commencé par les fichiers les plus simples → d’abord ceux qui ne nécessitaient qu’une ou deux lignes de changement
- L’accent a été mis sur la manière de trouver les éléments du DOM dans React Testing Library et de les tester
- Une fois les premiers correctifs terminés, il devenait possible d’étendre progressivement le travail à des tests plus complexes
- À mesure que le travail avançait, des modèles cohérents se sont formés, rendant les corrections plus faciles
- Les ingénieurs pouvaient participer facilement, ce qui a renforcé la collaboration
Résultats et bénéfices de la migration
- L’approche Piecemeal prend plus de temps, mais elle permet la stabilité et une progression continue
- Des modèles cohérents ont émergé dans la base de code, ce qui a facilité même les tests complexes
- Un environnement a été créé dans lequel d’autres ingénieurs pouvaient facilement participer et contribuer
- Le processus de migration a permis de minimiser les bugs et d’éviter les interruptions de fonctionnalité
- Le succès de la migration a permis de mieux équilibrer la réduction de la dette technique et le développement continu
Conclusion
- Grâce à l’approche Piecemeal, la base de code a été migrée avec succès vers React Testing Library
- Des corrections progressives ont renforcé la collaboration tout en préservant la qualité du code
- Même les tests complexes ont pu être traités plus facilement grâce à des modèles cohérents
- Une planification stratégique et un bon équilibre dans la gestion de la dette technique ont permis une migration stable
Aucun commentaire pour le moment.