This commit allows themes and theme components to have QUnit tests. To add tests to your theme/component, create a top-level directory in your theme and name it `test`, and Discourse will save all the files in that directory (and its sub-directories) as "tests files" in the database. While tests files/directories are not required to be organized in a specific way, we recommend that you follow Discourse core's tests [structure](https://github.com/discourse/discourse/tree/master/app/assets/javascripts/discourse/tests). Writing theme tests should be identical to writing plugins or core tests; all the `import` statements and APIs that you see in core (or plugins) to define/setup tests should just work in themes. You do need a working Discourse install to run theme tests, and you have 2 ways to run theme tests: * In the browser at the `/qunit` route. `/qunit` will run tests of all active themes/components as well as core and plugins. The `/qunit` now accepts a `theme_name` or `theme_url` params that you can use to run tests of a specific theme/component like so: `/qunit?theme_name=<your_theme_name>`. * In the command line using the `themes:qunit` rake task. This take is meant to run tests of a single theme/component so you need to provide it with a theme name or URL like so: `bundle exec rake themes:qunit[name=<theme_name>]` or `bundle exec rake themes:qunit[url=<theme_url>]`. There are some refactors to internal code that's responsible for processing themes/components in Discourse, most notably: * `<script type="text/discourse-plugin">` tags are automatically converted to modules. * The `theme-settings` service is removed in favor of a simple `lib` file responsible for managing theme settings. This was done to allow us to register/lookup theme settings very early in our Ember app lifecycle and because there was no reason for it to be an Ember service. These refactors should 100% backward compatible and invisible to theme developers. |
||
|---|---|---|
| .. | ||
| admin | ||
| confirm-new-email | ||
| discourse | ||
| discourse-common | ||
| discourse-hbr | ||
| discourse-widget-hbs | ||
| docs | ||
| ember-addons | ||
| locales | ||
| pretty-text | ||
| select-kit | ||
| wizard | ||
| activate-account.js | ||
| admin.js.erb | ||
| app-boot.js | ||
| application.js | ||
| auto-redirect.js | ||
| browser-detect.js | ||
| browser-update.js | ||
| discourse-loader.js | ||
| discourse-shims.js | ||
| embed-application.js | ||
| ember_include.js.erb | ||
| ember_jquery.js | ||
| env.js | ||
| google-tag-manager.js | ||
| google-universal-analytics-v3.js | ||
| google-universal-analytics-v4.js | ||
| handlebars-shim.js | ||
| main_include_admin.js | ||
| markdown-it-bundle.js | ||
| onpopstate-handler.js | ||
| package.json | ||
| polyfills.js | ||
| pretty-text-bundle.js | ||
| print-page.js | ||
| service-worker.js.erb | ||
| set-prototype-polyfill.js | ||
| start-discourse.js | ||
| template_include.js | ||
| test-shims.js | ||
| vendor.js | ||
| widget-runtime.js | ||
| wizard-application.js | ||
| wizard-shims.js | ||
| wizard-start.js | ||
| wizard-vendor.js | ||
| yarn.lock | ||