Відкритий вихідний код / Контейнер.

тестування веб-браузерів.

`browser-tester` – це тестове середовище, що імітує роботу браузера, реалізоване на чистому Rust. Воно перевіряє структуру DOM та поведінку подій, не запускаючи при цьому реальний браузер.

Іржа. Детермінований час виконання. Тестування DOM.

У чому полягають переваги цього набору?

Інструмент browser-tester зосереджений на тестуванні передбачуваної поведінки форм та інтерфейсу користувача, а не на перевірці сумісності з різними браузерами у плані повної візуалізації.

Середовище виконання, що працює виключно з мовою програмування Rust.

Працює всередині одного процесу Rust. Не потребує зовнішніх браузерів, WebDriver або залежностей від Node.js.

Детерміноване виконання.

Розроблено для проведення повторюваних тестів: передбачено імітацію роботи годинника, детерміноване значення для генерації випадкових чисел та чітко визначені API для керування таймером.

Тестування DOM та подій.

Підтримує практичні функції, подібні до роботи веб-браузера: селектори, виконання скриптів у середовищі виконання, передачу подій та оновлення DOM.

Швидкий зворотний зв'язок від місцевих користувачів.

Швидкий цикл зворотного зв'язку для тестування інтерфейсів користувача, орієнтованих на форми, при цьому вивід про помилки зосереджений на селекторах та очікуваних/фактичних значеннях.

Швидкий старт.

Створіть тестове середовище за допомогою HTML, реалізуйте взаємодії та перевіряйте результати, що відображаються в DOM. Почніть з невеликого тестового набору та поступово розширюйте його, додаючи таймери та імітації API.

Встановити.

Додайте модуль "browser_tester" до списку залежностей.

Базовий приклад.

Основний інтерфейс API.

Об'єднайте дії та твердження.

Основні операції тестування DOM: `Harness::from_html`, `type_text`, `set_checked`, `click`, `submit`, а також допоміжні функції для перевірки тексту, значень, стану "відмічено" та наявності елементів.

Детерміновані таймери.

Керуйте асинхронною поведінкою за допомогою імітованого годинника. Змінюйте час детерміновано, використовуючи функції `advance_time`, `advance_time_to`, `flush` та API для перевірки таймерів.

Вбудовані тестові об'єкти-замінники.

Використовуйте функції `set_fetch_mock`, `enqueue_confirm_response` та `enqueue_prompt_response`, щоб імітувати відповіді від сервера та результати діалогів, забезпечуючи ізоляцію тестових сценаріїв.

Відстеження та діагностика.

Увімкніть журнали трасування та витягуйте інформацію про послідовність подій/таймерів, коли тест завершується з помилкою. Це корисно для налагодження порядку подій та поведінки дій за замовчуванням.

Політика роботи в режимі реального часу.

  • Функція `eval` навмисно не підтримується для забезпечення безпеки та передбачуваності роботи системи.
  • Ця середа виконання призначена для тестування в практичних сценаріях, а не для забезпечення 100% сумісності з реальними веб-браузерами.
  • Вхідні та вихідні операції з зовнішніми мережами не розглядаються в рамках цього завдання; для забезпечення повноти тестування використовуйте імітації (моки) для функцій отримання даних.

Якщо вам потрібні додаткові API для браузера для вашого набору тестів, відкрийте запит (issue) з мінімальним прикладом коду, щоб обговорити обсяг робіт та пріоритетність.