mediawiki-extensions-Cite/cypress/e2e/tests/ve-cite/veCiteIntegration.cy.js
mareikeheuer b411dc50a2 Write e2e test for Cite-VisualEditor integration in Cypress
Implemented the test case as described in the ticket.
Deviated from ticket's approach for creating a new page by manual creation instead of API,
to verify the end-to-end functionality through the interface & ensure the entire proccess works seamlessly.

Bug: T353439
Change-Id: I8f863ae0bd8fdb1fb0f1b103d98ba9f2306f3df2
2024-01-30 14:48:14 +01:00

52 lines
1.8 KiB
JavaScript

import * as helpers from './../../utils/functions.helper.js';
const title = getTestString( 'CiteTest-title' );
const encodedTitle = encodeURIComponent( title );
function getTestString( prefix = '' ) {
return prefix + Math.random().toString();
}
describe( 'Visual Editor Cite Integration', () => {
before( () => {
cy.visit( '/index.php' );
const wikiText = 'This is reference #1: <ref name="a">This is citation #1 for reference #1 and #2</ref><br> ' +
'This is reference #2: <ref name="a" /><br>' +
'<references />';
// Rely on the retry behavior of Cypress assertions to use this as a "wait" until the specified conditions are met.
cy.window().should( 'have.property', 'mw' ).and( 'have.property', 'loader' ).and( 'have.property', 'using' );
// Create a new page containing a reference
cy.window().then( async ( win ) => {
await win.mw.loader.using( 'mediawiki.api' );
const response = await new win.mw.Api().create( title, {}, wikiText );
expect( response.result ).to.equal( 'Success' );
} );
} );
it( 'should edit and verify reference content in Visual Editor', () => {
cy.visit( `/index.php?title=${ encodedTitle }` );
// Open VE
cy.get( 'li#ca-ve-edit a' ).click();
cy.contains( '.oo-ui-buttonElement-button', 'Start editing' ).click();
cy.url().should( 'include', 'veaction=edit' );
helpers.getVEFootnoteMarker( 'a', 1, 1 ).click();
// Popup appears containing ref content
helpers.getVEReferencePopup()
.should( 'be.visible' )
.should( 'have.text', 'This is citation #1 for reference #1 and #2' );
// Open edit popup
cy.contains( '.oo-ui-buttonElement-button', 'Edit' ).click();
// Dialog appears with ref content
helpers.getVEDialog()
.should( 'be.visible' )
.should( 'have.text', 'This is citation #1 for reference #1 and #2' );
} );
} );