Как протестировать темы или компоненты тем?

Я нашёл эту тему о тестировании плагинов (автоматически), но не встречал упоминаний о том, как тестировать темы или компоненты тем. Есть ли примеры использования QUnit (или аналогичных инструментов) с темами?

Вы можете добавить его в выбираемую пользователем тему или использовать тестовую ссылку на странице администрирования темы.

Извините, я имел в виду автоматизированное тестирование — я исправлю свой предыдущий пост. Я думал о чём-то вроде QUnit, который уже используют некоторые плагины.

Нет, на данный момент добавить тесты QUnit к темам/компонентам невозможно…

@david насколько реально добавить поддержку папки /test, как у плагинов? Нам также нужно будет включать тему при запуске тестов, ведь основные тесты выполняются без какой-либо темы, верно?

Конечно, это возможно, но потребует некоторой доработки. Сейчас все файлы JavaScript темы собраны в один общий файл. Нам нужно будет убедиться, что тесты помещены в новый отдельный бандл, чтобы они не доставлялись обычным посетителям. А после этого — реализовать возможность запуска тестов QUnit для одной конкретной темы.

Также стоит учесть, что маршрут /qunit недоступен на продакшн-серверах. Поскольку темы часто разрабатываются именно на таких серверах, возможно, нам стоит пересмотреть этот подход :thinking:

На мой взгляд, это один из главных недостатков компонентов тем. Их невероятно легко развернуть, что замечательно, но тестирование часто откладывается на второй план.

Если я правильно понимаю, всё, что можно сделать с помощью компонента темы, можно реализовать и с помощью плагина. Первый вариант проще в развёртывании, тогда как второй позволяет проводить тестирование.

Да, это в целом верно. В итоге это компромисс в зависимости от того, что вы настраиваете. Например, добавление пользовательской таблицы стилей, скорее всего, нельзя будет протестировать даже в виде плагина. А вот добавление пользовательских JavaScript-контролов и виджетов вызывает вопросы.

Мне кажется, стоит учесть этот вопрос при работе с ember cli. Нет ничего невозможного в создании тестового раннера для тем, и мы могли бы включить некоторые базовые компоненты в gem discourse-theme для настройки локального тестирования с использованием ember cli.

Однако запуск тестов темы потребует полной установки Discourse, верно? Столько взаимозависимостей, что я не думаю, что мы сможем тестировать темы независимо :thinking:

Возможно, theme-cli мог бы содержать логику для загрузки образа docker discourse_dev и запуска тестов qunit внутри него?

Вся идея ember cli заключается в том, чтобы чётко разделить серверную и клиентскую части. Мы могли бы поставлять достаточно JS-части для тестирования клиента без запуска rails-сервера. Вам всё равно обязательно понадобятся node и ember cli, но, возможно, удастся обойтись без установки полного стека Discourse, включая Redis и Postgres.

Это может быть непросто, но определённо стоит иметь это в виду.

Теперь мы поддерживаем тесты в темах (это обновление было добавлено в середине 2021 года). Вы можете перейти по адресу /theme-qunit в вашей локальной среде или на рабочем сайте, где будут перечислены все установленные темы и компоненты, содержащие тесты. Примеры можно найти здесь: Discourse Tab Bar for Mobile или Компонент иконок тегов.

Это отлично. Будет ли это распространяться на тестирование JavaScript в плагинах?

Вы имеете в виду возможность запускать тесты в продакшене? На данный момент это доступно только для тем.

(Локально, конечно, вы можете запускать тесты JS-плагинов.)

Я думаю, что целью было бы возможность запускать их в CI на GitHub, как мы сейчас делаем со спецификациями (и для темы, и для JS-плагинов)?

Да, мы запускаем тесты в CI для всех официальных плагинов.