2017-12-29 6 views
1

Ich habe keinen Code zu zeigen, weil ich derzeit nicht weiß, wo ich anfangen soll.Wie machen Sie Angular Component Testing mit einem extern gehosteten Login?

jeden, das Ende-zu-Ende-Tests auf einem Winkel app getan hat, soll mit dem ng E2E Befehl vertraut sein, die einen Browser-Spins und versuchen Tests an den Komponenten ausgeführt werden.

Das Problem ist die App, die ich testen Sie müssen sich über eine Auth0 gehostete Login-Bildschirm anmelden, die Sie dann an die App leitet und ein Token dann in lokalen Speicher gesetzt wird, die mit jeder Anfrage von dann an überprüft wird Gültig Das Routing der App führt Sie zur Startseite.

Mein Problem ist, dass das Ausführen von ng e2e die App hochfährt, die Standardfunktionalität läuft und zum auth0 gehosteten Login-Bildschirm umleitet, dann sieht Winkelmesser, dass die Seite, die er betrachtet, keine eckige App ist und die Tests/Browser schließen.

Hat jemand irgendwelche Hinweise auf entweder einen falschen Zugriffstoken für die Zwecke der Prüfung oder auf andere Weise einstellen?

+0

bitte Code hinzufügen Sie mehr helfen – Aravind

Antwort

0

Niemand wird dies sehen, aber wenn Sie in Winkelmesser und wie Sie eine Instanz von Webdriver von ihm erhalten, die Sie Webdriver (dh Selen) Befehle auf der externen Website ausführen können.

0

Ich habe im Wesentlichen mit dem bloßen WebDriver auszuführen, um den Log-in-Funktionen mit einigem strategisch platzierten sleeps endet. Die Betten sind ein bisschen hacky und könnten durch etwas wie eine Wartezeit ersetzt werden, aber es hat den Job für jetzt getan.

it('should log in with test user, expect h1 Welcome on front page',() => { 
    return page.clickLogIn()) // my page has a log in button that is in its own page object 
     .then(_ => browser.sleep(3000)) // wait for Auth0 page to load 
     // from here you use non protractor syntax and follow webdriverjs 
     // using "browser.driver" 
     .then(_ => browser.driver.findElement(By.name('email'))) 
     .then(e => e.sendKeys('[email protected]')) 
     .then(_ => browser.driver.findElement(By.name('password'))) 
     .then(e => e.sendKeys('23p98pjasrnvaaa')) 
     .then(_ => browser.driver.findElement(By.css('button'))) // can't find it by text for some reason 
     .then(e => e.click()) 
     .then(_ => browser.driver.sleep(6000)) 
     // here we're back to protractor 
     .then(_ => element.all(by.cssContainingText('h1', 'Welcome, someone'))) 
     .then(l => expect(l.length).toBe(1)); 
}); 

Später ich die oben in seine eigene Funktion mit einer if-Anweisung abhängig, ob die Seite Auth0 abstrahiert haben, ist mich zu fragen eingeloggt sein, wenn ich die bereits angemeldeten Benutzer für nachfolgende Tests bin. In jedem Test würde sich die Funktion entweder anmelden oder auf die Schaltfläche "[email protected]" klicken.