From f1d8dc7d75ee3988828dfb1078a80211e690bd95 Mon Sep 17 00:00:00 2001 From: joakin Date: Wed, 8 Mar 2017 11:57:32 +0100 Subject: [PATCH] Docs: Add adr about running QUnit tests in node Change-Id: Ie887a88b81dcc120e5e9bf53c9c0bf5886259a2e --- ...7-prefer-running-qunit-tests-in-node-js.md | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 doc/adr/0007-prefer-running-qunit-tests-in-node-js.md diff --git a/doc/adr/0007-prefer-running-qunit-tests-in-node-js.md b/doc/adr/0007-prefer-running-qunit-tests-in-node-js.md new file mode 100644 index 000000000..80d44f50a --- /dev/null +++ b/doc/adr/0007-prefer-running-qunit-tests-in-node-js.md @@ -0,0 +1,47 @@ +# 7. Prefer running QUnit tests in node.js + +Date: 08/03/2017 + +## Status + +Accepted + +## Context + +QUnit tests were set up to run on a browser or phantom.js on top of a running +mediawiki server. + +We want to: +* Speed up the test running in a development cycle + * Full page reload every time you change tests or source takes too long +* Leverage common.js in our tests to load our sources and other test helpers + like stubs + * Remove global variables + +## Decision + +QUnit tests will be migrated from `tests/qunit/ext.popups/` to +`tests/node-qunit/` and will be run by the script `npm run test:node` in a node +environment with access to QUnit, a fake jsdom, and jQuery. Powered by the node +package `mw-node-qunit`. + +Node tests will be run in CI too in the npm job that runs `npm test`. + +It is preferred to use the node-qunit test environment, as it is fast, +leverages common.js modules, and isolated. + +When impossible because of extreme coupling with mediawiki.js, put the +**integration** tests in `tests/qunit/`. + +## Consequences + +* README has instructions on how to run different types of tests +* Node based QUnit tests... + * can be run independently of mediawiki + * are isolated and need to stub global variables used in sources + * are run in node.js 6+ which runs in CI on wikimedia infrastructure + * which means they leverage that platforms advantages (loading files with + common.js, using es6, using the node stdlib if necessary) +* Most tests are migrated to `tests/node-qunit` and only the ones that strictly + need it remain in `tests/qunit` (`processLinks.test.js` for example, see + comment in file)