إعادة التشغيل إعادة بناء، وليست فيديو
أشيع سوء فهم بخصوص إعادة تشغيل الجلسات هو الاعتقاد بأنها تسجّل الشاشة. وهي لا تفعل ذلك. ما تلتقطه إعادة التشغيل هو DOM — أي بنية الصفحة — إضافة إلى كل تغيير يطرأ عليها، مع النقرات والتمرير وأحداث الإدخال وأزمنة الشبكة وأخطاء الطرفية. وعند التشغيل تُعاد الصفحة بناءً من تلك البيانات داخل متصفحك.
هذا الفارق هو بيت القصيد. ولأن إعادة التشغيل بيانات مبنية لا وحدات بكسل، يمكنك البحث فيها والقفز إلى اللحظة الدقيقة التي وقع فيها الخطأ وقراءة حالة الـ DOM عندها. تسجيل الشاشة لا يمنحك شيئًا من ذلك، ويستهلك عرض نطاق أكبر بكثير.
ما تقدّمه ولا يقدّمه تتبّع مكدس الاستدعاءات
تخبرك أداة تتبع الأخطاء بأن TypeError وقع في السطر 214. لكنها لا تخبرك أن المستخدم كان قد أرسل النموذج مرتين من قبل، ولا أن المحاولة الثانية جرت على اتصال بطيء، ولا أن الزر ظل معطّلًا بعدها. إعادة التشغيل تمنحك تسلسل الأحداث الذي أنتج الحالة التي تعثّرت عندها شيفرتك.
عمليًا، هذا يُلغي أبطأ مراحل تصحيح الأخطاء: إعادة الإنتاج. فبدلًا من تخمين الخطوات من تقرير من سطر واحد، تشاهد المسار الذي سلكه المستخدم فعلًا.
كيف تستخدمها عند ورود خلل
اعمل رجوعًا من لحظة العطل، لا تقدّمًا من بداية الجلسة. جِد الخطأ في أدوات المراقبة، وافتح إعادة التشغيل المرتبطة به، وانتقل إلى الطابع الزمني. ثم ارجع ثلاثين ثانية إلى الوراء: السبب يكمن غالبًا في النصف دقيقة السابقة للعَرَض، لا في بداية الجلسة.
تحقّق من ثلاثة أمور بهذا الترتيب: ما الذي نقر عليه المستخدم مباشرة قبل ذلك، وهل أخفق أي طلب أو تعلّق دون استجابة، وهل ما ظهر على الشاشة يطابق ما توقعت عرضه. معظم الأخطاء تُحسم عند واحد من هذه الثلاثة.
ما لن تحلّه
تُظهر إعادة التشغيل ما الذي حدث، لا لماذا فعل الشخص ذلك. فإن ترك مستخدم نموذجًا في منتصفه، أخبرك التسجيل بالحقل الذي توقف عنده، لكنه لا يخبرك إن كان السؤال مربكًا أو متطفلًا أو طويلًا فحسب. تلك الإجابة تأتي بسؤاله.
وهي ضعيفة أيضًا في الأسئلة التجميعية. التسجيل الواحد حكاية فردية. وإن أردت معرفة تكرار حدوث أمر ما، فذلك عمل القمع أو استعلام الأحداث؛ استخدم إعادة التشغيل لتفسير الانخفاض لا لقياسه.
كيف تختار أداة لغرض تصحيح الأخطاء تحديدًا
إن كان التصحيح هو الغاية، فوازن ثلاثة أمور قبل غيرها. التقاط الطرفية والشبكة — فبدونهما أنت تشاهد فيلمًا صامتًا. والربط من الخطأ إلى إعادة التشغيل، بحيث يأخذك الاستثناء مباشرةً إلى الجلسة التي أنتجته لا إلى قائمة تبحث فيها. وضوابط خصوصية دقيقة بما يكفي لتبقى الأداة نافعة: إخفاء كل الحقول يحمي المستخدمين لكنه قد يحجب القيمة نفسها التي سبّبت الخلل، فابحث عن قواعد على مستوى الحقل بدل مفتاح واحد بالكل أو لا شيء.