18655cb4e0
This makes it easier to debug "Unable to load URL" errors. |
||
---|---|---|
bin | ||
gemfiles | ||
lib | ||
spec | ||
src | ||
templates | ||
.gitignore | ||
.rspec | ||
Appraisals | ||
capybara-webkit.gemspec | ||
ChangeLog | ||
CONTRIBUTING.md | ||
extconf.rb | ||
Gemfile | ||
Gemfile.lock | ||
LICENSE | ||
NEWS.md | ||
Rakefile | ||
README.md | ||
webkit_server.pro |
capybara-webkit
A capybara driver that uses WebKit via QtWebKit.
Qt Dependency and Installation Issues
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 install the gem. You can find instructions for downloading and installing QT on the capybara-webkit wiki
Windows Support
Currently 32bit Windows will compile Capybara-webkit. Support for Windows is provided by the open source community and Windows related issues should be posted to the mailing list
Reporting Issues
Without access to your application code we can't easily debug most crashes or generic failures, so we've included a debug version of the driver that prints a log of what happened during each test. Before filing a crash bug, please see Reporting Crashes. You're much more likely to get a fix if you follow those instructions.
If you are having compiling issues please check out the capybara-webkit wiki. If you don't have any luck there, please post to the mailing list. Please don't open a Github issue for a system-specific compiler issue.
CI
If you're like us, you'll be using capybara-webkit on CI.
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, or try out the headless gem.
Usage
Add the capybara-webkit gem to your Gemfile:
gem "capybara-webkit"
Set your Capybara Javascript driver to webkit:
Capybara.javascript_driver = :webkit
In cucumber, tag scenarios with @javascript to run them using a headless WebKit browser.
In RSpec, use the :js => true flag.
Take note of the transactional fixtures section of the capybara README.
If you're using capybara-webkit with Sinatra, don't forget to set
Capybara.app = MySinatraApp.new
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
# In Javascript:
console.log("hello")
# In Ruby:
page.driver.console_messages
=> {:source=>"http://example.com", :line_number=>1, :message=>"hello"}
error_messages: returns an array of Javascript errors that occurred
page.driver.error_messages
=> {:source=>"http://example.com", :line_number=>1, :message=>"SyntaxError: Parse error"}
resize_window: change the viewport size to the given width and height
page.driver.resize_window(500, 300)
page.driver.evaluate_script("window.innerWidth")
=> 500
render: render a screenshot of the current view (requires mini_magick and ImageMagick)
page.driver.render "tmp/screenshot.png"
cookies: allows read-only access of cookies for the current session
page.driver.cookies["alpha"]
=> "abc"
Contributing
See the CONTRIBUTING document.
About
The capybara WebKit driver is maintained by Joe Ferris and Matt Mongeau. It was written by thoughtbot, inc with the help of numerous contributions from the open source community.
Code for rendering the current webpage to a PNG is borrowed from Phantom.js' implementation.
The names and logos for thoughtbot are trademarks of thoughtbot, inc.
License
capybara-webkit is Copyright (c) 2011 thoughtbot, inc. It is free software, and may be redistributed under the terms specified in the LICENSE file.