qa_robusta 0.1.5 → 0.1.8
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.
- data/History.txt +6 -1
- data/Manifest.txt +2 -0
- data/common/lib/gems/.svn/entries +1 -1
- data/common/lib/gems/cache/.svn/entries +1 -1
- data/common/lib/gems/doc/.svn/entries +1 -1
- data/common/lib/gems/gems/.svn/entries +1 -1
- data/common/lib/gems/installed/.svn/entries +1 -1
- data/common/lib/gems/installed/cache/.svn/entries +1 -1
- data/common/lib/gems/installed/doc/.svn/entries +1 -1
- data/common/lib/gems/installed/gems/.svn/entries +1 -1
- data/common/lib/gems/installed/specifications/.svn/entries +1 -1
- data/common/lib/gems/specifications/.svn/entries +1 -1
- data/demo/public/style.css +4 -0
- data/demo/views/index.erb +7 -2
- data/lib/qa_robusta.rb +1 -1
- data/qa_observer/lib/watir.rb +78 -6
- data/qa_observer/sites/demo/elements/demo_elements.rb +2 -0
- data/qa_observer/sites/demo/test_cases/test_element_scroll_to.rb +69 -0
- metadata +4 -2
data/History.txt
CHANGED
@@ -1,4 +1,9 @@
|
|
1
|
-
=== 0.1.
|
1
|
+
=== 0.1.6 / 2011-10-01
|
2
|
+
* Element now has calls for: in_viewable_area? and scroll_to.
|
3
|
+
in_viewable_area? returns true if the element is in the viewable area
|
4
|
+
of the browser
|
5
|
+
scroll_to scrolls to the element
|
6
|
+
=== 0.1.5 / 2011-10-01
|
2
7
|
* Cleanup qa_obsever/lib/watir.rb
|
3
8
|
=== 0.1.4 / 2011-10-01
|
4
9
|
* Remove common/lib/gem_helpers.rb and add to localized_gems
|
data/Manifest.txt
CHANGED
@@ -18,6 +18,7 @@ remote_unix/lib/ssh.rb
|
|
18
18
|
remote_unix/lib/postfix_info.rb
|
19
19
|
remote_unix/lib/requires.rb
|
20
20
|
demo/public/javascripts/jquery-1.6.2.min.js
|
21
|
+
demo/public/style.css
|
21
22
|
demo/demo_site.rb
|
22
23
|
demo/views/index.erb
|
23
24
|
mechanize_interface/conf/app.yaml
|
@@ -30,6 +31,7 @@ mechanize_interface/test/lib/mech_unit_test.rb
|
|
30
31
|
qa_observer/script/generate
|
31
32
|
qa_observer/script/destroy
|
32
33
|
qa_observer/sites/demo/test_cases/home_page.rb
|
34
|
+
qa_observer/sites/demo/test_cases/test_element_scroll_to.rb
|
33
35
|
qa_observer/sites/demo/elements/demo_elements.rb
|
34
36
|
qa_observer/sites/demo/conf/base_urls.yaml
|
35
37
|
qa_observer/sites/demo/conf/users_list.yaml
|
data/demo/views/index.erb
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
<head>
|
4
4
|
<title>Demo Test Page for QA Robusta</title>
|
5
5
|
<script type="text/javascript" src="/javascripts/jquery-1.6.2.min.js"></script>
|
6
|
+
<link href="/style.css" rel="stylesheet" type="text/css" />
|
6
7
|
<script type="text/javascript">
|
7
8
|
$(function() {
|
8
9
|
$('input#create_file').click(function() {
|
@@ -29,7 +30,11 @@
|
|
29
30
|
<body>
|
30
31
|
<div id='create_file_status'></div>
|
31
32
|
<input type='text' id='create_file_name'>
|
32
|
-
<input type='button' id='create_file' value='Create Tmp File'>
|
33
|
-
|
33
|
+
<input type='button' id='create_file' value='Create Tmp File'><br><br>
|
34
|
+
<div id='skip_page'></div><div id='skip_page'></div><div id='skip_page'></div><div id='skip_page'></div>
|
35
|
+
<a href='with_id' id='link_with_id_and_no_name'>with id and no name</a>
|
36
|
+
<div id='skip_page'></div><div id='skip_page'></div><div id='skip_page'></div><div id='skip_page'></div>
|
37
|
+
<a href='with_name' name='link_with_no_id_but_has_name'>with name and no id</a>
|
38
|
+
<div id='skip_page'></div><div id='skip_page'></div><div id='skip_page'></div><div id='skip_page'></div>
|
34
39
|
</body>
|
35
40
|
</html>
|
data/lib/qa_robusta.rb
CHANGED
data/qa_observer/lib/watir.rb
CHANGED
@@ -1,15 +1,87 @@
|
|
1
|
-
module
|
1
|
+
module WatirExtention
|
2
2
|
def self.included(klass)
|
3
|
+
image_wrap(klass)
|
4
|
+
add_scroll_to(klass)
|
5
|
+
add_in_viewable_area?(klass)
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.image_wrap(klass)
|
3
9
|
method = 'click'
|
4
|
-
klass.class_eval
|
10
|
+
klass.class_eval {
|
5
11
|
original_method = instance_method(method)
|
6
|
-
define_method(method)
|
12
|
+
define_method(method) { |*args, &block|
|
7
13
|
TestExtention.screen_shot($current_test_method, 'pre')
|
8
14
|
result = original_method.bind(self).call(*args, &block)
|
9
15
|
TestExtention.screen_shot($current_test_method, 'post')
|
10
16
|
result
|
11
|
-
|
12
|
-
|
17
|
+
}
|
18
|
+
}
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.add_in_viewable_area?(klass)
|
22
|
+
klass.class_eval {
|
23
|
+
define_method('in_viewable_area?') { |*args, &block|
|
24
|
+
if exists?
|
25
|
+
element_location = wd.location
|
26
|
+
|
27
|
+
# JS borrowed from
|
28
|
+
# http://www.geekdaily.net/2007/07/04/javascript-cross-browser-window-size-and-centering/
|
29
|
+
script=<<-EOF
|
30
|
+
var w = 0;
|
31
|
+
var h = 0;
|
32
|
+
if(!window.innerWidth) {
|
33
|
+
w = window.pageXOffset;h = window.pageYOffset;
|
34
|
+
/*
|
35
|
+
if(!(document.documentElement.clientWidth == 0)) {
|
36
|
+
w = document.documentElement.clientWidth + document.body.scrollLeft;
|
37
|
+
h = document.documentElement.clientHeight + document.body.scrollTop;
|
38
|
+
//w = document.documentElement.clientWidth + document.body.scrollLeft;
|
39
|
+
//h = document.documentElement.clientHeight + document.body.scrollTop;
|
40
|
+
} else {
|
41
|
+
w = window.pageXOffset;
|
42
|
+
h = window.pageYOffset;
|
43
|
+
// w = document.body.clientWidth + window.pageXOffset;
|
44
|
+
// h = document.body.clientHeight + window.pageYOffset;
|
45
|
+
}
|
46
|
+
*/
|
47
|
+
} else { w = window.pageXOffset; h = window.pageYOffset; }
|
48
|
+
return {x: h, y: w}
|
49
|
+
EOF
|
50
|
+
d = driver.execute_script(script)
|
51
|
+
element_location.x >= d['y'] && element_location.y <= d['x']
|
52
|
+
else
|
53
|
+
return false
|
54
|
+
end
|
55
|
+
}
|
56
|
+
}
|
57
|
+
end
|
58
|
+
|
59
|
+
def self.add_scroll_to(klass)
|
60
|
+
klass.class_eval {
|
61
|
+
define_method('scroll_to') { |*args, &block|
|
62
|
+
|
63
|
+
if self.id == '' && self.name != ''
|
64
|
+
element = "element = document.getElementsByName(\"#{self.name}\")[0];"
|
65
|
+
elsif self.id != '' && self.name == ''
|
66
|
+
element = "element = document.getElementById(\"#{self.id}\");"
|
67
|
+
end
|
68
|
+
|
69
|
+
if element
|
70
|
+
# javascript borrowed from:
|
71
|
+
# http://radio.javaranch.com/pascarello/2005/01/09/1105293729000.html
|
72
|
+
script=<<-EOF
|
73
|
+
function ScrollToElementByID(id){
|
74
|
+
#{element} var selectedPosX = 0; var selectedPosY = 0;
|
75
|
+
while(element != null) { selectedPosX += element.offsetLeft; selectedPosY += element.offsetTop; element = element.offsetParent; }
|
76
|
+
window.scrollTo(selectedPosX,selectedPosY);
|
77
|
+
}
|
78
|
+
ScrollToElementByID("#{self.id}");
|
79
|
+
EOF
|
80
|
+
driver.execute_script(script)
|
81
|
+
end
|
82
|
+
}
|
83
|
+
}
|
84
|
+
|
13
85
|
end
|
14
86
|
end
|
15
87
|
|
@@ -27,7 +99,7 @@ module Watir
|
|
27
99
|
end
|
28
100
|
end
|
29
101
|
class Element
|
30
|
-
include
|
102
|
+
include WatirExtention
|
31
103
|
end
|
32
104
|
end
|
33
105
|
|
@@ -4,6 +4,8 @@ module Demo
|
|
4
4
|
element(:file_status) {$browser.div(:id, 'create_file_status')}
|
5
5
|
element(:create_file_text_field) {$browser.text_field(:id, 'create_file_name')}
|
6
6
|
element(:submit_create_file) {$browser.button(:id, 'create_file')}
|
7
|
+
element(:link_with_id) {$browser.link(:id, 'link_with_id_and_no_name')}
|
8
|
+
element(:link_with_name) {$browser.link(:name, 'link_with_no_id_but_has_name')}
|
7
9
|
end
|
8
10
|
end
|
9
11
|
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
base = File.expand_path(File.dirname(__FILE__))
|
2
|
+
|
3
|
+
# If the user is executing the test case stand alone
|
4
|
+
# without an agent we need to set a reference to
|
5
|
+
# for where to find the qa_observer_client as well as let
|
6
|
+
# the qa_observer_client know where the test case directory is
|
7
|
+
# URGENT: DO NOT MODIFY
|
8
|
+
unless $qa_observer_client
|
9
|
+
TEST_CASE_DIR = "#{base}"
|
10
|
+
$qa_observer_client = File.expand_path("#{base}/../../..")
|
11
|
+
end
|
12
|
+
# END OF DO NOT MODIFY
|
13
|
+
|
14
|
+
require "#{$qa_observer_client}/lib/system_test"
|
15
|
+
require "#{$qa_observer_client}/lib/env_details.rb"
|
16
|
+
|
17
|
+
class TestElementScrollTo < SystemTest
|
18
|
+
def setup
|
19
|
+
# if the user hasn't provided the environment as an input
|
20
|
+
# parameter to the interpreter default to :test
|
21
|
+
$test_environment ||= :test
|
22
|
+
super
|
23
|
+
@demo_flows = DemoFlows.new
|
24
|
+
@demo_flows.home
|
25
|
+
end
|
26
|
+
|
27
|
+
def teardown
|
28
|
+
# NOTE: Place all items you wish to do at after each test method
|
29
|
+
# in the unless @skip section before the $browser.close. DO NOT
|
30
|
+
# remove this section as it's critical if the test class is executed
|
31
|
+
# by an agent.
|
32
|
+
unless @skip
|
33
|
+
$browser.close if $browser
|
34
|
+
end
|
35
|
+
|
36
|
+
super
|
37
|
+
end
|
38
|
+
|
39
|
+
=begin rdoc
|
40
|
+
Test Purpose: Ensure QA Robusta provides a means to scroll to an element
|
41
|
+
|
42
|
+
Steps:
|
43
|
+
1. Verify that an element accessed by a name tag is not in the viewable area within the browser
|
44
|
+
2. Scroll to the element from step 1
|
45
|
+
3. Verify that the element is now in the viewable area of the browser
|
46
|
+
=end
|
47
|
+
def test_scroll_to_element_with_no_id_but_with_name
|
48
|
+
assert !@demo_flows.home_page.link_with_name.in_viewable_area?
|
49
|
+
@demo_flows.home_page.link_with_name.scroll_to
|
50
|
+
assert @demo_flows.home_page.link_with_name.in_viewable_area?
|
51
|
+
TestExtention.screen_shot($current_test_method, 'pre')
|
52
|
+
end
|
53
|
+
|
54
|
+
=begin rdoc
|
55
|
+
Test Purpose: Ensure QA Robusta provides a means to scroll to an element
|
56
|
+
|
57
|
+
Steps:
|
58
|
+
1. Verify that an element accessed by an id tag is not in the viewable area within the browser
|
59
|
+
2. Scroll to the element from step 1
|
60
|
+
3. Verify that the element is now in the viewable area of the browser
|
61
|
+
=end
|
62
|
+
def test_scroll_to_element_with_id_but_no_name
|
63
|
+
assert !@demo_flows.home_page.link_with_id.in_viewable_area?
|
64
|
+
@demo_flows.home_page.link_with_id.scroll_to
|
65
|
+
assert @demo_flows.home_page.link_with_id.in_viewable_area?
|
66
|
+
TestExtention.screen_shot($current_test_method, 'pre')
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: qa_robusta
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.1.
|
5
|
+
version: 0.1.8
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Cliff Cyphers
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-10-
|
13
|
+
date: 2011-10-06 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: platform_helpers
|
@@ -115,6 +115,7 @@ files:
|
|
115
115
|
- remote_unix/lib/postfix_info.rb
|
116
116
|
- remote_unix/lib/requires.rb
|
117
117
|
- demo/public/javascripts/jquery-1.6.2.min.js
|
118
|
+
- demo/public/style.css
|
118
119
|
- demo/demo_site.rb
|
119
120
|
- demo/views/index.erb
|
120
121
|
- mechanize_interface/conf/app.yaml
|
@@ -127,6 +128,7 @@ files:
|
|
127
128
|
- qa_observer/script/generate
|
128
129
|
- qa_observer/script/destroy
|
129
130
|
- qa_observer/sites/demo/test_cases/home_page.rb
|
131
|
+
- qa_observer/sites/demo/test_cases/test_element_scroll_to.rb
|
130
132
|
- qa_observer/sites/demo/elements/demo_elements.rb
|
131
133
|
- qa_observer/sites/demo/conf/base_urls.yaml
|
132
134
|
- qa_observer/sites/demo/conf/users_list.yaml
|