Module: EffectiveTestBot

Defined in:
lib/effective_test_bot/middleware.rb,
lib/effective_test_bot.rb,
lib/effective_test_bot/dsl.rb,
lib/effective_test_bot/engine.rb,
lib/effective_test_bot/version.rb,
lib/generators/effective_test_bot/install_generator.rb

Overview

Watch for any rails server exceptions and write the stacktrace to ./tmp/test_bot/exception.txt This file is checked for by assert_no_exceptions

Defined Under Namespace

Modules: DSL, Generators Classes: Engine, Middleware

Constant Summary collapse

VERSION =
'0.6.14'.freeze

Class Method Summary collapse

Class Method Details

.autosave_animated_gif_on_failure?Boolean

Returns:

  • (Boolean)


67
68
69
# File 'lib/effective_test_bot.rb', line 67

def self.autosave_animated_gif_on_failure?
  screenshots? && autosave_animated_gif_on_failure
end

.fail_fast?Boolean

Returns:

  • (Boolean)


71
72
73
74
75
76
77
# File 'lib/effective_test_bot.rb', line 71

def self.fail_fast?
  if (ENV['FAIL_FAST'] || ENV['FAILFAST']).present?
    ['true', '1'].include?((ENV['FAIL_FAST'] || ENV['FAILFAST']).to_s.downcase)
  else
    fail_fast == true
  end
end

.failed_tests_only?Boolean

Returns:

  • (Boolean)


79
80
81
82
83
84
85
# File 'lib/effective_test_bot.rb', line 79

def self.failed_tests_only?
  if (ENV['FAILS'] || ENV['FAIL']).present?
    ['true', '1'].include?((ENV['FAILS'] || ENV['FAIL']).to_s.downcase)
  else
    false
  end
end

.load_passed_testsObject



116
117
118
119
120
# File 'lib/effective_test_bot.rb', line 116

def self.load_passed_tests
  {}.tap do |tests|
    (File.readlines(passed_tests_filename).each { |line| tests[line.chomp] = true } rescue nil)
  end
end

.passed_testsObject



112
113
114
# File 'lib/effective_test_bot.rb', line 112

def self.passed_tests
  @@passed_tests ||= load_passed_tests
end

.save_passed_test(name) ⇒ Object



122
123
124
125
126
127
128
129
130
# File 'lib/effective_test_bot.rb', line 122

def self.save_passed_test(name)
  EffectiveTestBot.passed_tests[name] = true

  Dir.mkdir(passed_tests_path) unless File.exist?(passed_tests_path)

  File.open(passed_tests_filename, 'w') do |file|
    passed_tests.each { |test_name, _| file.puts(test_name) }
  end
end

.screenshots?Boolean

If you call rake test:bot TOUR=false, then disable screenshots too

Returns:

  • (Boolean)


63
64
65
# File 'lib/effective_test_bot.rb', line 63

def self.screenshots?
  screenshots == true
end

.setup {|_self| ... } ⇒ Object

Yields:

  • (_self)

Yield Parameters:



24
25
26
# File 'lib/effective_test_bot.rb', line 24

def self.setup
  yield self
end

.skip?(test, assertion = nil) ⇒ Boolean

Test could be something like “crud_test”, “crud_test (documents#new)”, “documents”, documents#new“ Assertion will be page_title, or flash

Returns:

  • (Boolean)


31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/effective_test_bot.rb', line 31

def self.skip?(test, assertion = nil)
  return false if (test || assertion).blank?

  test = test.to_s
  assertion = assertion.to_s

  # If I get passed a method_name, "crud_test: (posts#create_invalid)" extract the inner test name from it
  # I dunno why this is needed really, but it might help someone one day.
  if test.include?('_test: (')  # This is how the BaseDsl test_bot_method_name formats the test names.
    left = test.index('(') || -1
    right = test.rindex(')') || (test.length+1)
    test = test[(left+1)..(right-1)]
  end

  if failed_tests_only? && test.present? && passed_tests[test]
    return true
  end

  value = "#{test} #{assertion}".strip # This is the format config.excepts is flattened into
  test_prefix = test.split('#').first

  # Excepts are defined in the app's config/initializers/effective_test_bot.rb file
  return true if excepts.any? { |except| [test, test_prefix, assertion, value].include?(except) }

  # Onlies are defined in the same config file, or on the command like rake test:bot TEST=posts#new
  # It doesn't match just 'flash' or 'page_title' assertions
  return true if onlies.present? && onlies.find { |only| test.start_with?(only) }.blank?

  false # Don't skip this test
end

.tour_mode?Boolean

Returns:

  • (Boolean)


87
88
89
90
91
92
93
# File 'lib/effective_test_bot.rb', line 87

def self.tour_mode?
  if ENV['TOUR'].present?
    ['true', 'verbose', 'debug'].include?(ENV['TOUR'].to_s.downcase)
  else
    screenshots? && (tour_mode != false)
  end
end

.tour_mode_extreme?Boolean

form_filler will take a screenshot after every form field is filled

Returns:

  • (Boolean)


96
97
98
99
100
101
102
# File 'lib/effective_test_bot.rb', line 96

def self.tour_mode_extreme?
  if ENV['TOUR'].present?
    ['extreme', 'debug'].include?(ENV['TOUR'].to_s.downcase)
  else
    screenshots? && ['extreme', 'debug'].include?(tour_mode.to_s)
  end
end

.tour_mode_verbose?Boolean

Returns:

  • (Boolean)


104
105
106
107
108
109
110
# File 'lib/effective_test_bot.rb', line 104

def self.tour_mode_verbose?
  if ENV['TOUR'].present?
    ['extreme', 'verbose', 'debug'].include?(ENV['TOUR'].to_s.downcase)
  else
    screenshots? && ['extreme', 'verbose', 'debug'].include?(tour_mode.to_s)
  end
end