mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/VisualEditor
synced 2024-09-25 03:08:42 +00:00
Merge "VisualDiff automated screenshots"
This commit is contained in:
commit
256241c23d
52
Gruntfile.js
52
Gruntfile.js
|
@ -8,7 +8,27 @@ require( 'babel-polyfill' );
|
|||
|
||||
/* eslint-env node, es6 */
|
||||
module.exports = function ( grunt ) {
|
||||
var modules = grunt.file.readJSON( 'lib/ve/build/modules.json' );
|
||||
var modules = grunt.file.readJSON( 'lib/ve/build/modules.json' ),
|
||||
screenshotOptions = {
|
||||
reporter: 'spec',
|
||||
timeout: 40000,
|
||||
require: [
|
||||
function () {
|
||||
// eslint-disable-next-line no-undef
|
||||
langs = [ 'en' ];
|
||||
}
|
||||
]
|
||||
},
|
||||
screenshotOptionsAll = {
|
||||
reporter: 'spec',
|
||||
timeout: 40000,
|
||||
require: [
|
||||
function () {
|
||||
// eslint-disable-next-line no-undef
|
||||
langs = require( './build/tasks/screenshotLangs.json' ).langs;
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
grunt.loadNpmTasks( 'grunt-banana-checker' );
|
||||
grunt.loadNpmTasks( 'grunt-contrib-copy' );
|
||||
|
@ -57,30 +77,20 @@ module.exports = function ( grunt ) {
|
|||
},
|
||||
mochaTest: {
|
||||
'screenshots-en': {
|
||||
options: {
|
||||
reporter: 'spec',
|
||||
timeout: 40000,
|
||||
require: [
|
||||
function () {
|
||||
// eslint-disable-next-line no-undef
|
||||
langs = [ 'en' ];
|
||||
}
|
||||
]
|
||||
},
|
||||
options: screenshotOptions,
|
||||
src: [ 'build/screenshots.userGuide.js' ]
|
||||
},
|
||||
'screenshots-all': {
|
||||
options: {
|
||||
reporter: 'spec',
|
||||
timeout: 40000,
|
||||
require: [
|
||||
function () {
|
||||
// eslint-disable-next-line no-undef
|
||||
langs = require( './build/tasks/screenshotLangs.json' ).langs;
|
||||
}
|
||||
]
|
||||
},
|
||||
options: screenshotOptionsAll,
|
||||
src: [ 'build/screenshots.userGuide.js' ]
|
||||
},
|
||||
'diff-screenshots-en': {
|
||||
options: screenshotOptions,
|
||||
src: [ 'build/screenshots.diffs.js' ]
|
||||
},
|
||||
'diff-screenshots-all': {
|
||||
options: screenshotOptionsAll,
|
||||
src: [ 'build/screenshots.diffs.js' ]
|
||||
}
|
||||
},
|
||||
image: {
|
||||
|
|
119
build/screenshots.diffs.js
Normal file
119
build/screenshots.diffs.js
Normal file
|
@ -0,0 +1,119 @@
|
|||
/* eslint-env node, es6 */
|
||||
/* global seleniumUtils, langs */
|
||||
|
||||
( function () {
|
||||
'use strict';
|
||||
var createScreenshotEnvironment = require( './screenshots.js' ).createScreenshotEnvironment,
|
||||
test = require( 'selenium-webdriver/testing' );
|
||||
|
||||
function runTests( lang ) {
|
||||
var runScreenshotTest = createScreenshotEnvironment( test, lang, function () {
|
||||
var done = arguments[ arguments.length - 1 ];
|
||||
|
||||
window.seleniumUtils.runDiffTest = function ( oldHtml, newHtml, done ) {
|
||||
var target = ve.init.target,
|
||||
surface = target.surface;
|
||||
|
||||
if ( target.saveDialog ) {
|
||||
target.saveDialog.clearDiff();
|
||||
target.saveDialog.close();
|
||||
while ( surface.getModel().canUndo() ) {
|
||||
surface.getModel().undo();
|
||||
}
|
||||
}
|
||||
|
||||
target.originalDmDoc = target.createModelFromDom( target.parseDocument( oldHtml ), 'visual' );
|
||||
|
||||
surface.getModel().getDocument().getStore().merge( target.originalDmDoc.getStore() );
|
||||
|
||||
surface.getModel().getLinearFragment( new ve.Range( 0 ) ).insertDocument(
|
||||
target.createModelFromDom( target.parseDocument( newHtml ), 'visual' )
|
||||
).collapseToEnd().adjustLinearSelection( 0, 3 ).removeContent();
|
||||
|
||||
target.once( 'saveReview', function () {
|
||||
setTimeout( function () {
|
||||
var dialog = surface.dialogs.currentWindow;
|
||||
dialog.reviewModeButtonSelect.selectItemByData( 'visual' );
|
||||
|
||||
// Fake parsed edit summary
|
||||
dialog.$reviewEditSummary.text( '(Lorem ipsum)' );
|
||||
|
||||
done(
|
||||
seleniumUtils.getBoundingRect( [
|
||||
dialog.$frame[ 0 ]
|
||||
] )
|
||||
);
|
||||
}, 500 );
|
||||
} );
|
||||
surface.execute( 'mwSaveDialog', 'review' );
|
||||
};
|
||||
|
||||
done();
|
||||
} );
|
||||
|
||||
test.describe( 'Screenshots: ' + lang, function () {
|
||||
test.it( 'Simple diff', function () {
|
||||
runScreenshotTest( 'VisualEditor_diff_simple',
|
||||
// This function is converted to a string and executed in the browser
|
||||
function () {
|
||||
var done = arguments[ arguments.length - 1 ];
|
||||
|
||||
seleniumUtils.runDiffTest(
|
||||
'<h2>Lorem ipsum</h2>' +
|
||||
'<p>Lorem ipsum dolor sit <b>amet</b>, consectetur adipiscing elit.</p>',
|
||||
'<h2>Lorem ipsum</h2>' +
|
||||
'<p>Lorem ipsum dolor sit <i>amet</i>, consectetur adipiscing elit.</p>',
|
||||
done
|
||||
);
|
||||
}
|
||||
);
|
||||
runScreenshotTest( 'VisualEditor_diff_move_and_change',
|
||||
// This function is converted to a string and executed in the browser
|
||||
function () {
|
||||
var done = arguments[ arguments.length - 1 ];
|
||||
|
||||
seleniumUtils.runDiffTest(
|
||||
'<h2>Lorem ipsum</h2>' +
|
||||
'<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>' +
|
||||
'<p>Maecenas fringilla turpis et nunc bibendum mattis.</p>',
|
||||
'<h2>Lorem ipsum</h2>' +
|
||||
'<p>Maecenas fringilla turpis et nunc bibendum mattis.</p>' +
|
||||
'<p>Lorem ipsum dolor sit amat, consectetur adipiscing elit.</p>',
|
||||
done
|
||||
);
|
||||
}
|
||||
);
|
||||
runScreenshotTest( 'VisualEditor_diff_link_change',
|
||||
// This function is converted to a string and executed in the browser
|
||||
function () {
|
||||
var done = arguments[ arguments.length - 1 ];
|
||||
|
||||
seleniumUtils.runDiffTest(
|
||||
'<h2>Lorem ipsum</h2>' +
|
||||
'<p><a rel="mw:WikiLink" href="./Lipsum">Lorem ipsum</a> dolor sit amet, consectetur adipiscing elit.</p>',
|
||||
'<h2>Lorem ipsum</h2>' +
|
||||
'<p><a rel="mw:WikiLink" href="./Lorem ipsum">Lorem ipsum</a> dolor sit amet, consectetur adipiscing elit.</p>',
|
||||
done
|
||||
);
|
||||
}
|
||||
);
|
||||
runScreenshotTest( 'VisualEditor_diff_list_change',
|
||||
// This function is converted to a string and executed in the browser
|
||||
function () {
|
||||
var done = arguments[ arguments.length - 1 ];
|
||||
|
||||
seleniumUtils.runDiffTest(
|
||||
'<ul><li>Lorem</li><li>ipsum</li><li>dolor</li><li>sit</li><li>amet</li></ul>',
|
||||
'<ul><li>Lorem</li><li>ipsum</li><li>sit</li><li>amat</li></ul>',
|
||||
done
|
||||
);
|
||||
}
|
||||
);
|
||||
} );
|
||||
} );
|
||||
}
|
||||
|
||||
for ( let i = 0, l = langs.length; i < l; i++ ) {
|
||||
runTests( langs[ i ] );
|
||||
}
|
||||
}() );
|
|
@ -10,7 +10,7 @@
|
|||
username = process.env.SAUCE_ONDEMAND_USERNAME,
|
||||
webdriver = require( 'selenium-webdriver' );
|
||||
|
||||
function createScreenshotEnvironment( test, lang ) {
|
||||
function createScreenshotEnvironment( test, lang, beforeEach ) {
|
||||
var clientSize, driver;
|
||||
|
||||
test.beforeEach( function () {
|
||||
|
@ -133,6 +133,9 @@
|
|||
clientSize = cs;
|
||||
} )
|
||||
);
|
||||
if ( beforeEach ) {
|
||||
driver.wait( driver.executeAsyncScript( beforeEach ) );
|
||||
}
|
||||
} );
|
||||
|
||||
test.afterEach( function () {
|
||||
|
|
Loading…
Reference in a new issue