Panneaux InDesign
Un éditeur de magazines numériques mettait en page ses titres dans Adobe InDesign, et le flux éditorial vivait dans un ensemble de panneaux InDesign écrits en AngularJS : des années de règles métier, utilisées chaque jour par les rédacteurs, sur un framework en fin de vie. TT Tech les a tous migrés vers la dernière version d'Angular sans réécriture big-bang, l'ancien comportement étant figé par des tests avant qu'une ligne ne change.

L'histoire
- 1
La situation
Un panneau qui cesse de fonctionner arrête un magazine. Les panneaux portaient des années de règles éditoriales que personne n'avait écrites ailleurs que dans le code, donc une réécriture à partir d'une page blanche était exclue. Le travail consistait à passer à Angular moderne pendant que les rédacteurs continuaient à travailler, avec la preuve à chaque étape que rien de ce dont ils dépendaient n'avait changé.
- 2
L'approche : figer, migrer, prouver
Nous avons commencé par les tests, pas par le code. Avant de toucher à un panneau, nous avons écrit des tests de caractérisation sur le comportement AngularJS, en commençant par les parties les plus faciles à tester : la validation, le formatage, la logique pure derrière chaque panneau. Puis nous avons migré panneau par panneau vers la dernière version d'Angular et exécuté le même jeu de tests sur le nouveau code. Un test rouge signifiait que la migration avait changé le comportement, jamais que le test était faux. Chaque panneau a été livré séparément, de sorte que les rédacteurs n'ont jamais perdu un outil qui fonctionnait.
- 3
Le résultat
Tous les panneaux sur la dernière version d'Angular, avec le comportement dont dépendaient les rédacteurs prouvé par la suite de tests qui l'avait figé. La méthode est devenue l'étape zéro du module legacy de notre workshop, et l'article en lien ci-dessous : figez le comportement avant d'y toucher.