selenium: Update wdio-mediawiki

wdio-mediawiki v1.1.1:
- Includes wdio-defaults.conf.js file that vastly simplifies wdio.conf.js.
- Replaces @wdio/spec-reporter with @wdio/dot-reporter.
- Introduces video recording.

Bug: T283597
Bug: T276503
Change-Id: Ic80f90dbbd5604dc3c9afe3303862edbf46b1cd2
This commit is contained in:
Željko Filipin 2021-05-25 17:01:35 +02:00 committed by Zfilipin
parent 12e3d5a2ef
commit b6a9950642
3 changed files with 102 additions and 205 deletions

198
package-lock.json generated
View file

@ -924,6 +924,28 @@
"glob": "^7.1.2"
}
},
"@wdio/dot-reporter": {
"version": "6.11.0",
"resolved": "https://registry.npmjs.org/@wdio/dot-reporter/-/dot-reporter-6.11.0.tgz",
"integrity": "sha512-0EmRTVazuNXrn4YVhhJ39brSUlsRg+WE22MSU1cNO1xif011C6MKE7ZS5HbS528uSY0dEFYxApyQJ/4TM4bhqQ==",
"dev": true,
"requires": {
"@wdio/reporter": "6.11.0",
"chalk": "^4.0.0"
},
"dependencies": {
"@wdio/reporter": {
"version": "6.11.0",
"resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-6.11.0.tgz",
"integrity": "sha512-SStNZZUI0bXI+omyIU6ql4Rh+Dews1dz1GlowHDrBxwKMPyAwytgYokXLn3zr+E3tkHDiRyJjQxfDetBWBGmtg==",
"dev": true,
"requires": {
"@types/cucumber": "^6.0.1",
"fs-extra": "^9.0.0"
}
}
}
},
"@wdio/junit-reporter": {
"version": "6.11.0",
"resolved": "https://registry.npmjs.org/@wdio/junit-reporter/-/junit-reporter-6.11.0.tgz",
@ -1000,15 +1022,6 @@
"@wdio/utils": "6.1.8"
}
},
"@wdio/reporter": {
"version": "6.1.14",
"resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-6.1.14.tgz",
"integrity": "sha512-Pt6P0JU0COHTpggsOoJKUJyAyQsi7xlHebBNU/DWdHHpmzYd4e9vDutjyTqXu/1zn+t+Zq+uL1IC0E4Xjv6f7w==",
"dev": true,
"requires": {
"fs-extra": "^9.0.0"
}
},
"@wdio/runner": {
"version": "6.1.16",
"resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-6.1.16.tgz",
@ -1024,18 +1037,6 @@
"webdriverio": "6.1.16"
}
},
"@wdio/spec-reporter": {
"version": "6.1.14",
"resolved": "https://registry.npmjs.org/@wdio/spec-reporter/-/spec-reporter-6.1.14.tgz",
"integrity": "sha512-QaSBgnzllzLp9LR7/5DTkmrI8BqcznUma8ZxwUNmhvskv/oKzrmNyeCsGoiExFmCk81A9FgZiZPXey7CuaTkdw==",
"dev": true,
"requires": {
"@wdio/reporter": "6.1.14",
"chalk": "^4.0.0",
"easy-table": "^1.1.1",
"pretty-ms": "^7.0.0"
}
},
"@wdio/sync": {
"version": "6.1.14",
"resolved": "https://registry.npmjs.org/@wdio/sync/-/sync-6.1.14.tgz",
@ -1323,9 +1324,9 @@
"dev": true
},
"aws4": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz",
"integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==",
"version": "1.11.0",
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz",
"integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==",
"dev": true
},
"bail": {
@ -1692,13 +1693,6 @@
"wrap-ansi": "^6.2.0"
}
},
"clone": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
"integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
"dev": true,
"optional": true
},
"clone-regexp": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-2.2.0.tgz",
@ -2178,16 +2172,6 @@
"integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
"dev": true
},
"defaults": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
"integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
"dev": true,
"optional": true,
"requires": {
"clone": "^1.0.2"
}
},
"defer-to-connect": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.0.tgz",
@ -2484,24 +2468,6 @@
}
}
},
"easy-table": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.1.tgz",
"integrity": "sha512-C9Lvm0WFcn2RgxbMnTbXZenMIWcBtkzMr+dWqq/JsVoGFSVUVlPqeOa5LP5kM0I3zoOazFpckOEb2/0LDFfToQ==",
"dev": true,
"requires": {
"ansi-regex": "^3.0.0",
"wcwidth": ">=1.0.1"
},
"dependencies": {
"ansi-regex": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
"integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
"dev": true
}
}
},
"ecc-jsbn": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
@ -4216,13 +4182,33 @@
"dev": true
},
"har-validator": {
"version": "5.1.3",
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
"integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
"version": "5.1.5",
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
"integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
"dev": true,
"requires": {
"ajv": "^6.5.5",
"ajv": "^6.12.3",
"har-schema": "^2.0.0"
},
"dependencies": {
"ajv": {
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dev": true,
"requires": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
}
},
"fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
"dev": true
}
}
},
"hard-rejection": {
@ -5723,18 +5709,18 @@
"dev": true
},
"mime-db": {
"version": "1.44.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",
"integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==",
"version": "1.47.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz",
"integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==",
"dev": true
},
"mime-types": {
"version": "2.1.27",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz",
"integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==",
"version": "2.1.30",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz",
"integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==",
"dev": true,
"requires": {
"mime-db": "1.44.0"
"mime-db": "1.47.0"
}
},
"mimic-fn": {
@ -6087,14 +6073,41 @@
"dev": true
},
"mwbot": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/mwbot/-/mwbot-1.0.10.tgz",
"integrity": "sha1-pEC9ZmOnYoq1t5lgnpjLL8ThM8k=",
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/mwbot/-/mwbot-2.0.0.tgz",
"integrity": "sha512-9iTx8oFMntC60yyaPJjN4GEgiQlal7i03jATu7kq5b9BGW5aNz7YbrpjaciLNr0Z33PTdQe0hRTJ0JdUJi2WQg==",
"dev": true,
"requires": {
"bluebird": "^3.4.6",
"request": "^2.75.0",
"semlog": "^0.6.10"
"bluebird": "^3.7.2",
"request": "^2.88.2",
"semlog": "^0.6.10",
"semver": "7.3.4"
},
"dependencies": {
"lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dev": true,
"requires": {
"yallist": "^4.0.0"
}
},
"semver": {
"version": "7.3.4",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
"integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
"dev": true,
"requires": {
"lru-cache": "^6.0.0"
}
},
"yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true
}
}
},
"natural-compare": {
@ -6395,12 +6408,6 @@
"error-ex": "^1.2.0"
}
},
"parse-ms": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz",
"integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==",
"dev": true
},
"parse-passwd": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
@ -6676,15 +6683,6 @@
"react-is": "^16.12.0"
}
},
"pretty-ms": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.0.tgz",
"integrity": "sha512-J3aPWiC5e9ZeZFuSeBraGxSkGMOvulSWsxDByOcbD1Pr75YL3LSNIKIb52WXbCLE1sS5s4inBBbryjF4Y05Ceg==",
"dev": true,
"requires": {
"parse-ms": "^2.1.0"
}
},
"prettyjson": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/prettyjson/-/prettyjson-1.2.1.tgz",
@ -8291,23 +8289,13 @@
}
}
},
"wcwidth": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
"integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
"dev": true,
"optional": true,
"requires": {
"defaults": "^1.0.3"
}
},
"wdio-mediawiki": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/wdio-mediawiki/-/wdio-mediawiki-1.0.0.tgz",
"integrity": "sha512-eKrPx3MHTQvWaI+YUi6pLmebOdsdBegnx5MJx8m9ejh6US7TIKKzLmsh9p9gfj6PW7HzHNN/e8EkDwKo3M0kJg==",
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/wdio-mediawiki/-/wdio-mediawiki-1.1.1.tgz",
"integrity": "sha512-bbOnxzxuCJXG5KaccoeUyc525f9rxfaTqjWm26AWRPoKx2i4+jp9qlXQ+WywqwL4CvMen9by396s2DA/is1pmA==",
"dev": true,
"requires": {
"mwbot": "1.0.10"
"mwbot": "2.0.0"
}
},
"webdriver": {

View file

@ -11,10 +11,10 @@
},
"devDependencies": {
"@wdio/cli": "6.1.16",
"@wdio/dot-reporter": "6.11.0",
"@wdio/junit-reporter": "6.11.0",
"@wdio/local-runner": "6.1.16",
"@wdio/mocha-framework": "6.1.14",
"@wdio/spec-reporter": "6.1.14",
"@wdio/sync": "6.1.14",
"eslint-config-wikimedia": "0.20.0",
"grunt": "1.4.0",
@ -24,7 +24,7 @@
"grunt-stylelint": "0.16.0",
"grunt-svgmin": "5.0.0",
"stylelint-config-wikimedia": "0.10.3",
"wdio-mediawiki": "1.0.0",
"wdio-mediawiki": "1.1.1",
"webdriverio": "6.1.16"
}
}

