Last active
September 19, 2017 17:14
-
-
Save jaxn/e1d968b6c2b48e969bd630fc22dcd198 to your computer and use it in GitHub Desktop.
Migrate to chromedriver from capybara-webkit for Rails with WSL support
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'test_helper' | |
# Capybara driver chosen based on the value of ENV['TEST_WITH_CHROME'] | |
# - `false` - use capybara-webkit | |
# - `headless` - chromedriver in headless mode | |
# - `true` (or any other value) - chromedriver in a Window | |
class ApplicationSystemTestCase < ActionDispatch::SystemTestCase | |
if ENV['TEST_WITH_CHROME'] && ENV['TEST_WITH_CHROME'] != 'false' | |
require "selenium/webdriver" | |
require 'chromedriver_patch' | |
Capybara.register_driver :chrome do |app| | |
capabilities = Selenium::WebDriver::Remote::Capabilities.chrome( | |
takesScreenshot: true, | |
chromeOptions: { args: ["--window-size=1024,768", "disable-gpu"]} | |
) | |
Capybara::Selenium::Driver.new(app, browser: :chrome, desired_capabilities: capabilities) | |
end | |
if ENV['TEST_WITH_CHROME'] == 'headless' | |
Capybara.register_driver :headless_chrome do |app| | |
capabilities = Selenium::WebDriver::Remote::Capabilities.chrome( | |
takesScreenshoot: true, | |
chromeOptions: { args: ["--window-size=1024,768", "disable-gpu", "headless"] } | |
) | |
Capybara::Selenium::Driver.new(app, browser: :chrome, desired_capabilities: capabilities) | |
end | |
Capybara.javascript_driver = :headless_chrome | |
driven_by :headless_chrome | |
else | |
Capybara.javascript_driver = :chrome | |
driven_by :chrome | |
end | |
else | |
require 'capybara/webkit' | |
Capybara.javascript_driver = :webkit | |
driven_by :webkit | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# shim in WSL filesystem to use chromedriver.exe installed in Windows | |
# place this file in your Linux $PATH and ensure chromedriver.exe is also in your $PATH | |
chromedriver.exe "$@" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Capybara::Selenium::Driver | |
# monkey patch capybara-webkit method for chromedriver | |
def error_messages | |
browser.manage.logs.get(:browser) | |
end | |
end | |
class ChildProcess::Unix::Process | |
alias_method :orig_exited?, :exited? | |
# monkey patch to support chromedriver on WSL | |
def exited? | |
return orig_exited? unless `cat /proc/version` =~ /Microsoft/ | |
return true if @exit_code | |
if (system("pkill -P #{@pid}")) | |
@exit_code = 1 | |
return true | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@jaxn does this require inside preview to be installed?