Ho creato un semplice test di accesso in Behat per accedere alla nostra applicazione interna. Ci sono due tipi di login (fatti dalla stessa schermata e box). C'è di base e avanzato. L'unica differenza è che in avanzato l'utente che sta effettuando l'accesso ha accesso a più di una società e gli viene chiesto di scegliere un'azienda su cui lavorare.Durante l'esecuzione di un test di accesso Behat tramite PhantomJS, passa solo alla prima esecuzione
Trovo che ogni volta che eseguo gli scenari tramite PhantomJS anziché Selenium, vengono eseguiti molto più rapidamente (ovviamente poiché non è necessario eseguire il rendering in un emulatore browser senza testa). Quando lancio PhantomJS per la prima volta, esegue entrambi gli scenari bene. Ma poi lo eseguo una seconda volta e fallisce il primo scenario (il login di base).
Se riavvio PhantomJS, funziona di nuovo fino al secondo tentativo. Sono molto confuso da questo. Perché è necessario riavviare PhantomJS per far passare nuovamente entrambi i test alla prima chiamata.
Se si specifica che voglio solo che esegua l'accesso avanzato nelle esecuzioni successive, fallisce anche quell'accesso. Se si specifica l'accesso di base (impedendo comunque di eseguire entrambi gli scenari) fallisce anche questo. Ma quando eseguo entrambi gli scenari nella stessa chiamata, il primo fallisce sempre e il secondo passa sempre.
Ho persino commutato l'ordine in modo che base sia eseguita seconda invece che prima e il primo scenario (in questo caso avanzato) non riesce e il secondo passa. Quindi cosa sta succedendo nel mondo?
Come bonus extra sono andato avanti e ho aggiunto una riga che diceva "Allora seguo" Logout "" e all'improvviso entrambi gli scenari passano di nuovo. Il che avrebbe senso se non fosse per il fatto che funziona bene nel secondo scenario. Non dovrebbe fallire sia se è già registrato? C'è un modo per assicurarsi che la cache di PhantomJS sia deselezionata alla fine di ogni scenario?
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"
Ho lo stesso problema in Codeception. PhantomJS continua sessione. – Adamamont
Ho lo stesso problema, ma nel mio caso anche reset() non aiuta. – Pavel