منبع باز / جعبه (یا ظرف)

تست‌کننده مرورگر.

"browser-tester" یک محیط تست شبیه به مرورگر است که به طور کامل با زبان راست (Rust) پیاده‌سازی شده و عملکرد آن قابل پیش‌بینی است. این ابزار، رفتار عناصر DOM و رویدادها را بدون نیاز به اجرای یک مرورگر واقعی، بررسی و اعتبارسنجی می‌کند.

زنگ زدگی زمان اجرای قطعی. تست DOM (مدل شیء سند)

این بسته نرم‌افزاری در چه زمینه‌هایی عملکرد خوبی دارد؟

ابزار "browser-tester" بیشتر بر روی تست‌های مربوط به رفتار قابل پیش‌بینی فرم‌ها و رابط کاربری تمرکز دارد، تا بررسی سازگاری کامل با موتورهای رندرینگ مختلف مرورگرها.

محیط اجرایی مبتنی بر زبان راست.

این برنامه در یک فرآیند واحد از زبان برنامه‌نویسی راست (Rust) اجرا می‌شود. هیچ وابستگی به مرورگر خارجی، WebDriver یا Node.js ندارد.

اجرای قطعی.

این سیستم طوری طراحی شده است که امکان انجام تست‌های تکرارپذیر را فراهم کند: شامل یک ساعت شبیه‌سازی‌شده، یک منبع تصادفی قابل پیش‌بینی و رابط‌های برنامه‌نویسی (API) برای کنترل دقیق زمان‌بندی.

تست‌های مربوط به DOM (مدل شیء سند) و رویدادها.

این ابزار از جریان‌های کاری مشابه مرورگرهای وب پشتیبانی می‌کند، از جمله: انتخاب عناصر، اجرای اسکریپت‌های درون‌خطی، انتشار رویدادها و به‌روزرسانی‌های DOM (مدل شیء سند).

بازخورد سریع و محلی.

چرخه بازخورد سریع برای تست‌های رابط کاربری مبتنی بر فرم، در حالی که خروجی‌های مربوط به خطاها بر روی انتخاب‌گرها و مقادیر مورد انتظار/واقعی متمرکز می‌ماند.

راهنمای شروع سریع.

یک محیط تست (هarness) با استفاده از HTML ایجاد کنید، تعاملات را اجرا کنید و نتایج مربوط به DOM را بررسی کنید. با یک ساختار آزمایشی کوچک شروع کنید و سپس با استفاده از تایمرها و APIهای شبیه‌سازی‌شده، آن را گسترش دهید.

نصب کنید.

اضافه کردن بار کاری با نام "browser_tester".

مثال ساده.

سطح اصلی رابط برنامه‌نویسی کاربردی (API).

ترکیب اقدامات و اظهارات.

عملیات اصلی تست DOM: `Harness::from_html`، `type_text`، `set_checked`، `click`، `submit`، و همچنین ابزارهای کمکی برای بررسی متن، مقدار، وضعیت انتخاب‌شده بودن و وجود یک عنصر.

تایمرهای قطعی.

کنترل رفتار ناهمزمان را با استفاده از یک ساعت شبیه‌سازی‌شده انجام دهید. زمان را به صورت قطعی با استفاده از توابع `advance_time`، `advance_time_to`، `flush` و همچنین با بررسی تنظیمات تایمر، جلو ببرید.

شبیه‌سازی‌های داخلی.

برای حفظ جداسازی تست‌ها، از توابع `set_fetch_mock`، `enqueue_confirm_response` و `enqueue_prompt_response` برای شبیه‌سازی پاسخ‌های دریافتی و نتایج تعاملات استفاده کنید.

ردیابی و تشخیص خطاها.

برای فعال‌سازی گزارش‌های جزئی و استخراج اطلاعات مربوط به جریان رویدادها و زمان‌بندی‌ها در هنگام بروز خطا در تست‌ها، از این قابلیت استفاده کنید. این ویژگی برای اشکال‌زدایی و بررسی ترتیب رویدادها و نحوه عملکرد اقدامات پیش‌فرض بسیار مفید است.

سیاست اجرای برنامه.

  • تابع `eval` به طور عمدی پشتیبانی نمی‌شود تا امنیت و قابلیت پیش‌بینی عملکرد سیستم حفظ شود.
  • این محیط اجرایی (runtime) برای شبیه‌سازی سناریوهای آزمایشی کاربردی طراحی شده است، نه برای سازگاری کامل با مرورگرهای واقعی.
  • ورودی/خروجی شبکه خارجی از محدوده این بررسی خارج است؛ برای پوشش تست، از شبیه‌سازی‌های (mock) مربوط به شبکه استفاده کنید.

اگر برای مجموعه تست‌های خود به APIهای اضافی مرورگر نیاز دارید، یک درخواست (issue) با یک نمونه آزمایشی ساده ایجاد کنید تا در مورد دامنه و اولویت آن بحث شود.