Module: Dill::DSL

Included in:
Role
Defined in:
lib/dill/dsl.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#widget_lookup_scopeObject



91
92
93
# File 'lib/dill/dsl.rb', line 91

def widget_lookup_scope
  @widget_lookup_scope ||= default_widget_lookup_scope
end

Instance Method Details

#click(name, *args) ⇒ Object

Clicks the widget defined by name and optional args.

Makes no distinction between links or buttons.

class MyWidget < Dill::Widget
  root { |text| ['.my-widget', text: text] }
end

#  <a href="#one" class="my-widget">One</li>
#  <a href="#two" class="my-widget">Two</li> <!-- clicks this node -->
click :my_widget, 'Two'


16
17
18
# File 'lib/dill/dsl.rb', line 16

def click(name, *args)
  widget(name, *args).click
end

#documentDocument

Returns the current document with the class of the current object set as the widget lookup scope.

Returns:

  • (Document)

    the current document with the class of the current object set as the widget lookup scope.



37
38
39
# File 'lib/dill/dsl.rb', line 37

def document
  Document.new(widget_lookup_scope)
end

#double_click(name, *args) ⇒ Object

Double clicks the widget defined by name and optional args.



26
27
28
# File 'lib/dill/dsl.rb', line 26

def double_click(name, *args)
  widget(name, *args).double_click
end

#eventually(wait_time = Capybara.default_max_wait_time, &block) ⇒ Object

re-run one or more assertions until either they all pass, or Dill times out, which will result in a test failure.



97
98
99
# File 'lib/dill/dsl.rb', line 97

def eventually(wait_time = Capybara.default_max_wait_time, &block)
  Checkpoint.wait_for wait_time, &block
end

#has_widget?(name, *args) ⇒ Boolean Also known as: widget?

Returns Whether one or more widgets exist in the current document.

Returns:

  • (Boolean)

    Whether one or more widgets exist in the current document.



43
44
45
# File 'lib/dill/dsl.rb', line 43

def has_widget?(name, *args)
  document.has_widget?(name, *args)
end

#hover(name, *args) ⇒ Object

Hovers the widget defined by name and optional args.



21
22
23
# File 'lib/dill/dsl.rb', line 21

def hover(name, *args)
  widget(name, *args).hover
end

#not_visible?(name, *args) ⇒ Boolean

Returns:

  • (Boolean)


53
54
55
# File 'lib/dill/dsl.rb', line 53

def not_visible?(name, *args)
  document.not_visible?(name, *args)
end

#right_click(name, *args) ⇒ Object

Right clicks the widget defined by name and optional args.



31
32
33
# File 'lib/dill/dsl.rb', line 31

def right_click(name, *args)
  widget(name, *args).right_click
end

#set(name, fields) ⇒ Object



57
58
59
# File 'lib/dill/dsl.rb', line 57

def set(name, fields)
  widget(name).set fields
end

#submit(name, fields = {}) ⇒ Object



61
62
63
# File 'lib/dill/dsl.rb', line 61

def submit(name, fields = {})
  widget(name).submit_with fields
end

#value(name, *args) ⇒ Object



65
66
67
# File 'lib/dill/dsl.rb', line 65

def value(name, *args)
  widget(name, *args).value
end

#values(name, *args) ⇒ Object



69
70
71
# File 'lib/dill/dsl.rb', line 69

def values(name, *args)
  widgets(name, *args).map(&:value)
end

#visible?(name, *args) ⇒ Boolean

Returns:

  • (Boolean)


49
50
51
# File 'lib/dill/dsl.rb', line 49

def visible?(name, *args)
  document.visible?(name, *args)
end

#visit(path) ⇒ Object



73
74
75
# File 'lib/dill/dsl.rb', line 73

def visit(path)
  Capybara.current_session.visit path
end

#widget(name, *args) ⇒ Object

Returns a widget instance for the given name.

Parameters:



80
81
82
# File 'lib/dill/dsl.rb', line 80

def widget(name, *args)
  eventually { document.widget(name, *args) }
end

#widgets(name, *args) ⇒ Object

Returns a list of widget instances for the given name.

Parameters:



87
88
89
# File 'lib/dill/dsl.rb', line 87

def widgets(name, *args)
  document.widgets(name, *args)
end