sirve que personalizadas para ngzone formularios ejemplos directivas angularjs selenium jasmine protractor angularjs-e2e

angularjs - que - ng-model



Transportador-Objeto de página no se actualiza cuando se cambian los elementos DOM (1)

Así es como funciona el flujo de control . Ejecutar el código para la prueba pone en fila un montón de promesas. Se resuelven en el orden en que se agregaron al flujo, mientras que cada uno de ellos espera que el anterior termine.

it(''Should attach a file when a file is selected and OK button is pressed.'', function () { # Queues the count promise var currentFileCount = viewMeetingTabPage.getMeetingAttachmentCount(); # Queues some other promises that would start # to get executed once the one above finishes viewMeetingPage.clickAddAttachmentButton(); addAttchmentPage.attachFile(); addAttchmentPage.clickConfimAttachFileButton(); # This piece of code branches-off the control-flow # and gets executed immediately after currentFileCount is resolved # i.e. before the clickAddAttachmentButton currentFileCount.then(function (curCount) { # That''s why newCount equals curCount, # they are counting the same number of elements # since nothing changed in the meantime viewMeetingTabPage.getMeetingAttachmentCount().then(function (newCount) { expect(newCount).toBe(curCount + 1); //expect(viewMeetingTabPage.getMeetingAttachmentName()).toBe(''test-file.pdf''); }); }); });

currentFileCount podría considerarse una fase de configuración para la prueba para que pueda extraerla a un bloque beforeEach :

var initialFileCount; beforeEach(function() { viewMeetingTabPage.getMeetingAttachmentCount().then(function(count) { initialFileCount = count; }); }); it(''Should attach a file when a file is selected and OK button is pressed.'', function () { viewMeetingPage.clickAddAttachmentButton(); addAttchmentPage.attachFile(); addAttchmentPage.clickConfimAttachFileButton(); expect(viewMeetingTabPage.getMeetingAttachmentCount()).toBe(initialFileCount + 1); });

Dado que el transportador interrumpe el jazmín para esperar entre los bloques de prueba para que el flujo de control se vacíe, probablemente esto funcione.

Tenga en cuenta expect también se aplica un parche para manejar las promesas, por lo que no es necesario colocarlo en un then .

ACTUALIZAR:

En realidad, no debería necesitar el beforeEach anterior, se supone que debe funcionar así también:

var initialFileCount; it(''Should attach a file when a file is selected and OK button is pressed.'', function () { viewMeetingTabPage.getMeetingAttachmentCount().then(function(count) { initialFileCount = count; }); viewMeetingPage.clickAddAttachmentButton(); addAttchmentPage.attachFile(); addAttchmentPage.clickConfimAttachFileButton(); expect(viewMeetingTabPage.getMeetingAttachmentCount()).toBe(initialFileCount + 1); });

Se llama enmarcar en la Guía del usuario de WebDriverJS .

Estoy probando un SPA construido con angular.js e im utilizando el patrón Objetos de página para escribir mis pruebas. En la aplicación, tenemos varias listas que se actualizarán. Por ejemplo, hay una lista de archivos adjuntos que se actualizarán cuando se agreguen o eliminen archivos adjuntos. Para agregar un archivo adjunto tenemos una ventana modal y cuando cargamos un archivo y hacemos clic en Aceptar. El archivo se carga y las listas se actualizan.

He escrito objetos de 2 páginas, uno para la ventana modal de carga y el otro para la vista previa de la lista de archivos adjuntos. En mis pruebas, primero obtengo el recuento actual de los archivos adjuntos, luego hago clic en un botón para activar la ventana modal y adjuntar el archivo. Luego tomo otro recuento de los archivos adjuntos en la página de vista previa y lo comparo para incrementarlo en 1. Pero las pruebas fallan. El objeto de la página no se actualiza y aún muestra el recuento de adjuntos como 2.

Prueba

it(''Should attach a file when a file is selected and OK button is pressed.'', function () { var currentFileCount = viewMeetingTabPage.getMeetingAttachmentCount(); viewMeetingPage.clickAddAttachmentButton(); addAttchmentPage.attachFile(); addAttchmentPage.clickConfimAttachFileButton(); currentFileCount.then(function (curCount) { viewMeetingTabPage.getMeetingAttachmentCount().then(function (newCount) { expect(newCount).toBe(curCount + 1); //expect(viewMeetingTabPage.getMeetingAttachmentName()).toBe(''test-file.pdf''); }); }); });

ViewMeetingTabPage

this.getMeetingAttchments = function () { return element.all(by.repeater(''attachment in meeting.AttachmentViewModelList track by $index'')); }; this.getMeetingAttachmentCount = function () { return this.getMeetingAttchments().count(); };

Lo que necesito tener es actualizar de alguna manera el objeto de la página después de subir el archivo. Cómo puedo hacer eso.