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

Reply via email to