Capybara - nowy (lepszy?) webrat

Ostatnich kilka linijek tu podpowie jak to odpalić z Xvfb:
http://hubertlepicki.com/2010/01/09/perfect-solution-for-testing-rails-applications-rspec-cucumber-capybara-selenium-2-0

Jeśli chodzi o Capybarę z Webratem to jest jeszcze jeden wkurzający bug, a mianowicie jak strona jest wysoka to czasem nie potrafi klikać w elementy które są poza widoczną aktualnie częścią w oknie przeglądarki. Oczywiście można sobie kupić większy monitor, ale fajnie np. odpalić Xvfb w taki sposób:

nohup Xvfb -ac -screen scrn 1024x2048x24 :2.0 &

…i po sprawie.

Okej, to powiedźcie mi chłopcy jak radzicie sobie z logowaniem, a dokładniej utrzymaniem sesji. Mam taki problem, że loguje się poprawnie, tylko potem i tak jestem nie zalogowany. Czytałem tą dyskusję: http://groups.google.com/group/ruby-capybara/browse_thread/thread/b595974b1daa9e2b# i doprowadziłem u siebie w featurze do tego, że wszędzie w logach mam wywołania www.example.com i dalej nie jestem zalogowany po zalogowaniu (nie zalażnie od tego, czy wypełnia formularzyk czy wysyłam od razud danego logowanie POSTem). Skłaniam się więc do podzielenia opinii, że to nie ciasteczko nie pasuje do obecnej domeny, tylko że ciasteczko nigdy nie zostało wysłane.

Jak jest u Was, nie było z tym problemów?

p.s. W ogołe capybara nie jest taka super hura, że tylko zmieniasz drivery a wszystko hula cały czas. Na przykład jak wypełniam formularzyk logowania w rack-test, to w logach widzę w logach że mnie kontroler loguje. Ten sam scenariusz w selenium i widzę że już mnie nie loguje, Jak na rack-tescie i selenium puszczę scenariusz logowania poprzez do razu wysłanie danych POSTem, to obydwa się zalogują.

Podpinam się, bo mam ten sam problem. O ile pewne scenariusze dotyczące logowania pod webratem hulały, to pod capybarą po prostu wyrzucały błędy.

Rav, mi się udało właśnie logować. Choć sytuacja jest dość dziwna:

  • działa tylko w rack-test
  • wymaga przeklikania formularza logowania, samo wysłanie POSTem danych do logowania nie działa, więc trze było przebudować jeden krok
  • wymaga w pliku paths.rb, na początku metody path_to nadpisania hosta:
host! "moja.domena:9887"

U ciebie to pewnie będzie localhost:9887, ja jadę na domenie więc się też z tym musiałem użerać.

Co ciekawe, cały czas w logach mam wszędzie www.example.com dla wszystkich requestów, nie zależnie od tego, czy scenariusz przechodzi (nadpisanie hosta) czy nie. Na porcie 9887 startuje mongrel dla testów w trybie selenium. Nie widać aby rack-test był on startowany.

Rack-test nie potrzebuje serwera.

Co do reszty problemów, to nie do końca chyba rozumiem te problemy z hostem. Pod rack test domena jest nieważna, bo rack-test “rozmawia” bezpośrednio z aplikcają.

No właśnie dla tego nie rozumiem dlaczego utrzymuje mi sesje jak mu podam host serwera, a jak nie to nie utrzymuje

Mi traci sesje za każdym razem, nawet jeśli domena jest tak sama i nie mam nadpisanego tego host w path_to. Jak mam nadpisany host, to traci ją gdy domena mu się nie zgadza, przechodzi z www.example.com na example.com. Temat na grupie capybara: http://groups.google.com/group/ruby-capybara/browse_thread/thread/b595974b1daa9e2b#

Czy ktoś już używał Capybary i Selenium na poważnie?
Jak póki co się jedynie bawię i napotkałem na parę problemów:

1/ Zauważyłem, że testy mi nie przechodzą jeśli w tle mam odpaloną przeglądarkę. Test wiesza się np. w momencie wpisywania wartości do pola tekstowego i po chwili pada. Wydaje mi się, że może to być problem z menadżerem okiem, firefoxem lub po prostu tym, że przeglądarka nagle dostaje/traci focus i selenium głupieje.
Problem nie występuje gdy odpalam FF z użyciem Xvfb (czyli okienko FF w ogóle się nie pojawia).

2/ Jak w Capybarze z poziomu scenario dostać się bezpośrednio do selenium? W webracie można było zrobić coś takiego:

When /I do something/ do selenium.do_something end
3/ Da się jakoś robić screenshoty ze scenario, które padły?[/quote]
Ja używam na poważnie. Spory projekt (Code LOC: 26395 Test LOC: 30960 Code to Test Ratio: 1:1.2), część kodu ma z pięć lat i jest skatowana przez hordy słabych podwykonawców. Stare testy w Firewatir, nowe w Capybarze - wspólnie umożliwiły (w miarę) bezbolesną migrację do 2.3.8. Capybara sprawdza się nieźle, dobrze pracuje z parallel_test wieć będziemy migrować testy Watirowe.

Niestety nie mam odpowiedzi na Twoje pytania…

Co to znaczy, że masz przeglądarkę w tle odpaloną ? Capybara odpala własną instancję przeglądarki przecież.