what webdriverio tutorial start manager español nightwatch.js webdriver-io

webdriverio - ¿Cuál es la diferencia entre nightwatch.js y webdriver.io?



webdriver testing (1)

Como lo indica el título, ¿cuál es la diferencia entre Nightwatch.js y Webdriver.io?

Parece que tienen la misma sintaxis y hacen casi lo mismo.

Necesito elegir entre ellos.


He escrito un conjunto de pruebas con cada una de estas herramientas un par de veces.

Webdriver.io le permite escribir sus casos de prueba "desde cero" y tener un gran control sobre los informes, por ejemplo, integrándose con slack usando slack npm, y otros paquetes. Necesitarías saber o aprender rápidamente node.js. Además de funcionar muy bien con los navegadores de escritorio, se integra bien con Appium, Android Studio y Xcode para que pueda ejecutar sus pruebas automatizadas en emuladores de Android y simuladores de iOS a nivel local. Necesitará instalar esas cosas y escribir algún código para decirle a Appium qué controladores usar, y seleccionar capacidades, etc.

Nightwatch es una solución bastante extensa que utiliza un iterador para volver a intentar las pruebas automáticamente hasta tres veces cuando fallan. Nightwatch tiene un soporte decente para la integración con herramientas VM como SauceLabs, por lo que teóricamente puedes ejecutar tus casos de prueba contra más de 700 combinaciones diferentes de plataforma / navegador / versión sin escribir código para administrar cada controlador . Nightwatch se encarga de iniciar y cerrar el selenio para usted. Si bien esto último suena muy impresionante, en realidad es bastante trabajo alcanzar y mantener ese nivel de cobertura de prueba. Nightwatch también tiene una separación de preocupaciones bastante integrada, lo que le permite definir comandos personalizados y requerirlos en su caso de prueba base o pruebas individuales. Puede modular algunas partes de las pruebas e importarlas para no tener que volver a escribir constantemente, por ejemplo, la prueba de inicio de sesión para su uso en varios casos. Además, podría usar comandos personalizados para importar selectores como pares de valores clave.

Habiendo usado cada uno lo resumiría de esta manera:

webdriver.io: si está buscando más control, una solución muy personalizada y no necesita un iterador, y está seguro de que sabe lo suficiente como para escribir código para seleccionar el controlador de su navegador, configurar las capacidades y desea un control personalizado de sus informes.

Nightwatch: si desea comenzar a escribir pruebas rápidamente, saber que será relativamente fácil ejecutarlas en plataformas / navegadores / versiones específicas y aún le permitirá una flexibilidad significativa para ampliar sus pruebas escribiendo comandos personalizados.

Otra opción que hay ahora mismo es Dalek.js, que tiene la creación fácil de scripts de Nightwatch pero sin todas las campanas y silbidos.

Antes de ejecutar Nightwatch, puede configurar los navegadores en el archivo Magellan.json, y luego, cuando ejecuta su prueba, llama a los navegadores, oa un conjunto de navegadores (un "perfil") como argumentos de la línea de comandos, por lo tanto:

Para los navegadores locales:

./node_modules/.bin/magellan --serial --browsers=chrome,firefox

Suponiendo que haya configurado una cuenta de saucelabs y que haya agregado su nombre de usuario y clave de acceso, puede llamar a un perfil de navegadores como este:

./node_modules/.bin/magellan --serial --profile=myBrowsers

Esto supone que ha configurado un perfil llamado myBrowsers en el archivo Magellan.json como este:

