2016-06-17 8 views
0

Wir haben eine Funktion:unintuitive Verhalten von Poltergeist des `page.status_code`

@smoke @acceptance 
Scenario: Home page is available 
    When I visit the home page url 
    Then I expect no error code 

Mit der letzten Zeile implementiert wie:

Then(/^I expect no error code$/) do 
    expect(page.status_code).to eq 200 
end 

Diese manchmal versagt. Beim Debuggen wir folgendes gefunden haben: selbst

  • die Seite immer mit 200
  • reagiert jedoch innerhalb der Seite eine Ressource mit 204 (was bewirkt, dass der Test nicht) manchmal reagiert

Dies deutet darauf hin, dass page.status_code nicht dem Statuscode der tatsächlich angeforderten URL entspricht, sondern auf den Statuscode eines beliebigen (oder vermutlich letzten?) Der von der Seite angeforderten Ressourcen festgelegt werden kann.

Ist dies die richtige Erklärung, und ist es das erwartete Verhalten von page.status_code?

Hinweise:

  • Ich weiß, dass 204 als Erfolg angesehen werden könnte, aber das ist nicht der Schwerpunkt dieser Ausgabe
+0

Auch in GH https://github.com/teampoltergeist/poltergeist/issues/776 ausgelöst –

Antwort

0

status_code das Ergebnis der letzten Anforderung zurückgibt, die die PhantomJS ausgelöst onLoadStarted Callback - dies sollte die Seite sein, oder potentiell Ajax-Anfragen, die von der Seite initiiert wurden - es sollten keine Assets sein, die direkt als Ressourcen auf der Seite geladen werden (img, javascripts, css, etc.). Wenn es sich um ein abhängiges Asset handelt, hat phantomjs ein Problem und sollte mit einem reproduzierbaren Beispiel für dieses Projekt gemeldet werden. Welche Art von Anfrage berichtet mit einer 204 Antwort? Wenn es eine Ajax-Anfrage ist, dann ist es wie erwartet - wenn nicht, dann ist es ein Fehler in phantomjs. Hinweis: Das Überprüfen von Antwortcodes bei der Verwendung von Capybara ist ein Anti-Pattern, und Sie sollten im Allgemeinen daran festhalten, sichtbare Änderungen auf der Seite zu testen.

Verwandte Themen