Search code examples
javarubycapybara

Is it possible to test Java application with Capybara?


I like the overall idea of Capybara, but i can't run it against the Java application for some reason.

Is that possible at all?


Solution

  • Yes, it is possible and we are doing it. Just use the selenium-webdriver gem with firefox or Chromium to remotely test the running application.

    You can't test it from the Java test environment as you don't have the Rack infrastructure, but you can create a separate ruby testsuite and run rake when your java app is running on your development machine (or even autostart the application from the Rakefile)

    This is how cucumber's env.rb looks like:

    #
    # features/support/env.rb
    #
    $: << File.join(File.dirname(__FILE__), "..", "..", "lib")
    
    browser = :chrome #:htmlunit #:chrome #:firefox
    
    host = ENV['TESTHOST'] || 'http://localhost:8080'
    # may be non url was given
    if not host.include?("//")
      host = "https://#{host}"
    end
    
    ENV['LANG'] = "en_US.UTF-8"
    
    require 'rubygems'
    require 'capybara'
    require 'capybara/cucumber'
    require 'selenium-webdriver'
    
    require 'culerity' if browser == :htmlunit
    
    case browser
    when :htmlunit
      Capybara.default_driver = :culerity
      Capybara.use_default_driver
    else
      Capybara.default_driver = :selenium
      Capybara.app_host = host
    end
    
    Capybara.run_server = false
    if Capybara.default_driver == :selenium
      Capybara::Driver::Selenium.browser = browser
      driver = Selenium::WebDriver.for browser
    end