# watir

Watir Powered By Selenium!

[![Gem Version](https://badge.fury.io/rb/watir.svg)](http://badge.fury.io/rb/watir)
[![Travis Status](https://travis-ci.org/watir/watir.svg?branch=master)](https://travis-ci.org/watir/watir)
[![AppVeyor status](https://ci.appveyor.com/api/projects/status/9vbb7pp5p4uyoott/branch/master?svg=true)](https://ci.appveyor.com/project/p0deje/watir)
[![Code Climate](https://codeclimate.com/github/watir/watir.svg)](https://codeclimate.com/github/watir/watir)
[![Dependency Status](https://gemnasium.com/watir/watir.svg)](https://gemnasium.com/watir/watir)
[![Coverage Status](https://coveralls.io/repos/watir/watir/badge.svg?branch=master)](https://coveralls.io/r/watir/watir)

## Example

```ruby
require 'watir'

browser = Watir::Browser.new

browser.goto 'watir.com'
browser.link(text: 'documentation').click

puts browser.title
# => 'Documentation – Watir Project...'
browser.close
```

## Description

The majority of element methods Watir provides with is autogenerated from specifications.
This is done by extracting the IDL parts from the spec and processing them with the WebIDL gem (link below).
Currently supported specifications are:

* [HTML](https://www.whatwg.org/specs/web-apps/current-work/) (`lib/watir/elements/html_generated.rb`)
* [SVG](http://www.w3.org/TR/SVG2/single-page.html) (`lib/watir/elements/svg_generated.rb`)

## Specs

### WatirSpec

Watir uses WatirSpec for testing - an executable specification of Watir API.

#### Using In Other Gems

When developing Watir extension, you might want to make sure it's fully compatible with
existing API. To achieve that, you can run WatirSpec against your own extension. Assuming
your gem depends on Watir, you should do next:

First, add WatirSpec Rake tasks to your gem:

```ruby
# Rakefile
require 'watirspec/rake_tasks'
WatirSpec::RakeTasks.new
```

Second, initialize WatirSpec for your gem:

```bash
$ bundle exec rake watirspec:init
```

After initialized, just follow the instructions to customize Watir implementation in use.

### Watir-specific Specs

Specs specific to Watir are found in `spec/*_spec.rb`, with watirspec in `spec/watirspec/`.

## Doctests

Watir uses [yard-doctest](https://github.com/p0deje/yard-doctest) for testing documentation examples.

```bash
rake yard:doctest
```

## API Documentation

* http://rdoc.info/gems/watir/ (updated on every release)

## See Also

* http://watir.github.io
* http://github.com/jarib/webidl
* http://github.com/watir/watirspec
* https://github.com/seleniumhq/selenium

## Dependencies

* selenium-webdriver
* rack (for watirspec)

## Note on Patches/Pull Requests

* Fork the project.
* Make your feature addition or bug fix.
* Add tests for it. This is important so I don't break it in a
  future version unintentionally.
* Commit, do not mess with Rakefile, version, or history.
  (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
* Send me a pull request. Bonus points for topic branches.

## Copyright

Copyright (c) 2009-2015 Jari Bakken
Copyright (c) 2015-2018 Alex Rodionov, Titus Fortner
See LICENSE for details