2016-03-30 4 views
2

Bevor ich die Seite erreichen kann ich zum ersten MalProtractor: Nicht Winkel Jetzt Winkel Website

var url = 'http://localhost:9999/login?usern=bar'; 
browser.driver.get(url); 

ein Login (Nicht-Winkel-) Seite besuchen müssen getestet werden zwar, dass eine nicht-Winkel Seite ist, vorbei Der ?usern=bar in der URL der Server gibt einen HTTP-CODE von 302 und leitet auf die Seite /new-user um. Im Inneren der new-user Seite muss ich auf eine Schaltfläche klicken, bevor ich Test

beginnen kann, aber was ich bekomme ich immer

Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL. 

Es ist etwas falsch in meinem Fluss, weil ich die new-user Seite sehen kann, aber die Taste nicht angeklickt (und noch lange nach, dass die Fehler erscheinen)

die spec-Datei:

var Site = require('helper/site'); 

describe('Main', function { 
    beforeAll(function() { 
     return Site.login(); 
    }); 

    it('should show the main page', function() { 
     epect(browser.getCurrentUrl()).toMatch(/\/main/); 
    }); 
}); 

Site.js :

function login() { 
    browser.driver.get('http://localhost:9999/login?usern=bar'); 

    browser.driver.wait(function() { 
     return browser.driver.getCurrentUrl().then(function (url) { 
      return /\/new-user/.test(url); 
     }); 
    }); 

    element(by.css('.save')).click(); 
} 

module.exports = { 
    login: login 
}; 

Jede Hilfe wäre

Antwort

1

Sie drehen müssen, um das Sync-off geschätzt werden:

describe('Main', function { 
    beforeAll(function() { 
     browser.ignoreSynchronization = true; 
     return Site.login(); 
    }); 

    it('should show the main page', function() { 
     browser.ignoreSynchronization = false; 

     expect(browser.getCurrentUrl()).toMatch(/\/main/); 
    }); 
}); 

Obwohl, es auszuschalten denken bessere Plätze und wenn man dann wieder ein sind auf der Hauptseite.

+0

Das ist viel besser! Jetzt navigiert es zur Hauptseite. Aber dann bekomme ich immer noch den gleichen Timeout-Fehler. Wenn ich jedoch den browser.ignoreSynchronization = false entferne, wird der Test abgeschlossen. Irgendwelche Vorschläge, warum das passiert? –

+0

@JeanlucaScaljeri hm, was ist, wenn Sie 'browser.waitForAngular()' hinzufügen, wenn Sie auf der Hauptseite sind? Vielen Dank. – alecxe

+0

'browser.waitForAngular()' bricht es nicht, sobald ich 'browser.ignoreSynchronization = false;' (auch in Kombination mit waitForAngular) hinzufüge, wird der Test nicht ausgeführt, und es wird ein Timeout ausgelöst –