Открытый исходный код / Контейнер.

тестировщик браузеров

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

Ржавчина. Детерминированное время выполнения. Тестирование DOM.

В чем заключаются сильные стороны этого решения.

Инструмент browser-tester предназначен для тестирования предсказуемого поведения форм и пользовательского интерфейса, а не для проверки полной совместимости с различными браузерами.

Среда выполнения, работающая только с языком Rust.

Работает внутри одного процесса, написанного на языке Rust. Не требует внешних браузеров, WebDriver или Node.js.

Детерминированное выполнение.

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

Тестирование DOM и событий.

Поддерживает практичные функции, аналогичные работе веб-браузера: выбор элементов, выполнение скриптов, обработку событий и обновление структуры DOM.

Быстрая обратная связь от местных пользователей.

Быстрый цикл обратной связи для тестирования пользовательских интерфейсов, ориентированных на формы, при этом вывод об ошибках фокусируется на селекторах и ожидаемых/фактических значениях.

Быстрый старт.

Создайте тестовый стенд с использованием HTML, настройте взаимодействие с ним и проверяйте результаты, отображаемые в DOM. Начните с простого тестового сценария и постепенно расширяйте его, добавляя функции, такие как таймеры и эмуляторы API.

Установить.

Добавить в манифест cargo: 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` намеренно не поддерживается для обеспечения безопасности и предсказуемости работы системы.
  • Эта среда выполнения разработана для тестирования в реальных сценариях, а не для обеспечения полной совместимости со всеми существующими браузерами.
  • Внешние сетевые операции не рассматриваются в данном контексте; для обеспечения полноты тестового покрытия используйте имитации (моки) для операций ввода-вывода.

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