operawatir 0.3-jruby

Sign up to get free protection for your applications and to get access to all the features.
Files changed (171) hide show
  1. data/.gitmodules +3 -0
  2. data/.yardopts +5 -0
  3. data/AUTHORS +7 -0
  4. data/Gemfile +9 -0
  5. data/LICENSE +30 -0
  6. data/README.md +158 -0
  7. data/Rakefile +59 -0
  8. data/VERSION +1 -0
  9. data/bin/desktopwatir +106 -0
  10. data/bin/operawatir +95 -0
  11. data/lib/operadriver/APACHE_2.0_LICENSE.txt +204 -0
  12. data/lib/operadriver/NEW_BSD_LICENSE.txt +36 -0
  13. data/lib/operadriver/commons-jxpath-1.3.jar +0 -0
  14. data/lib/operadriver/protobuf-java-2.3.0.jar +0 -0
  15. data/lib/operadriver/selenium-common.jar +0 -0
  16. data/lib/operadriver/webdriver-opera.jar +0 -0
  17. data/lib/operawatir.rb +46 -0
  18. data/lib/operawatir/browser.rb +181 -0
  19. data/lib/operawatir/collection.rb +133 -0
  20. data/lib/operawatir/compat.rb +25 -0
  21. data/lib/operawatir/compat/browser.rb +20 -0
  22. data/lib/operawatir/compat/collection.rb +99 -0
  23. data/lib/operawatir/compat/deprecation.rb +46 -0
  24. data/lib/operawatir/compat/element.rb +165 -0
  25. data/lib/operawatir/compat/element_finders.rb +159 -0
  26. data/lib/operawatir/compat/window.rb +27 -0
  27. data/lib/operawatir/element.rb +228 -0
  28. data/lib/operawatir/exceptions.rb +38 -0
  29. data/lib/operawatir/helper.rb +53 -0
  30. data/lib/operawatir/selector.rb +111 -0
  31. data/lib/operawatir/version.rb +15 -0
  32. data/lib/operawatir/window.rb +174 -0
  33. data/spec/fire_event/fire_event.rb +268 -0
  34. data/spec/fire_event/interactive/onBlur.html +45 -0
  35. data/spec/fire_event/interactive/onChange.html +47 -0
  36. data/spec/fire_event/interactive/onClick.html +45 -0
  37. data/spec/fire_event/interactive/onDblClick.html +45 -0
  38. data/spec/fire_event/interactive/onFocus.html +45 -0
  39. data/spec/fire_event/interactive/onMouseDown.html +45 -0
  40. data/spec/fire_event/interactive/onMouseMove.html +45 -0
  41. data/spec/fire_event/interactive/onMouseOut.html +45 -0
  42. data/spec/fire_event/interactive/onMouseOver.html +45 -0
  43. data/spec/fire_event/interactive/onMouseUp.html +45 -0
  44. data/spec/fire_event/interactive/onScroll.html +14 -0
  45. data/spec/legacy_watirspec/area_spec.rb +106 -0
  46. data/spec/legacy_watirspec/areas_spec.rb +38 -0
  47. data/spec/legacy_watirspec/browser_spec.rb +297 -0
  48. data/spec/legacy_watirspec/button_spec.rb +260 -0
  49. data/spec/legacy_watirspec/buttons_spec.rb +54 -0
  50. data/spec/legacy_watirspec/checkbox_spec.rb +280 -0
  51. data/spec/legacy_watirspec/checkboxes_spec.rb +38 -0
  52. data/spec/legacy_watirspec/collections_spec.rb +18 -0
  53. data/spec/legacy_watirspec/dd_spec.rb +140 -0
  54. data/spec/legacy_watirspec/dds_spec.rb +38 -0
  55. data/spec/legacy_watirspec/del_spec.rb +181 -0
  56. data/spec/legacy_watirspec/dels_spec.rb +62 -0
  57. data/spec/legacy_watirspec/div_spec.rb +244 -0
  58. data/spec/legacy_watirspec/divs_spec.rb +38 -0
  59. data/spec/legacy_watirspec/dl_spec.rb +140 -0
  60. data/spec/legacy_watirspec/dls_spec.rb +38 -0
  61. data/spec/legacy_watirspec/dt_spec.rb +140 -0
  62. data/spec/legacy_watirspec/dts_spec.rb +38 -0
  63. data/spec/legacy_watirspec/element_spec.rb +86 -0
  64. data/spec/legacy_watirspec/em_spec.rb +114 -0
  65. data/spec/legacy_watirspec/ems_spec.rb +38 -0
  66. data/spec/legacy_watirspec/filefield_spec.rb +127 -0
  67. data/spec/legacy_watirspec/filefields_spec.rb +38 -0
  68. data/spec/legacy_watirspec/fixtures/2000_spans.html +2009 -0
  69. data/spec/legacy_watirspec/fixtures/bug_duplicate_attributes.html +14 -0
  70. data/spec/legacy_watirspec/fixtures/bug_javascript_001.html +11 -0
  71. data/spec/legacy_watirspec/fixtures/buttons_with_duplicate_ids.html +18 -0
  72. data/spec/legacy_watirspec/fixtures/collections.html +15 -0
  73. data/spec/legacy_watirspec/fixtures/definition_lists.html +48 -0
  74. data/spec/legacy_watirspec/fixtures/euc-jp_text.html +17 -0
  75. data/spec/legacy_watirspec/fixtures/forms_with_input_elements.html +126 -0
  76. data/spec/legacy_watirspec/fixtures/frame_1.html +18 -0
  77. data/spec/legacy_watirspec/fixtures/frame_2.html +16 -0
  78. data/spec/legacy_watirspec/fixtures/frames.html +11 -0
  79. data/spec/legacy_watirspec/fixtures/iframes.html +12 -0
  80. data/spec/legacy_watirspec/fixtures/images.html +27 -0
  81. data/spec/legacy_watirspec/fixtures/images/1.gif +0 -0
  82. data/spec/legacy_watirspec/fixtures/images/2.gif +0 -0
  83. data/spec/legacy_watirspec/fixtures/images/3.gif +0 -0
  84. data/spec/legacy_watirspec/fixtures/images/button.jpg +0 -0
  85. data/spec/legacy_watirspec/fixtures/images/circle.jpg +0 -0
  86. data/spec/legacy_watirspec/fixtures/images/map.gif +0 -0
  87. data/spec/legacy_watirspec/fixtures/images/map2.gif +0 -0
  88. data/spec/legacy_watirspec/fixtures/images/minus.gif +0 -0
  89. data/spec/legacy_watirspec/fixtures/images/originaltriangle.jpg +0 -0
  90. data/spec/legacy_watirspec/fixtures/images/plus.gif +0 -0
  91. data/spec/legacy_watirspec/fixtures/images/square.jpg +0 -0
  92. data/spec/legacy_watirspec/fixtures/images/triangle.jpg +0 -0
  93. data/spec/legacy_watirspec/fixtures/iso-2022-jp_text.html +17 -0
  94. data/spec/legacy_watirspec/fixtures/javascript/helpers.js +16 -0
  95. data/spec/legacy_watirspec/fixtures/jquery.html +28 -0
  96. data/spec/legacy_watirspec/fixtures/latin1_text.html +17 -0
  97. data/spec/legacy_watirspec/fixtures/multiple_ids.html +14 -0
  98. data/spec/legacy_watirspec/fixtures/non_control_elements.html +135 -0
  99. data/spec/legacy_watirspec/fixtures/parser_bug_001.html +12 -0
  100. data/spec/legacy_watirspec/fixtures/prevent_form_submit.html +20 -0
  101. data/spec/legacy_watirspec/fixtures/right_click.html +11 -0
  102. data/spec/legacy_watirspec/fixtures/shift_jis_text.html +17 -0
  103. data/spec/legacy_watirspec/fixtures/tables.html +121 -0
  104. data/spec/legacy_watirspec/fixtures/timeout.html +16 -0
  105. data/spec/legacy_watirspec/fixtures/timeout_window_location.html +19 -0
  106. data/spec/legacy_watirspec/fixtures/tiny_mce.html +27 -0
  107. data/spec/legacy_watirspec/fixtures/utf8_text.html +15 -0
  108. data/spec/legacy_watirspec/fixtures/watirspec.css +0 -0
  109. data/spec/legacy_watirspec/form_spec.rb +73 -0
  110. data/spec/legacy_watirspec/forms_spec.rb +39 -0
  111. data/spec/legacy_watirspec/frame_spec.rb +161 -0
  112. data/spec/legacy_watirspec/frames_spec.rb +75 -0
  113. data/spec/legacy_watirspec/guards.rb +38 -0
  114. data/spec/legacy_watirspec/hidden_spec.rb +120 -0
  115. data/spec/legacy_watirspec/hiddens_spec.rb +38 -0
  116. data/spec/legacy_watirspec/hn_spec.rb +101 -0
  117. data/spec/legacy_watirspec/hns_spec.rb +39 -0
  118. data/spec/legacy_watirspec/image_spec.rb +237 -0
  119. data/spec/legacy_watirspec/images_spec.rb +38 -0
  120. data/spec/legacy_watirspec/ins_spec.rb +181 -0
  121. data/spec/legacy_watirspec/inses_spec.rb +62 -0
  122. data/spec/legacy_watirspec/label_spec.rb +85 -0
  123. data/spec/legacy_watirspec/labels_spec.rb +38 -0
  124. data/spec/legacy_watirspec/li_spec.rb +135 -0
  125. data/spec/legacy_watirspec/link_spec.rb +194 -0
  126. data/spec/legacy_watirspec/links_spec.rb +39 -0
  127. data/spec/legacy_watirspec/lis_spec.rb +38 -0
  128. data/spec/legacy_watirspec/map_spec.rb +100 -0
  129. data/spec/legacy_watirspec/maps_spec.rb +38 -0
  130. data/spec/legacy_watirspec/meta_spec.rb +26 -0
  131. data/spec/legacy_watirspec/metas_spec.rb +36 -0
  132. data/spec/legacy_watirspec/ol_spec.rb +86 -0
  133. data/spec/legacy_watirspec/ols_spec.rb +38 -0
  134. data/spec/legacy_watirspec/option_spec.rb +187 -0
  135. data/spec/legacy_watirspec/p_spec.rb +167 -0
  136. data/spec/legacy_watirspec/pre_spec.rb +133 -0
  137. data/spec/legacy_watirspec/pres_spec.rb +38 -0
  138. data/spec/legacy_watirspec/ps_spec.rb +38 -0
  139. data/spec/legacy_watirspec/radio_spec.rb +286 -0
  140. data/spec/legacy_watirspec/radios_spec.rb +35 -0
  141. data/spec/legacy_watirspec/select_list_spec.rb +326 -0
  142. data/spec/legacy_watirspec/select_lists_spec.rb +39 -0
  143. data/spec/legacy_watirspec/server.rb +91 -0
  144. data/spec/legacy_watirspec/span_spec.rb +181 -0
  145. data/spec/legacy_watirspec/spans_spec.rb +64 -0
  146. data/spec/legacy_watirspec/spec_helper.rb +12 -0
  147. data/spec/legacy_watirspec/strong_spec.rb +97 -0
  148. data/spec/legacy_watirspec/strongs_spec.rb +39 -0
  149. data/spec/legacy_watirspec/table_bodies_spec.rb +61 -0
  150. data/spec/legacy_watirspec/table_body_spec.rb +119 -0
  151. data/spec/legacy_watirspec/table_cell_spec.rb +76 -0
  152. data/spec/legacy_watirspec/table_cells_spec.rb +71 -0
  153. data/spec/legacy_watirspec/table_footer_spec.rb +94 -0
  154. data/spec/legacy_watirspec/table_footers_spec.rb +61 -0
  155. data/spec/legacy_watirspec/table_header_spec.rb +98 -0
  156. data/spec/legacy_watirspec/table_headers_spec.rb +59 -0
  157. data/spec/legacy_watirspec/table_row_spec.rb +104 -0
  158. data/spec/legacy_watirspec/table_rows_spec.rb +64 -0
  159. data/spec/legacy_watirspec/table_spec.rb +170 -0
  160. data/spec/legacy_watirspec/tables_spec.rb +40 -0
  161. data/spec/legacy_watirspec/text_field_spec.rb +315 -0
  162. data/spec/legacy_watirspec/text_fields_spec.rb +38 -0
  163. data/spec/legacy_watirspec/ul_spec.rb +84 -0
  164. data/spec/legacy_watirspec/uls_spec.rb +40 -0
  165. data/spec/legacy_watirspec/watir_compatibility_spec.rb +176 -0
  166. data/spec/legacy_watirspec/watirspec_helper.rb +57 -0
  167. data/utils/Rakefile +79 -0
  168. data/utils/launchers/launcher-linux-i686 +0 -0
  169. data/utils/launchers/launcher-linux-x86_64 +0 -0
  170. data/utils/launchers/launcher-win32-i86pc.exe +0 -0
  171. metadata +404 -0
