لوحات InDesign
ناشر مجلات رقمية كان يُخرج عناوينه في Adobe InDesign، وكان سير العمل التحريري يعيش في مجموعة لوحات InDesign مكتوبة بـAngularJS: سنوات من قواعد العمل، يستعملها المحررون كل يوم، على إطار بلغ نهاية عمره. رحّلت TT Tech كلها إلى آخر إصدار من Angular دون إعادة كتابة شاملة، مع تثبيت السلوك القديم بالاختبارات قبل تغيير أي سطر.

القصة
- 1
الوضع
لوحة تتوقف عن العمل توقف مجلة. كانت اللوحات تحمل سنوات من القواعد التحريرية التي لم يكتبها أحد في أي مكان غير الكود، فكانت إعادة الكتابة من صفحة بيضاء خارج النقاش. كانت المهمة الانتقال إلى Angular الحديثة بينما يواصل المحررون عملهم، مع إثبات في كل خطوة أن شيئاً مما يعتمدون عليه لم يتغير.
- 2
المنهج: ثبّت، رحّل، أثبت
بدأنا بالاختبارات، لا بالكود. قبل لمس أي لوحة كتبنا اختبارات توصيفية (characterisation tests) لسلوك AngularJS، بدءاً بالأجزاء الأسهل اختباراً: التحقق، والتنسيق، والمنطق الصرف خلف كل لوحة. ثم رحّلنا لوحة بعد لوحة إلى آخر إصدار من Angular وشغّلنا نفس مجموعة الاختبارات على الكود الجديد. الاختبار الأحمر كان يعني أن الترحيل غيّر السلوك، لا أن الاختبار خاطئ. كل لوحة شُحنت وحدها، فلم يفقد المحررون أداة تعمل قط.
- 3
النتيجة
كل اللوحات على آخر إصدار من Angular، والسلوك الذي يعتمد عليه المحررون مُثبَت بالمجموعة التي ثبّتته. أصبح المنهج الخطوة صفر في وحدة الكود القديم في ورشتنا، وفي المقال المرتبط أدناه: ثبّت السلوك قبل أن تلمسه.