{ "profiles": { "myBrowsers": [ { "browser": "chrome_46_OS_X_10_10_Desktop" }, { "browser": "firefox_42_Windows_2012_R2_Desktop" }, { "browser": "safari_8_OS_X_10_10_Desktop" }, { "browser": "safari_7_OS_X_10_9_Desktop" }, { "browser": "safari_9_OS_X_10_11_Desktop" }, { "browser": "IE_10_Windows_2012_Desktop" }, { "browser": "IE_11_Windows_2012_R2_Desktop" }, { "browser": "chrome_45_OS_X_10_8_Desktop" }, { "browser": "chrome_45_OS_X_10_9_Desktop" }, { "browser": "chrome_45_OS_X_10_10_Desktop" }, { "browser": "chrome_45_OS_X_10_11_Desktop" }, { "browser": "chrome_46_OS_X_10_10_Desktop" }, { "browser": "chrome_45_Windows_10_Desktop" }, { "browser": "chrome_45_Windows_2003_Desktop" }, { "browser": "chrome_45_Windows_2008_Desktop" }, { "browser": "chrome_45_Windows_2012_Desktop" }, { "browser": "chrome_45_Windows_2012_R2_Desktop" }, { "browser": "chrome_46_Windows_10_Desktop" }, { "browser": "chrome_46_Windows_2003_Desktop" }, { "browser": "chrome_46_Windows_2008_Desktop" }, { "browser": "chrome_46_Windows_2012_Desktop" }, { "browser": "chrome_46_Windows_2012_R2_Desktop" }, { "browser": "firefox_42_OS_X_10_9_Desktop" }, { "browser": "firefox_42_Windows_2012_R2_Desktop" }, { "browser": "android_4_4_Linux_Samsung_Galaxy_S4_Emulator", "orientation": "portrait" }, { "browser": "ipad_8_4_iOS_iPad_Simulator", "orientation": "landscape"}, { "browser": "ipad_8_4_iOS_iPad_Simulator", "orientation": "landscape"}, { "browser": "ipad_9_0_iOS_iPad_Simulator", "orientation": "landscape"}, { "browser": "ipad_9_0_iOS_iPad_Simulator", "orientation": "portrait"}, { "browser": "ipad_9_1_iOS_iPad_Simulator", "orientation": "landscape"}, { "browser": "ipad_9_1_iOS_iPad_Simulator", "orientation": "portrait"}, { "browser": "iphone_9_1_iOS_iPhone_Simulator", "orientation": "portrait"}, { "browser": "iphone_9_1_iOS_iPhone_Simulator", "orientation": "landscape"} ] }

}

ALGUNOS DE LOS ARGS MÁS ÚTILES (opcionales) DE COMMAND LINE:

si se alterna el resultado de los argumentos de serie, la ejecución de la prueba se serializará y con una experiencia de prueba más detallada, donde podrá revisar los errores que se han devuelto durante una ejecución. También demora mucho más en ejecutarse, ya que espera a que se completen las pruebas.

agregando el argumento --sauce una vez que sus casos de prueba funcionen para los navegadores que existen en su máquina local, puede acceder a los (actualmente) 760 navegadores compatibles con Sauce Labs. Adelante, pega esto en la terminal y pulsa retorno:

./node_modules/.bin/magellan --serial --list_browsers

Para cada dispositivo / navegador que desee probar, simplemente agregue la lista en la columna Opción de línea de comando Copiar-Pegar como valores separados por comas después de --browser = al ejecutar el script. NOTA: cuando se ejecuta sin --sauce, puedes usar --browser = chrome o --browser = chrome, firefox

BREAKING IT DOWN:

Utilizar Nightwatch sin --sauce pero con --serial es una excelente manera de comenzar. Trabaje en su script hasta que haya validado las cosas que desea verificar y cuando esté seguro de que todas las pruebas que deben pasar, hágalo, ejecútelo con los laboratorios de salsa y los principales navegadores que desea probar. Una vez que esté seguro de que los principales navegadores están cubiertos, puede ejecutarlo sin ser seriales para reducir el tiempo de ejecución (útil en Sauce Labs, que costará dinero).

Pero basta de hacer proselitismo, puede encontrar lo que necesita sobre Saucelabs aquí: https://wiki.saucelabs.com/display/DOCS/The+Sauce+Labs+Cookbook+Home

Y para un ejemplo repetitivo de Nightwatch para hacer el hola mundo canónico: prueba este boilerplater

ACTUALIZACIONES: Algunos puntos que las personas mencionan y que se me han ocurrido desde que publiqué esto.

