Pregunta ¿Por qué varias solicitudes GET fallan en la prueba del transportador?


Estoy intentando ejecutar una prueba de transportador en el entorno de Amazon EC2 utilizando el navegador PhantomJS. Sé que no se recomienda al usuario PhantomJS con Protractor, pero es la única opción que tengo ahora. Las pruebas siempre funcionan en entorno Win7.

Cuando la prueba se ve así siempre funciona bien.

    describe('Portal Login End 2 End test', function() {
    it('should automatically redirect to login /form', function() {
        browser.get('');
        expect(browser.getLocationAbsUrl()).toMatch("/login");
    });

    it('should automatically redirect to dashboard page after successful login', function() {
        element(by.model('user.username')).sendKeys('admin');
        element(by.model('user.password')).sendKeys('admin');
        element(by.buttonText('Sign in')).click();
        expect(browser.getLocationAbsUrl()).toMatch("dashboard/home");
    });
});

pero cuando se realiza una solicitud GET en la función beforeEach como esta

    describe('Portal Login End 2 End test', function() {
    beforeEach(function() {
        browser.get('');
    }
    it('should automatically redirect to login', function() {
        expect(browser.getLocationAbsUrl()).toMatch("/login");
    });

    it('should automatically redirect to dashboard page after successful login', function() {
        element(by.model('user.username')).sendKeys('admin');
        element(by.model('user.password')).sendKeys('admin');
        element(by.buttonText('Sign in')).click();
        expect(browser.getLocationAbsUrl()).toMatch("dashboard/home");
    });
});

Las pruebas fallan la mayor parte del tiempo, pero no siempre, con el siguiente error

Error desconocido: error al comunicarse con el navegador remoto. Puede haber muerto.   Información de compilación: versión: '2.43.1', revisión: '5163bce', tiempo: '2014-09-10 16:27:33'   Información del sistema: host: 'ip-10-249-98-182', ip: '10 .249.98.182 ', os.name:' Linux ', os.arch:' amd64 ', os.version:' 2.6.32- 504.el6.x86_64 ', java.version:' 1.6.0_45 '   Información del controlador: driver.version: EventFiringWebDriver

Así que cuando dos Las solicitudes GET se realizan en la misma prueba en la que falla la mayoría de las veces, pero cuando solo se realiza una solicitud, siempre funciona. Y como escribí anteriormente, dos solicitudes GET funcionan bien en el entorno Win7 pero no en Linux.

He visto algunos mensajes con este error, pero no cómo solucionarlo. ¿Alguien por ahí con la solución?


6
2017-11-17 15:52


origen


Respuestas:


No estoy seguro si el beforeEach espera a que termine el trabajo en el navegador, pero el it la función espera. Prueba a envolver el get llamar en un it función.

describe('Portal Login End 2 End test', function() {
    beforeEach(function() {
          it('redirects',function(){browser.get('');});
    });
    // .....
});

0
2017-11-17 16:14



Si su problema, como dijo, se debe a que el navegador no está esperando la obtención en el comando BeforeEach, agregue browser.waitForAngular ();

describe('Portal Login End 2 End test', function() {
beforeEach(function() {
    browser.get('');
}
it('should automatically redirect to login', function() {
    browser.waitForAngular();
    expect(browser.getLocationAbsUrl()).toMatch("/login");
});

it('should automatically redirect to dashboard page after successful login', function() {
    element(by.model('user.username')).sendKeys('admin');
    element(by.model('user.password')).sendKeys('admin');
    element(by.buttonText('Sign in')).click();
    expect(browser.getLocationAbsUrl()).toMatch("dashboard/home");
});
});

Como las pruebas de it se ejecutan en orden, no debería tener que llamarlas en cada bloque it.

También puede intentar llamar a browser.waitForAngular () en la función beforeEach, aunque prefiero hacer la llamada en la función it.


0
2018-03-18 18:01