View file

@ -1,102 +1,11 @@
'use strict';
/**
* See also: http://webdriver.io/guide/testrunner/configurationfile.html
*/
const fs = require( 'fs' ),
path = require( 'path' ),
logPath = process.env.LOG_DIR || path.join( __dirname, '/log' ),
saveScreenshot = require( 'wdio-mediawiki' ).saveScreenshot;
const { config } = require( 'wdio-mediawiki/wdio-defaults.conf.js' );
exports.config = {
// ======
// Custom WDIO config specific to MediaWiki
// ======
// Use in a test as `browser.options.<key>`.
// Defaults are for convenience with MediaWiki-Vagrant
// Wiki admin
mwUser: process.env.MEDIAWIKI_USER || 'Admin',
mwPwd: process.env.MEDIAWIKI_PASSWORD || 'vagrant',
// Base for browser.url() and Page#openTitle()
baseUrl: ( process.env.MW_SERVER || 'http://127.0.0.1:8080' ) + (
process.env.MW_SCRIPT_PATH || '/w'
),
// ==================
// Test Files
// ==================
specs: [
__dirname + '/specs/*.js'
],
// ============
// Capabilities
// ============
capabilities: [ {
// https://sites.google.com/a/chromium.org/chromedriver/capabilities
browserName: 'chrome',
maxInstances: 1,
'goog:chromeOptions': {
// If DISPLAY is set, assume developer asked non-headless or CI with Xvfb.
// Otherwise, use --headless (added in Chrome 59)
// https://chromium.googlesource.com/chromium/src/+/59.0.3030.0/headless/README.md
args: [
...( process.env.DISPLAY ? [] : [ '--headless' ] ),
// Chrome sandbox does not work in Docker
...( fs.existsSync( '/.dockerenv' ) ? [ '--no-sandbox' ] : [] )
]
}
} ],
// ===================
// Test Configurations
// ===================
// Level of verbosity: silent | verbose | command | data | result | error
logLevel: 'error',
// Setting this enables automatic screenshots for when a browser command fails
// It is also used by afterTest for capturig failed assertions.
screenshotPath: logPath,
// Default timeout for each waitFor* command.
waitforTimeout: 10 * 1000,
// See:
// https://webdriver.io/docs/dot-reporter
// https://webdriver.io/docs/junit-reporter
reporters: [
'spec',
[ 'junit', {
outputDir: logPath,
outputFileFormat: function () {
const makeFilenameDate = new Date().toISOString().replace( /[:.]/g, '-' );
return `WDIO.xunit-${makeFilenameDate}.xml`;
}
} ]
],
// See also: http://mochajs.org
mochaOpts: {
ui: 'bdd',
timeout: 60 * 1000
},
// =====
// Hooks
// =====
/**
* Save a screenshot when test fails.
*
* @param {Object} test Mocha Test object
*/
afterTest: function ( test ) {
if ( !test.passed ) {
const filePath = saveScreenshot( test.title );
console.log( '\n\tScreenshot: ' + filePath + '\n' );
}
}
exports.config = { ...config
// Override, or add to, the setting from wdio-mediawiki.
// Learn more at https://webdriver.io/docs/configurationfile/
//
// Example:
// logLevel: 'info',
};