Previously we were adding `/assets/discourse/tests/core_plugin_tests.js` to the test html all the time. This works in development mode, but fails silently when using testem via the `ember test` CLI, because there is no proxy running. This commit makes a few changes to fix this, and make it more useful: - Only renders the plugin `<script>` when in development mode, or when `LOAD_PLUGINS=1` (matching core's behavior) - Only loads plugin translations based on the same logic - When running via testem, and the above conditions are met, testem is configured to proxy `core_plugin_tests.js` through to a rails server. (port based on the `UNICORN_PORT` env variable) - Adds a descriptive error if the plugin `<script>` fails to load. This can happen if the rails server hasn't been started - Updates the logic for testem browsers. Ember CLI always launches testem in "CI" mode, and we don't really want 3 browsers opening by default. Our CI explicitly specifies the 3 browsers at runtime
45 lines
1.3 KiB
JavaScript
45 lines
1.3 KiB
JavaScript
import config from "../config/environment";
|
|
import { setEnvironment } from "discourse-common/config/environment";
|
|
import { start } from "ember-qunit";
|
|
import loadEmberExam from "ember-exam/test-support/load";
|
|
import * as QUnit from "qunit";
|
|
import { setup } from "qunit-dom";
|
|
|
|
setEnvironment("testing");
|
|
|
|
document.addEventListener("discourse-booted", () => {
|
|
const script = document.getElementById("plugin-test-script");
|
|
if (script && !requirejs.entries["discourse/tests/active-plugins"]) {
|
|
throw new Error(
|
|
`Plugin JS payload failed to load from ${script.src}. Is the Rails server running?`
|
|
);
|
|
}
|
|
|
|
let setupTests = require("discourse/tests/setup-tests").default;
|
|
const skippingCore =
|
|
new URLSearchParams(window.location.search).get("qunit_skip_core") === "1";
|
|
Ember.ENV.LOG_STACKTRACE_ON_DEPRECATION = false;
|
|
|
|
document.body.insertAdjacentHTML(
|
|
"afterbegin",
|
|
`
|
|
<div id="qunit"></div>
|
|
<div id="qunit-fixture"></div>
|
|
<div id="ember-testing-container" style="position: fixed">
|
|
<div id="ember-testing"></div>
|
|
</div>
|
|
`
|
|
);
|
|
|
|
setup(QUnit.assert);
|
|
setupTests(config.APP);
|
|
let loader = loadEmberExam();
|
|
loader.loadModules();
|
|
start({
|
|
setupTestContainer: false,
|
|
loadTests: false,
|
|
setupEmberOnerrorValidation: !skippingCore,
|
|
});
|
|
});
|
|
window.EmberENV.TESTS_FILE_LOADED = true;
|