2012-11-26 19:10:00 +00:00
|
|
|
Now you can keep that precious browser window open when doing continuous integration testing.
|
|
|
|
Save seconds, and sanity, with every test re-run!
|
2012-11-26 16:36:43 +00:00
|
|
|
|
2012-11-26 19:11:53 +00:00
|
|
|
Also, the browser stays open at its last state so you can inspect it and more easily
|
|
|
|
fix your tests and/or code.
|
2012-11-26 16:36:43 +00:00
|
|
|
|
2012-11-26 19:10:00 +00:00
|
|
|
Start an instance:
|
2012-11-26 16:36:43 +00:00
|
|
|
|
2012-11-26 19:10:00 +00:00
|
|
|
``` bash
|
|
|
|
persistent_selenium [ --port 9854 ] [ --browser firefox ]
|
|
|
|
```
|
2012-11-26 16:36:43 +00:00
|
|
|
|
2012-11-26 19:10:00 +00:00
|
|
|
Tell Capybara to use it:
|
2012-11-26 16:36:43 +00:00
|
|
|
|
2012-11-26 19:10:00 +00:00
|
|
|
```
|
|
|
|
# features/support/env.rb
|
2012-11-26 16:36:43 +00:00
|
|
|
|
2012-11-26 19:10:00 +00:00
|
|
|
require 'persistent_selenium/driver'
|
|
|
|
Capybara.default_driver = :persistent_selenium
|
|
|
|
```
|
2012-11-26 16:36:43 +00:00
|
|
|
|
2013-01-25 15:56:56 +00:00
|
|
|
If you're using Cucumber, you can also install that hook:
|
|
|
|
|
|
|
|
``` bash
|
|
|
|
persistent_selenium install
|
|
|
|
```
|
|
|
|
|
2012-11-26 19:10:00 +00:00
|
|
|
Should work just the same as if you used the standard Capybara Selenium driver, except for
|
|
|
|
these two differences:
|
2012-11-26 16:36:43 +00:00
|
|
|
|
2013-01-25 15:21:17 +00:00
|
|
|
* The browser starts up first thing and sticks around, so you don't pay the startup/shutdown
|
|
|
|
penalty with each test run.
|
|
|
|
* The last page you were on before your tests passed/failed stays there, so you can inspect it
|
|
|
|
and adjust your tests.
|
2012-11-26 16:36:43 +00:00
|
|
|
|
2012-11-26 19:10:00 +00:00
|
|
|
The browser's cookies and such are reset before the next test runs, so you still get the state
|
|
|
|
cleared out before your next set of tests.
|
2012-11-26 16:36:43 +00:00
|
|
|
|
2012-11-26 19:10:00 +00:00
|
|
|
### Under the hood
|
2012-11-26 16:36:43 +00:00
|
|
|
|
2012-11-26 19:10:00 +00:00
|
|
|
It's DRb, which Just Works (tm), and a little reshuffling of the default Capybara Selenium driver's code.
|
2012-11-26 16:36:43 +00:00
|
|
|
|
2013-01-25 15:21:17 +00:00
|
|
|
#### When DRb doesn't Just Work (tm)
|
|
|
|
|
|
|
|
You may see recycled object errorrs. Capybara is complex enough that, eventually, something
|
|
|
|
will get garbage collected on the server and an object on the client will notice.
|
|
|
|
I turned off garbage collection on the server but it still happens.
|
|
|
|
Just rerun the test. It doesn't happen too often. It's the price you pay for speed.
|
|
|
|
|