mediawiki-extensions-CodeMi.../tests/selenium/pageobjects/edit.page.js
WMDE-Fisch 49b83a1a48 [selenium] Update REL1_39 to current master tests
Mostly to fix Libraryupgrader jobs.

Change-Id: I587d3b27ef4cf7acfa0a7e9cfdd1f33c405bc0bc
2024-05-11 10:12:19 +02:00

83 lines
1.8 KiB
JavaScript

'use strict';
const Page = require( 'wdio-mediawiki/Page' );
// Copied from mediawiki-core edit.page.js
class EditPage extends Page {
async openForEditing( title, cm6enable = false ) {
const queryParams = {
action: 'edit',
vehidebetadialog: 1,
hidewelcomedialog: 1
};
if ( cm6enable ) {
queryParams.cm6enable = '1';
}
await super.openTitle( title, queryParams );
}
get wikiEditorToolbar() {
return $( '#wikiEditor-ui-toolbar' );
}
get legacyTextInput() {
return $( '#wpTextbox1' );
}
get legacyCodeMirrorButton() {
return $( '#mw-editbutton-codemirror' );
}
async clickText() {
if ( await this.visualEditorSave.isDisplayed() ) {
await this.visualEditorSurface.click();
} else if ( await this.legacyTextInput.isDisplayed() ) {
await this.legacyTextInput.click();
} else {
// Click the container, if using WikiEditor etc.
await this.legacyTextInput.parentElement().click();
}
}
get visualEditorSave() {
return $( '.ve-ui-toolbar-saveButton' );
}
get visualEditorSurface() {
return $( '.ve-ui-surface-source' );
}
get codeMirrorTemplateFoldingButton() {
return $( '.cm-tooltip-fold' );
}
get codeMirrorTemplateFoldingPlaceholder() {
return $( '.cm-foldPlaceholder' );
}
async cursorToPosition( index ) {
await this.clickText();
// Second "Control" deactivates the modifier.
const keys = [ 'Control', 'Home', 'Control' ];
for ( let i = 0; i < index; i++ ) {
keys.push( 'ArrowRight' );
}
await browser.keys( keys );
}
get highlightedBrackets() {
return $$( '.CodeMirror-line .cm-mw-matchingbracket' );
}
async getHighlightedMatchingBrackets() {
await this.highlightedBrackets[ 0 ].waitForDisplayed();
const matchingTexts = await this.highlightedBrackets.map( function ( el ) {
return el.getText();
} );
return matchingTexts.join( '' );
}
}
module.exports = new EditPage();