تصور کنید یک فیلد ورود کاربر از name="username" به name="login" تغییر میکند و تمام تستهای خودکار شما در یک لحظه میشکنند. بهجای اینکه ساعتها وقت صرف عیبیابی دستی کنید، یک عامل (Agent) — شبیه به یک دستیار فنی که همیشه پشت سیستم شما نشسته و کدها را میپاید — دقیقاً در لحظه شکست، صفحه را بررسی کرده و یک Pull Request با کد اصلاحشده برایتان میفرستد.
طبق مستندات فنی منتشرشده در ۱۶ ژوئیه ۲۰۲۶، ابزار Libretto این فرآیند را برای رفع خطاهای ناشی از تغییرات کوچک در DOM (ساختار درختی صفحه) خودکار میکند. نگهداری از تستهای سرتاسری (End-to-End) در توسعه وب مدرن همواره یک چالش فرسایشی است. پیش از این، ابزارهایی مانند Webcmd تلاش کردند تا با استفاده از واسطهای خط فرمان، وابستگی شدید به سلکتورهای شکننده را کاهش دهند. در حالت عادی، وقتی یک اسکریپت Playwright شکست میخورد، برنامهنویس باید خطا را محلی بازسازی کند، المانهای صفحه را بازبینی نماید و دستی کد را بهروز کند. همانطور که در تحلیلهای پیشین ما دربارهی اتوماسیونِ عاملمحور اشاره کردیم، حذف دخالت انسانی در مراحل تکراری، کلید افزایش بهرهوری است.
Libretto با معرفی یک «چرخه تعمیر»، این تشخیص را در پسزمینه و بدون نیاز به تغییر در محیط اجرای فعلی انجام میدهد. توسعهدهندگان میتوانند این ابزار را با افزودن بسته libretto-playwright-debugger به پروژه خود یکپارچه کنند. سازوکار این ابزار به شرح زیر است:
- یکپارچهسازی: مقداردهی اولیه عیبیاب در یک پروژه موجود Playwright.
- محرک: فراخوانی تابع
debugFailure()در مسیر شکست اسکریپت. - اجرا: عامل، صفحه زنده را بررسی کرده، انتخابگر (Selector) جدید را تأیید میکند و یک کامیت به شاخه اصلی ارسال میکند.
به گزارش تیم توسعهدهنده، این عامل با هر مرورگر یا ارائهدهنده ابری، از جمله محیطهای میزبانی شخصی، سازگار است؛ بهشرطی که صفحه در لحظه فراخوانی تابع باز بماند. این بسته تحت مجوز MIT منتشر شده است، هرچند کاربران باید کلیدهای API مدل موردنظر و زیرساخت مرورگر خود را فراهم کنند، زیرا خودِ Libretto هزینهای برای عامل دریافت نمیکند. در واقع این رویکرد، مکمل متدهای پیشرفتهتری است که بهمنظور شناسایی نقاط شکست عاملهای هوش مصنوعی از مهندسی آشوب بهره میگیرند.
این تغییر، نگهداری تستها را از یک وظیفه عیبیابی دستی به یک فرآیند «بازبینی کد» تبدیل میکند. مهندسان بهجای شکار انتخابگرهای شکسته، در نقش ناظر قرار میگیرند و صرفاً PRهای تولیدشده توسط هوش مصنوعی را تأیید یا رد میکنند. برای توسعهدهنده، «ناپایداری» (Flakiness) تستهای رابط کاربری دیگر یک قاتل بهرهوری نیست، بلکه یک تیکت خودکار است که سریعاً بسته میشود. در کنار این اتوماسیون، شناخت دقیق نقاط واگرایی و تحلیل شکستهای عاملها میتواند به بهبود کیفیت کدهای اصلاحشده کمک کند.
گام بعدی شما
- مخزن متنباز Libretto در گیتهاب را بررسی کنید تا نحوه تعامل عیبیاب با خط لوله CI/CD خود را ببینید.
- متد
debugFailure()را در بحرانیترین تستهای خود پیاده کنید تا نرخ شکستهای تکراری را بسنجید. - استراتژی بازبینی کد خود را برای پذیرش تغییرات خودکار در تستها بازنگری کنید.
اما اثر این رویکرد بر هزینههای استنتاج در مقیاس بالا متفاوت است — به تحلیل ما دربارهی بهینهسازی هزینههای GPU مراجعه کنید.




گفتگو