marekj-watirloo 0.0.3 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. data/History.txt +12 -0
  2. data/Manifest.txt +59 -34
  3. data/README.rdoc +63 -80
  4. data/Rakefile.rb +32 -39
  5. data/config/locker.yml +0 -0
  6. data/lib/watirloo.rb +9 -162
  7. data/lib/watirloo/browsers.rb +73 -0
  8. data/lib/watirloo/desktop.rb +44 -0
  9. data/lib/watirloo/{firewatir_ducktape.rb → extension/firewatir_ducktape.rb} +0 -0
  10. data/lib/watirloo/extension/object.rb +26 -0
  11. data/lib/watirloo/{watir_ducktape.rb → extension/watir_ducktape.rb} +181 -16
  12. data/lib/watirloo/extension/watir_reflector.rb +83 -0
  13. data/lib/watirloo/locker.rb +84 -0
  14. data/lib/watirloo/page.rb +105 -0
  15. data/spec/browser_spec.rb +38 -0
  16. data/spec/browser_threads_spec.rb +45 -0
  17. data/spec/checkbox_group_spec.rb +136 -0
  18. data/spec/checkbox_groups_spec.rb +55 -0
  19. data/spec/checkboxes_value_spec.rb +35 -0
  20. data/spec/desktop_spec.rb +54 -0
  21. data/spec/extra/browser_events_spec.rb +76 -0
  22. data/spec/extra/page_objects_metrics.rb +139 -0
  23. data/spec/face_mixing_spec.rb +55 -0
  24. data/{test → spec}/firewatir/attach_instance_test.rb +0 -0
  25. data/spec/firewatir/spec_results.html +263 -0
  26. data/spec/firewatir/spec_results.txt +23 -0
  27. data/spec/firewatir/spec_results_failed.txt +3 -0
  28. data/{test → spec}/html/census.html +0 -0
  29. data/spec/html/checkbox_group1.html +33 -0
  30. data/spec/html/labels.html +53 -0
  31. data/spec/html/no_title.html +13 -0
  32. data/{test → spec}/html/person.html +0 -0
  33. data/spec/html/radio_group.html +35 -0
  34. data/{test → spec}/html/select_lists.html +0 -0
  35. data/spec/input_element_spec.rb +51 -0
  36. data/spec/label_spec.rb +65 -0
  37. data/spec/locker_spec.rb +49 -0
  38. data/spec/page_spec.rb +53 -0
  39. data/spec/person_def_wrappers_spec.rb +40 -0
  40. data/spec/radio_group_spec.rb +95 -0
  41. data/spec/radio_groups_spec.rb +55 -0
  42. data/spec/reflector_spec.rb +82 -0
  43. data/spec/select_list_options_spec.rb +40 -0
  44. data/spec/select_lists_spec.rb +151 -0
  45. data/{test/test_helper.rb → spec/spec_helper.rb} +6 -4
  46. data/spec/spec_helper_ff.rb +5 -0
  47. data/spec/spec_helper_runner.rb +13 -0
  48. data/spec/spec_results.html +566 -0
  49. data/spec/spec_results.txt +179 -0
  50. data/spec/spec_results_failed.txt +1 -0
  51. data/spec/text_fields_spec.rb +56 -0
  52. data/watirloo.gemspec +44 -44
  53. metadata +80 -39
  54. data/lib/watirloo/reflector.rb +0 -137
  55. data/test/checkbox_group_test.rb +0 -83
  56. data/test/checkboxes_value_test.rb +0 -50
  57. data/test/html/checkbox_group1.html +0 -20
  58. data/test/html/labels.html +0 -32
  59. data/test/html/radio_group.html +0 -41
  60. data/test/interfaces_test.rb +0 -79
  61. data/test/label_test.rb +0 -64
  62. data/test/person_def_wrappers_test.rb +0 -55
  63. data/test/radio_group_test.rb +0 -97
  64. data/test/select_list_in_class_test.rb +0 -39
  65. data/test/select_list_options_test.rb +0 -39
  66. data/test/select_lists_test.rb +0 -145
  67. data/test/text_fields_test.rb +0 -68
