Discourse содержит обширные тесты фронтенда для ядра, плагинов и тем. Как только у вас будет настроенная локальная среда разработки, эти тесты можно запускать локальным образом несколькими способами.
Запуск тестов в браузере
Ядро / Плагины: Перейдите по адресу /tests в вашей среде разработки
Темы: Перейдите по адресу /theme-qunit в среде разработки (или продакшена), а затем выберите тему
Как правило, при работе с тестами ядра следует включать опцию «Пропустить плагины», а при работе с плагинами — выбирать конкретный плагин из выпадающего списка (это автоматически приведет к пропуску тестов ядра). Ожидается, что набор тестов ядра не будет проходить успешно, если плагины включены (поскольку плагины часто намеренно изменяют поведение ядра)
К сожалению, на момент написания этой статьи утечки памяти в наших тестах означают, что попытка запустить весь набор в одном браузере часто приводит к исчерпанию лимита памяти браузера. Чтобы запустить весь набор в нескольких браузерах параллельно, ознакомьтесь с примерами использования CLI ниже.
Запуск тестов в CLI
Ядро
Из корневой директории Discourse используйте bin/qunit (убедитесь, что вы выполнили pnpm install после последнего получения изменений из upstream). Эта команда использует Ember Exam для рандомизации и параллелизации и по умолчанию работает с запущенным сервером Rails и существующими JS-ресурсами. Запустите bin/qunit --help, чтобы увидеть полный список опций.
Вот несколько полезных примеров:
# Запуск одного тестового файла или всех тестов в директории:
bin/qunit frontend/discourse/tests/integration/components/bookmark-test.gjs
bin/qunit frontend/discourse/tests/integration/components
# Запуск всего набора тестов ядра в 5 параллельных экземплярах headless Chrome:
bin/qunit --parallel 5
# Запуск всех тестов, в которых "module: test name" содержит подстроку (без учета регистра):
bin/qunit --filter "Integration | Component | bookmark"
# Оберните значение в слэши для соответствия регулярному выражению, например, для альтернативы:
bin/qunit --filter "/bookmark|reaction/i"
# Запуск изолированного сервера и тестов в видимом браузере для упрощения отладки:
bin/qunit --standalone --no-headless
Опция
--filterпередается в QUnit: обычное значение совпадает как подстрока без учета регистра, тогда как значение, обернутое в слэши (например,/foo/i), совпадает как регулярное выражение. Включайте флагiдля сопоставления регулярных выражений без учета регистра.
Плагины
Из корневой директории Discourse:
bin/rake "plugin:qunit" # Запуск всех qunit-тестов плагинов
bin/rake "plugin:qunit[discourse-chat-integration]" # Запуск qunit-тестов одного плагина
Темы
Из корневой директории Discourse:
bin/rake "themes:qunit[url,<theme_url>]"
bin/rake "themes:qunit[name,<theme_name>]"
bin/rake "themes:qunit[id,<theme_id>]"
Этот документ находится под контролем версий — предложите изменения на github.