gremlins.js هي مكتبة لاختبار القرود (Monkey Testing) لتطبيقات الويب وبيئة Node.js تحاكي تفاعلات المستخدم العشوائية لاكتشاف الأخطاء وتحسين متانة النظام.
الاستخدام الأساسي
إطلاق العنان عبر CDN
<script src="https://cdn.jsdelivr.net/npm/gremlins/dist/gremlins.js"></script>
<script>
gremlins.createHorde().unleash();
</script>
تخصيص سرب القرود (Horde)
gremlins.createHorde()
.allGremlins()
.gremlin(function () {
// إجراء مخصص يتم تنفيذه على فترات منتظمة
document.activeElement.blur();
})
.unleash();
مثال كامل للإعدادات
gremlins.createHorde()
.gremlin(gremlins.species.formFiller())
.gremlin(gremlins.species.clicker()
.clickTypes(['click'])
.canClick(element => element.tagName !== 'A')
.showAction((x, y) => { /* مؤشر نقر بصري */ }))
.gremlin(gremlins.species.scroller())
.gremlin(gremlins.species.typer())
.mogwai(gremlins.mogwais.alert())
.mogwai(gremlins.mogwais.fps())
.mogwai(gremlins.mogwais.gizmo().maxErrors(2))
.unleash();
خطافات دورة الحياة (Lifecycle Hooks)
خطافات Before و After المتزامنة
gremlins.createHorde()
.before(function () {
this.log('بدء تنفيذ اختبار القرود');
console.profile('gremlins');
})
.after(function () {
this.log('اكتمل اختبار القرود');
console.profileEnd();
})
.unleash();
الخطافات غير المتزامنة
gremlins.createHorde()
.before(function (done) {
setTimeout(() => {
this.log('اكتمل الإعداد غير المتزامن');
done();
}, 500);
})
.unleash();
دليل الفصائل والكائنات (Species Reference)
فصائل Gremlins (المهاجمون)
- formFiller: يملأ حقول الإدخال، ومناطق النصوص، وقوائم التحديد ببيانات عشوائية صالحة.
- clicker: ينقر عشوائياً على العناصر النشطة في إطار العرض.
- scroller: يقوم بتمرير النافذة في اتجاهات ومسافات عشوائية.
- typer: يكتب عشوائياً عبر لوحة المفاتيح في حقول الإدخال النشطة.
- toucher: يولد إيماءات اللمس على الشاشات التي تدعم اللمس.
فصائل Mogwais (المراقبون والحراس)
- alert: يلتقط ويسجل استدعاءات مربعات الحوار
window.alert. - fps: يراقب معدل الإطارات في الثانية ويسجل الهبوط الحاد عن الحد المسموح.
- gizmo: يوقف التنفيذ عندما يتجاوز عدد أخطاء جافا سكريبت غير الملتقطة الحد الأقصى.