class WatirSpec::RakeTasks

Public Class Methods

new() click to toggle source
Calls superclass method
# File lib/watirspec/rake_tasks.rb, line 5
def initialize
  super

  namespace :watirspec do
    desc 'Initialize WatirSpec'
    task :init do
      init_watirspec
      print_usage
    end

    desc 'List WatirSpec examples'
    task :list do
      print_specs
    end

    desc 'Run WatirSpec examples'
    task :run, %i[spec line] do |_, args|
      run(args)
    end
  end
end

Private Instance Methods

init_watirspec() click to toggle source
# File lib/watirspec/rake_tasks.rb, line 29
def init_watirspec
  Dir.mkdir('spec') unless Dir.exist?('spec')
  return if File.exist?('spec/watirspec_helper.rb')

  File.open('spec/watirspec_helper.rb', 'w') do |file|
    file.write(watirspec_helper_template)
  end
end
print_specs() click to toggle source
print_usage() click to toggle source
rspec_binary() click to toggle source
# File lib/watirspec/rake_tasks.rb, line 69
def rspec_binary
  rspec_path = Bundler.rubygems.find_name('rspec-core').first.full_gem_path
  "#{rspec_path}/exe/rspec"
end
rspec_command(**args) click to toggle source
# File lib/watirspec/rake_tasks.rb, line 52
def rspec_command(**args)
  cmd = [rspec_binary]
  if args[:spec]
    spec_file = spec_files.find { |file| file == "#{watirspec_path}/#{args[:spec]}_spec.rb" }
    spec_file << ":#{args[:line]}" if args[:line]
    cmd << spec_file
  else
    cmd << spec_files
  end

  cmd.join(' ')
end
run(**args) click to toggle source
# File lib/watirspec/rake_tasks.rb, line 46
def run(**args)
  return if system(rspec_command(args))

  exit $CHILD_STATUS.exitstatus || 1
end
spec_files() click to toggle source
# File lib/watirspec/rake_tasks.rb, line 65
def spec_files
  Dir.glob("#{watirspec_path}/**/*_spec.rb")
end
watirspec_helper_template() click to toggle source
# File lib/watirspec/rake_tasks.rb, line 79
    def watirspec_helper_template
      <<~RUBY
        require 'watirspec'
        # require your gems

        WatirSpec.implementation do |watirspec|
          # add WatirSpec implementation (see example below)
          #
          # watirspec.name = :watizzle
          # watirspec.browser_class = Watir::Browser
          # watirspec.browser_args = [:firefox, {}]
          # watirspec.guard_proc = lambda do |args|
          #   args.include?(:firefox)
          # end
        end

        WatirSpec.run!
      RUBY
    end
watirspec_path() click to toggle source
# File lib/watirspec/rake_tasks.rb, line 74
def watirspec_path
  watir_path = Bundler.rubygems.find_name('watir').first.full_gem_path
  "#{watir_path}/spec/watirspec"
end