2011-02-28 11:01:34 -05:00
capybara-webkit
===============
2013-03-25 11:51:10 -04:00
[![Build Status ](https://secure.travis-ci.org/thoughtbot/capybara-webkit.png?branch=master )](https://travis-ci.org/thoughtbot/capybara-webkit)
[![Code Climate ](https://codeclimate.com/github/thoughtbot/capybara-webkit.png )](https://codeclimate.com/github/thoughtbot/capybara-webkit)
2012-10-12 12:56:48 -04:00
2013-12-03 20:08:36 -05:00
A [capybara ](https://github.com/jnicklas/capybara ) driver that uses [WebKit ](http://webkit.org ) via [QtWebKit ](http://trac.webkit.org/wiki/QtWebKit ).
2011-02-28 11:01:34 -05:00
2012-02-24 09:30:57 -05:00
Qt Dependency and Installation Issues
2012-11-14 11:00:58 -05:00
-------------------------------------
2011-02-28 11:01:34 -05:00
2011-08-27 20:35:58 -04:00
capybara-webkit depends on a WebKit implementation from Qt, a cross-platform
development toolkit. You'll need to download the Qt libraries to build and
2011-09-14 17:14:03 -04:00
install the gem. You can find instructions for downloading and installing QT on
2012-11-14 11:00:58 -05:00
the
[capybara-webkit wiki ](https://github.com/thoughtbot/capybara-webkit/wiki/Installing-Qt-and-compiling-capybara-webkit ).
2014-07-13 12:10:13 -04:00
capybara-webkit requires Qt version 4.8 or greater.
2011-04-13 14:55:54 -04:00
2012-03-16 12:09:05 -04:00
Windows Support
---------------
2013-12-20 10:20:00 -05:00
Currently 32-bit Windows will compile capybara-webkit. Support for Windows is
provided by the open source community and Windows related issues should be
posted to [Stack Overflow].
[Stack Overflow]: http://stackoverflow.com/questions/tagged/capybara-webkit
2012-03-16 12:09:05 -04:00
2011-10-01 13:03:07 -04:00
Reporting Issues
----------------
Without access to your application code we can't easily debug most crashes or
2011-10-06 18:56:20 -04:00
generic failures, so we've included a debug version of the driver that prints a
2011-10-01 13:03:07 -04:00
log of what happened during each test. Before filing a crash bug, please see
2013-12-20 10:20:00 -05:00
[Reporting Crashes]. You're much more likely to get a fix if you follow those
instructions.
2011-10-01 13:03:07 -04:00
2013-12-20 10:20:00 -05:00
If you're having trouble compiling or installing, please check out the [wiki].
If you don't have any luck there, please post to [Stack Overflow]. Please don't
2012-02-24 09:30:57 -05:00
open a Github issue for a system-specific compiler issue.
2012-01-13 11:44:20 -05:00
2014-02-08 23:13:09 -05:00
[Reporting Crashes]: https://github.com/thoughtbot/capybara-webkit/wiki/Reporting-Crashes
2013-12-20 10:20:00 -05:00
[capybara-webkit wiki]: https://github.com/thoughtbot/capybara-webkit/wiki
[Stack Overflow]: http://stackoverflow.com/questions/tagged/capybara-webkit
2011-06-05 17:49:16 -04:00
CI
--
If you're like us, you'll be using capybara-webkit on CI.
2011-04-13 14:55:54 -04:00
2014-07-13 12:10:13 -04:00
On Linux platforms, capybara-webkit requires an X server to run, although it doesn't create any visible windows. Xvfb works fine for this. You can setup Xvfb yourself and set a DISPLAY variable, try out the [headless gem ](https://github.com/leonid-shevtsov/headless ), or use the xvfb-run utility as follows:
```
xvfb-run -a bundle exec spec
```
This automatically sets up a virtual X server on a free server number.
2011-04-13 12:17:59 -04:00
2011-03-09 17:55:40 -05:00
Usage
-----
Add the capybara-webkit gem to your Gemfile:
2013-03-06 20:07:55 -05:00
```ruby
gem "capybara-webkit"
```
2011-03-09 17:55:40 -05:00
Set your Capybara Javascript driver to webkit:
2013-03-06 20:07:55 -05:00
```ruby
Capybara.javascript_driver = :webkit
```
2011-03-09 17:55:40 -05:00
2011-11-01 15:36:24 -04:00
In cucumber, tag scenarios with @javascript to run them using a headless WebKit browser.
2011-03-09 17:55:40 -05:00
2013-12-20 16:23:51 -05:00
In RSpec, use the `:js => true` flag. See the [capybara documentation ](http://rubydoc.info/gems/capybara#Using_Capybara_with_RSpec ) for more information about using capybara with RSpec.
2011-11-01 15:36:24 -04:00
2012-01-13 13:10:02 -05:00
Take note of the transactional fixtures section of the [capybara README ](https://github.com/jnicklas/capybara/blob/master/README.md ).
2011-11-01 15:19:28 -04:00
2012-04-17 18:29:28 -04:00
If you're using capybara-webkit with Sinatra, don't forget to set
2013-03-06 20:07:55 -05:00
```ruby
Capybara.app = MySinatraApp.new
```
2012-04-17 18:29:28 -04:00
2015-04-10 17:00:32 -04:00
Configuration
-------------
You can configure global options using `Capybara::Webkit.configure` :
``` ruby
Capybara::Webkit.configure do |config|
# Enable debug mode. Prints a log of everything the driver is doing.
config.debug = true
# By default, requests to outside domains (anything besides localhost) will
# result in a warning. Several methods allow you to change this behavior.
# Silently return an empty 200 response for any requests to unknown URLs.
config.block_unknown_urls
# Allow pages to make requests to any URL without issuing a warning.
config.allow_unknown_urls
2015-09-17 09:40:57 -04:00
# Allow a specific domain without issuing a warning.
2015-04-10 17:00:32 -04:00
config.allow_url("example.com")
2015-09-17 09:40:57 -04:00
# Allow a specific URL and path without issuing a warning.
2015-04-10 17:00:32 -04:00
config.allow_url("example.com/some/path")
# Wildcards are allowed in URL expressions.
config.allow_url("*.example.com")
# Silently return an empty 200 response for any requests to the given URL.
config.block_url("example.com")
# Timeout if requests take longer than 5 seconds
config.timeout = 5
# Don't raise errors when SSL certificates can't be validated
config.ignore_ssl_errors
# Don't load images
config.skip_image_loading
# Use a proxy
config.use_proxy(
host: "example.com",
port: 1234,
user: "proxy",
pass: "secret"
)
end
```
These options will take effect for all future sessions and only need to be set
once. It's recommended that you configure these in your `spec_helper.rb` or
`test_helper.rb` rather than a `before` or `setup` block.
2013-05-02 03:54:09 -04:00
Offline Application Cache
-------------------------
The offline application cache needs a directory to write to for the cached files. Capybara-webkit
will look at if the working directory has a tmp directory and when it exists offline application
cache will be enabled.
2012-04-03 19:23:42 -04:00
Non-Standard Driver Methods
---------------------------
capybara-webkit supports a few methods that are not part of the standard capybara API. You can access these by calling `driver` on the capybara session. When using the DSL, that will look like `page.driver.method_name` .
**console_messages**: returns an array of messages printed using console.log
2013-03-06 20:07:55 -05:00
```js
// In Javascript:
console.log("hello")
```
```ruby
# In Ruby:
page.driver.console_messages
2013-12-20 16:22:15 -05:00
=> [{:source=>"http://example.com", :line_number=>1, :message=>"hello"}]
2013-03-06 20:07:55 -05:00
```
2012-04-03 19:23:42 -04:00
**error_messages**: returns an array of Javascript errors that occurred
2013-03-06 20:07:55 -05:00
```ruby
page.driver.error_messages
2013-12-20 16:22:15 -05:00
=> [{:source=>"http://example.com", :line_number=>1, :message=>"SyntaxError: Parse error"}]
2013-03-06 20:07:55 -05:00
```
2012-04-03 19:23:42 -04:00
**cookies**: allows read-only access of cookies for the current session
2013-03-06 20:07:55 -05:00
```ruby
page.driver.cookies["alpha"]
=> "abc"
```
2012-04-03 19:23:42 -04:00
2012-11-09 13:29:32 -05:00
**header**: set the given HTTP header for subsequent requests
2013-03-06 20:07:55 -05:00
```ruby
page.driver.header 'Referer', 'https://www.thoughtbot.com'
```
2012-11-09 13:29:32 -05:00
2011-07-22 16:59:13 -04:00
Contributing
------------
2015-03-09 13:00:23 -04:00
See the [CONTRIBUTING] document.
Thank you, [contributors]!
[CONTRIBUTING]: CONTRIBUTING.md
[contributors]: https://github.com/thoughtbot/capybara-webkit/graphs/contributors
2015-03-12 10:32:34 -04:00
Need Help?
----------
We offer 1-on-1 coaching. We can help you install Qt, set up Capybara, get
started writing integration tests, and track down slow or erratic tests. [Get in
touch].
[Get in touch]: http://coaching.thoughtbot.com/rails/?utm_source=github
2015-03-09 13:00:23 -04:00
License
-------
capybara-webkit is Copyright (c) 2010-2015 thoughtbot, inc. It is free software,
and may be redistributed under the terms specified in the [LICENSE] file.
[LICENSE]: /LICENSE
2011-07-22 16:59:13 -04:00
2011-03-09 17:55:40 -05:00
About
-----
2015-03-09 13:00:23 -04:00
The capybara WebKit driver is maintained by Joe Ferris and Matt Horan.
2011-03-09 17:55:40 -05:00
2015-03-09 13:00:23 -04:00
Code for rendering the current webpage to a PNG is borrowed from Phantom.js'
implementation.
2011-07-03 09:39:47 -04:00
2015-03-09 13:00:23 -04:00
![thoughtbot ](https://thoughtbot.com/logo.png )
2011-04-13 13:31:27 -04:00
2015-03-09 13:00:23 -04:00
capybara-webkit is maintained and funded by thoughtbot, inc.
2011-03-09 17:55:40 -05:00
The names and logos for thoughtbot are trademarks of thoughtbot, inc.
2015-03-09 13:00:23 -04:00
We love open source software!
See [our other projects][community]
or [hire us][hire] to help build your product.
2011-03-09 17:55:40 -05:00
2015-03-09 13:00:23 -04:00
[community]: https://thoughtbot.com/community?utm_source=github
[hire]: https://thoughtbot.com/hire-us?utm_source=github