Zfilipin has uploaded a new change for review. https://gerrit.wikimedia.org/r/323401
Change subject: WIP Port Selenium tests from Ruby to Node.js ...................................................................... WIP Port Selenium tests from Ruby to Node.js Bug: T139740 Change-Id: Idbc3c2aad266b3b7ea363d41718a94fc9a8c951b --- M Gruntfile.js M package.json A tests/selenium/page.js A tests/selenium/user.js 4 files changed, 98 insertions(+), 2 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core refs/changes/01/323401/1 diff --git a/Gruntfile.js b/Gruntfile.js index 55b7932..12d6744 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -11,6 +11,7 @@ grunt.loadNpmTasks( 'grunt-contrib-watch' ); grunt.loadNpmTasks( 'grunt-eslint' ); grunt.loadNpmTasks( 'grunt-jsonlint' ); + grunt.loadNpmTasks( 'grunt-mocha-test' ); grunt.loadNpmTasks( 'grunt-karma' ); grunt.loadNpmTasks( 'grunt-stylelint' ); @@ -98,6 +99,15 @@ return require( 'path' ).join( dest, src.replace( 'resources/', '' ) ); } } + }, + mochaTest: { + selenium: { + options: { + reporter: 'spec', + timeout: 10000 + }, + src: [ 'tests/selenium/*.js' ] + } } } ); @@ -116,7 +126,8 @@ grunt.registerTask( 'lint', [ 'eslint', 'banana', 'stylelint' ] ); grunt.registerTask( 'qunit', [ 'assert-mw-env', 'karma:main' ] ); + grunt.registerTask( 'selenium', [ 'mochaTest' ] ); - grunt.registerTask( 'test', [ 'lint' ] ); + grunt.registerTask( 'test', [ 'lint', 'selenium' ] ); grunt.registerTask( 'default', 'test' ); }; diff --git a/package.json b/package.json index 99e752c..1d43e92 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,8 @@ "scripts": { "test": "grunt test", "doc": "jsduck", - "postdoc": "grunt copy:jsduck" + "postdoc": "grunt copy:jsduck", + "selenium": "grunt mochaTest" }, "devDependencies": { "eslint-config-wikimedia": "0.3.0", @@ -20,6 +21,7 @@ "karma-firefox-launcher": "1.0.0", "karma-qunit": "1.0.0", "qunitjs": "1.22.0", + "selenium-webdriver": "2.53.3", "stylelint-config-wikimedia": "0.3.0" } } diff --git a/tests/selenium/page.js b/tests/selenium/page.js new file mode 100644 index 0000000..d6a19ca --- /dev/null +++ b/tests/selenium/page.js @@ -0,0 +1,39 @@ +var assert = require( 'assert' ), + webdriver = require( 'selenium-webdriver' ), + By = webdriver.By, + test = require( 'selenium-webdriver/testing' ); + +test.describe( 'Page', function () { + var driver; + + test.beforeEach( function () { + driver = new webdriver.Builder() + .forBrowser( 'firefox' ) + .build(); + } ); + + test.afterEach( function () { + driver.quit(); + } ); + + test.it( 'should be created', function () { + driver.get( 'http://127.0.0.1:8080/wiki/Does_not_exist' ); + driver.findElement( By.css( 'li#ca-edit a' ) ).isDisplayed().then( function ( displayed ) { + assert( displayed ); + } ); + } ); + + test.it( 'should be edited', function () { + driver.get( 'http://127.0.0.1:8080/wiki/Main_Page' ); + driver.findElement( By.css( 'li#ca-edit a' ) ).isDisplayed().then( function ( displayed ) { + assert( displayed ); + } ); + } ); + + test.it( 'should have history', function () { + driver.get( 'http://127.0.0.1:8080/wiki/Main_Page' ); + driver.findElement( By.css( 'li#ca-history a' ) ).isDisplayed().then( function ( displayed ) { + assert( displayed ); + } ); + } ); +} ); diff --git a/tests/selenium/user.js b/tests/selenium/user.js new file mode 100644 index 0000000..d24aea8 --- /dev/null +++ b/tests/selenium/user.js @@ -0,0 +1,44 @@ +var assert = require( 'assert' ), + webdriver = require( 'selenium-webdriver' ), + By = webdriver.By, + test = require( 'selenium-webdriver/testing' ); + +test.describe( 'User', function () { + var driver; + + test.beforeEach( function () { + driver = new webdriver.Builder() + .forBrowser( 'firefox' ) + .build(); + } ); + + test.afterEach( function () { + driver.quit(); + } ); + + test.it( 'should be able to create account', function () { + driver.get( 'http://127.0.0.1:8080/wiki/Special:CreateAccount' ); + driver.findElement( By.id( 'wpCreateaccount' ) ).isDisplayed().then( function ( displayed ) { + assert( displayed ); + } ); + } ); + + test.it( 'should be able to log in', function () { + driver.get( 'http://127.0.0.1:8080/wiki/Special:UserLogin' ); + driver.findElement( By.id( 'wpLoginAttempt' ) ).isDisplayed().then( function ( displayed ) { + assert( displayed ); + } ); + } ); + + test.it( 'should be able to change preferences', function () { + driver.get( 'http://127.0.0.1:8080/wiki/Special:UserLogin' ); + driver.findElement( By.id( 'wpName1' ) ).sendKeys( 'Admin' ); + driver.findElement( By.id( 'wpPassword1' ) ).sendKeys( 'vagrant' ); + driver.findElement( By.id( 'wpLoginAttempt' ) ).click(); + + driver.get( 'http://127.0.0.1:8080/wiki/Special:Preferences' ); + driver.findElement( By.id( 'prefcontrol' ) ).isDisplayed().then( function ( displayed ) { + assert( displayed ); + } ); + } ); +} ); -- To view, visit https://gerrit.wikimedia.org/r/323401 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Idbc3c2aad266b3b7ea363d41718a94fc9a8c951b Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/core Gerrit-Branch: master Gerrit-Owner: Zfilipin <zfili...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits