- Epic it contributes to.
- Acceptance criteria
- Determine if Page Object Pattern we use (Selenium/Explanation/Page object pattern) is the same as in upstream documentation (WebdriverIO Page Object Pattern).
- With T373125: Use ESM in core for selenium tests and 1066709 we have resolved the differences. There is nothing more to do.
-
If there are significant differences, create one or more tasks to minimize or remove the differences.- No significant differences.
- Determine if Page Object Pattern we use (Selenium/Explanation/Page object pattern) is the same as in upstream documentation (WebdriverIO Page Object Pattern).
Context
Since at least 2018 (when this ticket was created) our Page Object Pattern was different that what upstream documentation (WebdriverIO) recommends. The only difference was that upstream was using ECMAScript modules while we were using CommonJS.
Some example code to make it clear there are no longer any significant differences between our code and upstream.
- Main page object
- Login page
- Login test
Main page object
WebdriverIO: Page.js
export default class Page { // code }
MediaWiki Core: tests/selenium/wdio-mediawiki/Page.js
class Page { // code } module.exports = Page;
export default class Page { // code }
Login page
WebdriverIO: login.page.js
import Page from './page' class LoginPage extends Page { // code } export default new LoginPage()
MediaWiki Core: tests/selenium/wdio-mediawiki/LoginPage.js
const Page = require( './page' ); class LoginPage extends Page { // code } module.exports = new LoginPage();
import Page from './Page.js'; class LoginPage extends Page { // code export default new LoginPage();
Login test
WebdriverIO: login.spec.js
import LoginPage from '../pageobjects/login.page' // code
MediaWiki Core: tests/selenium/specs/user.js
const LoginPage = require( 'wdio-mediawiki/LoginPage' ); // code
import LoginPage from 'wdio-mediawiki/LoginPage.js'; // code