Webdriver.io: Ya que no hay un iterador, hay menos capacidad para recuperarse de fallas durante una ejecución de prueba, esto significa que las fallas son más definitivas. Debido a que esto es puramente asíncrono, puede tener dolores de cabeza que rastrean el origen exacto de la falla. También puede terminar teniendo que crear scripts de desmontaje separados para cualquier información que cree para evitar colisiones de datos durante la ejecución.

Nightwatch.js: Ya que el iterador te permite reintentos, a menudo podrás encontrar dónde falla tu script. Esto puede permitirle encontrar el defecto más rápidamente en lugar de centrarse en por qué falla su secuencia de comandos. También es más fácil desactivar tus scripts individuales.

ACTUALIZACIÓN 2:

Con Nightwatch las pruebas más cortas son útiles / recomendadas. Debido a que el iterador lee los archivos de prueba en la memoria en cada iteración inmediatamente antes de la ejecución, puede literalmente editar las pruebas entre la ejecución de la iteración . Déjame decirlo de otra manera: tu suite de Nightwatch:

test_1 starts test_1 FAIL // because you made a trivial error in your test case test-2 starts // while it is running, you make the change, save it test-2 PASS test_1 starts // the iteration starts * with your change! * test_1 PASS ============= Suite Complete ============= Status: PASSED Runtime: 2m 48.3s Total tests: 2 Successful: 2 / 2 1 test(s) have retried: 1 time(s)

Por otro lado, configurar Slack webhooks con node / webdriver.io es fácil. Lo que esto significa es que puede configurar sus pruebas de nodo / webdriver.io para informar a Slack cuando se completen. Los clientes aprecian esto porque una vez que se ha completado una construcción, pronto ven los resultados de la automatización, como:

Testing Pruebas automatizadas de [nombre del cliente / producto aquí] Sprint ##. #. # Pasado en [URL del servidor o dirección IP] con OS X Firefox 59.0.2

Testing La prueba automatizada de [nombre del cliente / producto aquí] Sprint ##. #. # Falló en [URL del servidor o dirección IP] con OS X Firefox 59.0.2

ACTUALIZACIÓN 3 (6 de agosto de 2017)

Después de haber pasado otro año y medio trabajando con ambos a diario, quiero agregar los siguientes puntos.

Hay una cantidad similar de paquetes NPM por ahí que se integran con cada uno, pero observará que hay muchas más preguntas sobre sobre Nightwatch (4x). Creo que esto se debe a que Webdriver.io es más bien un enfoque de rollo propio para las pruebas automatizadas [esa es mi opinión, y doy la bienvenida a la retroalimentación / rechazo]. Quienes lo usen no tendrán preguntas sobre cómo usarlo, tendrán preguntas específicas sobre las técnicas.

Nightwatch sería un mejor punto de entrada para alguien con una amplia experiencia en Selenium IDE y javascript sólido. Tiene muchas soluciones útiles fuera de la caja. La poca experiencia que tengo con Dalek sugiere que, de manera similar, sería una buena opción.

Alguien con más javascript y quizás algo de Programación Orientada a Objetos y experiencia en Unix probablemente encuentre que Webdriver.io es mejor. Es solo una excelente opción para crear su propio marco personalizado, como lo estoy haciendo actualmente. Si puede imaginar cómo le gustaría que funcionen su inicialización, control de flujo e informes, y está dispuesto a poner en el sudor, es apto.

Me preguntaron a continuación cuál prefiero, y prefiero Webdriver.io para realizar extensas pruebas e2e con diferencia. Si bien a menudo utilizo un repositorio de Nightwatch personalizado para la mayoría de los trabajos de clientes construidos sobre nuestra plataforma, eso puede cambiar en un futuro cercano a medida que construyo mi propia solución Webdriver.io.

ACTUALIZACIÓN 4 (2 de mayo de 2018)

Actualización para mayor claridad sobre el control de Selenium y los controladores del navegador, además de agregar algunos detalles sobre el uso de Appium y Xcode / Android Studio.