druid-ts 1.2.5 → 1.2.6
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 +5 -5
- data/.travis.yml +4 -0
- data/ChangeLog +6 -0
- data/features/element.feature +0 -6
- data/features/step_definations/async_steps.rb +1 -1
- data/features/step_definations/element_steps.rb +2 -2
- data/features/step_definations/frame_steps.rb +3 -3
- data/features/step_definations/link_steps.rb +1 -1
- data/features/step_definations/section_steps.rb +2 -2
- data/lib/druid/elements/element.rb +10 -22
- data/lib/druid/page_populator.rb +4 -4
- data/lib/druid/version.rb +1 -1
- data/spec/druid/elements/element_spec.rb +15 -9
- data/spec/druid/page_populator_spec.rb +21 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 0bc85b82790651f4995b6bfff19d44d5b1817d7663d325dfff35bfe371b7a910
|
4
|
+
data.tar.gz: 1e6a812da3665d7dc1478f26308279e91c8722e36077226887197688597a1029
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 80a5a12a176279950b9ff8fcea84d0d238fd19173b15432c8a18ea6d6e26c0b696f2a1de56a6eb6f831f1695a3903baead8556431820a3249622c2c086d2e66c
|
7
|
+
data.tar.gz: 341a7d92c16fec02628d56ff8158732507028e4691b8cdcb3eb7f09f8b50a8e8f574407c40503ccc372bd60035a090e62d6f64ad2da98cd1059c40c0497067af
|
data/.travis.yml
CHANGED
@@ -2,7 +2,10 @@ sudo: required
|
|
2
2
|
dist: trusty
|
3
3
|
rvm:
|
4
4
|
- 2.2.5
|
5
|
+
- 2.2.7
|
6
|
+
- 2.3.4
|
5
7
|
- 2.3.1
|
8
|
+
- 2.4.1
|
6
9
|
cache: bundler
|
7
10
|
before_script:
|
8
11
|
- export CHROME_BIN=/usr/bin/google-chrome
|
@@ -19,4 +22,5 @@ before_script:
|
|
19
22
|
- sudo mv chromedriver /usr/local/bin
|
20
23
|
script: bundle exec rake $RAKE_TASK
|
21
24
|
env:
|
25
|
+
- RAKE_TASK=spec
|
22
26
|
- RAKE_TASK=features:watir
|
data/ChangeLog
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
=== Version 1.2.6/ 2019-04-09
|
2
|
+
* Enhancements
|
3
|
+
* populate_page_with will work with anything that can be converted to a Hash
|
4
|
+
* Fixes
|
5
|
+
* Fixed present? when using with ActiveSupport
|
6
|
+
* Fixed issues with when_visible and when_not_visible
|
1
7
|
=== Version 1.2.5/ 2017-10-16
|
2
8
|
* Enhancements
|
3
9
|
* Added the ability to get the values of a table column
|
data/features/element.feature
CHANGED
@@ -35,7 +35,6 @@ Feature: Elements
|
|
35
35
|
And I should know its' tag name is "a"
|
36
36
|
And I should know the attribute "readonly" is false
|
37
37
|
And I should know the attribute "href" includes "success.html"
|
38
|
-
And I should know its' value is ""
|
39
38
|
And I should be able to click it
|
40
39
|
|
41
40
|
Scenario: Button element methods
|
@@ -65,7 +64,6 @@ Feature: Elements
|
|
65
64
|
Then I should know it exists
|
66
65
|
And I should know it is visible
|
67
66
|
And I should know its' text is "page-object rocks!"
|
68
|
-
And I should know its' value is ""
|
69
67
|
And I should know it is equal to itself
|
70
68
|
And I should know its' tag name is "div"
|
71
69
|
And I should know the attribute "readonly" is false
|
@@ -97,7 +95,6 @@ Feature: Elements
|
|
97
95
|
When I retrieve a table element
|
98
96
|
Then I should know it is visible
|
99
97
|
Then I should know it exists
|
100
|
-
And I should know its' value is ""
|
101
98
|
And I should know its' text includes "Data1"
|
102
99
|
And I should know it is equal to itself
|
103
100
|
And I should know its' tag name is "table"
|
@@ -108,7 +105,6 @@ Feature: Elements
|
|
108
105
|
When I retrieve table cell
|
109
106
|
Then I should know it exists
|
110
107
|
And I should know it is visible
|
111
|
-
Then I should know its' value is ""
|
112
108
|
And I should know its' text includes "Data4"
|
113
109
|
And I should know it is equal to itself
|
114
110
|
And I should know its' tag name is "td"
|
@@ -129,7 +125,6 @@ Feature: Elements
|
|
129
125
|
Scenario: Image element methods
|
130
126
|
When I get the image element
|
131
127
|
Then I should know it exists
|
132
|
-
Then I should know its' value is ""
|
133
128
|
And I should know it is visible
|
134
129
|
And I should know its' text includes ""
|
135
130
|
And I should know it is equal to itself
|
@@ -155,7 +150,6 @@ Feature: Elements
|
|
155
150
|
And I should know it is equal to itself
|
156
151
|
And I should know its' tag name is "form"
|
157
152
|
And I should know the attribute "readonly" is false
|
158
|
-
And I should know its' value is ""
|
159
153
|
|
160
154
|
Scenario: Text Area element methods
|
161
155
|
When I retrieve the text area
|
@@ -29,7 +29,7 @@ Then(/^I should know its' text includes "(.*?)"$/) do |text|
|
|
29
29
|
end
|
30
30
|
|
31
31
|
Then(/^I should know it is not visible$/) do
|
32
|
-
expect(@element.
|
32
|
+
expect(@element.present?).to be false
|
33
33
|
end
|
34
34
|
|
35
35
|
When(/^I clear the text field$/) do
|
@@ -136,7 +136,7 @@ Then(/^I should know the html is "(.*)"$/) do |html|
|
|
136
136
|
end
|
137
137
|
|
138
138
|
Then(/^the heading element should be visible$/) do
|
139
|
-
expect(@element.
|
139
|
+
expect(@element.present?).to be true
|
140
140
|
end
|
141
141
|
|
142
142
|
When(/^I retrieve a div using data\-entity$/) do
|
@@ -84,9 +84,9 @@ Given(/^I am on the frame section page$/) do
|
|
84
84
|
end
|
85
85
|
|
86
86
|
Then(/^I should be able to access an element in the frame in the section repeatedly$/) do
|
87
|
-
expect(@page.p_on_page_element).to
|
88
|
-
expect(@page.frame_section.p_in_section_element).to
|
89
|
-
expect(@page.frame_section.success_element).to
|
87
|
+
expect(@page.p_on_page_element).to be_present
|
88
|
+
expect(@page.frame_section.p_in_section_element).to be_present
|
89
|
+
expect(@page.frame_section.success_element).to be_present
|
90
90
|
expect(@page.frame_section.success_element.text).to eq "this link should open the page success page"
|
91
91
|
@page.frame_section.success
|
92
92
|
expect(@page.text.strip).to eq 'Success'
|
@@ -21,7 +21,7 @@ Then(/^I should know it exists$/) do
|
|
21
21
|
end
|
22
22
|
|
23
23
|
Then(/^I should know it is visible$/) do
|
24
|
-
expect(@element.
|
24
|
+
expect(@element.present?).to be true
|
25
25
|
end
|
26
26
|
|
27
27
|
When(/^I select a link labeled "(.*?)" and index "(.*?)"$/) do |label, index|
|
@@ -266,6 +266,6 @@ When(/^I have a page section$/) do
|
|
266
266
|
end
|
267
267
|
|
268
268
|
Then(/^methods called on the section are passed to the root if missing$/) do
|
269
|
-
expect { @section.
|
270
|
-
expect(@section.
|
269
|
+
expect { @section.present? }.not_to raise_error
|
270
|
+
expect(@section.present?).to be true
|
271
271
|
end
|
@@ -23,6 +23,13 @@ module Druid
|
|
23
23
|
not enabled?
|
24
24
|
end
|
25
25
|
|
26
|
+
#
|
27
|
+
# return true if the element exists and is visible
|
28
|
+
#
|
29
|
+
def present?
|
30
|
+
element.present?
|
31
|
+
end
|
32
|
+
|
26
33
|
#
|
27
34
|
# compare this element to another to determine if they are equal
|
28
35
|
# @return [Boolean]
|
@@ -33,7 +40,7 @@ module Druid
|
|
33
40
|
|
34
41
|
def check_visible(timeout=Druid.default_element_wait)
|
35
42
|
timed_loop(timeout) do |element|
|
36
|
-
element.
|
43
|
+
element.present?
|
37
44
|
end
|
38
45
|
# wait_until(timeout: timeout, message: "Element not visible in #{timeout} seconds", &:present?)
|
39
46
|
end
|
@@ -116,6 +123,7 @@ module Druid
|
|
116
123
|
element.wait_until(timeout: timeout, message: "Element not present in #{timeout} seconds", &:present?)
|
117
124
|
self
|
118
125
|
end
|
126
|
+
alias_method :when_visible, :when_present
|
119
127
|
|
120
128
|
#
|
121
129
|
# Waits until the element is not present
|
@@ -126,27 +134,7 @@ module Druid
|
|
126
134
|
def when_not_present(timeout=Druid.default_element_wait)
|
127
135
|
element.wait_while(timeout: timeout, message: "Element still present in #{timeout} seconds", &:present?)
|
128
136
|
end
|
129
|
-
|
130
|
-
#
|
131
|
-
# Wait until the element is visible
|
132
|
-
#
|
133
|
-
# @param [Integer] (defaults to: 5) seconds to wait before timing out
|
134
|
-
#
|
135
|
-
def when_visible(timeout=Druid.default_element_wait)
|
136
|
-
when_present(timeout)
|
137
|
-
element.wait_until(timeout: timeout, message: "Element not visible in #{timeout} seconds", &:visible?)
|
138
|
-
self
|
139
|
-
end
|
140
|
-
|
141
|
-
#
|
142
|
-
# Waits until the element is not visible
|
143
|
-
#
|
144
|
-
# @param [Integer] (default to: 5) seconds to wait before timing out
|
145
|
-
#
|
146
|
-
def when_not_visible(timeout=Druid.default_element_wait)
|
147
|
-
when_present(timeout)
|
148
|
-
element.wait_while(timeout: timeout, message: "Element still visible after #{timeout} seconds", &:visible?)
|
149
|
-
end
|
137
|
+
alias_method :when_not_visible, :when_not_present
|
150
138
|
|
151
139
|
#
|
152
140
|
# Waits until the block returns true
|
data/lib/druid/page_populator.rb
CHANGED
@@ -29,8 +29,8 @@ module Druid
|
|
29
29
|
# false for a Checkbox or RadioButton.
|
30
30
|
#
|
31
31
|
def populate_page_with(data)
|
32
|
-
data.each do |key, value|
|
33
|
-
populate_section(key, value) if value.
|
32
|
+
data.to_h.each do |key, value|
|
33
|
+
populate_section(key, value) if value.respond_to?(:to_h)
|
34
34
|
populate_value(self, key, value)
|
35
35
|
end
|
36
36
|
end
|
@@ -39,7 +39,7 @@ module Druid
|
|
39
39
|
|
40
40
|
def populate_section(section, data)
|
41
41
|
return unless self.respond_to? section
|
42
|
-
data.each do |key, value|
|
42
|
+
data.to_h.each do |key, value|
|
43
43
|
populate_value(self.send(section), key, value)
|
44
44
|
end
|
45
45
|
end
|
@@ -98,7 +98,7 @@ module Druid
|
|
98
98
|
return false if is_radiobuttongroup?(receiver, key)
|
99
99
|
return true if (receiver.send "#{key}_element").tag_name == "textarea"
|
100
100
|
element = receiver.send("#{key}_element")
|
101
|
-
element.enabled? and element.
|
101
|
+
element.enabled? and element.present?
|
102
102
|
end
|
103
103
|
end
|
104
104
|
end
|
data/lib/druid/version.rb
CHANGED
@@ -13,13 +13,13 @@ describe Druid::Elements::Element do
|
|
13
13
|
|
14
14
|
context "on a druid" do
|
15
15
|
it "should know when it is visible" do
|
16
|
-
expect(we).to receive(:
|
17
|
-
expect(element.
|
16
|
+
expect(we).to receive(:present?).and_return(true)
|
17
|
+
expect(element.present?).to be true
|
18
18
|
end
|
19
19
|
|
20
20
|
it "should know when it is not visible" do
|
21
|
-
expect(we).to receive(:
|
22
|
-
expect(element.
|
21
|
+
expect(we).to receive(:present?).and_return(false)
|
22
|
+
expect(element.present?).to be false
|
23
23
|
end
|
24
24
|
|
25
25
|
it "should know when it exists" do
|
@@ -62,11 +62,19 @@ describe Druid::Elements::Element do
|
|
62
62
|
end
|
63
63
|
|
64
64
|
it "should check if the element is visible" do
|
65
|
-
expect(we).to receive(:
|
66
|
-
expect(we).to receive(:
|
65
|
+
expect(we).to receive(:present?).and_return(false)
|
66
|
+
expect(we).to receive(:present?).and_return(true)
|
67
67
|
expect(element.check_visible).to be true
|
68
68
|
end
|
69
69
|
|
70
|
+
it "should check if the element is present" do
|
71
|
+
# simulate Active Support's Object#present? being included
|
72
|
+
allow_any_instance_of(Object).to receive(:present?)
|
73
|
+
|
74
|
+
expect(we).to receive(:present?)
|
75
|
+
element.present?
|
76
|
+
end
|
77
|
+
|
70
78
|
it "should check if the element exists" do
|
71
79
|
expect(we).to receive(:exists?).and_return(false)
|
72
80
|
expect(we).to receive(:exists?).and_return(true)
|
@@ -92,15 +100,13 @@ describe Druid::Elements::Element do
|
|
92
100
|
|
93
101
|
it "should be able to block until it is visible" do
|
94
102
|
allow(we).to receive(:wait_until).with(timeout: 10, message: "Element not present in 10 seconds")
|
95
|
-
allow(we).to receive(:wait_until).with(timeout: 10, message: "Element not visible in 10 seconds")
|
96
103
|
allow(we).to receive(:displayed?).and_return(true)
|
97
104
|
new_element = element.when_visible(10)
|
98
105
|
expect(new_element).to eql element
|
99
106
|
end
|
100
107
|
|
101
108
|
it "should be able to block until it is not visible" do
|
102
|
-
allow(we).to receive(:
|
103
|
-
allow(we).to receive(:wait_while).with(timeout: 10, message: "Element still visible after 10 seconds")
|
109
|
+
allow(we).to receive(:wait_while).with(timeout: 10, message: "Element still present in 10 seconds")
|
104
110
|
allow(we).to receive(:displayed?).and_return(false)
|
105
111
|
element.when_not_visible(10)
|
106
112
|
end
|
@@ -23,6 +23,15 @@ describe Druid::PagePopulator do
|
|
23
23
|
let(:driver) { mock_driver }
|
24
24
|
let(:druid) { DruidPagePopulator.new(driver) }
|
25
25
|
|
26
|
+
it "should accept any object that can be converted to a Hash" do
|
27
|
+
os = OpenStruct.new('tf' => 'value', 'sl' => 'value')
|
28
|
+
expect(druid).to receive(:tf=).with('value')
|
29
|
+
expect(druid).to receive(:sl=).with('value')
|
30
|
+
|
31
|
+
allow(druid).to receive(:is_enabled?).and_return(true)
|
32
|
+
druid.populate_page_with(os)
|
33
|
+
end
|
34
|
+
|
26
35
|
it "should set a value in a text field" do
|
27
36
|
expect(druid).to receive(:tf=).with('value')
|
28
37
|
expect(druid).to receive(:is_enabled?).and_return(true)
|
@@ -38,7 +47,7 @@ describe Druid::PagePopulator do
|
|
38
47
|
expect(druid).not_to receive(:tf=)
|
39
48
|
expect(druid).to receive(:tf_element).twice.and_return(driver)
|
40
49
|
expect(driver).to receive(:enabled?).and_return(true)
|
41
|
-
expect(driver).to receive(:
|
50
|
+
expect(driver).to receive(:present?).and_return(false)
|
42
51
|
expect(driver).to receive(:tag_name).and_return('input')
|
43
52
|
druid.populate_page_with('tf' => true)
|
44
53
|
end
|
@@ -96,7 +105,7 @@ describe Druid::PagePopulator do
|
|
96
105
|
expect(druid).not_to receive(:check_cb)
|
97
106
|
expect(druid).to receive(:cb_element).twice.and_return(driver)
|
98
107
|
expect(driver).to receive(:enabled?).and_return(true)
|
99
|
-
expect(driver).to receive(:
|
108
|
+
expect(driver).to receive(:present?).and_return(false)
|
100
109
|
expect(driver).to receive(:tag_name).and_return('input')
|
101
110
|
druid.populate_page_with('cb' => true)
|
102
111
|
end
|
@@ -121,7 +130,7 @@ describe Druid::PagePopulator do
|
|
121
130
|
expect(druid).not_to receive(:select_rb)
|
122
131
|
expect(druid).to receive(:rb_element).twice.and_return(driver)
|
123
132
|
expect(driver).to receive(:enabled?).and_return(true)
|
124
|
-
expect(driver).to receive(:
|
133
|
+
expect(driver).to receive(:present?).and_return(false)
|
125
134
|
expect(driver).to receive(:tag_name).and_return('input')
|
126
135
|
druid.populate_page_with('rb' => true)
|
127
136
|
end
|
@@ -139,6 +148,15 @@ describe Druid::PagePopulator do
|
|
139
148
|
druid.populate_page_with('section' => {'stf' => 'value'})
|
140
149
|
end
|
141
150
|
|
151
|
+
it "populate a page section when the value repsonds to #to_h and it exists" do
|
152
|
+
os = OpenStruct.new('tf' => 'value', 'sl' => 'value')
|
153
|
+
expect(section).to receive(:tf=).with('value')
|
154
|
+
expect(section).to receive(:sl=).with('value')
|
155
|
+
|
156
|
+
allow(druid).to receive(:is_enabled?).twice.and_return(true)
|
157
|
+
druid.populate_page_with('section' => os)
|
158
|
+
end
|
159
|
+
|
142
160
|
it "should not set a value in a text field if it is not found on the page" do
|
143
161
|
expect(section).not_to receive(:text_field)
|
144
162
|
druid.populate_page_with('section' => {'coffee' => 'value'})
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: druid-ts
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tim Sheng
|
@@ -338,7 +338,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
338
338
|
version: '0'
|
339
339
|
requirements: []
|
340
340
|
rubyforge_project:
|
341
|
-
rubygems_version: 2.
|
341
|
+
rubygems_version: 2.7.9
|
342
342
|
signing_key:
|
343
343
|
specification_version: 4
|
344
344
|
summary: Druid DSL for browser testing
|