Curso de nightwatch - Ejemplos de nightwatch con PageObjects o CustomCommands



Basado en la pagina de nightwatch lo mas dificil que vi fue el uso de PageObjects o CustomCommands

Aqui les dejo uno ejemplo del uso de PageObjects o CustomCommands (tambien pueden verlo en github)

Esto es un test case sencillo de acceso a la pagina de SaleForce Free account

Código de un nightwatch sin PageObject
module.exports = {
    tags: ['test'],
    'Demo login to SFDC' : function (browser) {
    browser
      .windowMaximize()
      .url('https://login.salesforce.com/')
      .waitForElementVisible('body', 1000)
      .setValue('#username', 'user@email.com')
      .setValue('#password', 'xxxxxxx')
      .click('#Login')
      .pause(1000)
      .assert.containsText('#userNavLabel', 'Antonio Rojas')

      .end();
  },
};



Utilizando pageObjects y CustomCommand se podria resumir a

Código de un nightwatch con PageObject
module.exports = {
    tags: ['test'],
    'Login Pass to SFDC' : function (browser) {
        var client = browser.page.loginPage();
        client.navigate();
        client.setLoginAndCheckPass('user@email.com', 'xxxxxxPass', 'Antonio Rojas');
        browser.end();
    },
    tags: ['negative'],
    'Login Fail to SFDC' : function (browser) {
        var client = browser.page.loginPage();
        client.navigate();
        client.setLoginAndCheckFail('user@email.com', 'xxxxFail', 'Antonio Rojas');
        browser.end();
    },
};


Para ello hay que crear un file que lo podemos llamar loginPage.js

Código del page object
/**
 * Created by Antonio on 3/27/2017.
 */
'use strict';

var timeOut = 5000;

module.exports = {
    url: 'https://login.salesforce.com/',
    elements: {
        username: {
            selector: '#username'
        },
        passwd: {
            selector: '#password'
        },
        submitLogin:{
            selector: '#Login'
        },
        checkUserLabel:{
            selector: '#userNavLabel'
        }
    },
    commands: [{
        setLoginAndCheckPass: function(userNameValue, passwdValue, userName) {
            this.setValue('@username', userNameValue);
            this.setValue('@passwd', passwdValue);
            this.click('@submitLogin');
            this.api.pause(timeOut);
            this.assert.containsText('#userNavLabel', userName);
            return this;
        },
        setLoginAndCheckFail: function(userNameValue, passwdValue, userName) {
            this.setValue('@username', userNameValue);
            this.setValue('@passwd', passwdValue);
            this.click('@submitLogin');
            this.api.pause(timeOut);
            this.assert.containsText('#error', 'Please check your username and password. If you still can\'t log in, contact your Salesforce administrator.');
            return this;
        }
    }]
};



y debe estar localizado en el folder tests/sfdc/page

y también tenemos que cambiar la configuracion

Código del archivo de configuración

"src_folders" : ["tests"],
"output_folder" : "reports",
"custom_commands_path" : "",
"custom_assertions_path" : "",
"page_objects_path" : "tests/sfdc/page",
"globals_path" : "",





https://github.com/AntonioRojas/nightwatch/tree/master/SFDC

Comentarios