1
0
Fork 0
mirror of https://github.com/thoughtbot/capybara-webkit synced 2023-03-27 23:22:28 -04:00
A Capybara driver for headless WebKit to test JavaScript web apps
Find a file
Joe Ferris e8cc0fa382
Warn when using Qt 4
We plan on removing support for Qt 4 in the next major release. This
allows us to give users a heads-up in the next minor release.
2015-04-10 13:28:14 -04:00
bin Make sure webkit_server process runs in background 2015-01-27 15:49:30 +01:00
gemfiles Release capybara-webkit 1.5.0 2015-03-27 17:18:54 -04:00
lib Add ability to allow all unknown hosts 2015-04-10 12:51:57 -04:00
spec Fix spec sleep race condition 2015-04-10 13:14:07 -04:00
src Warn when using Qt 4 2015-04-10 13:28:14 -04:00
templates Update for Capybara 2.3.0 2014-07-01 20:36:42 -04:00
test Rewrite qInstallMsgHandler test in C++ 2013-11-10 16:52:01 -05:00
.gitignore Update for Capybara 2.3.0 2014-07-01 20:36:42 -04:00
.rspec Added rspec options 2011-02-24 23:14:52 -05:00
.travis.yml Clean up Travis before install script 2015-01-26 15:29:09 -05:00
Appraisals Support fewer Capybara versions 2014-12-09 15:47:59 -05:00
capybara-webkit.gemspec Support fewer Capybara versions 2014-12-09 15:47:59 -05:00
CONTRIBUTING.md Link to thoughtbot's contributor code of conduct 2015-04-09 16:51:08 -04:00
extconf.rb Expose INCLUDEPATH and LIBS qmake variables 2014-12-17 10:10:43 -05:00
Gemfile Use secure RubyGems URL 2013-02-28 11:09:43 -05:00
Gemfile.lock Release capybara-webkit 1.5.0 2015-03-27 17:18:54 -04:00
GOALS Updated to reflect more complexity, adding some subjectivity in the process 2012-07-09 10:03:33 +02:00
LICENSE Update links and credits in README 2015-03-09 13:00:23 -04:00
NEWS.md Release capybara-webkit 1.5.0 2015-03-27 17:18:54 -04:00
Rakefile Install bundler Gem tasks in bundler namespace 2014-07-02 20:59:21 -04:00
README.md Add ability to allow all unknown hosts 2015-04-10 12:51:57 -04:00
vagrant_setup.sh Add Vagrant configuration. 2013-01-16 23:05:58 +01:00
Vagrantfile Add Vagrant configuration. 2013-01-16 23:05:58 +01:00
webkit_server.pro Rewrite qInstallMsgHandler test in C++ 2013-11-10 16:52:01 -05:00

capybara-webkit

Build Status Code Climate

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. capybara-webkit requires Qt version 4.8 or greater.

Windows Support

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.

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'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 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, try out the headless gem, 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.

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. See the capybara documentation for more information about using capybara with RSpec.

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

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.

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"}]

cookies: allows read-only access of cookies for the current session

page.driver.cookies["alpha"]
=> "abc"

header: set the given HTTP header for subsequent requests

page.driver.header 'Referer', 'https://www.thoughtbot.com'

block_unknown_urls: By default, capybara-webkit will warn when a request is made to a URL other than 127.0.0.1 or localhost. This option will block such unknown URLs instead.

page.driver.block_unknown_urls

allow_url: Allow requests to a URL. This will silence unknown URL warnings, or permit requests to a URL when block_unknown_urls is used. Allowed URLs are reset on Driver#reset!.

page.driver.allow_url 'example.com/*.js'

allow_unknown_urls: Allow requests to all URLs. This will silence unknown URL warnings, or permit requests to all URLs when block_unknown_urls is used. Allowed URLs are reset on Driver#reset!.

page.driver.allow_unknown_urls

Contributing

See the CONTRIBUTING document. Thank you, contributors!

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.

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.

About

The capybara WebKit driver is maintained by Joe Ferris and Matt Horan.

Code for rendering the current webpage to a PNG is borrowed from Phantom.js' implementation.

thoughtbot

capybara-webkit is maintained and funded by thoughtbot, inc. The names and logos for thoughtbot are trademarks of thoughtbot, inc.

We love open source software! See our other projects or hire us to help build your product.