druid-ts 1.2.2 → 1.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/ChangeLog +6 -7
- data/Gemfile +0 -5
- data/druid.gemspec +2 -1
- data/features/area.feature +0 -1
- data/features/audio.feature +0 -2
- data/features/bold.feature +0 -1
- data/features/canvas.feature +0 -2
- data/features/div.feature +0 -2
- data/features/heading.feature +0 -10
- data/features/italic.feature +0 -1
- data/features/label.feature +0 -2
- data/features/link.feature +0 -2
- data/features/list_item.feature +0 -2
- data/features/ordered_list.feature +0 -2
- data/features/paragraph.feature +0 -2
- data/features/span.feature +0 -2
- data/features/step_definations/element_steps.rb +2 -2
- data/features/step_definations/section_steps.rb +1 -1
- data/features/table.feature +0 -2
- data/features/table_cell.feature +0 -2
- data/features/unordered_list.feature +0 -3
- data/features/video.feature +0 -11
- data/lib/druid.rb +1 -5
- data/lib/druid/accessors.rb +2 -296
- data/lib/druid/assist.rb +1 -9
- data/lib/druid/elements/button.rb +0 -4
- data/lib/druid/elements/check_box.rb +0 -4
- data/lib/druid/elements/div.rb +0 -3
- data/lib/druid/elements/element.rb +3 -266
- data/lib/druid/elements/file_field.rb +0 -3
- data/lib/druid/elements/form.rb +0 -9
- data/lib/druid/elements/hidden_field.rb +0 -4
- data/lib/druid/elements/image.rb +0 -4
- data/lib/druid/elements/label.rb +0 -3
- data/lib/druid/elements/link.rb +0 -16
- data/lib/druid/elements/list_item.rb +0 -4
- data/lib/druid/elements/option.rb +0 -6
- data/lib/druid/elements/ordered_list.rb +0 -4
- data/lib/druid/elements/radio_button.rb +0 -3
- data/lib/druid/elements/select_list.rb +0 -26
- data/lib/druid/elements/span.rb +0 -4
- data/lib/druid/elements/table_cell.rb +0 -3
- data/lib/druid/elements/table_row.rb +4 -0
- data/lib/druid/elements/text_area.rb +0 -17
- data/lib/druid/elements/text_field.rb +0 -7
- data/lib/druid/elements/unordered_list.rb +0 -4
- data/lib/druid/page_populator.rb +15 -0
- data/lib/druid/version.rb +1 -1
- data/spec/druid/druid_spec.rb +1 -21
- data/spec/druid/elements/area_spec.rb +0 -8
- data/spec/druid/elements/bold_spec.rb +0 -9
- data/spec/druid/elements/button_spec.rb +0 -8
- data/spec/druid/elements/canvas_spec.rb +0 -9
- data/spec/druid/elements/check_box_spec.rb +0 -9
- data/spec/druid/elements/div_spec.rb +0 -9
- data/spec/druid/elements/element_spec.rb +6 -18
- data/spec/druid/elements/file_field_spec.rb +0 -9
- data/spec/druid/elements/form_spec.rb +0 -9
- data/spec/druid/elements/heading_spec.rb +0 -9
- data/spec/druid/elements/hidden_field_spec.rb +0 -9
- data/spec/druid/elements/image_spec.rb +0 -9
- data/spec/druid/elements/itatic_spec.rb +1 -10
- data/spec/druid/elements/label_spec.rb +0 -9
- data/spec/druid/elements/link_spec.rb +0 -16
- data/spec/druid/elements/list_item_spec.rb +0 -9
- data/spec/druid/elements/ordered_list_spec.rb +0 -9
- data/spec/druid/elements/paragraph_spec.rb +0 -9
- data/spec/druid/elements/radio_button_spec.rb +0 -9
- data/spec/druid/elements/select_list_spec.rb +0 -9
- data/spec/druid/elements/span_spec.rb +0 -9
- data/spec/druid/elements/table_cell_spec.rb +0 -9
- data/spec/druid/elements/table_row_spec.rb +0 -8
- data/spec/druid/elements/table_spec.rb +0 -9
- data/spec/druid/elements/text_area_spec.rb +0 -9
- data/spec/druid/elements/text_field_spec.rb +0 -9
- data/spec/druid/elements/unordered_list_spec.rb +0 -9
- data/spec/druid/page_populator_spec.rb +5 -3
- metadata +15 -15
data/lib/druid/elements/link.rb
CHANGED
@@ -2,22 +2,6 @@ module Druid
|
|
2
2
|
module Elements
|
3
3
|
class Link < Element
|
4
4
|
|
5
|
-
#
|
6
|
-
# return the href fot the link
|
7
|
-
#
|
8
|
-
def href
|
9
|
-
element.href
|
10
|
-
end
|
11
|
-
|
12
|
-
protected
|
13
|
-
|
14
|
-
def self.finders
|
15
|
-
super + [:href, :text, :css, :title]
|
16
|
-
end
|
17
|
-
|
18
|
-
def self.mapping
|
19
|
-
super.merge({:link => :text, :link_text => :text})
|
20
|
-
end
|
21
5
|
end
|
22
6
|
|
23
7
|
Druid::Elements.tag_to_class[:a] = Druid::Elements::Link
|
@@ -2,10 +2,6 @@ module Druid
|
|
2
2
|
module Elements
|
3
3
|
class SelectList < Element
|
4
4
|
|
5
|
-
def self.finders
|
6
|
-
super + [:value, :text, :label]
|
7
|
-
end
|
8
|
-
|
9
5
|
def [](idx)
|
10
6
|
options[idx]
|
11
7
|
end
|
@@ -14,21 +10,6 @@ module Druid
|
|
14
10
|
element.options.map { |e| Druid::Elements::Option.new(e)}
|
15
11
|
end
|
16
12
|
|
17
|
-
#
|
18
|
-
# Select a value from the list
|
19
|
-
#
|
20
|
-
def select(value)
|
21
|
-
element.select(value)
|
22
|
-
end
|
23
|
-
|
24
|
-
#
|
25
|
-
# Select the options whose value attribute matches the Given
|
26
|
-
# string
|
27
|
-
#
|
28
|
-
def select_value(value)
|
29
|
-
element.select_value(value)
|
30
|
-
end
|
31
|
-
|
32
13
|
#
|
33
14
|
# @return [Array<String>] An array of strings representing the text of the currently selected options.
|
34
15
|
#
|
@@ -51,13 +32,6 @@ module Druid
|
|
51
32
|
element.include? value
|
52
33
|
end
|
53
34
|
|
54
|
-
#
|
55
|
-
# Returns true if any of the selected options' text or label match the given value.
|
56
|
-
# @param [String, Regexp] value A value
|
57
|
-
# @return [Boolean]
|
58
|
-
def selected? value
|
59
|
-
element.selected? value
|
60
|
-
end
|
61
35
|
end
|
62
36
|
|
63
37
|
Druid::Elements.tag_to_class[:select] = Druid::Elements::SelectList
|
data/lib/druid/elements/span.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'watir/elements/html_elements'
|
1
2
|
module Druid
|
2
3
|
module Elements
|
3
4
|
class TableRow < Element
|
@@ -30,6 +31,9 @@ module Druid
|
|
30
31
|
def find_index_by_title(title)
|
31
32
|
table = element.parent
|
32
33
|
table = table.parent if table.tag_name == 'tbody'
|
34
|
+
if table.instance_of? Watir::HTMLElement
|
35
|
+
table = table.to_subtype
|
36
|
+
end
|
33
37
|
first_row = table[0]
|
34
38
|
first_row.cells.find_index { |column| column.text.include? title}
|
35
39
|
end
|
@@ -2,9 +2,6 @@ module Druid
|
|
2
2
|
module Elements
|
3
3
|
class TextArea < Element
|
4
4
|
|
5
|
-
def self.finders
|
6
|
-
super + [:label]
|
7
|
-
end
|
8
5
|
#
|
9
6
|
# Set the value of the TextArea
|
10
7
|
#
|
@@ -12,20 +9,6 @@ module Druid
|
|
12
9
|
element.set(new_value)
|
13
10
|
end
|
14
11
|
|
15
|
-
#
|
16
|
-
# Clear the TextArea
|
17
|
-
#
|
18
|
-
def clear
|
19
|
-
element.clear
|
20
|
-
end
|
21
|
-
|
22
|
-
#
|
23
|
-
# append the text to the end of the text in the text area
|
24
|
-
#
|
25
|
-
def append(text)
|
26
|
-
element.append(text)
|
27
|
-
end
|
28
|
-
|
29
12
|
end
|
30
13
|
|
31
14
|
Druid::Elements.tag_to_class[:textarea] = Druid::Elements::TextArea
|
@@ -2,10 +2,6 @@ module Druid
|
|
2
2
|
module Elements
|
3
3
|
class TextField < Element
|
4
4
|
|
5
|
-
def self.finders
|
6
|
-
super + [:text, :title, :label]
|
7
|
-
end
|
8
|
-
|
9
5
|
#
|
10
6
|
# Set the value of the TextField
|
11
7
|
#
|
@@ -13,9 +9,6 @@ module Druid
|
|
13
9
|
element.set(new_value)
|
14
10
|
end
|
15
11
|
|
16
|
-
def append text
|
17
|
-
element.append text
|
18
|
-
end
|
19
12
|
end
|
20
13
|
|
21
14
|
Druid::Elements.type_to_class[:text] = Druid::Elements::TextField
|
data/lib/druid/page_populator.rb
CHANGED
@@ -33,6 +33,7 @@ module Druid
|
|
33
33
|
populate_checkbox(key, value) if is_checkbox?(key) and is_enabled?(key)
|
34
34
|
populate_radiobuttongroup(key, value) if is_radiobuttongroup?(key)
|
35
35
|
populate_radiobutton(key, value) if is_radiobutton?(key) and is_enabled?(key)
|
36
|
+
populate_select_list(key, value) if is_select_list?(key)
|
36
37
|
populate_text(key, value) if is_text?(key) and is_enabled?(key)
|
37
38
|
end
|
38
39
|
end
|
@@ -56,7 +57,17 @@ module Druid
|
|
56
57
|
return self.send "select_#{key}", value
|
57
58
|
end
|
58
59
|
|
60
|
+
def populate_select_list(key, value)
|
61
|
+
select_element = self.send("#{key}_element")
|
62
|
+
if select_element.options.include?(value)
|
63
|
+
select_element.select(value)
|
64
|
+
else
|
65
|
+
select_element.select_value(value)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
59
69
|
def is_text?(key)
|
70
|
+
return false if is_select_list?(key)
|
60
71
|
respond_to?("#{key}=".to_sym)
|
61
72
|
end
|
62
73
|
|
@@ -72,6 +83,10 @@ module Druid
|
|
72
83
|
respond_to?("select_#{key}".to_sym) and respond_to?("#{key}_values")
|
73
84
|
end
|
74
85
|
|
86
|
+
def is_select_list?(key)
|
87
|
+
respond_to?("#{key}_options".to_sym)
|
88
|
+
end
|
89
|
+
|
75
90
|
def is_enabled?(key)
|
76
91
|
return false if is_radiobuttongroup?(key)
|
77
92
|
return true if (self.send "#{key}_element").tag_name == "textarea"
|
data/lib/druid/version.rb
CHANGED
data/spec/druid/druid_spec.rb
CHANGED
@@ -85,35 +85,15 @@ describe Druid do
|
|
85
85
|
end
|
86
86
|
|
87
87
|
context "when sent a missing method" do
|
88
|
-
it "should not respond to it if the @root_element doesn't exist" do
|
89
|
-
expect(nil).to respond_to :to_i
|
90
|
-
expect(druid.instance_variable_get(:@root_element)).to be nil
|
91
|
-
expect(druid).not_to respond_to :to_i
|
92
|
-
expect { druid.to_i }.to raise_error NoMethodError
|
93
|
-
end
|
94
88
|
|
95
89
|
it "should respond to it if the @root_element exists and responds" do
|
96
|
-
expect(druid.instance_variable_get(:@root_element)).to be nil
|
97
90
|
expect(druid).not_to respond_to :bar
|
98
91
|
expect(druid).not_to respond_to :baz
|
99
|
-
class Foo
|
100
|
-
def bar
|
101
|
-
:bar_called
|
102
|
-
end
|
103
|
-
|
104
|
-
private
|
105
|
-
|
106
|
-
def baz
|
107
|
-
end
|
108
|
-
end
|
92
|
+
class Foo; def bar; :bar_called; end; private; def baz; end; end
|
109
93
|
druid.instance_variable_set(:@root_element, Foo.new)
|
110
|
-
|
111
94
|
expect(druid).to respond_to :bar
|
112
95
|
expect(druid).not_to respond_to :baz
|
113
96
|
expect(druid.bar).to eq :bar_called
|
114
|
-
expect { druid.baz }.to raise_error NoMethodError
|
115
|
-
expect(druid.respond_to?(:baz, true)).to be false
|
116
|
-
expect { druid.send(:baz) }.to raise_error NoMethodError
|
117
97
|
end
|
118
98
|
end
|
119
99
|
|
@@ -2,14 +2,6 @@ require 'spec_helper'
|
|
2
2
|
require 'druid/elements'
|
3
3
|
|
4
4
|
describe Druid::Elements::Area do
|
5
|
-
context "when mapping how to find an element" do
|
6
|
-
it "should map watir types to same" do
|
7
|
-
[:class, :id, :index, :name, :xpath].each do |t|
|
8
|
-
identifier = Druid::Elements::Area.identifier_for t => 'value'
|
9
|
-
expect(identifier.keys.first).to eql t
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
5
|
|
14
6
|
context "implementation" do
|
15
7
|
let(:element) { double('element') }
|
@@ -4,15 +4,6 @@ require 'druid/elements'
|
|
4
4
|
describe Druid::Elements::Bold do
|
5
5
|
let(:bold) { Druid::Elements::Bold}
|
6
6
|
|
7
|
-
describe "when mapping how to find an element" do
|
8
|
-
it "should map watir types to same" do
|
9
|
-
[:class, :id, :idenx, :name, :xpath, :css].each do |t|
|
10
|
-
identifier = bold.identifier_for t => 'value'
|
11
|
-
expect(identifier.keys.first).to eql t
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
7
|
describe "interface" do
|
17
8
|
it "should register with tag :b" do
|
18
9
|
expect(Druid::Elements.element_class_for(:b)).to eql Druid::Elements::Bold
|
@@ -2,14 +2,6 @@ require 'spec_helper'
|
|
2
2
|
require 'druid/elements'
|
3
3
|
|
4
4
|
describe Druid::Elements::Button do
|
5
|
-
describe "when mapping how to find an element" do
|
6
|
-
it "should map watir types to same" do
|
7
|
-
[:class, :id, :index, :name, :value, :xpath, :src, :alt, :css].each do |t|
|
8
|
-
identifier = Druid::Elements::Button.identifier_for t => 'value'
|
9
|
-
expect(identifier.keys.first).to eql t
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
5
|
|
14
6
|
describe "interface" do
|
15
7
|
it "should register with type :submit" do
|
@@ -2,15 +2,6 @@ require 'spec_helper'
|
|
2
2
|
require 'druid/elements'
|
3
3
|
|
4
4
|
describe Druid::Elements::Canvas do
|
5
|
-
context "when mapping how to find an element" do
|
6
|
-
it "should map watir types to same" do
|
7
|
-
[:class, :id, :index, :name, :xpath].each do |t|
|
8
|
-
identifier = Druid::Elements::Canvas.identifier_for t => 'value'
|
9
|
-
expect(identifier.keys.first).to eql t
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
5
|
context "implementation" do
|
15
6
|
let(:element) { double('canvas_element') }
|
16
7
|
let(:canvas) { Druid::Elements::Canvas.new(element) }
|
@@ -2,15 +2,6 @@ require 'spec_helper'
|
|
2
2
|
require 'druid/elements'
|
3
3
|
|
4
4
|
describe Druid::Elements::CheckBox do
|
5
|
-
describe "when mapping how to find an element" do
|
6
|
-
it "should map watir types to same" do
|
7
|
-
[:class, :id, :index, :name, :xpath, :value].each do |t|
|
8
|
-
identifier = Druid::Elements::CheckBox.identifier_for t => 'value'
|
9
|
-
expect(identifier.keys.first).to eql t
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
5
|
describe "interface" do
|
15
6
|
let(:element) { double 'element' }
|
16
7
|
let(:checkbox) { Druid::Elements::CheckBox.new(element) }
|
@@ -2,15 +2,6 @@ require 'spec_helper'
|
|
2
2
|
require 'druid/elements'
|
3
3
|
|
4
4
|
describe Druid::Elements::Div do
|
5
|
-
describe "when mapping how to find an element" do
|
6
|
-
it "should map watir types to same" do
|
7
|
-
[:class, :id, :text, :index, :xpath, :title].each do |t|
|
8
|
-
identifier = Druid::Elements::Div.identifier_for t => 'value'
|
9
|
-
expect(identifier.keys.first).to eql t
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
5
|
describe "interface" do
|
15
6
|
it "should register with tag :div" do
|
16
7
|
expect(Druid::Elements.element_class_for(:div)).to be Druid::Elements::Div
|
@@ -11,16 +11,6 @@ describe Druid::Elements::Element do
|
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
|
-
context "when building the identifiers" do
|
15
|
-
it "should build xpath when finding elements by name were not supported" do
|
16
|
-
['table', 'span', 'div', 'td', 'li', 'ol', 'ul'].each do |tag|
|
17
|
-
how = {:tag_name => tag, :name => 'blah'}
|
18
|
-
result = Druid::Elements::Element.identifier_for how
|
19
|
-
expect(result[:xpath]).to eql ".//#{tag}[@name='blah']"
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
14
|
context "on a druid" do
|
25
15
|
it "should know when it is visible" do
|
26
16
|
expect(we).to receive(:visible?).and_return(true)
|
@@ -93,22 +83,25 @@ describe Druid::Elements::Element do
|
|
93
83
|
end
|
94
84
|
|
95
85
|
it "should be able to block until it is visible" do
|
86
|
+
allow(we).to receive(:wait_until).with(timeout: 10, message: "Element not present in 10 seconds")
|
96
87
|
expect(we).to receive(:wait_until).with(timeout: 10, message: "Element not visible in 10 seconds")
|
97
88
|
element.when_visible(10)
|
98
89
|
end
|
99
90
|
|
100
91
|
it "should return the element when it is visible" do
|
92
|
+
allow(we).to receive(:wait_until).with(timeout: 10, message: "Element not present in 10 seconds")
|
101
93
|
expect(we).to receive(:wait_until).with(timeout: 10, message: "Element not visible in 10 seconds")
|
102
94
|
expect(element.when_visible(10)).to eq element
|
103
95
|
end
|
104
96
|
|
105
97
|
it "should be able to block until it is not visible" do
|
98
|
+
allow(we).to receive(:wait_until).with(timeout: 10, message: "Element not present in 10 seconds")
|
106
99
|
expect(we).to receive(:wait_while).with(timeout: 10, message: "Element still visible after 10 seconds")
|
107
100
|
element.when_not_visible(10)
|
108
101
|
end
|
109
102
|
|
110
103
|
it "should be able to block until a user define event fires true" do
|
111
|
-
expect(
|
104
|
+
expect(we).to receive(:wait_until).with(timeout: 10, message: "Element blah")
|
112
105
|
element.wait_until(10, "Element blah") {true}
|
113
106
|
end
|
114
107
|
|
@@ -137,19 +130,14 @@ describe Druid::Elements::Element do
|
|
137
130
|
expect(element.style('class')).to eql "tim"
|
138
131
|
end
|
139
132
|
|
140
|
-
it "should inspect element" do
|
141
|
-
expect(we).to receive(:inspect)
|
142
|
-
element.inspect
|
143
|
-
end
|
144
|
-
|
145
133
|
it "should know if an element is focused" do
|
146
134
|
expect(we).to receive(:focused?).and_return(true)
|
147
|
-
expect(element).to
|
135
|
+
expect(element.focused?).to be true
|
148
136
|
end
|
149
137
|
|
150
138
|
it "should know if an element is not focuesd" do
|
151
139
|
expect(we).to receive(:focused?).and_return(false)
|
152
|
-
expect(element).to_not
|
140
|
+
expect(element.focused?).to_not be true
|
153
141
|
end
|
154
142
|
|
155
143
|
it "should be able to fire event" do
|