Merge "Selenium: Update to WebdriverIO v5"

This commit is contained in:
jenkins-bot 2020-06-23 11:09:05 +00:00 committed by Gerrit Code Review
commit e41e1e1b02
8 changed files with 2766 additions and 2107 deletions

4801
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -10,6 +10,11 @@
"selenium-daily": "npm run selenium-test -- --mochaOpts.grep @daily"
},
"devDependencies": {
"@wdio/cli": "5.22.4",
"@wdio/local-runner": "5.22.4",
"@wdio/mocha-framework": "5.18.7",
"@wdio/spec-reporter": "5.22.4",
"@wdio/sync": "5.20.1",
"eslint-config-wikimedia": "0.16.1",
"grunt": "1.1.0",
"grunt-banana-checker": "0.9.0",
@ -18,9 +23,7 @@
"grunt-stylelint": "0.15.0",
"grunt-svgmin": "5.0.0",
"stylelint-config-wikimedia": "0.10.1",
"wdio-mediawiki": "0.4.0",
"wdio-mocha-framework": "0.6.4",
"wdio-spec-reporter": "0.1.4",
"webdriverio": "4.12.0"
"wdio-mediawiki": "1.0.0",
"webdriverio": "5.22.4"
}
}

View file

@ -3,10 +3,11 @@ const Page = require( 'wdio-mediawiki/Page' );
class EchoPage extends Page {
get alerts() { return browser.element( '#pt-notifications-alert' ); }
get notices() { return browser.element( '#pt-notifications-notice' ); }
get flyout() { return browser.element( '.oo-ui-popupWidget-popup' ); }
get alertMessage() { return browser.element( '.mw-echo-ui-notificationItemWidget-content-message-header' ); }
get alerts() { return $( '#pt-notifications-alert' ); }
get notices() { return $( '#pt-notifications-notice' ); }
get alertsFlyout() { return $( '.oo-ui-labelElement-label*=Alerts' ); }
get noticesFlyout() { return $( '.oo-ui-labelElement-label*=Notices' ); }
get alertMessage() { return $( '.mw-echo-ui-notificationItemWidget-content-message-header' ); }
}
module.exports = new EchoPage();

View file

@ -4,7 +4,7 @@ const Page = require( 'wdio-mediawiki/Page' );
class NotificationsPage extends Page {
get notificationHeading() { return browser.element( '#firstHeading' ); }
get notificationHeading() { return $( '#firstHeading' ); }
open() {
super.openTitle( 'Special:Notifications', { uselang: 'en' } );
}

View file

@ -7,10 +7,15 @@ const assert = require( 'assert' ),
Api = require( 'wdio-mediawiki/Api' );
describe( 'Echo', function () {
let bot;
before( async () => {
bot = await Api.bot();
} );
it( 'alerts and notices are visible after logging in @daily', function () {
UserLoginPage.login( browser.options.username, browser.options.password );
UserLoginPage.login( browser.config.mwUser, browser.config.mwPwd );
assert( EchoPage.alerts.isExisting() );
assert( EchoPage.notices.isExisting() );
@ -19,21 +24,21 @@ describe( 'Echo', function () {
it( 'flyout for alert appears when clicked @daily', function () {
UserLoginPage.login( browser.options.username, browser.options.password );
UserLoginPage.login( browser.config.mwUser, browser.config.mwPwd );
EchoPage.alerts.click();
EchoPage.flyout.waitForVisible();
EchoPage.alertsFlyout.waitForDisplayed();
assert( EchoPage.flyout.isExisting() );
assert( EchoPage.alertsFlyout.isExisting() );
} );
it( 'flyout for notices appears when clicked @daily', function () {
UserLoginPage.login( browser.options.username, browser.options.password );
UserLoginPage.login( browser.config.mwUser, browser.config.mwPwd );
EchoPage.notices.click();
EchoPage.flyout.waitForVisible();
EchoPage.noticesFlyout.waitForDisplayed();
assert( EchoPage.flyout.isExisting() );
assert( EchoPage.noticesFlyout.isExisting() );
} );
@ -41,14 +46,14 @@ describe( 'Echo', function () {
const username = Util.getTestString( 'NewUser-' );
const password = Util.getTestString();
browser.call( function () {
return Api.createAccount( username, password );
browser.call( async () => {
await Api.createAccount( bot, username, password );
} );
UserLoginPage.login( username, password );
EchoPage.notices.click();
EchoPage.alertMessage.waitForVisible();
EchoPage.alertMessage.waitForDisplayed();
const regexp = /Welcome to .*, .*! We're glad you're here./;
assert( regexp.test( EchoPage.alertMessage.getText() ) );

View file

@ -7,21 +7,24 @@ const assert = require( 'assert' ),
Api = require( 'wdio-mediawiki/Api' );
describe( 'Mention test for Echo', function () {
let bot;
before( async () => {
bot = await Api.bot();
} );
it.skip( 'checks if admin gets alert when mentioned', function () {
const username = Util.getTestString( 'NewUser-' );
const password = Util.getTestString();
browser.call( function () {
return Api.createAccount( username, password
).then( function () {
return Api.edit( `User:${username}`, `Hello [[User:${browser.options.username}]] ~~~~`, username, password );
} );
browser.call( async () => {
await Api.createAccount( bot, username, password );
await bot.edit( `User:${username}`, `Hello [[User:${browser.config.mwUser}]] ~~~~`, username, password );
} );
UserLoginPage.login( browser.options.username, browser.options.password );
UserLoginPage.login( browser.config.mwUser, browser.config.mwPwd );
EchoPage.alerts.click();
EchoPage.alertMessage.waitForVisible();
EchoPage.alertMessage.waitForDisplayed();
const regexp = /.* mentioned you on User:.*./;
assert( regexp.test( EchoPage.alertMessage.getText() ) );
} );

View file

@ -8,7 +8,7 @@ describe( 'Notifications', function () {
it( 'checks for Notifications Page @daily', function () {
UserLoginPage.login( browser.options.username, browser.options.password );
UserLoginPage.login( browser.config.mwUser, browser.config.mwPwd );
NotificationsPage.open();
assert.strictEqual( NotificationsPage.notificationHeading.getText(), 'Notifications' );

View file

@ -14,8 +14,8 @@ exports.config = {
// Defaults are for convenience with MediaWiki-Vagrant
// Wiki admin
username: process.env.MEDIAWIKI_USER || 'Admin',
password: process.env.MEDIAWIKI_PASSWORD || 'vagrant',
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' ) + (
@ -36,7 +36,7 @@ exports.config = {
// https://sites.google.com/a/chromium.org/chromedriver/capabilities
browserName: 'chrome',
maxInstances: 1,
chromeOptions: {
'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