@@ -0,0 +1,101 @@
1
+ # encoding: utf-8
2
+ require File.expand_path("../spec_helper", __FILE__)
3
+
4
+ describe "H1", "H2", "H3", "H4", "H5", "H6" do
5
+
6
+ before :each do
7
+ browser.goto(WatirSpec.files + "/non_control_elements.html")
8
+ end
9
+
10
+ # Exists method
11
+ describe "#exist?" do
12
+ it "returns true if the element exists" do
13
+ browser.h1(:id, "header1").should exist
14
+ browser.h2(:id, /header2/).should exist
15
+ browser.h3(:text, "Header 3").should exist
16
+ browser.h4(:text, /Header 4/).should exist
17
+ browser.h5(:index, 1).should exist
18
+ browser.h6(:index, 1).should exist
19
+ browser.h1(:xpath, "//h1[@id='first_header']").should exist
20
+ end
21
+
22
+ it "returns true if the element exists (default how = :id)" do
23
+ browser.h1("first_header").should exist
24
+ end
25
+
26
+ it "returns the first h1 if given no args" do
27
+ browser.h1.should exist
28
+ end
29
+
30
+ it "returns true if the element exists" do
31
+ browser.h1(:id, "no_such_id").should_not exist
32
+ browser.h1(:id, /no_such_id/).should_not exist
33
+ browser.h1(:text, "no_such_text").should_not exist
34
+ browser.h1(:text, /no_such_text 1/).should_not exist
35
+ browser.h1(:index, 1337).should_not exist
36
+ browser.h1(:xpath, "//p[@id='no_such_id']").should_not exist
37
+ end
38
+
39
+ it "raises TypeError when 'what' argument is invalid" do
40
+ lambda { browser.h1(:id, 3.14).exists? }.should raise_error(TypeError)
41
+ end
42
+
43
+ it "raises MissingWayOfFindingObjectException when 'how' argument is invalid" do
44
+ lambda { browser.h1(:no_such_how, 'some_value').exists? }.should raise_error(MissingWayOfFindingObjectException)
45
+ end
46
+ end
47
+
48
+ # Attribute methods
49
+ describe "#class_name" do
50
+ it "returns the class attribute" do
51
+ browser.h1(:index, 1).class_name.should == 'primary'
52
+ end
53
+
54
+ it "returns an empty string if the element exists and the attribute doesn't" do
55
+ browser.h2(:index, 1).class_name.should == ''
56
+ end
57
+
58
+ it "raises UnknownObjectException if the p doesn't exist" do
59
+ lambda { browser.h2(:id, 'no_such_id').class_name }.should raise_error(UnknownObjectException)
60
+ end
61
+ end
62
+
63
+ describe "#id" do
64
+ it "returns the id attribute" do
65
+ browser.h1(:index, 1).id.should == "first_header"
66
+ end
67
+
68
+ it "returns an empty string if the element exists and the attribute doesn't" do
69
+ browser.h3(:index, 1).id.should == ''
70
+ end
71
+
72
+ it "raises UnknownObjectException if the p doesn't exist" do
73
+ lambda { browser.h1(:id, "no_such_id").id }.should raise_error(UnknownObjectException)
74
+ lambda { browser.h1(:index, 1337).id }.should raise_error(UnknownObjectException)
75
+ end
76
+ end
77
+
78
+ describe "#text" do
79
+ it "returns the text of the element" do
80
+ browser.h1(:index, 1).text.should == 'Header 1'
81
+ end
82
+
83
+ it "returns an empty string if the element doesn't contain any text" do
84
+ browser.h6(:id, "empty_header").text.should == ''
85
+ end
86
+
87
+ it "raises UnknownObjectException if the p doesn't exist" do
88
+ lambda { browser.h1(:id, 'no_such_id').text }.should raise_error(UnknownObjectException)
89
+ lambda { browser.h1(:xpath , "//h1[@id='no_such_id']").text }.should raise_error(UnknownObjectException)
90
+ end
91
+ end
92
+
93
+ describe "#respond_to?" do
94
+ it "returns true for all attribute methods" do
95
+ browser.h1(:index, 1).should respond_to(:class_name)
96
+ browser.h1(:index, 1).should respond_to(:id)
97
+ browser.h1(:index, 1).should respond_to(:text)
98
+ end
99
+ end
100
+
101
+ end
@@ -0,0 +1,39 @@
1
+ # encoding: utf-8
2
+ require File.expand_path("../spec_helper", __FILE__)
3
+
4
+ bug "WTR-345", :watir do
5
+
6
+ describe "H1s", "H2s", "H3s", "H4s", "H5s", "H6s" do
7
+ before :each do
8
+ browser.goto(WatirSpec.files + "/non_control_elements.html")
9
+ end
10
+
11
+ describe "#length" do
12
+ it "returns the number of h1s" do
13
+ browser.h2s.length.should == 9
14
+ end
15
+ end
16
+
17
+ describe "#[]" do
18
+ it "returns the h1 at the given index" do
19
+ browser.h1s[1].id.should == "first_header"
20
+ end
21
+ end
22
+
23
+ describe "#each" do
24
+ it "iterates through header collections correctly" do
25
+ lengths = (1..6).collect do |i|
26
+ collection = browser.send(:"h#{i}s")
27
+ collection.each_with_index do |h, index|
28
+ h.name.should == browser.send(:"h#{i}", :index, index+1).name
29
+ h.id.should == browser.send(:"h#{i}", :index, index+1).id
30
+ h.value.should == browser.send(:"h#{i}", :index, index+1).value
31
+ end
32
+ collection.length
33
+ end
34
+ lengths.should == [2, 9, 2, 1, 1, 2]
35
+ end
36
+ end
37
+ end
38
+
39
+ end
@@ -0,0 +1,237 @@
1
+ # encoding: utf-8
2
+ require File.expand_path("../spec_helper", __FILE__)
3
+
4
+ describe "Image" do
5
+
6
+ before :each do
7
+ browser.goto(WatirSpec.files + "/images.html")
8
+ end
9
+
10
+ # Exists method
11
+ describe "#exists?" do
12
+ it "returns true when the image exists" do
13
+ browser.image(:id, 'square').should exist
14
+ browser.image(:id, /square/).should exist
15
+ browser.image(:name, 'circle').should exist
16
+ browser.image(:name, /circle/).should exist
17
+
18
+ bug "WTR-347", :watir do
19
+ browser.image(:src, 'images/circle.jpg').should exist
20
+ end
21
+
22
+ browser.image(:src, /circle/).should exist
23
+ browser.image(:alt, 'circle').should exist
24
+ browser.image(:alt, /cir/).should exist
25
+ browser.image(:title, 'Circle').should exist
26
+ end
27
+
28
+ it "returns the first image if given no args" do
29
+ browser.image.should exist
30
+ end
31
+
32
+ bug "WTR-347", :watir do
33
+ it "returns true if the element exists (default how = :src)" do
34
+ browser.image("images/circle.jpg").should exist
35
+ end
36
+ end
37
+
38
+ it "returns false when the image doesn't exist" do
39
+ browser.image(:id, 'no_such_id').should_not exist
40
+ browser.image(:id, /no_such_id/).should_not exist
41
+ browser.image(:name, 'no_such_name').should_not exist
42
+ browser.image(:name, /no_such_name/).should_not exist
43
+ browser.image(:src, 'no_such_src').should_not exist
44
+ browser.image(:src, /no_such_src/).should_not exist
45
+ browser.image(:alt, 'no_such_alt').should_not exist
46
+ browser.image(:alt, /no_such_alt/).should_not exist
47
+ browser.image(:title, 'no_such_title').should_not exist
48
+ browser.image(:title, /no_such_title/).should_not exist
49
+ end
50
+
51
+ it "raises TypeError when 'what' argument is invalid" do
52
+ lambda { browser.image(:id, 3.14).exists? }.should raise_error(TypeError)
53
+ end
54
+
55
+ it "raises MissingWayOfFindingObjectException when 'how' argument is invalid" do
56
+ lambda { browser.image(:no_such_how, 'some_value').exists? }.should raise_error(MissingWayOfFindingObjectException)
57
+ end
58
+ end
59
+
60
+ # Attribute methods
61
+ describe "#alt" do
62
+ it "returns the alt attribute of the image if the image exists" do
63
+ browser.image(:name, 'square').alt.should == "square"
64
+ browser.image(:name, 'circle').alt.should == 'circle'
65
+ end
66
+
67
+ it "returns an empty string if the image exists and the attribute doesn't" do
68
+ browser.image(:index, 1).alt.should == ""
69
+ end
70
+
71
+ it "raises UnknownObjectException if the image doesn't exist" do
72
+ lambda { browser.image(:index, 1337).alt }.should raise_error(UnknownObjectException)
73
+ end
74
+ end
75
+
76
+ describe "#id" do
77
+ it "returns the id attribute of the image if the image exists" do
78
+ browser.image(:name, 'square').id.should == 'square'
79
+ end
80
+
81
+ it "returns an empty string if the image exists and the attribute doesn't" do
82
+ browser.image(:index, 1).id.should == ""
83
+ end
84
+
85
+ it "raises UnknownObjectException if the image doesn't exist" do
86
+ lambda { browser.image(:index, 1337).id }.should raise_error(UnknownObjectException)
87
+ end
88
+ end
89
+
90
+ describe "#name" do
91
+ it "returns the name attribute of the image if the image exists" do
92
+ browser.image(:name, 'square').name.should == 'square'
93
+ end
94
+
95
+ it "returns an empty string if the image exists and the attribute doesn't" do
96
+ browser.image(:index, 1).name.should == ""
97
+ end
98
+
99
+ it "raises UnknownObjectException if the image doesn't exist" do
100
+ lambda { browser.image(:index, 1337).name }.should raise_error(UnknownObjectException)
101
+ end
102
+ end
103
+
104
+ describe "#src" do
105
+ it "returns the src attribute of the image if the image exists" do
106
+ browser.image(:name, 'square').src.should match(/square\.jpg/i)
107
+ end
108
+
109
+ it "returns an empty string if the image exists and the attribute doesn't" do
110
+ browser.image(:index, 1).src.should == ""
111
+ end
112
+
113
+ it "raises UnknownObjectException if the image doesn't exist" do
114
+ lambda { browser.image(:index, 1337).src }.should raise_error(UnknownObjectException)
115
+ end
116
+ end
117
+
118
+ describe "#title" do
119
+ it "returns the title attribute of the image if the image exists" do
120
+ browser.image(:id, 'square').title.should == 'Square'
121
+ end
122
+
123
+ it "returns an empty string if the image exists and the attribute doesn't" do
124
+ browser.image(:index, 1).title.should == ""
125
+ end
126
+
127
+ it "raises UnknownObjectException if the image doesn't exist" do
128
+ lambda { browser.image(:index, 1337).title }.should raise_error(UnknownObjectException)
129
+ end
130
+ end
131
+
132
+ describe "#respond_to?" do
133
+ it "returns true for all attribute methods" do
134
+ browser.image(:index, 1).should respond_to(:class_name)
135
+ browser.image(:index, 1).should respond_to(:id)
136
+ browser.image(:index, 1).should respond_to(:name)
137
+ browser.image(:index, 1).should respond_to(:style)
138
+ browser.image(:index, 1).should respond_to(:text)
139
+ browser.image(:index, 1).should respond_to(:value)
140
+ end
141
+ end
142
+
143
+ # Manipulation methods
144
+ describe "#click" do
145
+ it "raises UnknownObjectException when the image doesn't exist" do
146
+ lambda { browser.image(:id, 'missing_attribute').click }.should raise_error(UnknownObjectException)
147
+ lambda { browser.image(:name, 'missing_attribute').click }.should raise_error(UnknownObjectException)
148
+ lambda { browser.image(:src, 'missing_attribute').click }.should raise_error(UnknownObjectException)
149
+ lambda { browser.image(:alt, 'missing_attribute').click }.should raise_error(UnknownObjectException)
150
+ end
151
+ end
152
+
153
+ # File methods
154
+ bug "WTR-347", :watir do
155
+ describe "#file_created_date" do
156
+ it "returns the date the image was created as reported by the file system" do
157
+ browser.goto(WatirSpec.host + "/images.html")
158
+ image = browser.image(:index, 2)
159
+ path = "#{File.dirname(__FILE__)}/fixtures/#{image.src}"
160
+ image.file_created_date.to_i.should == File.mtime(path).to_i
161
+ end
162
+ end
163
+ end
164
+
165
+
166
+ bug "WTR-346", :watir do
167
+ describe "#file_size" do
168
+ it "returns the file size of the image if the image exists" do
169
+ browser.image(:id, 'square').file_size.should == File.size("#{WatirSpec.files}/images/square.jpg".sub("file://", ''))
170
+ end
171
+ end
172
+
173
+ it "raises UnknownObjectException if the image doesn't exist" do
174
+ lambda { browser.image(:index, 1337).file_size }.should raise_error(UnknownObjectException)
175
+ end
176
+ end
177
+
178
+ describe "#height" do
179
+ not_compliant_on :watir do
180
+ it "returns the height of the image if the image exists" do
181
+ browser.image(:id, 'square').height.should == 88
182
+ end
183
+ end
184
+
185
+ it "raises UnknownObjectException if the image doesn't exist" do
186
+ lambda { browser.image(:index, 1337).height }.should raise_error(UnknownObjectException)
187
+ end
188
+ end
189
+
190
+ describe "#width" do
191
+ not_compliant_on :watir do
192
+ it "returns the width of the image if the image exists" do
193
+ browser.image(:id, 'square').width.should == 88
194
+ end
195
+ end
196
+
197
+ it "raises UnknownObjectException if the image doesn't exist" do
198
+ lambda { browser.image(:index, 1337).width }.should raise_error(UnknownObjectException)
199
+ end
200
+ end
201
+
202
+ # Other
203
+ describe "#loaded?" do
204
+ it "returns true if the image has been loaded" do
205
+ browser.image(:name, 'circle').should be_loaded
206
+ browser.image(:alt, 'circle').should be_loaded
207
+ browser.image(:alt, /circle/).should be_loaded
208
+ end
209
+
210
+ it "returns false if the image has not been loaded" do
211
+ browser.image(:id, 'no_such_file').should_not be_loaded
212
+ end
213
+
214
+ it "raises UnknownObjectException if the image doesn't exist" do
215
+ lambda { browser.image(:name, 'no_such_image').loaded? }.should raise_error(UnknownObjectException)
216
+ lambda { browser.image(:id, 'no_such_image').loaded? }.should raise_error(UnknownObjectException)
217
+ lambda { browser.image(:src, 'no_such_image').loaded? }.should raise_error(UnknownObjectException)
218
+ lambda { browser.image(:alt, 'no_such_image').loaded? }.should raise_error(UnknownObjectException)
219
+ lambda { browser.image(:index, 1337).loaded? }.should raise_error(UnknownObjectException)
220
+ end
221
+ end
222
+
223
+ describe "#save" do
224
+ bug "WTR-336", :watir do
225
+ it "saves the image to a file" do
226
+ file = "#{File.expand_path Dir.pwd}/sample.img.dat"
227
+ begin
228
+ browser.image(:index, 2).save(file)
229
+ File.exist?(file).should be_true
230
+ ensure
231
+ File.delete(file) if File.exist?(file)
232
+ end
233
+ end
234
+ end
235
+ end
236
+
237
+ end
@@ -0,0 +1,38 @@
1
+ # encoding: utf-8
2
+ require File.expand_path("../spec_helper", __FILE__)
3
+
4
+ describe "Images" do
5
+
6
+ before :each do
7
+ browser.goto(WatirSpec.files + "/images.html")
8
+ end
9
+
10
+ describe "#length" do
11
+ it "returns the number of images" do
12
+ browser.images.length.should == 9
13
+ end
14
+ end
15
+
16
+ describe "#[]" do
17
+ it "returns the image at the given index" do
18
+ browser.images[6].id.should == "square"
19
+ end
20
+ end
21
+
22
+ describe "#each" do
23
+ it "iterates through images correctly" do
24
+ count = 0
25
+
26
+ browser.images.each_with_index do |c, index|
27
+ c.name.should == browser.image(:index, index+1).name
28
+ c.id.should == browser.image(:index, index+1).id
29
+ c.value.should == browser.image(:index, index+1).value
30
+
31
+ count += 1
32
+ end
33
+
34
+ count.should > 0
35
+ end
36
+ end
37
+
38
+ end
@@ -0,0 +1,181 @@
1
+ # encoding: utf-8
2
+ require File.expand_path("../spec_helper", __FILE__)
3
+
4
+ describe "Ins" do
5
+
6
+ before :each do
7
+ browser.goto(WatirSpec.files + "/non_control_elements.html")
8
+ end
9
+
10
+ # Exists method
11
+ describe "#exist?" do
12
+ it "returns true if the 'ins' exists" do
13
+ browser.ins(:id, "lead").should exist
14
+ browser.ins(:id, /lead/).should exist
15
+ browser.ins(:text, "This is an inserted text tag 1").should exist
16
+ browser.ins(:text, /This is an inserted text tag 1/).should exist
17
+ browser.ins(:class, "lead").should exist
18
+ browser.ins(:class, /lead/).should exist
19
+ browser.ins(:index, 1).should exist
20
+ browser.ins(:xpath, "//ins[@id='lead']").should exist
21
+ end
22
+
23
+ it "returns the first ins if given no args" do
24
+ browser.ins.should exist
25
+ end
26
+
27
+ it "returns true if the element exists (default how = :id)" do
28
+ browser.ins("lead").should exist
29
+ end
30
+
31
+ it "returns false if the element doesn't exist" do
32
+ browser.ins(:id, "no_such_id").should_not exist
33
+ browser.ins(:id, /no_such_id/).should_not exist
34
+ browser.ins(:text, "no_such_text").should_not exist
35
+ browser.ins(:text, /no_such_text/).should_not exist
36
+ browser.ins(:class, "no_such_class").should_not exist
37
+ browser.ins(:class, /no_such_class/).should_not exist
38
+ browser.ins(:index, 1337).should_not exist
39
+ browser.ins(:xpath, "//ins[@id='no_such_id']").should_not exist
40
+ end
41
+
42
+ it "raises TypeError when 'what' argument is invalid" do
43
+ lambda { browser.ins(:id, 3.14).exists? }.should raise_error(TypeError)
44
+ end
45
+
46
+ it "raises MissingWayOfFindingObjectException when 'how' argument is invalid" do
47
+ lambda { browser.ins(:no_such_how, 'some_value').exists? }.should raise_error(MissingWayOfFindingObjectException)
48
+ end
49
+ end
50
+
51
+ # Attribute methods
52
+ describe "#class_name" do
53
+ it "returns the class attribute" do
54
+ browser.ins(:index, 1).class_name.should == 'lead'
55
+ end
56
+
57
+ it "returns an empty string if the element exists and the attribute doesn't" do
58
+ browser.ins(:index, 3).class_name.should == ''
59
+ end
60
+
61
+ it "raises UnknownObjectException if the ins doesn't exist" do
62
+ lambda { browser.ins(:id, 'no_such_id').class_name }.should raise_error(UnknownObjectException)
63
+ end
64
+ end
65
+
66
+ describe "#id" do
67
+ it "returns the id attribute" do
68
+ browser.ins(:index, 1).id.should == "lead"
69
+ end
70
+
71
+ it "returns an empty string if the element exists and the attribute doesn't" do
72
+ browser.ins(:index, 3).id.should == ''
73
+ end
74
+
75
+ it "raises UnknownObjectException if the ins doesn't exist" do
76
+ lambda { browser.ins(:id, "no_such_id").id }.should raise_error(UnknownObjectException)
77
+ lambda { browser.ins(:index, 1337).id }.should raise_error(UnknownObjectException)
78
+ end
79
+ end
80
+
81
+ describe "#name" do
82
+ it "returns the name attribute" do
83
+ browser.ins(:index, 2).name.should == "invalid_attribute"
84
+ end
85
+
86
+ it "returns an empty string if the element exists and the attribute doesn't" do
87
+ browser.ins(:index, 3).name.should == ''
88
+ end
89
+
90
+ it "raises UnknownObjectException if the ins doesn't exist" do
91
+ lambda { browser.ins(:id, "no_such_id").name }.should raise_error(UnknownObjectException)
92
+ lambda { browser.ins(:index, 1337).name }.should raise_error(UnknownObjectException)
93
+ end
94
+ end
95
+
96
+ describe "#title" do
97
+ it "returns the title attribute" do
98
+ browser.ins(:index, 1).title.should == 'Lorem ipsum'
99
+ end
100
+
101
+ it "returns an empty string if the element exists and the attribute doesn't" do
102
+ browser.ins(:index, 3).title.should == ''
103
+ end
104
+
105
+ it "raises UnknownObjectException if the ins doesn't exist" do
106
+ lambda { browser.ins(:id, 'no_such_id').title }.should raise_error( UnknownObjectException)
107
+ lambda { browser.ins(:xpath, "//ins[@id='no_such_id']").title }.should raise_error( UnknownObjectException)
108
+ end
109
+ end
110
+
111
+ describe "#text" do
112
+ it "returns the text of the ins" do
113
+ browser.ins(:index, 2).text.should == 'This is an inserted text tag 2'
114
+ end
115
+
116
+ it "returns an empty string if the element doesn't contain any text" do
117
+ browser.ins(:index, 4).text.should == ''
118
+ end
119
+
120
+ it "raises UnknownObjectException if the ins doesn't exist" do
121
+ lambda { browser.ins(:id, 'no_such_id').text }.should raise_error( UnknownObjectException)
122
+ lambda { browser.ins(:xpath , "//ins[@id='no_such_id']").text }.should raise_error( UnknownObjectException)
123
+ end
124
+ end
125
+
126
+ describe "#value" do
127
+ it "returns the value attribute" do
128
+ browser.ins(:index, 2).value.should == "invalid_attribute"
129
+ end
130
+
131
+ it "returns an empty string if the element exists and the attribute doesn't" do
132
+ browser.ins(:index, 4).value.should == ''
133
+ end
134
+
135
+ it "raises UnknownObjectException if the ins doesn't exist" do
136
+ lambda { browser.ins(:id , "no_such_id").value }.should raise_error(UnknownObjectException)
137
+ lambda { browser.ins(:index , 1337).value }.should raise_error(UnknownObjectException)
138
+ end
139
+ end
140
+
141
+ describe "#respond_to?" do
142
+ it "returns true for all attribute methods" do
143
+ browser.ins(:index, 1).should respond_to(:class_name)
144
+ browser.ins(:index, 1).should respond_to(:id)
145
+ browser.ins(:index, 1).should respond_to(:name)
146
+ browser.ins(:index, 1).should respond_to(:title)
147
+ browser.ins(:index, 1).should respond_to(:text)
148
+ browser.ins(:index, 1).should respond_to(:value)
149
+ end
150
+ end
151
+
152
+ # Other
153
+ describe "#click" do
154
+ it "fires events" do
155
+ browser.ins(:name, 'footer').text.should_not include('Javascript')
156
+ browser.ins(:name, 'footer').click
157
+ browser.ins(:name, 'footer').text.should include('Javascript')
158
+ end
159
+
160
+ it "raises UnknownObjectException if the ins doesn't exist" do
161
+ lambda { browser.ins(:id, "no_such_id").click }.should raise_error(UnknownObjectException)
162
+ lambda { browser.ins(:title, "no_such_title").click }.should raise_error(UnknownObjectException)
163
+ end
164
+ end
165
+
166
+ describe "#to_s" do
167
+ bug "WTR-350", :watir do
168
+ it "returns a human readable representation of the element" do
169
+ browser.ins(:index, 2).to_s.should == "tag: ins\n" +
170
+ " name: invalid_attribute\n" +
171
+ " value: invalid_attribute\n" +
172
+ " text: This is an inserted text tag 2"
173
+ end
174
+ end
175
+
176
+ it "raises UnknownObjectException if the p doesn't exist" do
177
+ lambda { browser.ins(:xpath, "//ins[@id='no_such_id']").to_s }.should raise_error( UnknownObjectException)
178
+ end
179
+ end
180
+
181
+ end