Introduce the WebdriverIO browser testing framework driven by Node.js.
The overall intents are:
* have MediaWiki core to provide a platform to run tests that is shared
between core and the extensions.
* phase out ruby driven browser tests eventually.
Code is namespaced in sub directory /tests/selenium
The 'pages' sub directory provides helper representing a MediaWiki page
such as Special:Login and human friendly helpers to interact with the
elements.
Add Grunt task webdriver:test.
Provide a npm script to easily spawn/dispose chromedriver and run above
grunt task.
wdio.conf.js provides all the configuration. It defaults to point to a
MediaWiki-Vagrant installation on http://127.0.0.1:8080. Can be
overriden with environment settings as needed.
glob patterns (specs) are made absolute paths from MediaWiki root path
that let us run the tests either from the root path (eg the npm
wrapper or from the tests/selenium directory when invoking wdio
directly. wdio assumes they are relative to the current working
directory, hence the normalization.
wdio.conf.jenkins.js extends the configuration and is used solely for
Jenkins. The switch is done from the Gruntfile.js whenever JENKINS_HOME
is set. Specially we want junit reports to be generated.
Provide a more specific eslint configuration.
References:
* MALU https://phabricator.wikimedia.org/source/malu/
* T151442 Research WebdriverIO
* T151443 Research Nightwatch.js
Bug: T139740
Signed-off-by: Antoine Musso <hashar@free.fr>
Change-Id: Ibe7a004a120e82af637ab3e31b725de743134c99
This never really worked properly, doesn't conform to coding
conventions, and isn't actually used by anyone for testing.
Our selenium stuff these days are in the qa/browsertests repo
Change-Id: I8f1efaa118fe41821fb3f4a6099d75a33681f17b
Follows-up I1343872de7, Ia533aedf63 and I2df2f80b81.
Also updated usage in text in documentation and the
installer LocalSettingsGenerator.
Most of them were handled by this regex:
- find: (require|include|require_once|include_once)\s*\(\s*(.+?)\s*\)\s*;$
- replace: $1 $2;
Change-Id: I6b38aad9a5149c9c43ce18bd8edbab14b8ce43fa
Follows-up 97caae596d which makes HTML5 the default
and removes support for XHTML 1.0 and HTML < 5.
* <script type>
* <style type>
* <html xmlns>
* Quick-closing slash in non-XML HTML5 documents
Change-Id: I71855fa8d4095a5a448ebdc3dc36506ddab6f70c
Squiz.WhiteSpace.LanguageConstructSpacing:
Language constructs must be followed by a single space;
expected "require_once expression" but found
"require_once(expression)"
It is a keyword (e.g. like `new`, `return` and `print`). As
such the parentheses don't make sense.
Per our code conventions, we use a space after keywords like
these. We appeared to have an unwritten exception for `require`
that doesn't make sense. About 60% of require/include usage
was missing the space and/or had superfluous parentheses.
It is as silly as print("foo") or return("foo"), it works
because keywords have no significance for whitespace between
it and the expression that follows, and since experessions can
be wrapped in parentheses for clarity (e.g. when doing string
concatenation or mathematical operations) the parenthesis
before and after basiclaly just ignored.
Change-Id: I2df2f80b8123714bea7e0771bf94b51ad5bb4b87
- Remove useless @addtogroup, all files already have @ingroup
- Make comments position and whitespaces consistent
Change-Id: Id8f68d53e00e7ed32a5da8681c0263a683eef724
· Use env(1) in shebangs instead of hardcoding paths.
· $IP is already set in the constructor of Maintenance classes.
· Add sapi guard to some phpunit files.
Change-Id: I6c6fd6c61e2861b5992f2ccd67a4e3f62e2c445e
Convert «'/' . 'MediaWikiInstallationCommonFunction.php'» into
«'/MediaWikiInstallationCommonFunction.php'»
Makes find-entries.php life easier.
Change-Id: I2952a14daa651099ff1d0b15a166880b710cad34
Removed in 9e3aec (phpunit 3.5.1):
9e3aec43cf
Deprecated since fb48a69 (phpunit 3.4.8):
fb48a69ea6
Its usage was replaced with the autoloader.
Change-Id: Ib76ed6e9ec83e9e33c76ef423bb0caa0c37067e8
It was entirely Vector-extension-specific (so very unlikely to have
been used by anything external), deeply interconnected with the
extension (its internal functions were overwritten by a script from
it, making it even more incompatible with other uses), and this
functionality (being really a partial workaround for low-res issues
with the skin) belongs to the extension instead of the skin anyway.
Corresponding Vector extension change: Ic6b622279
Change-Id: I7c0f42d922b20741f66014eea0a7593bc1950e0e
Removed left over uses of dirname( __FILE__ ) to __DIR__, even in comments.
Running the PHP version test in maintenance/Maintenance.php earlier, so that
we no longer have to stay PHP < 5.3 compatible in there.
Change-Id: I5a00bd5c6af44b7f826c4e5576a7b3de7b5026d8
We can now do this since we finally switched to PHP 5.3 for MW 1.20 and get rid of the silly dirname(__FILE__) stuff :)
Change-Id: Id9b2c9cd2e678197aa81c78adced5d1d31ff57b1
Added run of ConvertUserOptions maintenance script into update.php before dropping the column
Removed usages of user_options in code
Marked User::decodeOptions() deprecated as of 1.19.
Made ConvertUserOptions drop out early if the user_options field doesn't exist
Made ConvertUserOptions update user_options to '' after migration of user options to mOptions
Making those of SeleniumTestConstants.php into class constants.
for i in $(grep -o 'const [A-Z_]*' SeleniumTestConstants.php | cut -c 7-); do
find -name \*.php -and -not -name SeleniumTestConstants.php -exec sed -i s/$i/SeleniumTestConstants::$i/g \{\} +
done
These two files use constants from SeleniumTestConstants.php
I would be more confortable if all these defines were class variables, though.
Removed an empty statement.