2012-01-03 18:33:26 +00:00
|
|
|
<?php
|
|
|
|
|
|
2014-02-05 05:17:48 +00:00
|
|
|
/* Modules registered when $wgEnableJavaScriptTest is true */
|
|
|
|
|
|
2016-02-17 09:09:32 +00:00
|
|
|
return [
|
2012-01-03 18:33:26 +00:00
|
|
|
|
2014-02-05 05:17:48 +00:00
|
|
|
/* Utilities */
|
|
|
|
|
|
2019-07-30 00:05:42 +00:00
|
|
|
'jquery.qunit' => [
|
|
|
|
|
'scripts' => 'resources/lib/qunitjs/qunit.js',
|
2019-10-24 16:42:58 +00:00
|
|
|
'styles' => [
|
|
|
|
|
'resources/lib/qunitjs/qunit.css',
|
|
|
|
|
'resources/src/qunitjs/qunit-local.css',
|
|
|
|
|
],
|
2019-07-30 00:05:42 +00:00
|
|
|
'targets' => [ 'desktop', 'mobile' ],
|
|
|
|
|
],
|
|
|
|
|
|
2016-02-17 09:09:32 +00:00
|
|
|
'test.sinonjs' => [
|
|
|
|
|
'scripts' => [
|
2016-01-22 19:29:28 +00:00
|
|
|
'tests/qunit/suites/resources/test.sinonjs/index.js',
|
2018-09-24 01:47:47 +00:00
|
|
|
'resources/lib/sinonjs/sinon.js',
|
2016-02-17 09:09:32 +00:00
|
|
|
],
|
|
|
|
|
'targets' => [ 'desktop', 'mobile' ],
|
|
|
|
|
],
|
qunit: Add SinonJS utility
To be used in mediawiki.api tests and elsewhere.
For now they are opt-in and disabled by default,
individual tests can enable fake timers, servers and/or
xhrs by calling this.sandbox to access the dedicated
sinon sandbox for that test.
Clock example:
QUnit.test( 'example', function ( assert ) {
var clock = this.sandbox.useFakeTimers();
setTimeout( function () {
assert.ok( true, 'test' );
} );
clock.tick(1);
} );
Server example:
QUnit.test( 'example', function ( assert ) {
this.server = this.sandbox.useFakeServer();
new mw.Api().getToken( 'foo' ).done( function ( token ) {
assert.equal( token, '0123abc', 'Token' );
} );
// assert.equal( this.server.requests.length, 1, 'Requests' );
this.server.respond( function ( request ) {
request.respond( 200, { 'Content-Type': 'application/json' },
'{ "tokens": { "testactiontoken": "0123abc" } }'
);
} );
} );
Change-Id: I789fb71903f26dbbfe781f010dc5cd3756759943
2014-02-05 05:18:28 +00:00
|
|
|
|
2016-02-17 09:09:32 +00:00
|
|
|
'test.mediawiki.qunit.testrunner' => [
|
|
|
|
|
'scripts' => [
|
2014-02-05 05:17:48 +00:00
|
|
|
'tests/qunit/data/testrunner.js',
|
2016-02-17 09:09:32 +00:00
|
|
|
],
|
|
|
|
|
'dependencies' => [
|
2014-12-02 21:48:21 +00:00
|
|
|
// Test runner configures QUnit but can't have it as dependency,
|
|
|
|
|
// see SpecialJavaScriptTest::viewQUnit.
|
2014-02-05 05:17:48 +00:00
|
|
|
'jquery.getAttrs',
|
|
|
|
|
'mediawiki.page.ready',
|
|
|
|
|
'mediawiki.page.startup',
|
qunit: Add SinonJS utility
To be used in mediawiki.api tests and elsewhere.
For now they are opt-in and disabled by default,
individual tests can enable fake timers, servers and/or
xhrs by calling this.sandbox to access the dedicated
sinon sandbox for that test.
Clock example:
QUnit.test( 'example', function ( assert ) {
var clock = this.sandbox.useFakeTimers();
setTimeout( function () {
assert.ok( true, 'test' );
} );
clock.tick(1);
} );
Server example:
QUnit.test( 'example', function ( assert ) {
this.server = this.sandbox.useFakeServer();
new mw.Api().getToken( 'foo' ).done( function ( token ) {
assert.equal( token, '0123abc', 'Token' );
} );
// assert.equal( this.server.requests.length, 1, 'Requests' );
this.server.respond( function ( request ) {
request.respond( 200, { 'Content-Type': 'application/json' },
'{ "tokens": { "testactiontoken": "0123abc" } }'
);
} );
} );
Change-Id: I789fb71903f26dbbfe781f010dc5cd3756759943
2014-02-05 05:18:28 +00:00
|
|
|
'test.sinonjs',
|
2016-02-17 09:09:32 +00:00
|
|
|
],
|
|
|
|
|
'targets' => [ 'desktop', 'mobile' ],
|
|
|
|
|
],
|
2014-02-05 05:17:48 +00:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Test suites for MediaWiki core modules
|
|
|
|
|
These must have a dependency on test.mediawiki.qunit.testrunner!
|
|
|
|
|
*/
|
2012-01-03 18:33:26 +00:00
|
|
|
|
2016-02-17 09:09:32 +00:00
|
|
|
'test.mediawiki.qunit.suites' => [
|
|
|
|
|
'scripts' => [
|
2013-04-05 00:35:37 +00:00
|
|
|
'tests/qunit/suites/resources/startup.test.js',
|
2014-04-22 12:16:45 +00:00
|
|
|
'tests/qunit/suites/resources/jquery/jquery.accessKeyLabel.test.js',
|
2014-02-27 00:26:50 +00:00
|
|
|
'tests/qunit/suites/resources/jquery/jquery.color.test.js',
|
2012-01-03 18:33:26 +00:00
|
|
|
'tests/qunit/suites/resources/jquery/jquery.colorUtil.test.js',
|
|
|
|
|
'tests/qunit/suites/resources/jquery/jquery.getAttrs.test.js',
|
|
|
|
|
'tests/qunit/suites/resources/jquery/jquery.highlightText.test.js',
|
2018-02-08 21:22:34 +00:00
|
|
|
'tests/qunit/suites/resources/jquery/jquery.lengthLimit.test.js',
|
2013-03-25 19:16:07 +00:00
|
|
|
'tests/qunit/suites/resources/jquery/jquery.makeCollapsible.test.js',
|
2012-01-03 18:33:26 +00:00
|
|
|
'tests/qunit/suites/resources/jquery/jquery.tablesorter.test.js',
|
2015-01-30 20:21:48 +00:00
|
|
|
'tests/qunit/suites/resources/jquery/jquery.tablesorter.parsers.test.js',
|
2012-01-03 18:33:26 +00:00
|
|
|
'tests/qunit/suites/resources/jquery/jquery.textSelection.test.js',
|
2012-09-12 07:57:31 +00:00
|
|
|
'tests/qunit/data/mediawiki.jqueryMsg.data.js',
|
2015-10-21 01:52:52 +00:00
|
|
|
'tests/qunit/suites/resources/mediawiki/mediawiki.requestIdleCallback.test.js',
|
2015-01-29 01:21:01 +00:00
|
|
|
'tests/qunit/suites/resources/mediawiki/mediawiki.errorLogger.test.js',
|
2012-06-07 20:45:53 +00:00
|
|
|
'tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js',
|
2012-01-03 18:33:26 +00:00
|
|
|
'tests/qunit/suites/resources/mediawiki/mediawiki.jscompat.test.js',
|
2015-03-31 03:28:11 +00:00
|
|
|
'tests/qunit/suites/resources/mediawiki/mediawiki.messagePoster.factory.test.js',
|
2018-02-19 20:23:36 +00:00
|
|
|
'tests/qunit/suites/resources/mediawiki/mediawiki.String.byteLength.test.js',
|
|
|
|
|
'tests/qunit/suites/resources/mediawiki/mediawiki.String.trimByteLength.test.js',
|
2015-08-11 18:16:21 +00:00
|
|
|
'tests/qunit/suites/resources/mediawiki/mediawiki.storage.test.js',
|
2015-03-27 23:54:45 +00:00
|
|
|
'tests/qunit/suites/resources/mediawiki/mediawiki.template.test.js',
|
2015-04-25 00:12:46 +00:00
|
|
|
'tests/qunit/suites/resources/mediawiki/mediawiki.template.mustache.test.js',
|
2012-01-03 18:33:26 +00:00
|
|
|
'tests/qunit/suites/resources/mediawiki/mediawiki.test.js',
|
2018-06-22 18:56:00 +00:00
|
|
|
'tests/qunit/suites/resources/mediawiki/mediawiki.base.test.js',
|
2016-08-17 21:49:09 +00:00
|
|
|
'tests/qunit/suites/resources/mediawiki/mediawiki.loader.test.js',
|
2015-10-31 15:47:00 +00:00
|
|
|
'tests/qunit/suites/resources/mediawiki/mediawiki.html.test.js',
|
2017-03-03 22:01:59 +00:00
|
|
|
'tests/qunit/suites/resources/mediawiki/mediawiki.inspect.test.js',
|
2012-01-04 19:11:45 +00:00
|
|
|
'tests/qunit/suites/resources/mediawiki/mediawiki.Title.test.js',
|
2014-01-24 08:36:20 +00:00
|
|
|
'tests/qunit/suites/resources/mediawiki/mediawiki.toc.test.js',
|
2015-03-27 23:54:45 +00:00
|
|
|
'tests/qunit/suites/resources/mediawiki/mediawiki.track.test.js',
|
2012-04-07 16:52:02 +00:00
|
|
|
'tests/qunit/suites/resources/mediawiki/mediawiki.Uri.test.js',
|
2012-01-03 18:33:26 +00:00
|
|
|
'tests/qunit/suites/resources/mediawiki/mediawiki.user.test.js',
|
|
|
|
|
'tests/qunit/suites/resources/mediawiki/mediawiki.util.test.js',
|
2016-01-28 17:49:38 +00:00
|
|
|
'tests/qunit/suites/resources/mediawiki/mediawiki.viewport.test.js',
|
2012-06-07 20:45:53 +00:00
|
|
|
'tests/qunit/suites/resources/mediawiki.api/mediawiki.api.test.js',
|
2014-05-03 19:34:23 +00:00
|
|
|
'tests/qunit/suites/resources/mediawiki.api/mediawiki.api.category.test.js',
|
2016-06-27 16:08:34 +00:00
|
|
|
'tests/qunit/suites/resources/mediawiki.api/mediawiki.api.edit.test.js',
|
2015-11-07 22:56:06 +00:00
|
|
|
'tests/qunit/suites/resources/mediawiki.api/mediawiki.api.messages.test.js',
|
2014-09-14 22:16:11 +00:00
|
|
|
'tests/qunit/suites/resources/mediawiki.api/mediawiki.api.options.test.js',
|
2012-06-07 20:45:53 +00:00
|
|
|
'tests/qunit/suites/resources/mediawiki.api/mediawiki.api.parse.test.js',
|
2015-06-24 19:00:19 +00:00
|
|
|
'tests/qunit/suites/resources/mediawiki.api/mediawiki.api.upload.test.js',
|
2014-03-10 19:14:30 +00:00
|
|
|
'tests/qunit/suites/resources/mediawiki.api/mediawiki.api.watch.test.js',
|
2015-08-14 23:17:49 +00:00
|
|
|
'tests/qunit/suites/resources/mediawiki.api/mediawiki.ForeignApi.test.js',
|
2012-01-03 18:33:26 +00:00
|
|
|
'tests/qunit/suites/resources/mediawiki.special/mediawiki.special.recentchanges.test.js',
|
2016-11-08 01:14:13 +00:00
|
|
|
'tests/qunit/suites/resources/mediawiki.rcfilters/dm.FiltersViewModel.test.js',
|
2017-02-22 01:41:15 +00:00
|
|
|
'tests/qunit/suites/resources/mediawiki.rcfilters/dm.FilterItem.test.js',
|
2017-08-18 21:06:09 +00:00
|
|
|
'tests/qunit/suites/resources/mediawiki.rcfilters/dm.SavedQueryItemModel.test.js',
|
|
|
|
|
'tests/qunit/suites/resources/mediawiki.rcfilters/dm.SavedQueriesModel.test.js',
|
RCFilters: Make frontend URL follow backend rules and add 'urlversion=2'
The backend always merges the query with wiki/user defaults before
it gives us data. The frontend, though, initially assumed that the
state is given strictly by the URL parameters (especially after the
URL shorening commit). This made it so that the frontend state is
incompatible with backend state.
However, always merging frontend state with user/wiki defaults can
produce inconsistencies between URLs in the same wiki, preventing
users from sharing them -- and making it potentially break if ever
a wiki default changes.
The solution is to add 'urlversion=2' to all RCFilters-generated
URLs and have the backend recognize this parameter as 'do not
merge with defaults'.
When RCFilters frontend loads, it checks whether the parameter
exists; if it doesn't, it merges whatever it sees with the defaults
just like the backend, then it transforms the URL to represent the
correct full state, and adds 'urlversion=2' to the URL parameters,
making it consistent across accounts and through time for the
next time it will load.
This means several new behaviors over the 'short url' commit:
- Accessing Special:RecentChanges directly (no query) will result
in one of two things:
-- If there is a saved query that's set to default:
The system will load that saved query "straight forward" (as
if the user clicked that option from the menu) causing, also,
an ajax re-request from the server (since the server does not
yet know about saved queries or their potential for being
the default state.)
-- If there is no saved query default: The system will load
user/wiki defaults (like the backend does) and then fix the
url to represent this state fully (with parameters showing the
actual state of the filters.
-- Both cases will also result in adding 'urlversion=2' to
the end result URL.
- Accessing Special:RecentChanges?urlversion=2 (without any other
parameters) will result in loading a completely empty filter set
in RCFilters. We assume that 'urlversion=2' does not load defaults
even if it is the only parameter in the URL.
- Accessing Special:RecentChanges?hideX=1 (parameter set without
urlversion=2) will result in the front end taking the requested
parameters, merging them with user/wiki default (reproducing what
the backend does) and then adding urlversion=2 to the URL.
In all cases except for the default-saved-query-load case, the initial
load will **not** re-request data from the backend. The backend needs
to adjust to respect urlversion=2 as well (will come in an upcoming
commit) so the state and expectation of both the front- and back-end
are the same.
This commit also factors out URL handing to a separate class (UriProcessor)
and adds unit tests for it.
Bug: T166907
Bug: T166972
Bug: T166974
Change-Id: I0eed3bc0d4fa4810b6301b535c75b6bfbc8b4a5b
2017-06-04 08:13:47 +00:00
|
|
|
'tests/qunit/suites/resources/mediawiki.rcfilters/UriProcessor.test.js',
|
2018-05-23 10:44:26 +00:00
|
|
|
'tests/qunit/suites/resources/mediawiki.widgets/' .
|
|
|
|
|
'MediaSearch/mediawiki.widgets.APIResultsQueue.test.js',
|
2012-06-04 09:40:16 +00:00
|
|
|
'tests/qunit/suites/resources/mediawiki/mediawiki.language.test.js',
|
2012-08-22 13:15:44 +00:00
|
|
|
'tests/qunit/suites/resources/mediawiki/mediawiki.cldr.test.js',
|
2014-03-25 15:18:09 +00:00
|
|
|
'tests/qunit/suites/resources/mediawiki/mediawiki.cookie.test.js',
|
2015-08-12 19:53:19 +00:00
|
|
|
'tests/qunit/suites/resources/mediawiki/mediawiki.experiments.test.js',
|
2017-09-21 16:13:01 +00:00
|
|
|
'tests/qunit/suites/resources/mediawiki/mediawiki.visibleTimeout.test.js',
|
2016-02-17 09:09:32 +00:00
|
|
|
],
|
|
|
|
|
'dependencies' => [
|
2014-02-27 00:26:50 +00:00
|
|
|
'jquery.color',
|
2012-01-03 18:33:26 +00:00
|
|
|
'jquery.getAttrs',
|
|
|
|
|
'jquery.highlightText',
|
2018-02-08 21:22:34 +00:00
|
|
|
'jquery.lengthLimit',
|
2013-03-25 19:16:07 +00:00
|
|
|
'jquery.makeCollapsible',
|
2012-01-03 18:33:26 +00:00
|
|
|
'jquery.tablesorter',
|
|
|
|
|
'jquery.textSelection',
|
2012-06-07 20:45:53 +00:00
|
|
|
'mediawiki.api',
|
2015-08-14 23:17:49 +00:00
|
|
|
'mediawiki.ForeignApi.core',
|
2012-06-07 20:45:53 +00:00
|
|
|
'mediawiki.jqueryMsg',
|
2015-03-31 03:28:11 +00:00
|
|
|
'mediawiki.messagePoster',
|
2018-02-19 20:23:36 +00:00
|
|
|
'mediawiki.String',
|
2015-08-11 18:16:21 +00:00
|
|
|
'mediawiki.storage',
|
2012-01-03 18:33:26 +00:00
|
|
|
'mediawiki.Title',
|
2014-04-14 20:16:08 +00:00
|
|
|
'mediawiki.toc',
|
2012-04-07 16:52:02 +00:00
|
|
|
'mediawiki.Uri',
|
2012-01-03 18:33:26 +00:00
|
|
|
'mediawiki.user',
|
2015-04-25 00:12:46 +00:00
|
|
|
'mediawiki.template.mustache',
|
2014-10-10 00:07:14 +00:00
|
|
|
'mediawiki.template',
|
2012-01-03 18:33:26 +00:00
|
|
|
'mediawiki.util',
|
2016-01-28 17:49:38 +00:00
|
|
|
'mediawiki.viewport',
|
2012-01-03 18:33:26 +00:00
|
|
|
'mediawiki.special.recentchanges',
|
2017-02-11 01:27:48 +00:00
|
|
|
'mediawiki.rcfilters.filters.dm',
|
2012-06-07 20:45:53 +00:00
|
|
|
'mediawiki.language',
|
2012-08-22 13:15:44 +00:00
|
|
|
'mediawiki.cldr',
|
2014-03-25 15:18:09 +00:00
|
|
|
'mediawiki.cookie',
|
2015-08-12 19:53:19 +00:00
|
|
|
'mediawiki.experiments',
|
2017-03-03 22:01:59 +00:00
|
|
|
'mediawiki.inspect',
|
2017-09-21 16:13:01 +00:00
|
|
|
'mediawiki.visibleTimeout',
|
2018-05-23 10:44:26 +00:00
|
|
|
'mediawiki.widgets.MediaSearch',
|
2014-02-05 05:17:48 +00:00
|
|
|
'test.mediawiki.qunit.testrunner',
|
2016-02-17 09:09:32 +00:00
|
|
|
],
|
|
|
|
|
]
|
|
|
|
|
];
|