- 
          
- 
                Notifications
    You must be signed in to change notification settings 
- Fork 8.6k
Ruby Development
This page details how to build and test the Ruby code in Selenium.
The CrazyFunBuild runs on a bundled JRuby jar and is based on Rake. Use the 'go' Rake wrapper to run the targets. Unfortunately, rvm sets GEM_HOME and causes trouble for our jruby-complete.jar. If you use rvm, you should disable it (rvm use system) before using the go script.
Since this is just a wrapper for Rake, familiar commands (like go -T to list targets) all work.
Tests will be run with your local Ruby installation, which should be a version >= 1.9.2. Make sure you have bundler and our dependencies installed by running
- gem install bundler
- ./go //rb:bundle
After making changes, you need to build the code (this is needed since we depend on other parts of the project):
- ./go //rb:firefox
- ./go //rb:chrome
- etc.
Build results go in the build/rb directory. You can play with your changes in a REPL from there:
cd build/rb && bundle console
Using/requiring the ruby code from rb/lib directly is not recommended.
You can build the gem with ./go //rb:gem:build, which will place the gem in build/. See ReleasingSelenium for how to make a gem release.
| Command | Description | 
|---|---|
| ./go //rb:unit-test | Run unit tests for WebDriver. | 
| ./go //rb:firefox-test | Run integration tests for Firefox - replace "firefox" with any driver. | 
| ./go //rb:remote-firefox-test | Run integration tests for Firefox on standalone server | 
Try ./go -T | grep //rb to see all the Ruby targets.
You can also run enable debug mode by passing log=1 to the Rake target and run a single scenario by passing example="full name of test".
All Ruby dependencies are packaged in the repository. This means that you only need to have Ruby 2.0+ installed on your system to build and test Ruby bindings.
On the other hand, all the dependencies versions are locked in the repository, so from time to time we need to update them. To do that, you need to perform the following:
- Switch to minimum required Ruby version (see gemspec).
- 
BUNDLE_GEMFILE="rb/Gemfile" bundle update.
- Make your feature addition or bug fix.
- Add tests for it. This is important so we don't break it in a future version unintentionally.
- Create a patch: git diff > my-feature.patch
- Create a new issue, attach the patch and add the Lang-Ruby label.
This wiki is not where you want to be! Visit the Wiki Home for more useful links
Getting Involved 
Triaging Issues 
Releasing Selenium
Ruby Development 
Python Bindings 
Ruby Bindings 
WebDriverJs
This content is being evaluated for where it belongs
Architectural Overview 
Automation Atoms 
HtmlUnitDriver 
Lift Style API 
LoadableComponent 
Logging 
PageFactory 
RemoteWebDriver 
Xpath In WebDriver
Moved to Official Documentation
Bot Style Tests 
Buck 
Continuous Integration 
Crazy Fun Build 
Design Patterns 
Desired Capabilities 
Developer Tips 
Domain Driven Design 
Firefox Driver 
Firefox Driver Internals 
Focus Stealing On Linux 
Frequently Asked Questions 
Google Summer Of Code 
Grid Platforms 
History 
Internet Explorer Driver 
InternetExplorerDriver Internals 
Next Steps 
PageObjects 
RemoteWebDriverServer 
Roadmap 
Scaling WebDriver 
SeIDE Release Notes 
Selenium Emulation 
Selenium Grid 4 
Selenium Help 
Shipping Selenium 3 
The Team 
TLC Meetings 
Untrusted SSL Certificates 
WebDriver For Mobile Browsers 
Writing New Drivers