Как запустить тесты 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

# Запуск всех тестов, в которых "module: test name" содержит подстроку (без учета регистра):
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.

20 лайков