Sha256: ab84eaa700769a1295c1e7c2984987405628d4ac4af970fedefcaa9d428ff674

Contents?: true

Size: 1.68 KB

Versions: 6

Compression:

Stored size: 1.68 KB

Contents

require 'spec_helper'

describe Capybara::Webkit, 'compatibility with selenium' do
  include AppRunner

  it 'generates the same events as selenium when filling out forms' do
    run_application_for_html(<<-HTML)
      <html><body>
        <form onsubmit="return false">
          <label for="one">One</label><input type="text" name="one" id="one" />
          <label for="two">Two</label><input type="text" name="two" id="two" />
          <input type="submit" value="Submit" id="submit" />
        </form>
        <script type="text/javascript">
          window.log = [];
          var recordEvent = function (event) {
            log.push(event.target.id + '.' + event.type);
          };
          var elements = document.getElementsByTagName("input");
          var events = ["mousedown", "mouseup", "click", "keyup", "keydown",
                        "keypress", "focus", "blur"];
          for (var i = 0; i < elements.length; i++) {
            for (var j = 0; j < events.length; j++) {
              elements[i].addEventListener(events[j], recordEvent);
            }
          }
        </script>
      </body></html>
    HTML

    compare_events_for_drivers(:reusable_webkit, :selenium) do
      visit "/"
      fill_in "One", :with => "some value"
      fill_in "One", :with => "a new value"
      fill_in "Two", :with => "other value"
      click_button "Submit"
    end
  end

  def compare_events_for_drivers(first, second, &block)
    events_for_driver(first, &block).should == events_for_driver(second, &block)
  end

  def events_for_driver(name, &block)
    session = Capybara::Session.new(name, AppRunner.app)
    session.instance_eval(&block)
    session.evaluate_script("window.log")
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
capybara-webkit-0.13.2 spec/selenium_compatibility_spec.rb
capybara-webkit-0.13.1 spec/selenium_compatibility_spec.rb
capybara-webkit-0.14.2 spec/selenium_compatibility_spec.rb
capybara-webkit-0.14.1 spec/selenium_compatibility_spec.rb
capybara-webkit-0.14.0 spec/selenium_compatibility_spec.rb
capybara-webkit-0.13.0 spec/selenium_compatibility_spec.rb