Ejemplo de uso de Chance.js y Faker.js con Nightwatch.js

Ejemplo uso Nightwatch.js con Chance y FakerA partir del ejemplo propuesto en la home de Nightwatch.js, en el que hace una búsqueda en google de un texto, y verifica que ese texto aparece en los resultados, he creado 3 ejemplos de uso de Chance.js y Faker.js. En los 3 casos haremos una búsqueda en google, pero por un nombre propio autogenerado dinámicamente, y verificaremos que ese nombre aparece en la página de resultados.

Hemos generado un archivo utils.js que es dónde tendremos la implementación de la generación de los nombres, y en nuestros tests únicamente llamaremos a utils para que nos dé los datos que necesitamos. De esta forma, si en el futuro cambiamos el framework para generar los datos, únicamente necesitaremos hacer cambios en utils.js.

Cómo ejecutar los ejemplos

Para poder utilizar el proyecto lo primero que debéis hacer es clonar el proyecto de github. El único pre requisito es tener instalado Node.js.

Una vez descargado el proyecto, desde línea de comandos (o terminal) ejecutar npm install para instalar Nightwatch.js y las dependencias del proyecto (Chromedriver, Chance.js y Faker.js).
Para ejecutar los ejemplos hay que ejecutar el comando node_modules/nightwatch/bin/nightwatch desde la línea de comandos (o terminal).

Qué hace cada test

En el test exampleUsingChance.js vamos a generar un nuevo nombre y apellido aleatorio con utils.generate_random_name().

Nightwatch exampleUsingChance.js

Nightwatch exampleUsingChance.js

En exampleUsingFaker.js queremos usar Faker.js, por lo que le pasamos ‘faker’ cómo parámetro. Esta es una posible implementación, pero es sólo un detalle. En vuestros tests tal vez otra implementación sea más conveniente.

Nightwatch exampleUsingFaker.js

Nightwatch exampleUsingFaker.js

En exampleGeneratingAnObjectWithCredentials.js lo que hacemos es generar un objeto con Nombre, Email, Género y Fecha de nacimiento, algo que podría ser muy útil en este tipo de tests, aunque finalmente sólo usamos el nombre.

El archivo utils.js tendría este aspecto:

 

Archivo utils.js con la implementación de Chance y Faker

Archivo utils.js con la implementación de Chance y Faker

Esto es un ejemplo de lo que podríamos hacer. A partir de aquí, podríamo refactorizar para, por ejemplo, dejar de pasarle el timeout a cada waitForElement definiendo una propiedad global waitForConditionTimeout.