--- /dev/null
+'use strict';
+const assert = require( 'assert' ),
+ CreateAccountPage = require( '../pageobjects/createaccount.page' ),
+ PreferencesPage = require( '../pageobjects/preferences.page' ),
+ UserLoginPage = require( '../pageobjects/userlogin.page' );
+
+describe( 'User', function () {
+
+ var password,
+ username;
+
+ before( function () {
+ // disable VisualEditor welcome dialog
+ UserLoginPage.open();
+ browser.localStorage( 'POST', { key: 've-beta-welcome-dialog', value: '1' } );
+ } );
+
+ beforeEach( function () {
+ browser.deleteCookie();
+ username = `User-${Math.random().toString()}`;
+ password = Math.random().toString();
+ } );
+
+ it( 'should be able to create account', function () {
+
+ // create
+ CreateAccountPage.createAccount( username, password );
+
+ // check
+ assert.equal( CreateAccountPage.heading.getText(), `Welcome, ${username}!` );
+
+ } );
+
+ it( 'should be able to log in', function () {
+
+ // create
+ browser.call( function () {
+ return CreateAccountPage.apiCreateAccount( username, password );
+ } );
+
+ // log in
+ UserLoginPage.login( username, password );
+
+ // check
+ assert.equal( UserLoginPage.userPage.getText(), username );
+
+ } );
+
+ it( 'should be able to change preferences', function () {
+
+ var realName = Math.random().toString();
+
+ // create
+ browser.call( function () {
+ return CreateAccountPage.apiCreateAccount( username, password );
+ } );
+
+ // log in
+ UserLoginPage.login( username, password );
+
+ // change
+ PreferencesPage.changeRealName( realName );
+
+ // check
+ assert.equal( PreferencesPage.realName.getValue(), realName );
+
+ } );
+
+} );