test spec example angularjs jasmine protractor

angularjs - spec - ver la salida de console.log en la prueba de jazmín con transportador angular



mocha spec (7)

¿Cómo puedo ver la salida de console.log en una prueba de jasmin de transportador angularjs? A partir de ahora, el navegador se cierra solo demasiado rápido.

más información - Estoy trabajando con el tutorial angularjs, paso 8. Estoy tratando de cambiar la prueba e2e a transportador. El archivo de configuración de transportador que estoy usando se basa en% appdata% / npm / node_modules / transportador / referenceConf.js. En los archivos spec js a los que hace referencia el archivo de configuración, tengo instancias de console.log. Sin embargo, durante la ejecución de la prueba e2e del transportador, el sitio web se abre en Chrome, veo que las cosas suceden en el navegador, luego el navegador se cierra antes de que pueda examinar cualquier salida de console.log. Creo que necesito mantener Chrome abierto de alguna manera. ¿Cómo?



Para mantener abierta la ventana del navegador, intente ejecutar el Transportador en modo de depuración:

$ <route-to-protractor> debug <route-to-conf-file>

Luego, en su archivo de especificaciones, agregue esta línea donde desea que se detenga la ejecución:

browser.debugger();

En la consola de depuración de Protractor, puede pasar por alto las paradas escribiendo c o cont .

Más información aquí: https://github.com/angular/protractor/blob/master/docs/debugging.md

Ahora, para obtener el contenido de la consola, puede consultar cómo hacerlo en las Preguntas frecuentes de Protractor: github.com/angular/protractor/blob/master/docs/…

Algo como:

browser.manage().logs().get(''browser'').then(function(browserLog) { console.log(''log: '' + require(''util'').inspect(browserLog)); })


Siempre puedes anular console.log en tu prueba :)

logMessages = []; console.log = function(message) { logMessages.push(message); }

También podría usar $ log en lugar de console.log y usar una solución como esta para poner algunos enlaces en los mensajes de registro: https://gist.github.com/lrvick/6938531


También puede querer cambiar el nivel de registro para ver otros tipos de salidas de consola.

Vea mi actualización propuesta a la Faq del transportador para hacer esto aquí


Un error general es que console.log registrará las cosas en su navegador. Eso es incorrecto. Cuando ejecuta sus pruebas, junto con los resultados de las pruebas, debe ver los valores de console.log() también en la terminal. La consola del navegador es completamente diferente de esto.

Un ejemplo general:

it(''get name as John'', function(){ element(by.id(''name'')).getText().then(function(value){ console.log(value); }) });

Resultados en la Terminal:

John get name as John - pass

Espero eso ayude.


Una opción simple es usar:

browser.pause(); protractor/api/browser.pause

por ejemplo:

it(''should .. test stuff'', function() { browser.pause(); //--->the automation will pause here - follow the instructions in your terminal to continue //--->your broken testing magic here... });

Coloque esa llamada al método como el primer elemento en el cuerpo de la especificación donde necesita ver la consola de los navegadores.

Después de que el navegador se detiene, tendrá el control de la automatización. A continuación, puede interactuar con el navegador de la forma habitual, inspeccionando elementos en diferentes estados, verificando la consola del navegador, etc.

Continúe las pruebas ingresando c para continuar en su terminal - habrá un aviso con instrucciones esperando su entrada.


Utilice browser.manage().logs().get(''browser'')

browser.manage().logs().get(''browser'').then(function(browserLogs) { // browserLogs is an array of objects with level and message fields browserLogs.forEach(function(log){ if (log.level.value > 900) { // it''s an error log console.log(''Browser console error!''); console.log(log.message); } }); });