@@ -0,0 +1,55 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe 'RadioGroup class access in watir browser' do
4
+ include Watirloo::Page
5
+
6
+ before :each do
7
+ browser.goto testfile('radio_group.html')
8
+ end
9
+
10
+ it 'browser responds to radio_group' do
11
+ browser.should respond_to(:radio_groups)
12
+ end
13
+
14
+ it 'returns RadioGroups class' do
15
+ browser.radio_groups.should be_kind_of(Watir::RadioGroups)
16
+ end
17
+
18
+ it 'lenght returns integer count of groups' do
19
+ browser.radio_groups.length.should == 2
20
+ end
21
+
22
+ it 'each iterator returns RadioGroup' do
23
+ browser.radio_groups.each do |rg|
24
+ rg.class.should == Watir::RadioGroup #single
25
+ end
26
+ end
27
+
28
+ it 'each accesses the group and returns name' do
29
+ names =[]
30
+ browser.radio_groups.each do |rg|
31
+ names << rg.name
32
+ end
33
+ names.should == ['food', 'fooda']
34
+ end
35
+
36
+ it 'bracket access[] returns 1-based indexed group' do
37
+ browser.radio_groups[1].class.should == Watir::RadioGroup
38
+ browser.radio_groups[1].values.should == ["hotdog", "burger", "tofu"]
39
+ browser.radio_groups[2].name.should == 'fooda'
40
+ end
41
+
42
+ it 'if radio group does not exists it returns size 0 or name nil (or should it blow up? or respond to exists? method' do
43
+ browser.radio_groups[6].size.should == 0 # does not exist. let's not blow up. suggestions?
44
+ browser.radio_groups[6].name.should == nil #suggestions?
45
+ end
46
+
47
+ it 'groups contained by a form element' do
48
+ browser.forms[1].radio_groups.length.should == 1
49
+ names =[]
50
+ browser.forms[1].radio_groups.each do |rg|
51
+ names << rg.name
52
+ end
53
+ names.should == ['food']
54
+ end
55
+ end
@@ -0,0 +1,82 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+
4
+ #each collection can reflect the accessors and specs for its own members
5
+ describe 'reflext :text_fields' do
6
+
7
+ include Watirloo::Page
8
+
9
+ before do
10
+ browser.goto testfile('person.html')
11
+ end
12
+
13
+ it 'text_fields.reflect each :text_field' do
14
+ expected = ["face(:last_nm) {doc.text_field(:name, \"last_nm\")}",
15
+ "last_nm.value.should == \"Begoodnuffski\"",
16
+ "face(:first_nm) {doc.text_field(:name, \"first_nm\")}",
17
+ "first_nm.value.should == \"Joanney\"",
18
+ "face(:dob) {doc.text_field(:name, \"dob\")}",
19
+ "dob.value.should == \"05/09/1964\"",
20
+ "face(:addr1) {doc.text_field(:name, \"addr1\")}",
21
+ "addr1.value.should == \"1600 Transylavnia Ave.\""]
22
+
23
+ browser.text_fields.reflect.should == expected
24
+ end
25
+ end
26
+
27
+
28
+
29
+ describe 'reflect :radio_groups' do
30
+
31
+ include Watirloo::Page
32
+
33
+ before do
34
+ browser.goto testfile('radio_group.html')
35
+ end
36
+
37
+ it 'reflects each radio group' do
38
+
39
+ expected = ["face(:food) {doc.radio_group(\"food\")}",
40
+ "food.values.should == [\"hotdog\", \"burger\", \"tofu\"]",
41
+ "food.selected.should == \"burger\"",
42
+ "face(:fooda) {doc.radio_group(\"fooda\")}",
43
+ "fooda.values.should == [\"hotdoga\", \"burgera\", \"tofua\", \"hotdoga_t\", \"burgera_t\", \"tofua_t\"]",
44
+ "fooda.selected.should == \"tofua\""]
45
+
46
+ # here the radio_group pics up the same named elemnets in two distinct form containers
47
+ # this would be a bug if container is browser
48
+ browser.radio_groups.reflect.should == expected
49
+
50
+ end
51
+ end
52
+
53
+
54
+
55
+
56
+ describe 'reflect :checkbox_groups' do
57
+
58
+ include Watirloo::Page
59
+
60
+ before do
61
+ browser.goto testfile('checkbox_group1.html')
62
+ end
63
+
64
+ it 'reflects each checkbox_group' do
65
+
66
+ expected = ["face(:pets) {doc.checkbox_group(\"pets\")}",
67
+ "pets.values.should == [\"cat\", \"dog\", \"zook\", \"zebra\", \"wumpa\"]",
68
+ "pets.selected.should == nil",
69
+ "face(:single_indicator) {doc.checkbox_group(\"singleIndicator\")}",
70
+ "single_indicator.values.should == [\"on\"]",
71
+ "single_indicator.selected.should == nil",
72
+ "face(:petsa) {doc.checkbox_group(\"petsa\")}",
73
+ "petsa.values.should == [\"cata\", \"doga\", \"zooka\", \"zebraa\", \"wumpaa\"]",
74
+ "petsa.selected.should == nil",
75
+ "face(:single_indicatora) {doc.checkbox_group(\"singleIndicatora\")}",
76
+ "single_indicatora.values.should == [\"on\"]",
77
+ "single_indicatora.selected.should == nil"]
78
+
79
+ browser.checkbox_groups.reflect.should == expected
80
+ end
81
+
82
+ end
@@ -0,0 +1,40 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe "SelectList options as visible items and values as hidden to the user attributes" do
4
+
5
+ include Watirloo::Page
6
+
7
+ face(:pets) { doc.select_list(:name, 'animals') }
8
+ face(:gender) { doc.select_list(:name, 'sex_cd') }
9
+ face(:toys) { doc.select_list(:name, 'bubel') }
10
+
11
+ before :each do
12
+ browser.goto testfile('select_lists.html')
13
+ end
14
+
15
+ it 'values of options by facename method' do
16
+ gender.values.should == ['', 'm', 'f']
17
+ pets.values.should == ['o1', 'o2', 'o3', 'o4', 'o5']
18
+ end
19
+
20
+ it 'options with no value attribute' do
21
+ # in case of IE it will return all blanks
22
+ if browser.kind_of?(Watir::IE)
23
+ toys.values.should == ["", "", "", "", ""]
24
+ elsif browser.kind_of?(FireWatir::Firefox)
25
+ toys.values.should == ["", "foobel", "barbel", "bazbel", "chuchu"]
26
+ # for Firfox it returns actual items
27
+ end
28
+ end
29
+
30
+ it 'items method returns visible contents as array of text items' do
31
+ toys.items.should == ["", "foobel", "barbel", "bazbel", "chuchu"]
32
+ end
33
+
34
+ it 'items returns visible text items as array' do
35
+ pets.items.should == ['cat', 'dog', 'zook', 'zebra', 'wumpa']
36
+ gender.items.should == ["", "M", "F"]
37
+ end
38
+
39
+
40
+ end
@@ -0,0 +1,151 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+
4
+ # testing single select and multiselect controls
5
+ describe "SelectList selections" do
6
+
7
+ include Watirloo::Page
8
+
9
+ face(:pets) {doc.select_list(:name, 'animals')}
10
+ face(:gender) {doc.select_list(:name, 'sex_cd')}
11
+
12
+
13
+ before do
14
+ browser.goto testfile('select_lists.html')
15
+ end
16
+
17
+ it 'selected returns preselected item in single select' do
18
+ gender.selected.should == '' # in single select "" is preselected
19
+ gender.selected_item.should == '' # in single select "" is preselected
20
+ gender.selected_items.should == ['']
21
+ end
22
+
23
+ it 'selected returns preselected value in single select' do
24
+ gender.selected_value.should == '' # in single select "" is preselected
25
+ gender.selected_values.should == ['']
26
+ end
27
+
28
+
29
+ it 'selected returns nil for none selected items in multi select' do
30
+ pets.selected.should == nil # in multiselect noting is selected
31
+ pets.selected_item.should == nil
32
+ pets.selected_items.should == [] # as array
33
+ end
34
+
35
+ it 'selected returns nil for none selected values in multi select' do
36
+ pets.selected_value.should == nil
37
+ pets.selected_values.should == [] # as array
38
+ end
39
+
40
+ it 'set item text and find selected item and text for multiselect' do
41
+ pets.set 'dog'
42
+ pets.selected.should == 'dog' #multi select one item selected
43
+ pets.selected_item.should == 'dog' #multi select one item selected
44
+ pets.selected_items.should == ['dog']
45
+ end
46
+
47
+ it 'set value and find selected item and value for multiselect' do
48
+ pets.set_value 'o2'
49
+ pets.selected.should == 'dog' #multi select one item selected
50
+ pets.selected_value.should == 'o2' #multi select one item selected
51
+ pets.selected_values.should == ['o2']
52
+ end
53
+
54
+ it 'set and query option by text for single select' do
55
+ gender.set 'F'
56
+ gender.selected.should == 'F' # single select one item
57
+ gender.selected_item.should == 'F' # single select one item
58
+ gender.selected_items.should == ['F'] # single select one item
59
+ end
60
+
61
+ it 'set and query option by value for single select' do
62
+ gender.set_value 'f'
63
+ gender.selected.should == 'F'
64
+ gender.selected_value.should == 'f' # single select one item
65
+ gender.selected_values.should == ['f'] # single select one item
66
+ end
67
+
68
+
69
+ it 'set by text multple items for multiselect selects each item' do
70
+ pets.set ['cat', 'dog']
71
+ pets.selected.should == ['cat','dog']
72
+ pets.selected_item.should == ['cat','dog'] # bypass filter when more than one item
73
+ pets.selected_items.should == ['cat','dog']
74
+ end
75
+
76
+ it 'set by value multple items for multiselect selects each item' do
77
+ pets.set_value ['o1', 'o2']
78
+ pets.selected.should == ['cat','dog']
79
+ pets.selected_value.should == ['o1','o2'] # bypass filter when more than one item
80
+ pets.selected_value.should == ['o1','o2']
81
+ end
82
+
83
+ # this is not practical for single select but can be done for testing
84
+ # conditions arising from switching items in a batch approach
85
+ it 'set items array for single select selects each in turn. selected is the last item in array' do
86
+ gender.set ['M', 'F', '','F']
87
+ gender.selected.should == 'F'
88
+ end
89
+
90
+ it 'set item after multiple items were set returns all values selected for multiselect' do
91
+ pets.set ['cat','zook']
92
+ pets.set 'zebra'
93
+ pets.selected.should == ['cat', 'zook', 'zebra']
94
+ pets.selected_values.should == ['o1', 'o3', 'o4']
95
+ end
96
+
97
+ it 'set using position for multiselect' do
98
+ pets.set 3
99
+ pets.selected.should == 'zook'
100
+ pets.set_value 2 # translate to second text item
101
+ pets.selected.should == ['dog', 'zook']
102
+ pets.set [1,4,5]
103
+ pets.selected.should == ['cat','dog','zook', 'zebra','wumpa']
104
+ end
105
+
106
+ it 'set using position and item for multiselect' do
107
+ pets.set [1,'zebra', 'zook', 2, 4] #select already selected
108
+ pets.selected.should == ['cat','dog','zook','zebra']
109
+ end
110
+
111
+ it 'set using position for single select' do
112
+ gender.set 2
113
+ gender.selected.should == 'M'
114
+ gender.selected_value.should == 'm'
115
+ end
116
+
117
+ it 'clear removes selected attribute for all selected items in multiselect' do
118
+ pets.selected.should == nil
119
+ pets.set ['zook', 'cat']
120
+ pets.selected.should == ['cat','zook']
121
+ pets.clear
122
+ pets.selected.should == nil
123
+ end
124
+
125
+ it 'clear removes selected attribute for item in single select list' do
126
+ gender.selected.should == ''
127
+ gender.set 'F'
128
+ gender.selected.should == 'F'
129
+
130
+ # This fails on IE in single select list.
131
+ # The test passes in Firefox
132
+ # option item select = false does not set false like it does in multiselect
133
+ gender.clear
134
+ gender.selected.should_not == 'F'
135
+ end
136
+
137
+ it 'set_value selects value atribute text' do
138
+ gender.set_value 'm'
139
+ gender.selected.should == 'M'
140
+ gender.selected_value.should == 'm' #when you know there is only one item expected
141
+ gender.selected_values.should == ['m'] # array of items
142
+ end
143
+
144
+ it 'set_value for multiselect returns selected and selected_values' do
145
+ pets.set_value 'o2'
146
+ pets.set_value 'o4'
147
+ pets.selected.should == ['dog', 'zebra']
148
+ pets.selected_value.should == ['o2', 'o4'] # if array then bypass filter
149
+ pets.selected_values.should == ['o2', 'o4'] # plural
150
+ end
151
+ end
@@ -1,9 +1,11 @@
1
- require 'stringio'
2
- require 'test/spec'
3
1
  require File.dirname(__FILE__) + '/../lib/watirloo'
4
- #Watirloo::BrowserHerd.target = :firefox
2
+ require 'stringio'
3
+ require 'spec/autorun'
4
+
5
5
  def testfile(filename)
6
6
  path = File.expand_path(File.dirname(__FILE__))
7
7
  uri = "file://#{path}/html/" + filename
8
8
  return uri
9
- end
9
+ end
10
+
11
+
@@ -0,0 +1,5 @@
1
+ require File.dirname(__FILE__) + '/../lib/watirloo'
2
+
3
+ Watir::Browser.default='firefox'
4
+ Watir::Browser.new
5
+ Watirloo::Browsers.target = :firefox
@@ -0,0 +1,13 @@
1
+ # precondition for IE tests.
2
+ # configure the Spec::Runner
3
+ # to clear all browsers from desktop
4
+ # and clear locker then sleep to make sure all browser proceses finished.
5
+ # This file is used by rakefile global all test runner
6
+ require 'spec'
7
+ Spec::Runner.configure do |config|
8
+ config.before(:all) do
9
+ Watirloo::Desktop.clear
10
+ Watirloo::Locker.clear
11
+ end
12
+ end
13
+
@@ -0,0 +1,566 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
5
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
6
+ <head>
7
+ <title>RSpec results</title>
8
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
9
+ <meta http-equiv="Expires" content="-1" />
10
+ <meta http-equiv="Pragma" content="no-cache" />
11
+ <style type="text/css">
12
+ body {
13
+ margin: 0;
14
+ padding: 0;
15
+ background: #fff;
16
+ font-size: 80%;
17
+ }
18
+ </style>
19
+ <script type="text/javascript">
20
+ // <![CDATA[
21
+ function moveProgressBar(percentDone) {
22
+ document.getElementById("rspec-header").style.width = percentDone +"%";
23
+ }
24
+ function makeRed(element_id) {
25
+ document.getElementById(element_id).style.background = '#C40D0D';
26
+ document.getElementById(element_id).style.color = '#FFFFFF';
27
+ }
28
+
29
+ function makeYellow(element_id) {
30
+ if (element_id == "rspec-header" && document.getElementById(element_id).style.background != '#C40D0D')
31
+ {
32
+ document.getElementById(element_id).style.background = '#FAF834';
33
+ document.getElementById(element_id).style.color = '#000000';
34
+ }
35
+ else
36
+ {
37
+ document.getElementById(element_id).style.background = '#FAF834';
38
+ document.getElementById(element_id).style.color = '#000000';
39
+ }
40
+ }
41
+
42
+ // ]]>
43
+ </script>
44
+ <style type="text/css">
45
+ #rspec-header {
46
+ background: #65C400; color: #fff; height: 4em;
47
+ }
48
+
49
+ .rspec-report h1 {
50
+ margin: 0px 10px 0px 10px;
51
+ padding: 10px;
52
+ font-family: "Lucida Grande", Helvetica, sans-serif;
53
+ font-size: 1.8em;
54
+ position: absolute;
55
+ }
56
+
57
+ #summary {
58
+ margin: 0; padding: 5px 10px;
59
+ font-family: "Lucida Grande", Helvetica, sans-serif;
60
+ text-align: right;
61
+ top: 0px;
62
+ right: 0px;
63
+ float:right;
64
+ }
65
+
66
+ #summary p {
67
+ margin: 0 0 0 2px;
68
+ }
69
+
70
+ #summary #totals {
71
+ font-size: 1.2em;
72
+ }
73
+
74
+ .example_group {
75
+ margin: 0 10px 5px;
76
+ background: #fff;
77
+ }
78
+
79
+ dl {
80
+ margin: 0; padding: 0 0 5px;
81
+ font: normal 11px "Lucida Grande", Helvetica, sans-serif;
82
+ }
83
+
84
+ dt {
85
+ padding: 3px;
86
+ background: #65C400;
87
+ color: #fff;
88
+ font-weight: bold;
89
+ }
90
+
91
+ dd {
92
+ margin: 5px 0 5px 5px;
93
+ padding: 3px 3px 3px 18px;
94
+ }
95
+
96
+ dd.spec.passed {
97
+ border-left: 5px solid #65C400;
98
+ border-bottom: 1px solid #65C400;
99
+ background: #DBFFB4; color: #3D7700;
100
+ }
101
+
102
+ dd.spec.failed {
103
+ border-left: 5px solid #C20000;
104
+ border-bottom: 1px solid #C20000;
105
+ color: #C20000; background: #FFFBD3;
106
+ }
107
+
108
+ dd.spec.not_implemented {
109
+ border-left: 5px solid #FAF834;
110
+ border-bottom: 1px solid #FAF834;
111
+ background: #FCFB98; color: #131313;
112
+ }
113
+
114
+ dd.spec.pending_fixed {
115
+ border-left: 5px solid #0000C2;
116
+ border-bottom: 1px solid #0000C2;
117
+ color: #0000C2; background: #D3FBFF;
118
+ }
119
+
120
+ .backtrace {
121
+ color: #000;
122
+ font-size: 12px;
123
+ }
124
+
125
+ a {
126
+ color: #BE5C00;
127
+ }
128
+
129
+ /* Ruby code, style similar to vibrant ink */
130
+ .ruby {
131
+ font-size: 12px;
132
+ font-family: monospace;
133
+ color: white;
134
+ background-color: black;
135
+ padding: 0.1em 0 0.2em 0;
136
+ }
137
+
138
+ .ruby .keyword { color: #FF6600; }
139
+ .ruby .constant { color: #339999; }
140
+ .ruby .attribute { color: white; }
141
+ .ruby .global { color: white; }
142
+ .ruby .module { color: white; }
143
+ .ruby .class { color: white; }
144
+ .ruby .string { color: #66FF00; }
145
+ .ruby .ident { color: white; }
146
+ .ruby .method { color: #FFCC00; }
147
+ .ruby .number { color: white; }
148
+ .ruby .char { color: white; }
149
+ .ruby .comment { color: #9933CC; }
150
+ .ruby .symbol { color: white; }
151
+ .ruby .regex { color: #44B4CC; }
152
+ .ruby .punct { color: white; }
153
+ .ruby .escape { color: white; }
154
+ .ruby .interp { color: white; }
155
+ .ruby .expr { color: white; }
156
+
157
+ .ruby .offending { background-color: gray; }
158
+ .ruby .linenum {
159
+ width: 75px;
160
+ padding: 0.1em 1em 0.2em 0;
161
+ color: #000000;
162
+ background-color: #FFFBD3;
163
+ }
164
+
165
+ </style>
166
+ </head>
167
+ <body>
168
+ <div class="rspec-report">
169
+
170
+ <div id="rspec-header">
171
+ <div id="label">
172
+ <h1>RSpec Code Examples</h1>
173
+ </div>
174
+
175
+ <div id="summary">
176
+ <p id="totals">&nbsp;</p>
177
+ <p id="duration">&nbsp;</p>
178
+ </div>
179
+ </div>
180
+
181
+ <div class="results">
182
+ <div class="example_group">
183
+ <dl>
184
+ <dt id="example_group_1">Page class with face definitions</dt>
185
+ <script type="text/javascript">moveProgressBar('0.8');</script>
186
+ <dd class="spec passed"><span class="passed_spec_name">has face method as singleton</span></dd>
187
+ <script type="text/javascript">moveProgressBar('1.7');</script>
188
+ <dd class="spec passed"><span class="passed_spec_name">face class method defines method</span></dd>
189
+ <script type="text/javascript">moveProgressBar('2.6');</script>
190
+ <dd class="spec passed"><span class="passed_spec_name">face accepts args used by method body</span></dd>
191
+ </dl>
192
+ </div>
193
+ <div class="example_group">
194
+ <dl>
195
+ <dt id="example_group_2">Page faces included in rspec</dt>
196
+ <script type="text/javascript">moveProgressBar('3.4');</script>
197
+ <dd class="spec passed"><span class="passed_spec_name">face defines a watir element access</span></dd>
198
+ <script type="text/javascript">moveProgressBar('4.3');</script>
199
+ <dd class="spec passed"><span class="passed_spec_name">faces with arguments</span></dd>
200
+ </dl>
201
+ </div>
202
+ <div class="example_group">
203
+ <dl>
204
+ <dt id="example_group_3">text field wrapped in label tag without for attribute defined</dt>
205
+ <script type="text/javascript">moveProgressBar('5.2');</script>
206
+ <dd class="spec passed"><span class="passed_spec_name">parent of text_field should be Watir Element</span></dd>
207
+ <script type="text/javascript">moveProgressBar('6.0');</script>
208
+ <dd class="spec passed"><span class="passed_spec_name">parent tagName should be a LABEL</span></dd>
209
+ <script type="text/javascript">moveProgressBar('6.9');</script>
210
+ <dd class="spec passed"><span class="passed_spec_name">parent text returns text of label</span></dd>
211
+ </dl>
212
+ </div>
213
+ <div class="example_group">
214
+ <dl>
215
+ <dt id="example_group_4">label for text field not wrapped</dt>
216
+ <script type="text/javascript">moveProgressBar('7.8');</script>
217
+ <dd class="spec passed"><span class="passed_spec_name">text value of label</span></dd>
218
+ </dl>
219
+ </div>
220
+ <div class="example_group">
221
+ <dl>
222
+ <dt id="example_group_5">SelectList selections</dt>
223
+ <script type="text/javascript">moveProgressBar('8.6');</script>
224
+ <dd class="spec passed"><span class="passed_spec_name">selected returns preselected item in single select</span></dd>
225
+ <script type="text/javascript">moveProgressBar('9.5');</script>
226
+ <dd class="spec passed"><span class="passed_spec_name">selected returns preselected value in single select</span></dd>
227
+ <script type="text/javascript">moveProgressBar('10.4');</script>
228
+ <dd class="spec passed"><span class="passed_spec_name">selected returns nil for none selected items in multi select</span></dd>
229
+ <script type="text/javascript">moveProgressBar('11.3');</script>
230
+ <dd class="spec passed"><span class="passed_spec_name">selected returns nil for none selected values in multi select</span></dd>
231
+ <script type="text/javascript">moveProgressBar('12.1');</script>
232
+ <dd class="spec passed"><span class="passed_spec_name">set item text and find selected item and text for multiselect</span></dd>
233
+ <script type="text/javascript">moveProgressBar('13.0');</script>
234
+ <dd class="spec passed"><span class="passed_spec_name">set value and find selected item and value for multiselect</span></dd>
235
+ <script type="text/javascript">moveProgressBar('13.9');</script>
236
+ <dd class="spec passed"><span class="passed_spec_name">set and query option by text for single select</span></dd>
237
+ <script type="text/javascript">moveProgressBar('14.7');</script>
238
+ <dd class="spec passed"><span class="passed_spec_name">set and query option by value for single select</span></dd>
239
+ <script type="text/javascript">moveProgressBar('15.6');</script>
240
+ <dd class="spec passed"><span class="passed_spec_name">set by text multple items for multiselect selects each item</span></dd>
241
+ <script type="text/javascript">moveProgressBar('16.5');</script>
242
+ <dd class="spec passed"><span class="passed_spec_name">set by value multple items for multiselect selects each item</span></dd>
243
+ <script type="text/javascript">moveProgressBar('17.3');</script>
244
+ <dd class="spec passed"><span class="passed_spec_name">set items array for single select selects each in turn. selected is the last item in array</span></dd>
245
+ <script type="text/javascript">moveProgressBar('18.2');</script>
246
+ <dd class="spec passed"><span class="passed_spec_name">set item after multiple items were set returns all values selected for multiselect</span></dd>
247
+ <script type="text/javascript">moveProgressBar('19.1');</script>
248
+ <dd class="spec passed"><span class="passed_spec_name">set using position for multiselect</span></dd>
249
+ <script type="text/javascript">moveProgressBar('20.0');</script>
250
+ <dd class="spec passed"><span class="passed_spec_name">set using position and item for multiselect</span></dd>
251
+ <script type="text/javascript">moveProgressBar('20.8');</script>
252
+ <dd class="spec passed"><span class="passed_spec_name">set using position for single select</span></dd>
253
+ <script type="text/javascript">moveProgressBar('21.7');</script>
254
+ <dd class="spec passed"><span class="passed_spec_name">clear removes selected attribute for all selected items in multiselect</span></dd>
255
+ <script type="text/javascript">makeRed('rspec-header');</script>
256
+ <script type="text/javascript">makeRed('example_group_5');</script>
257
+ <script type="text/javascript">moveProgressBar('22.6');</script>
258
+ <dd class="spec failed">
259
+ <span class="failed_spec_name">clear removes selected attribute for item in single select list</span>
260
+ <div class="failure" id="failure_1">
261
+ <div class="message"><pre>expected not: == &quot;F&quot;,
262
+ got: &quot;F&quot;</pre></div>
263
+ <div class="backtrace"><pre>./spec/select_lists_spec.rb:134:</pre></div>
264
+ <pre class="ruby"><code><span class="linenum">132</span> <span class="comment"># option item select = false does not set false like it does in multiselect</span>
265
+ <span class="linenum">133</span> <span class="ident">gender</span><span class="punct">.</span><span class="ident">clear</span>
266
+ <span class="offending"><span class="linenum">134</span> <span class="ident">gender</span><span class="punct">.</span><span class="ident">selected</span><span class="punct">.</span><span class="ident">should_not</span> <span class="punct">==</span> <span class="punct">'</span><span class="string">F</span><span class="punct">'</span></span>
267
+ <span class="linenum">135</span> <span class="keyword">end</span>
268
+ <span class="linenum">136</span> </code></pre>
269
+ </div>
270
+ </dd>
271
+ <script type="text/javascript">moveProgressBar('23.4');</script>
272
+ <dd class="spec passed"><span class="passed_spec_name">set_value selects value atribute text</span></dd>
273
+ <script type="text/javascript">moveProgressBar('24.3');</script>
274
+ <dd class="spec passed"><span class="passed_spec_name">set_value for multiselect returns selected and selected_values</span></dd>
275
+ </dl>
276
+ </div>
277
+ <div class="example_group">
278
+ <dl>
279
+ <dt id="example_group_6">Watirloo browser when no browsers on desktop nor in locker</dt>
280
+ <script type="text/javascript">moveProgressBar('25.2');</script>
281
+ <dd class="spec passed"><span class="passed_spec_name">should start a default new browser and load a testfile</span></dd>
282
+ <script type="text/javascript">moveProgressBar('26.0');</script>
283
+ <dd class="spec passed"><span class="passed_spec_name">should attach to a default browser with loaded testfile and return its title</span></dd>
284
+ <script type="text/javascript">moveProgressBar('26.9');</script>
285
+ <dd class="spec passed"><span class="passed_spec_name">should start second browser with a named keyword</span></dd>
286
+ <script type="text/javascript">moveProgressBar('27.8');</script>
287
+ <dd class="spec passed"><span class="passed_spec_name">should attach to second browser with keyword and navigate to a testfile</span></dd>
288
+ <script type="text/javascript">moveProgressBar('28.6');</script>
289
+ <dd class="spec passed"><span class="passed_spec_name">should attach to two distinct browsers by key values by kewords used to start them</span></dd>
290
+ </dl>
291
+ </div>
292
+ <div class="example_group">
293
+ <dl>
294
+ <dt id="example_group_7">Watirloo multiple browsers and threads</dt>
295
+ <script type="text/javascript">moveProgressBar('29.5');</script>
296
+ <dd class="spec passed"><span class="passed_spec_name">open 5 new browsers in threads and add them to locker</span></dd>
297
+ <script type="text/javascript">moveProgressBar('30.4');</script>
298
+ <dd class="spec passed"><span class="passed_spec_name">use locker to reattach to 5 browsers and load 5 diff pages at once</span></dd>
299
+ <script type="text/javascript">moveProgressBar('31.3');</script>
300
+ <dd class="spec passed"><span class="passed_spec_name">reattach and close all 5 browsers</span></dd>
301
+ </dl>
302
+ </div>
303
+ <div class="example_group">
304
+ <dl>
305
+ <dt id="example_group_8">Locker</dt>
306
+ <script type="text/javascript">moveProgressBar('32.1');</script>
307
+ <dd class="spec passed"><span class="passed_spec_name">locker file does not exist. create it. mapping should return empty hash</span></dd>
308
+ <script type="text/javascript">moveProgressBar('33.0');</script>
309
+ <dd class="spec passed"><span class="passed_spec_name">clear should create locker file and save empty mapping</span></dd>
310
+ <script type="text/javascript">moveProgressBar('33.9');</script>
311
+ <dd class="spec passed"><span class="passed_spec_name">add stores ie.hwnd with friendly name and adds it to mapping</span></dd>
312
+ <script type="text/javascript">moveProgressBar('34.7');</script>
313
+ <dd class="spec passed"><span class="passed_spec_name">mapping holds what was added</span></dd>
314
+ <script type="text/javascript">moveProgressBar('35.6');</script>
315
+ <dd class="spec passed"><span class="passed_spec_name">remove deletes a key value record </span></dd>
316
+ <script type="text/javascript">moveProgressBar('36.5');</script>
317
+ <dd class="spec passed"><span class="passed_spec_name">browser reattaches to named browser based on windows handle</span></dd>
318
+ <script type="text/javascript">moveProgressBar('37.3');</script>
319
+ <dd class="spec passed"><span class="passed_spec_name">browser attach to nonexisting windows behaves like IE.attach, it raises error</span></dd>
320
+ </dl>
321
+ </div>
322
+ <div class="example_group">
323
+ <dl>
324
+ <dt id="example_group_9">browser checkbox_group accesses a group of checkboxes sharing the same name on a page</dt>
325
+ <script type="text/javascript">moveProgressBar('38.2');</script>
326
+ <dd class="spec passed"><span class="passed_spec_name">browser responds to checkbox_group</span></dd>
327
+ <script type="text/javascript">moveProgressBar('39.1');</script>
328
+ <dd class="spec passed"><span class="passed_spec_name">access by name as default returns CheckboxGroup</span></dd>
329
+ <script type="text/javascript">moveProgressBar('40.0');</script>
330
+ <dd class="spec passed"><span class="passed_spec_name">size retuns checkboxes as items count in a group</span></dd>
331
+ <script type="text/javascript">moveProgressBar('40.8');</script>
332
+ <dd class="spec passed"><span class="passed_spec_name">values returns array of value attributes for each checkbox in a group</span></dd>
333
+ </dl>
334
+ </div>
335
+ <div class="example_group">
336
+ <dl>
337
+ <dt id="example_group_10">checkbox_group values when no checkbox is checked in a group</dt>
338
+ <script type="text/javascript">moveProgressBar('41.7');</script>
339
+ <dd class="spec passed"><span class="passed_spec_name">selected should return nil</span></dd>
340
+ <script type="text/javascript">moveProgressBar('42.6');</script>
341
+ <dd class="spec passed"><span class="passed_spec_name">selected_value should return nil</span></dd>
342
+ <script type="text/javascript">moveProgressBar('43.4');</script>
343
+ <dd class="spec passed"><span class="passed_spec_name">selected_values should return empty array</span></dd>
344
+ <script type="text/javascript">moveProgressBar('44.3');</script>
345
+ <dd class="spec passed"><span class="passed_spec_name">set? should return false when no checkbox is checked in a group</span></dd>
346
+ </dl>
347
+ </div>
348
+ <div class="example_group">
349
+ <dl>
350
+ <dt id="example_group_11">checkbox_group values when set string selecs one item only</dt>
351
+ <script type="text/javascript">moveProgressBar('45.2');</script>
352
+ <dd class="spec passed"><span class="passed_spec_name">selected should return the string used to select it</span></dd>
353
+ <script type="text/javascript">moveProgressBar('46.0');</script>
354
+ <dd class="spec passed"><span class="passed_spec_name">selected_value should return the string when one item is selected</span></dd>
355
+ <script type="text/javascript">moveProgressBar('46.9');</script>
356
+ <dd class="spec passed"><span class="passed_spec_name">selected values returns array with one element</span></dd>
357
+ <script type="text/javascript">moveProgressBar('47.8');</script>
358
+ <dd class="spec passed"><span class="passed_spec_name">set? should return truee when 1 checkbox is checked in a group</span></dd>
359
+ </dl>
360
+ </div>
361
+ <div class="example_group">
362
+ <dl>
363
+ <dt id="example_group_12">checkbox_group set array of strings selects multiple values in a group</dt>
364
+ <script type="text/javascript">moveProgressBar('48.6');</script>
365
+ <dd class="spec passed"><span class="passed_spec_name">selected returns array of strings when multiple values are selected</span></dd>
366
+ <script type="text/javascript">moveProgressBar('49.5');</script>
367
+ <dd class="spec passed"><span class="passed_spec_name">selected_value returns the same array of strings by position in a group</span></dd>
368
+ <script type="text/javascript">moveProgressBar('50.4');</script>
369
+ <dd class="spec passed"><span class="passed_spec_name">selected_values returns the same array of strings by position in a group</span></dd>
370
+ <script type="text/javascript">moveProgressBar('51.3');</script>
371
+ <dd class="spec passed"><span class="passed_spec_name">set? should return truee when more than 1 checkbox is checked in a group</span></dd>
372
+ </dl>
373
+ </div>
374
+ <div class="example_group">
375
+ <dl>
376
+ <dt id="example_group_13">checkbox_group set by numberical position</dt>
377
+ <script type="text/javascript">moveProgressBar('52.1');</script>
378
+ <dd class="spec passed"><span class="passed_spec_name">set Fixnum checks checkbox by position in a group. Position is 1 based.</span></dd>
379
+ <script type="text/javascript">moveProgressBar('53.0');</script>
380
+ <dd class="spec passed"><span class="passed_spec_name">set array of Fixnums checks each checkbox by position</span></dd>
381
+ </dl>
382
+ </div>
383
+ <div class="example_group">
384
+ <dl>
385
+ <dt id="example_group_14">Watirloo Desktop</dt>
386
+ <script type="text/javascript">moveProgressBar('53.9');</script>
387
+ <dd class="spec passed"><span class="passed_spec_name">clear closes all browsers on the desktop and browsers should be empty</span></dd>
388
+ <script type="text/javascript">moveProgressBar('54.7');</script>
389
+ <dd class="spec passed"><span class="passed_spec_name">adding first browser should report 1 addition and no deletions</span></dd>
390
+ <script type="text/javascript">moveProgressBar('55.6');</script>
391
+ <dd class="spec passed"><span class="passed_spec_name">while one browser on the desktop the additions and deletions should be false</span></dd>
392
+ <script type="text/javascript">moveProgressBar('56.5');</script>
393
+ <dd class="spec passed"><span class="passed_spec_name">adding second browser should report one addition and no deletions</span></dd>
394
+ <script type="text/javascript">moveProgressBar('57.3');</script>
395
+ <dd class="spec passed"><span class="passed_spec_name">close one should report 1 deletion and no additions, attempt to attach to deleted cause exception</span></dd>
396
+ <script type="text/javascript">moveProgressBar('58.2');</script>
397
+ <dd class="spec passed"><span class="passed_spec_name">close one and start new one should report one addition and one deletion</span></dd>
398
+ </dl>
399
+ </div>
400
+ <div class="example_group">
401
+ <dl>
402
+ <dt id="example_group_15">Class client mixing interfaces from other modules</dt>
403
+ <script type="text/javascript">moveProgressBar('59.1');</script>
404
+ <dd class="spec passed"><span class="passed_spec_name">spray and scrape example</span></dd>
405
+ </dl>
406
+ </div>
407
+ <div class="example_group">
408
+ <dl>
409
+ <dt id="example_group_16">add faces text fields page objects</dt>
410
+ <script type="text/javascript">moveProgressBar('60.0');</script>
411
+ <dd class="spec passed"><span class="passed_spec_name">face returns a watir element text_field</span></dd>
412
+ <script type="text/javascript">moveProgressBar('60.8');</script>
413
+ <dd class="spec passed"><span class="passed_spec_name">face name method and value returns current text</span></dd>
414
+ <script type="text/javascript">moveProgressBar('61.7');</script>
415
+ <dd class="spec passed"><span class="passed_spec_name">face name method and set enters value into field</span></dd>
416
+ <script type="text/javascript">moveProgressBar('62.6');</script>
417
+ <dd class="spec passed"><span class="passed_spec_name">spray method matches keys as facenames and sets values to fields</span></dd>
418
+ <script type="text/javascript">moveProgressBar('63.4');</script>
419
+ <dd class="spec passed"><span class="passed_spec_name">scrape keys updates keys with values and returns datamap</span></dd>
420
+ </dl>
421
+ </div>
422
+ <div class="example_group">
423
+ <dl>
424
+ <dt id="example_group_17">checkbox_groups access for browser</dt>
425
+ <script type="text/javascript">moveProgressBar('64.3');</script>
426
+ <dd class="spec passed"><span class="passed_spec_name">browser responds to checkbox_group</span></dd>
427
+ <script type="text/javascript">moveProgressBar('65.2');</script>
428
+ <dd class="spec passed"><span class="passed_spec_name">returns group object and its values from the page</span></dd>
429
+ <script type="text/javascript">moveProgressBar('66.0');</script>
430
+ <dd class="spec passed"><span class="passed_spec_name">lenght returns integer count of groups</span></dd>
431
+ <script type="text/javascript">moveProgressBar('66.9');</script>
432
+ <dd class="spec passed"><span class="passed_spec_name">each iterator returns CheckboxGroup</span></dd>
433
+ <script type="text/javascript">moveProgressBar('67.8');</script>
434
+ <dd class="spec passed"><span class="passed_spec_name">each accesses the group and returns name</span></dd>
435
+ <script type="text/javascript">moveProgressBar('68.6');</script>
436
+ <dd class="spec passed"><span class="passed_spec_name">bracket access[] returns 1-based indexed group</span></dd>
437
+ <script type="text/javascript">moveProgressBar('69.5');</script>
438
+ <dd class="spec passed"><span class="passed_spec_name">if checkbox group does not exists it returns size 0 or name nil (or should it blow up? or respond to exists? method</span></dd>
439
+ <script type="text/javascript">moveProgressBar('70.4');</script>
440
+ <dd class="spec passed"><span class="passed_spec_name">return checkbox groups contained by the form element</span></dd>
441
+ </dl>
442
+ </div>
443
+ <div class="example_group">
444
+ <dl>
445
+ <dt id="example_group_18">Person Page interfaces defined by def wrappers and class definitions</dt>
446
+ <script type="text/javascript">moveProgressBar('71.3');</script>
447
+ <dd class="spec passed"><span class="passed_spec_name">calling face when there is wrapper method</span></dd>
448
+ <script type="text/javascript">moveProgressBar('72.1');</script>
449
+ <dd class="spec passed"><span class="passed_spec_name">calling interface when there is definition and no method</span></dd>
450
+ <script type="text/javascript">moveProgressBar('73.0');</script>
451
+ <dd class="spec passed"><span class="passed_spec_name">spray method by convetion has keys correspondig to interface names for watir elements</span></dd>
452
+ </dl>
453
+ </div>
454
+ <div class="example_group">
455
+ <dl>
456
+ <dt id="example_group_19">Mystery input element</dt>
457
+ <script type="text/javascript">moveProgressBar('73.9');</script>
458
+ <dd class="spec passed"><span class="passed_spec_name">the id is text_field</span></dd>
459
+ <script type="text/javascript">moveProgressBar('74.7');</script>
460
+ <dd class="spec passed"><span class="passed_spec_name">the label points to text_field</span></dd>
461
+ <script type="text/javascript">moveProgressBar('75.6');</script>
462
+ <dd class="spec passed"><span class="passed_spec_name">the id should return select_list</span></dd>
463
+ </dl>
464
+ </div>
465
+ <div class="example_group">
466
+ <dl>
467
+ <dt id="example_group_20">RadioGroup class access in watir browser</dt>
468
+ <script type="text/javascript">moveProgressBar('76.5');</script>
469
+ <dd class="spec passed"><span class="passed_spec_name">browser responds to radio_group</span></dd>
470
+ <script type="text/javascript">moveProgressBar('77.3');</script>
471
+ <dd class="spec passed"><span class="passed_spec_name">radio group needs :what value with implicit :how=name</span></dd>
472
+ </dl>
473
+ </div>
474
+ <div class="example_group">
475
+ <dl>
476
+ <dt id="example_group_21">RadioGroup class interface in watirloo</dt>
477
+ <script type="text/javascript">moveProgressBar('78.2');</script>
478
+ <dd class="spec passed"><span class="passed_spec_name">container radio_group method returns RadioGroup class</span></dd>
479
+ <script type="text/javascript">moveProgressBar('79.1');</script>
480
+ <dd class="spec passed"><span class="passed_spec_name">size or count returns how many radios in a group</span></dd>
481
+ <script type="text/javascript">moveProgressBar('80.0');</script>
482
+ <dd class="spec passed"><span class="passed_spec_name">values returns value attributes text items as an array</span></dd>
483
+ <script type="text/javascript">moveProgressBar('80.8');</script>
484
+ <dd class="spec passed"><span class="passed_spec_name">selected_value returns internal option value for selected radio item in a group</span></dd>
485
+ <script type="text/javascript">moveProgressBar('81.7');</script>
486
+ <dd class="spec passed"><span class="passed_spec_name">set selects radio by position in a group</span></dd>
487
+ <script type="text/javascript">moveProgressBar('82.6');</script>
488
+ <dd class="spec passed"><span class="passed_spec_name">set selects radio by value in a group. selected returns value</span></dd>
489
+ <script type="text/javascript">moveProgressBar('83.4');</script>
490
+ <dd class="spec passed"><span class="passed_spec_name">set position throws exception if number not within the range of group size</span></dd>
491
+ <script type="text/javascript">moveProgressBar('84.3');</script>
492
+ <dd class="spec passed"><span class="passed_spec_name">set value throws exception if value not found in options</span></dd>
493
+ <script type="text/javascript">moveProgressBar('85.2');</script>
494
+ <dd class="spec passed"><span class="passed_spec_name">set throws exception if sybmol is used. it should accept Fixnum or String element only</span></dd>
495
+ </dl>
496
+ </div>
497
+ <div class="example_group">
498
+ <dl>
499
+ <dt id="example_group_22">reflext :text_fields</dt>
500
+ <script type="text/javascript">moveProgressBar('86.0');</script>
501
+ <dd class="spec passed"><span class="passed_spec_name">text_fields.reflect each :text_field</span></dd>
502
+ </dl>
503
+ </div>
504
+ <div class="example_group">
505
+ <dl>
506
+ <dt id="example_group_23">reflect :radio_groups</dt>
507
+ <script type="text/javascript">moveProgressBar('86.9');</script>
508
+ <dd class="spec passed"><span class="passed_spec_name">reflects each radio group</span></dd>
509
+ </dl>
510
+ </div>
511
+ <div class="example_group">
512
+ <dl>
513
+ <dt id="example_group_24">reflect :checkbox_groups</dt>
514
+ <script type="text/javascript">moveProgressBar('87.8');</script>
515
+ <dd class="spec passed"><span class="passed_spec_name">reflects each checkbox_group</span></dd>
516
+ </dl>
517
+ </div>
518
+ <div class="example_group">
519
+ <dl>
520
+ <dt id="example_group_25">setting and getting values for individual checkboxes with value attributes in face definitions</dt>
521
+ <script type="text/javascript">moveProgressBar('88.6');</script>
522
+ <dd class="spec passed"><span class="passed_spec_name">semantic name accesses individual CheckBox</span></dd>
523
+ <script type="text/javascript">moveProgressBar('89.5');</script>
524
+ <dd class="spec passed"><span class="passed_spec_name">set individual checkbox does not set other checkboxes sharing the same name</span></dd>
525
+ </dl>
526
+ </div>
527
+ <div class="example_group">
528
+ <dl>
529
+ <dt id="example_group_26">SelectList options as visible items and values as hidden to the user attributes</dt>
530
+ <script type="text/javascript">moveProgressBar('90.4');</script>
531
+ <dd class="spec passed"><span class="passed_spec_name">values of options by facename method</span></dd>
532
+ <script type="text/javascript">moveProgressBar('91.3');</script>
533
+ <dd class="spec passed"><span class="passed_spec_name">options with no value attribute</span></dd>
534
+ <script type="text/javascript">moveProgressBar('92.1');</script>
535
+ <dd class="spec passed"><span class="passed_spec_name">items method returns visible contents as array of text items</span></dd>
536
+ <script type="text/javascript">moveProgressBar('93.0');</script>
537
+ <dd class="spec passed"><span class="passed_spec_name">items returns visible text items as array</span></dd>
538
+ </dl>
539
+ </div>
540
+ <div class="example_group">
541
+ <dl>
542
+ <dt id="example_group_27">RadioGroup class access in watir browser</dt>
543
+ <script type="text/javascript">moveProgressBar('93.9');</script>
544
+ <dd class="spec passed"><span class="passed_spec_name">browser responds to radio_group</span></dd>
545
+ <script type="text/javascript">moveProgressBar('94.7');</script>
546
+ <dd class="spec passed"><span class="passed_spec_name">returns RadioGroups class</span></dd>
547
+ <script type="text/javascript">moveProgressBar('95.6');</script>
548
+ <dd class="spec passed"><span class="passed_spec_name">lenght returns integer count of groups</span></dd>
549
+ <script type="text/javascript">moveProgressBar('96.5');</script>
550
+ <dd class="spec passed"><span class="passed_spec_name">each iterator returns RadioGroup</span></dd>
551
+ <script type="text/javascript">moveProgressBar('97.3');</script>
552
+ <dd class="spec passed"><span class="passed_spec_name">each accesses the group and returns name</span></dd>
553
+ <script type="text/javascript">moveProgressBar('98.2');</script>
554
+ <dd class="spec passed"><span class="passed_spec_name">bracket access[] returns 1-based indexed group</span></dd>
555
+ <script type="text/javascript">moveProgressBar('99.1');</script>
556
+ <dd class="spec passed"><span class="passed_spec_name">if radio group does not exists it returns size 0 or name nil (or should it blow up? or respond to exists? method</span></dd>
557
+ <script type="text/javascript">moveProgressBar('100.0');</script>
558
+ <dd class="spec passed"><span class="passed_spec_name">groups contained by a form element</span></dd>
559
+ </dl>
560
+ </div>
561
+ <script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>198.922 seconds</strong>";</script>
562
+ <script type="text/javascript">document.getElementById('totals').innerHTML = "115 examples, 1 failure";</script>
563
+ </div>
564
+ </div>
565
+ </body>
566
+ </html>