Class: Selenium::WebDriver::Support::Guards

Inherits:
Object
  • Object
show all
Defined in:
lib/selenium/webdriver/support/guards.rb,
lib/selenium/webdriver/support/guards/guard.rb,
lib/selenium/webdriver/support/guards/guard_condition.rb

Defined Under Namespace

Classes: Guard, GuardCondition

Constant Summary collapse

GUARD_TYPES =
%i[pending_if pending_unless skip_if skip_unless flaky
except only exclude exclusive].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(example, bug_tracker: '', conditions: nil) ⇒ Guards

Returns a new instance of Guards.



33
34
35
36
37
38
39
# File 'lib/selenium/webdriver/support/guards.rb', line 33

def initialize(example, bug_tracker: '', conditions: nil)
  @example = example
  @bug_tracker = bug_tracker
  @guard_conditions = conditions || []
  @guards = collect_example_guards
  @messages = {}
end

Instance Attribute Details

#bug_trackerObject

Returns the value of attribute bug_tracker.



31
32
33
# File 'lib/selenium/webdriver/support/guards.rb', line 31

def bug_tracker
  @bug_tracker
end

#messagesObject (readonly)

Returns the value of attribute messages.



30
31
32
# File 'lib/selenium/webdriver/support/guards.rb', line 30

def messages
  @messages
end

Instance Method Details

#add_condition(name, condition = false, &block) ⇒ Object



41
42
43
44
45
# File 'lib/selenium/webdriver/support/guards.rb', line 41

def add_condition(name, condition = false, &block)
  condition = false if condition.nil?
  @guard_conditions << GuardCondition.new(name, condition, &block)
  WebDriver.logger.debug "Running with Guard '#{name}' set to: #{condition}", id: :guard
end

#add_message(name, message) ⇒ Object



47
48
49
# File 'lib/selenium/webdriver/support/guards.rb', line 47

def add_message(name, message)
  @messages[name] = message
end

#dispositionObject



51
52
53
54
55
56
57
58
59
# File 'lib/selenium/webdriver/support/guards.rb', line 51

def disposition
  if !skipping_guard.nil?
    [:skip, skipping_guard.message]
  elsif !pending_guard.nil? && ENV.fetch('SKIP_PENDING', nil)
    [:skip, "(skipped by SKIP_PENDING) #{pending_guard.message}"]
  elsif !pending_guard.nil? && !pending_guard.exception?
    [:pending, pending_guard.message]
  end
end

#pending_exception_guardObject

The deferred exception: pending guard, evaluated against the failure after the run, else nil.



62
63
64
65
# File 'lib/selenium/webdriver/support/guards.rb', line 62

def pending_exception_guard
  guard = pending_guard
  guard if disposition.nil? && guard&.exception?
end

#satisfied?(guard) ⇒ Boolean

Returns:

  • (Boolean)


67
68
69
# File 'lib/selenium/webdriver/support/guards.rb', line 67

def satisfied?(guard)
  @guard_conditions.all? { |condition| condition.satisfied?(guard) }
end