lib/capy.rb in capy-1.3.0 vs lib/capy.rb in capy-1.4.0

- old
+ new

@@ -13,36 +13,35 @@ banner "capy [script.capy]\n" on :b, :browser=, 'chrome, firefox', :default => 'chrome' on :j, :js, 'eval script as javascript with -a option' on :a, :'app-host=', 'app host' on :s, :'stop', 'stop after eval script' + on :w, :webkit, 'use capybara webkit' end return 1 if opts.help? trap('INT') { exit } - Capybara.register_driver :selenium do |app| - Capybara::Selenium::Driver.new(app, :browser => opts[:browser].to_sym) - end - Capybara.current_driver = :selenium - Capybara.app_host = opts[:'app-host'] + setup_capybara @mode = opts.js? ? :javascript : :capybara evaluater = Evaluater.new - evaluater.visit (Capybara.app_host) if Capybara.app_host + evaluater.visit Capybara.app_host if Capybara.app_host + if args.empty? start_shell evaluater else args.each do |script_file| unless File.exists?(script_file) puts "No such file: #{script_file}".red return 1 end puts "Running: #{script_file} ..." - evaluater.eval_script File.read(script_file), mode + result = evaluater.eval_script File.read(script_file), mode + puts "=> #{result.inspect}".cyan start_shell evaluater if opts.stop? end end 0 @@ -52,10 +51,26 @@ rescue => e error e 1 end + def setup_capybara + if opts.webkit? + require 'capybara-webkit' + Capybara.register_driver :webkit do |app| + Capybara::Driver::Webkit.new(app, :browser => Capybara::Driver::Webkit::Browser.new) + end + Capybara.current_driver = :webkit + else + Capybara.register_driver :selenium do |app| + Capybara::Selenium::Driver.new(app, :browser => opts[:browser].to_sym) + end + Capybara.current_driver = :selenium + end + Capybara.app_host = opts[:'app-host'] + end + EXIT_COMMANDS = %w(exit quit) def start_shell(evaluater) return if @_start_shell @_start_shell = true @@ -105,9 +120,18 @@ end end class Evaluater include Capybara::DSL + + def initialize + if page.driver.respond_to?(:header) + page.driver.header( + 'user-agent', + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/534.55.3 (KHTML, like Gecko) Version/5.1.5 Safari/534.55.3' + ) + end + end def eval_script(script, mode) case mode when :javascript javascript script