Ich habe einen sehr einfachen Login-Test in Behat erstellt, um sich in unsere interne Anwendung einzuloggen. Es gibt zwei Login-Typen (aus demselben Bildschirm und derselben Box). Es gibt grundlegende und fortgeschrittene. Der einzige Unterschied besteht darin, dass der Benutzer, der sich anmeldet, Zugriff auf mehr als ein Unternehmen hat und aufgefordert wird, ein Unternehmen für die Arbeit auszuwählen.Wenn ich einen Behat-Login-Test über PhantomJS durchführe, gibt es nur den ersten Durchlauf aus
Ich finde, dass wenn ich die Szenarien durch PhantomJS anstelle von Selenium laufen sie viel schneller laufen (natürlich, da nichts in einem kopflosen Browser-Emulator gerendert werden muss). Wenn ich PhantomJS zum ersten Mal starte, laufen beide Szenarien gut. Aber dann laufe ich es ein zweites Mal und es versagt das erste Szenario (das Basis-Login).
Wenn ich PhantomJS neu starte, funktioniert es bis zum zweiten Versuch wieder. Ich bin sehr verwirrt. Warum muss PhantomJS neu gestartet werden, damit beide Tests beim ersten Aufruf erneut durchgeführt werden?
Wenn ich festlege, dass ich nur möchte, dass die erweiterte Anmeldung bei nachfolgenden Läufen ausgeführt wird, schlägt auch diese Anmeldung fehl. Wenn ich die Basis-Anmeldung festlege (und trotzdem die Ausführung beider Szenarien verhindert), schlägt dies ebenfalls fehl. Aber wenn ich beide Szenarien im selben Call laufe, scheitert die erste immer und die zweite passiert immer.
Ich habe sogar die Reihenfolge gewechselt, so dass Basic zweiten statt ersten ausgeführt wird und das erste Szenario (in diesem Fall erweitert) fehlschlägt und die zweite passiert. Was passiert also auf der Welt?
Als zusätzlichen Bonus ging ich weiter und fügte eine Zeile hinzu, die lautet: "Dann folge ich" Log Out "" und plötzlich passieren beide Szenarien wieder. Was wäre sinnvoll, wenn es im zweiten Szenario nicht gut läuft. Sollte es nicht scheitern, wenn es bereits eingeloggt ist? Gibt es eine Möglichkeit sicherzustellen, dass der Cache für PhantomJS am Ende jedes Szenarios gelöscht wird?
Feature: Login
Login to app using a basic user
Login to app using a multi-company user
@javascript
Scenario: Basic Login
Given I am on "/"
And I wait a few seconds
When I fill in "login" with "ijones"
And I fill in "password" with "[email protected]"
And I press "LoginButton"
And I wait a few seconds
Then I should see "By clicking below"
And I press "OK"
Then I should see "Welcome"
@javascript
Scenario: Advanced Login
Given I am on "/"
When I fill in "login" with "rtyler"
And I fill in "password" with "[email protected]"
And I press "LoginButton"
Then I wait for the company selection box
And I click a field "company"
And I pick "Test Company 2"
And I press "CompanyLoginButton"
Then I should see "By clicking below"
And I press "OK"
Then I should see "Welcome"
Ich habe das gleiche Problem in Codeception. PhantomJS behalten Sitzung. – Adamamont
Ich habe das gleiche Problem, aber in meinem Fall hilft sogar Reset() nicht. – Pavel