2013-08-13 19 views
5

Ich habe eine Reihe von rspec Tests und etwa 30 davon sind kopflose Tests durch Capybara/Poltergeist. Jedes Mal wenn ich die Tests lokal durchführe, werden alle 100% der Tests bestanden.rspec/capybara/poltergeist Tests passieren 100% lokal, zufällige Tests scheitern auf Teamcity CI Server

Ich habe vor kurzem einen Teamcity-Server für die kontinuierliche Integration eingerichtet, und die Testergebnisse waren äußerst inkonsistent.

Ich führte die Tests 10 Mal, ohne irgendwelche Änderungen zwischen den Tests zu tun. Nur 1 der Runden hat 100% bestanden. Die anderen hatten 1-2 Fehler (die meisten waren nicht gleich), alles in Bezug auf die kopflosen Browser-Tests. Hier ist ein Beispiel für eine der Ausfälle:

ActionView::Template::Error: Couldn't find Spree::Address with id=1072978592 

Stack trace: 
./app/models/spree/order_decorator.rb:50:in `initialize_default_address' 
./app/models/spree/order_decorator.rb:42:in `initialize_shipment' 
./app/views/layouts/core.html.erb:23:in `_8cb98e121af585621c1d08e3ec1f6022' 
./app/views/layouts/default.html.erb:14:in `_588b3208edc213a939dffd2ad73f4f26' 

Dieser Fehler ist seltsam, weil ich die Funktion Stub, die mit einer ID für eine Adresse sucht und gibt ein Modell factory. Ich habe dieses Problem nicht lokal.

Hier ist ein weiterer Fehler von einem der Testläufe:

Capybara::ExpectationNotMet: expected to find link "10" but there were no matches 

Stack trace: 
./spec/features/simply_ship_spec.rb:102:in `block (2 levels) in <top (required)>' 

Auch wenn ich diese lokal ausgeführt, dieser Fehler nicht passiert, und wenn ich an Selen wechseln und den Test sehen, die Verbindung ist eindeutig da.

Diese beiden Fehler (nicht alle, aber ein paar Beispiele) traten einzeln bei verschiedenen Läufen auf, ohne dass das Projekt aktualisiert wurde. Hat jemand irgendwelche Ideen, warum das passiert?

rspec-Schienen 2.14.0 Capybara 2.1 Poltergeist 1.3.0 Schienen 3.2.14 Rubin 1.9.3 P448

Antwort

2

Es ist schwer zu sagen, ohne Ihren Code zu sehen, aber es klingt, als ob Sie in Ihrem Code Rassenbedingungen haben könnten. Wenn das Skript schneller als der Anwendungscode ausgeführt wird, treten gelegentlich Fehler auf.

Sie können prüfen, wo diese Fehler auftreten und sicherstellen, dass die Anwendung abgefangen wird, bevor Sie fortfahren.

Verwandte Themen