如何运行 Discourse 核心、插件和主题的 QUnit 测试套件

Discourse 拥有广泛的前端测试,涵盖核心、插件和主题。一旦您拥有正常运行的本地开发环境,就可以通过多种方式在本地运行这些测试。

在浏览器中运行测试

核心/插件: 访问开发环境中的 /tests

主题: 访问开发(或生产)环境中的 /theme-qunit,然后选择主题

通常,在处理核心测试时,您应该启用“跳过插件”(Skip Plugins),而在处理插件时,您应该从下拉列表中选择特定的插件(这将自动“跳过核心”)。由于插件通常会故意更改核心行为,因此核心测试套件在启用插件时预计不会通过。

:information_source: 不幸的是,在撰写本文时,我们的测试中存在内存泄漏,这意味着尝试在一个浏览器中运行整个套件通常会达到浏览器的内存限制。要并行地在多个浏览器中运行整个套件,请参阅下面的 CLI 示例。

在 CLI 中运行测试

核心

导航到 Discourse 仓库中 Ember 应用程序的根目录(app/assets/javascripts/discourse),并确保自上次拉取上游更改以来已运行 pnpm install

从那里,您可以使用标准的 Ember-CLI 工具来运行测试——请参阅 Ember 指南中的 “如何运行测试”部分。我们还安装了 Ember Exam,它提供了一些非常有用的随机化和并行化标志。

以下是一些有用的示例:

# 在 5 个“无头”Chrome 实例中并行运行整个核心测试套件:
pnpm ember exam --parallel 5 --load-balance

# 运行名称中包含特定字符串的所有测试:
pnpm ember exam --filter "Integration | Component | bookmark"

# 以“服务器”模式运行,该模式会提供一个 URL 以在浏览器中加载,以便于调试:
pnpm ember exam --filter "somefilter" --server

插件

从 Discourse 的根目录:

bin/rake "plugin:qunit" # 运行所有插件 qunit 测试
bin/rake "plugin:qunit[discourse-chat-integration]" # 运行单个插件的 qunit 测试

主题

从 Discourse 的根目录:

bin/rake "themes:qunit[url,\u003ctheme_url\u003e]"
bin/rake "themes:qunit[name,\u003ctheme_name\u003e]"
bin/rake "themes:qunit[id,\u003ctheme_id\u003e]"

本文档是版本控制的——请在 github 上建议更改。

19 个赞