marekj-watirloo 0.0.3 → 0.0.5

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.
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>