Как запускать наборы тестов QUnit для ядра, плагинов и тем Discourse

В Discourse есть обширные тесты для фронтенда ядра, плагинов и тем. Как только у вас будет рабочая локальная среда разработки, эти тесты можно запускать локальным образом несколькими способами.

Запуск тестов в браузере

Ядро / Плагины: Перейдите на /tests в вашей среде разработки

Темы: Перейдите на /theme-qunit в вашей среде разработки (или продакшн-среде), затем выберите тему

В целом, при работе с тестами ядра следует включить опцию «Пропустить плагины», а при работе с плагинами — выбрать конкретный плагин из выпадающего списка (что автоматически «Пропустит ядро»). Ожидается, что набор тестов ядра не пройдет успешно при включенных плагинах (так как плагины часто намеренно изменяют поведение ядра)

:information_source: К сожалению, на момент написания этой документации утечки памяти в наших тестах означают, что попытка запустить весь набор в одном браузере обычно приводит к достижению лимита памяти браузера. Чтобы запустить весь набор параллельно в нескольких браузерах, ознакомьтесь с примерами использования 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

# Запустить все тесты, в которых «модуль: имя теста» содержит подстроку (без учета регистра):
bin/qunit --filter "Integration | Component | bookmark"

# Оберните значение в слэши для соответствия регулярному выражению, например, для альтернативы:
bin/qunit --filter "/bookmark|reaction/i"

# Запустить изолированный сервер и запустить в видимом браузере для более удобной отладки:
bin/qunit --standalone --no-headless

:information_source: --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.

19 лайков