Module: ScaffoldProjectDetector

Defined in:
lib/scaffolding/project_detector.rb

Constant Summary collapse

AUTOMATION_GEMS =
{
  'capybara' => 'capybara',
  'watir' => 'watir',
  'selenium-webdriver' => 'selenium',
  'appium_lib' => 'appium',
  'eyes_selenium' => 'selenium',
  'axe-core-rspec' => 'selenium',
  'axe-core-cucumber' => 'selenium'
}.freeze
FRAMEWORK_GEMS =
{
  'rspec' => 'rspec',
  'cucumber' => 'cucumber',
  'minitest' => 'minitest'
}.freeze

Class Method Summary collapse

Class Method Details

.capybara?Boolean

Returns:

  • (Boolean)


57
58
59
# File 'lib/scaffolding/project_detector.rb', line 57

def capybara?
  detect_automation == 'capybara'
end

.configObject



65
66
67
68
69
70
71
# File 'lib/scaffolding/project_detector.rb', line 65

def config
  return {} unless File.exist?('config/config.yml')

  YAML.safe_load(File.read('config/config.yml'), permitted_classes: [Symbol]) || {}
rescue StandardError
  {}
end

.detectObject



22
23
24
25
26
27
28
29
30
31
# File 'lib/scaffolding/project_detector.rb', line 22

def detect
  gemfile = read_gemfile
  {
    automation: detect_automation(gemfile),
    framework: detect_framework(gemfile),
    has_spec: Dir.exist?('spec'),
    has_features: Dir.exist?('features'),
    has_test: Dir.exist?('test')
  }
end

.detect_automation(gemfile = read_gemfile) ⇒ Object



33
34
35
36
37
38
# File 'lib/scaffolding/project_detector.rb', line 33

def detect_automation(gemfile = read_gemfile)
  AUTOMATION_GEMS.each do |gem_name, automation|
    return automation if gemfile.include?("'#{gem_name}'") || gemfile.include?("\"#{gem_name}\"")
  end
  'selenium'
end

.detect_framework(gemfile = read_gemfile) ⇒ Object



40
41
42
43
44
45
# File 'lib/scaffolding/project_detector.rb', line 40

def detect_framework(gemfile = read_gemfile)
  FRAMEWORK_GEMS.each do |gem_name, framework|
    return framework if gemfile.include?("'#{gem_name}'") || gemfile.include?("\"#{gem_name}\"")
  end
  'rspec'
end

.read_gemfileObject



47
48
49
50
51
# File 'lib/scaffolding/project_detector.rb', line 47

def read_gemfile
  return '' unless File.exist?('Gemfile')

  File.read('Gemfile')
end

.selenium?Boolean

Returns:

  • (Boolean)


53
54
55
# File 'lib/scaffolding/project_detector.rb', line 53

def selenium?
  detect_automation == 'selenium'
end

.watir?Boolean

Returns:

  • (Boolean)


61
62
63
# File 'lib/scaffolding/project_detector.rb', line 61

def watir?
  detect_automation == 'watir'
end