page-object 1.1.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/.coveralls.yml +1 -0
  3. data/.gitignore +1 -0
  4. data/.travis.yml +7 -2
  5. data/ChangeLog +14 -1
  6. data/Gemfile +4 -2
  7. data/README.md +2 -0
  8. data/Rakefile +5 -1
  9. data/features/async.feature +3 -12
  10. data/features/audio.feature +10 -14
  11. data/features/element.feature +21 -0
  12. data/features/gxt_table_extension.feature +1 -2
  13. data/features/html/multi_elements.html +11 -10
  14. data/features/html/static_elements.html +3 -16
  15. data/features/html/widgets.html +20 -0
  16. data/features/italic.feature +21 -0
  17. data/features/multi_elements.feature +28 -22
  18. data/features/sample-app/public/audio_video.html +23 -0
  19. data/features/step_definitions/audio_steps.rb +6 -6
  20. data/features/step_definitions/element_steps.rb +28 -0
  21. data/features/step_definitions/gxt_table_steps.rb +1 -6
  22. data/features/step_definitions/italic_steps.rb +12 -0
  23. data/features/step_definitions/multi_elements_steps.rb +13 -0
  24. data/features/step_definitions/page_traversal_steps.rb +4 -0
  25. data/features/step_definitions/table_row_steps.rb +23 -0
  26. data/features/step_definitions/video_steps.rb +3 -3
  27. data/features/support/audio_video_page.rb +24 -0
  28. data/features/support/page.rb +20 -20
  29. data/features/support/url_helper.rb +4 -0
  30. data/features/table_row.feature +43 -0
  31. data/features/video.feature +1 -5
  32. data/lib/page-object.rb +4 -0
  33. data/lib/page-object/accessors.rb +88 -4
  34. data/lib/page-object/elements.rb +2 -1
  35. data/lib/page-object/elements/element.rb +5 -5
  36. data/lib/page-object/elements/italic.rb +11 -0
  37. data/lib/page-object/elements/ordered_list.rb +1 -1
  38. data/lib/page-object/elements/unordered_list.rb +1 -1
  39. data/lib/page-object/locator_generator.rb +2 -0
  40. data/lib/page-object/platforms/selenium_webdriver/element.rb +37 -0
  41. data/lib/page-object/platforms/selenium_webdriver/ordered_list.rb +10 -8
  42. data/lib/page-object/platforms/selenium_webdriver/page_object.rb +51 -1
  43. data/lib/page-object/platforms/selenium_webdriver/unordered_list.rb +7 -9
  44. data/lib/page-object/platforms/watir_webdriver/element.rb +45 -1
  45. data/lib/page-object/platforms/watir_webdriver/ordered_list.rb +9 -4
  46. data/lib/page-object/platforms/watir_webdriver/page_object.rb +81 -50
  47. data/lib/page-object/platforms/watir_webdriver/unordered_list.rb +11 -5
  48. data/lib/page-object/version.rb +1 -1
  49. data/lib/page-object/widgets.rb +1 -1
  50. data/page-object.gemspec +1 -0
  51. data/spec/page-object/element_locators_spec.rb +124 -80
  52. data/spec/page-object/elements/element_spec.rb +83 -1
  53. data/spec/page-object/elements/italic_spec.rb +29 -0
  54. data/spec/page-object/elements/media_spec.rb +63 -0
  55. data/spec/page-object/elements/ordered_list_spec.rb +6 -22
  56. data/spec/page-object/elements/selenium_element_spec.rb +41 -0
  57. data/spec/page-object/elements/unordered_list_spec.rb +4 -21
  58. data/spec/page-object/elements/video_spec.rb +27 -0
  59. data/spec/page-object/elements/watir_element_spec.rb +48 -0
  60. data/spec/page-object/selenium_accessors_spec.rb +28 -9
  61. data/spec/page-object/watir_accessors_spec.rb +57 -1
  62. data/spec/spec_helper.rb +3 -6
  63. metadata +39 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5e87a5991df66aba958bfa1d69bd5defb8f5dbfc
4
- data.tar.gz: 2fccd9a610ae80b2c9762a0f9bdc2827b55ac5e7
3
+ metadata.gz: e9da44e461744eab4d446edf6dae5566da91c771
4
+ data.tar.gz: 76d49ecd39139b07d5883a6ce88b29443e65e47c
5
5
  SHA512:
6
- metadata.gz: f7c67f99e80f010e75da294dcd4894454d0d4a30ffdb9b9396e48c2c440abaa41a853491f1f7de0c184e9486ddeb7580d7efca54477c8e221acc8395f2648e11
7
- data.tar.gz: ae0f71731920795dd10e2eb77c7702bc6fc64bca0c4c9ef52a9a3da459399a2ec67d95c79fc371f625b313b29d9b72296e9d8e86335822faf452901ca324b210
6
+ metadata.gz: ed083f8285b0c1ed5cad169b809e89263f8a4bb4d2ea99e803df0c79d7f8178ef272c9b133b01227d9fd07e92f14318900dd26f457add8e9d120e15dc0847497
7
+ data.tar.gz: d789f587282a2106d9543ca7e23e735e315c653d3c3b8289a3467e7c2ff0be1eafc4008b99f7eba84929fe54af92271e9d03a99560014d42b6159ca5c00ec410
@@ -0,0 +1 @@
1
+ service_name: travis-ci
data/.gitignore CHANGED
@@ -5,3 +5,4 @@ Gemfile.lock
5
5
  pkg
6
6
  TAGS
7
7
  chromedriver.log
8
+ coverage
@@ -1,10 +1,15 @@
1
+ sudo: false
1
2
  language: ruby
3
+ cache: bundler
2
4
  rvm:
3
- - 1.9.3
4
5
  - 2.0.0
5
- - 2.1.2
6
+ - 2.1
7
+ - 2.2
6
8
  - jruby-19mode
7
9
 
8
10
  before_script:
9
11
  - "export DISPLAY=:99.0"
10
12
  - "sh -e /etc/init.d/xvfb start"
13
+
14
+ script:
15
+ - "bundle exec rake test_with_coveralls"
data/ChangeLog CHANGED
@@ -1,4 +1,17 @@
1
- === Version 1.1.0
1
+ === Version 1.1.1 / 2016-1-7
2
+ * Enhancements
3
+ * Added row accessor method and support for finding row elements directly (Thanks Ethan Hedrick)
4
+ * Added list_items method to UnorderedList to get an array of children.
5
+ * Speed optimizations for UnorderedList
6
+ * Added list_items method to OrderedList to get an array of children.
7
+ * Speed optimizations for OrderedList
8
+ * Added ability to check if a section is visible?, present?, or exists? (Thanks Donavan Stanley)
9
+ * Added support for the Italic (i) element (Thanks Sergey Morozov)
10
+ * Added size and location methods to all elements (Thanks Steve Jackson)
11
+ * Added width, height, and centre methods for elements (Thanks David Selby)
12
+ * Added missing right_click method for watir (Thanks David Selby)
13
+
14
+ === Version 1.1.0 / 2015-5-2
2
15
  * Enhancements
3
16
  * Performance enhancements when initializing elements (Thanks Dane Andersen)
4
17
  * Enabled button elements to return text when using selenium-webdriver.
data/Gemfile CHANGED
@@ -2,12 +2,14 @@ source "http://rubygems.org"
2
2
 
3
3
  # adding rake so travis-ci will build properly
4
4
  gem 'rake'
5
- gem 'fuubar'
6
- gem 'fuubar-cucumber'
5
+ gem 'fuubar', '>= 2.0.0'
6
+ gem 'fuubar-cucumber', '>= 0.0.22'
7
7
  gem 'rb-fsevent', :require => false if RUBY_PLATFORM =~ /darwin/i
8
8
  gem 'growl'
9
9
  gem 'guard-rspec'
10
10
  gem 'guard-cucumber'
11
11
  gem 'net-http-persistent'
12
+ gem 'coveralls', require: false
13
+
12
14
 
13
15
  gemspec
data/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # page-object
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/page-object.svg)](https://rubygems.org/gems/page-object)
3
4
  [![Build Status](https://travis-ci.org/cheezy/page-object.png)](https://travis-ci.org/cheezy/page-object)
5
+ [![Coverage Status](https://coveralls.io/repos/cheezy/page-object/badge.svg?nocache)](https://coveralls.io/r/cheezy/page-object)
4
6
 
5
7
 
6
8
  A simple gem that assists in creating flexible page objects for testing browser based applications. The goal is to facilitate creating abstraction layers in your tests to decouple the tests from the item they are testing and to provide a simple interface to the elements on a page. It works with both watir-webdriver and selenium-webdriver.
data/Rakefile CHANGED
@@ -3,7 +3,9 @@ require 'bundler'
3
3
  require 'rspec/core/rake_task'
4
4
  require 'cucumber'
5
5
  require 'cucumber/rake/task'
6
+ require 'coveralls/rake/task'
6
7
 
8
+ Coveralls::RakeTask.new
7
9
  Bundler::GemHelper.install_tasks
8
10
 
9
11
  RSpec::Core::RakeTask.new(:spec) do |spec|
@@ -32,4 +34,6 @@ task :lib do
32
34
  $LOAD_PATH.unshift(File.expand_path("lib", File.dirname(__FILE__)))
33
35
  end
34
36
 
35
- task :default => :test
37
+ task :test_with_coveralls => [:test, 'coveralls:push']
38
+
39
+ task :default => :test_with_coveralls
@@ -1,29 +1,20 @@
1
1
  Feature: Handling Asynch calls
2
2
 
3
- Scenario: Link element methods
4
- Given I am on the static elements page
5
- When I retrieve a link element
6
- Then I should be able to wait until it is present
7
- And I should be able to wait until it is visible
8
- And I should be able to wait until it is not visible
9
- And I should be able to wait until a block returns true
10
-
11
- Scenario: Click a button when it is visible
3
+ Background:
12
4
  Given I am on the async elements page
5
+
6
+ Scenario: Click a button when it is visible
13
7
  When I make the button invisible
14
8
  Then I should be able to click it when it becomses visible
15
9
 
16
10
  Scenario: Wait until something is not visible
17
- Given I am on the async elements page
18
11
  Then I should be able to wait until the button becomes invisible
19
12
 
20
13
  Scenario: Wait for an element to appear on the page
21
- Given I am on the async elements page
22
14
  When I add a button a few seconds from now
23
15
  Then I should be able to click it when it gets added
24
16
 
25
17
  Scenario: Wait for an element to disappear from the page
26
- Given I am on the async elements page
27
18
  When I add a button a few seconds from now
28
19
  And I remove a button a few seconds from now
29
20
  Then I should not be able to find the button
@@ -1,10 +1,10 @@
1
1
  Feature: Support for the audio element
2
2
 
3
3
  Background:
4
- Given I am on the static elements page
4
+ Given I am on the audio video page
5
5
 
6
6
  Scenario: finding an audio element
7
- When I retrieve the audio element
7
+ When I retrieve the audio element from the page
8
8
  Then I should know it exists
9
9
  And I should know it is visible
10
10
 
@@ -31,38 +31,34 @@ Feature: Support for the audio element
31
31
  | name | index |
32
32
 
33
33
  Scenario: Should know if it is autoplay
34
- When I retrieve the audio element
34
+ When I retrieve the audio element from the page
35
35
  Then I should know the audio is not autoplay
36
36
 
37
37
  Scenario: Should know if the controls are displayed
38
- When I retrieve the audio element
38
+ When I retrieve the audio element from the page
39
39
  Then I should know that the controls are displayed
40
40
 
41
41
  Scenario: Should know if it is paused
42
- When I retrieve the audio element
42
+ When I retrieve the audio element from the page
43
43
  Then I should know that the audio is paused
44
44
 
45
- Scenario: Should know its duration
46
- When I retrieve the audio element
47
- Then I should know that the duration is greater than 74 seconds
48
-
49
45
  Scenario: Should know its volume
50
- When I retrieve the audio element
46
+ When I retrieve the audio element from the page
51
47
  Then I should know that its volume is 1
52
48
 
53
49
  Scenario: Should know if it has ended
54
- When I retrieve the audio element
50
+ When I retrieve the audio element from the page
55
51
  Then I should know that it has not ended
56
52
 
57
53
  Scenario: Should know if it is seeking
58
- When I retrieve the audio element
54
+ When I retrieve the audio element from the page
59
55
  Then I should know that it is not seeking
60
56
 
61
57
  Scenario: Should know if it is in a loop
62
- When I retrieve the audio element
58
+ When I retrieve the audio element from the page
63
59
  Then I should know that it is not in a loop
64
60
 
65
61
  Scenario: Should know if it is muted
66
- When I retrieve the audio element
62
+ When I retrieve the audio element from the page
67
63
  Then I should know that it is muted
68
64
 
@@ -320,3 +320,24 @@ Feature: Elements
320
320
 
321
321
  Scenario: Selecting the text for an element
322
322
  Then I should be able to select "Elements" from the paragraph
323
+
324
+ Scenario: Element location
325
+ When I retrieve a link element
326
+ Then I should be able to know its location
327
+
328
+ Scenario: Element size
329
+ When I retrieve a link element
330
+ Then I should be able to know its size
331
+
332
+ Scenario: Getting the height of an element
333
+ When I retrieve a link element
334
+ Then the element height is not 0
335
+
336
+ Scenario: Getting the width of an element
337
+ When I retrieve a link element
338
+ Then the element width is not 0
339
+
340
+ Scenario: Getting the centre of an element
341
+ When I retrieve a button element
342
+ Then the element centre should be greater than element y position
343
+ And the element centre should be greater than element x position
@@ -8,7 +8,6 @@ Feature: Gxt Table Extension
8
8
  And I have registered the GxtTable with PageObject
9
9
  And I define a page-object using that widget
10
10
  And I am on the Gxt Examples page
11
- And I have the Basic Grid opened
12
11
 
13
12
  Scenario: Retrieve a GxtTable
14
13
  When I retrieve a GxtTable widget
@@ -21,4 +20,4 @@ Feature: Gxt Table Extension
21
20
 
22
21
  Scenario: Confirm a correct row count from a GxtTable
23
22
  When I retrieve a GxtTable widget
24
- Then the GxtTable should have "13" rows
23
+ Then the GxtTable should have "3" rows
@@ -19,7 +19,7 @@
19
19
  <textarea rows="2" cols="20" class="textarea">textarea 1</textarea>
20
20
  <textarea rows="2" cols="20" class="textarea">textarea 2</textarea>
21
21
  <textarea rows="2" cols="20" class="textarea">textarea 3</textarea>
22
-
22
+
23
23
  <select class="selectlist">
24
24
  <option value="selectlist 1">Option 1</option>
25
25
  </select>
@@ -33,7 +33,7 @@
33
33
  <a href="blah.html" class="link">link 1</a>
34
34
  <a href="blah.html" class="link">link 2</a>
35
35
  <a href="blah.html" class="link">link 3</a>
36
-
36
+
37
37
  <input class="checkbox" type="checkbox" value="checkbox 1"/>
38
38
  <input class="checkbox" type="checkbox" value="checkbox 2"/>
39
39
  <input class="checkbox" type="checkbox" value="checkbox 3"/>
@@ -41,15 +41,15 @@
41
41
  <input type="radio" class="radio" value="radio 1">
42
42
  <input type="radio" class="radio" value="radio 2">
43
43
  <input type="radio" class="radio" value="radio 3">
44
-
44
+
45
45
  <div class="div">Div 1</div>
46
46
  <div class="div">Div 2</div>
47
47
  <div class="div">Div 3</div>
48
-
48
+
49
49
  <span class="span">Span 1</span>
50
50
  <span class="span">Span 2</span>
51
51
  <span class="span">Span 3</span>
52
-
52
+
53
53
  <label class="label">Label 1</label>
54
54
  <label class="label">Label 2</label>
55
55
  <label class="label">Label 3</label>
@@ -77,7 +77,7 @@
77
77
  <td>Data 9</td>
78
78
  </tr>
79
79
  </table>
80
-
80
+
81
81
  <img src="images/circle.png" class="image", alt="image 1">
82
82
  <img src="images/circle.png" class="image", alt="image 2">
83
83
  <img src="images/circle.png" class="image", alt="image 3">
@@ -115,11 +115,11 @@
115
115
  <h2 class="h2">H2 One</h2>
116
116
  <h2 class="h2">H2 Two</h2>
117
117
  <h2 class="h2">H2 Three</h2>
118
-
118
+
119
119
  <h3 class="h3">H3 One</h3>
120
120
  <h3 class="h3">H3 Two</h3>
121
121
  <h3 class="h3">H3 Three</h3>
122
-
122
+
123
123
  <h4 class="h4">H4 One</h4>
124
124
  <h4 class="h4">H4 Two</h4>
125
125
  <h4 class="h4">H4 Three</h4>
@@ -127,7 +127,7 @@
127
127
  <h5 class="h5">H5 One</h5>
128
128
  <h5 class="h5">H5 Two</h5>
129
129
  <h5 class="h5">H5 Three</h5>
130
-
130
+
131
131
  <h6 class="h6">H6 One</h6>
132
132
  <h6 class="h6">H6 Two</h6>
133
133
  <h6 class="h6">H6 Three</h6>
@@ -135,10 +135,11 @@
135
135
  <p class="p">Paragraph One</p>
136
136
  <p class="p">Paragraph Two</p>
137
137
  <p class="p">Paragraph Three</p>
138
-
138
+
139
139
  <input type="file" class="file_field_class" title="File Field 1" />
140
140
  <input type="file" class="file_field_class" title="File Field 2" />
141
141
  <input type="file" class="file_field_class" title="File Field 3" />
142
142
  In bold <b>One B</b> and <b>Two B</b> for example text
143
+ In italic <i>One I</i> and <i>Two I</i> for example text
143
144
  </body>
144
145
  </html>
@@ -43,20 +43,6 @@
43
43
  ctx.fillRect(0,0,150,75);
44
44
  </script>
45
45
 
46
- <audio controls id="audio" name="audio" class="audio">
47
- <source src="04-Death_Becomes_Fur.mp4"
48
- type='audio/mp4'/>
49
- <source src="04-Death_Becomes_Fur.oga"
50
- type='audio/ogg; codecs=vorbis'/>
51
- <p>Your user agent does not support the HTML5 Audio element.</p>
52
- </audio>
53
-
54
- <video width="320" height="240" controls="controls" id="video" name="video" class="video">
55
- <source src="movie.mp4" type="video/mp4" />
56
- <source src="movie.ogg" type="video/ogg" />
57
- Your browser does not support the video tag.
58
- </video>
59
-
60
46
  <svg width="100" height="100" id="the_svg">
61
47
  <circle cx="50" cy="50" r="40" fill="red" stroke="blue" stroke-width="5" />
62
48
  </svg>
@@ -100,7 +86,7 @@
100
86
  </tr>
101
87
  </thead>
102
88
  <tbody>
103
- <tr>
89
+ <tr id='tr_id' class='tr_class'>
104
90
  <td>Data1</td>
105
91
  <td>Data2</td>
106
92
  </tr>
@@ -194,11 +180,12 @@
194
180
  <summary id='summary_id'>The summary</summary>
195
181
  The details
196
182
  </details>
197
-
183
+
198
184
  <figure id='figure_id'>
199
185
  <img src="images/img_pulpit.jpg" alt="The Pulpit Rock" width="304" height="228">
200
186
  </figure>
201
187
  This text have <b id="b_id" class="b_class" name="b_name">some text in bold</b>
188
+ This text have <i id="i_id" class="i_class" name="i_name">some text in italic</i>
202
189
  <button id="button_button">This button is a button</button>
203
190
  <input id="input_button" type="button" value="This button is a input" />
204
191
  </body>
@@ -0,0 +1,20 @@
1
+ <html>
2
+ <body>
3
+ <div class="x-grid3">
4
+ <table>
5
+ <tr>
6
+ <th>Column1</th>
7
+ <th>Column2</th>
8
+ </tr>
9
+ <tr>
10
+ <td>1</td>
11
+ <td>2</td>
12
+ </tr>
13
+ <tr>
14
+ <td>3</td>
15
+ <td>4</td>
16
+ </tr>
17
+ </table>
18
+ </div>
19
+ </body>
20
+ </html>
@@ -0,0 +1,21 @@
1
+ Feature: Italic
2
+
3
+ Background:
4
+ Given I am on the static elements page
5
+
6
+ Scenario: Getting the text of headings
7
+ When I get the italic text for the "i" element
8
+ Then I should see "some text in italic" in italic
9
+
10
+ Scenario Outline: Locating i on the Page
11
+ When I search italic text for the i by "<search_by>"
12
+ Then I should see "some text in italic" in italic
13
+
14
+ Scenarios:
15
+ | search_by |
16
+ | id |
17
+ | class |
18
+ | name |
19
+ | xpath |
20
+ | index |
21
+ | css |
@@ -9,7 +9,7 @@ Feature: Multi Elements
9
9
  And the value of button 1 should be "Button 1"
10
10
  And the value of button 2 should be "Button 2"
11
11
  And the value of button 3 should be "Button 3"
12
-
12
+
13
13
  Scenario: Selecting buttons using no identifier
14
14
  When I select all buttons using no identifier
15
15
  Then I should have 3 buttons
@@ -20,7 +20,7 @@ Feature: Multi Elements
20
20
  And the value of text field 1 should be "text 1"
21
21
  And the value of text field 2 should be "text 2"
22
22
  And the value of text field 3 should be "text 3"
23
-
23
+
24
24
  Scenario: Selecting text fields using no identifier
25
25
  When I select all text fields using no identifier
26
26
  Then I should have 3 text fields
@@ -79,7 +79,7 @@ Feature: Multi Elements
79
79
  Scenario: Selecting checkboxes using no identifier
80
80
  When I select checboxes using no identifier
81
81
  Then I should have 3 checkboxes
82
-
82
+
83
83
  Scenario: Selecting radio buttons using an identifier
84
84
  When I select the radio button with class "radio"
85
85
  Then I should have 3 radio buttons
@@ -141,7 +141,7 @@ Feature: Multi Elements
141
141
  And the alt for image 1 should be "image 1"
142
142
  And the alt for image 2 should be "image 2"
143
143
  And the alt for image 3 should be "image 3"
144
-
144
+
145
145
  Scenario: Selecting images using no identifier
146
146
  When I select the images using no identifier
147
147
  Then I should have 3 images
@@ -152,7 +152,7 @@ Feature: Multi Elements
152
152
  And the action for form 1 should be "form1"
153
153
  And the action for form 2 should be "form2"
154
154
  And the action for form 3 should be "form3"
155
-
155
+
156
156
  Scenario: Selecting forms using no identifier
157
157
  When I select the forms using no identifier
158
158
  Then I should have 3 forms
@@ -163,7 +163,7 @@ Feature: Multi Elements
163
163
  And the text for list item 1 should be "Item One"
164
164
  And the text for list item 2 should be "Item Two"
165
165
  And the text for list item 3 should be "Item Three"
166
-
166
+
167
167
  Scenario: Selecting list items using no identifier
168
168
  When I select the list items using no identifier
169
169
  Then I should have 8 list items
@@ -174,18 +174,18 @@ Feature: Multi Elements
174
174
  And the text for the first item in unordered list 1 should be "Item One"
175
175
  And the text for the first item in unordered list 2 should be "Item Four"
176
176
  And the text for the first item in unordered list 3 should be "Item Five"
177
-
177
+
178
178
  Scenario: Selecting unordered lists using no identifier
179
179
  When I select the unordered list using no parameter
180
180
  Then I should have 3 unordered lists
181
-
181
+
182
182
  Scenario: Selecting ordered lists using an identifier
183
183
  When I select the ordered lists with class "ol"
184
184
  Then I should have 3 ordered lists
185
185
  And the text for the first item in ordered list 1 should be "Number One"
186
186
  And the text for the first item in ordered list 2 should be "Number Two"
187
187
  And the text for the first item in ordered list 3 should be "Number Three"
188
-
188
+
189
189
  Scenario: Selecting ordered lists using no identifier
190
190
  When I select the ordered lists using no identifier
191
191
  Then I should have 3 ordered lists
@@ -196,7 +196,7 @@ Feature: Multi Elements
196
196
  And the text for h1 1 should be "H1 One"
197
197
  And the text for h1 2 should be "H1 Two"
198
198
  And the text for h1 3 should be "H1 Three"
199
-
199
+
200
200
  Scenario: Selecting h1s using no identifier
201
201
  When I select h1s using no identifier
202
202
  Then I should have 3 h1s
@@ -207,7 +207,7 @@ Feature: Multi Elements
207
207
  And the text for h2 1 should be "H2 One"
208
208
  And the text for h2 2 should be "H2 Two"
209
209
  And the text for h2 3 should be "H2 Three"
210
-
210
+
211
211
  Scenario: Selecting h2s using no identifier
212
212
  When I select h2s using no identifier
213
213
  Then I should have 3 h2s
@@ -218,7 +218,7 @@ Feature: Multi Elements
218
218
  And the text for h3 1 should be "H3 One"
219
219
  And the text for h3 2 should be "H3 Two"
220
220
  And the text for h3 3 should be "H3 Three"
221
-
221
+
222
222
  Scenario: Selecting h3s using no identifier
223
223
  When I select h3s using no identifier
224
224
  Then I should have 3 h3s
@@ -229,18 +229,18 @@ Feature: Multi Elements
229
229
  And the text for H4 1 should be "H4 One"
230
230
  And the text for H4 2 should be "H4 Two"
231
231
  And the text for H4 3 should be "H4 Three"
232
-
232
+
233
233
  Scenario: Selecting h4s using no identifier
234
234
  When I select h4s using no identifier
235
235
  Then I should have 3 h4s
236
-
236
+
237
237
  Scenario: Selecting h5s using an identifier
238
238
  When I select the h5s with the class "h5"
239
239
  Then I should have 3 h5s
240
240
  And the text for H5 1 should be "H5 One"
241
241
  And the text for H5 2 should be "H5 Two"
242
242
  And the text for H5 3 should be "H5 Three"
243
-
243
+
244
244
  Scenario: Selecting h5s using no identifier
245
245
  When I select h5s using no identifier
246
246
  Then I should have 3 h5s
@@ -251,7 +251,7 @@ Feature: Multi Elements
251
251
  And the text for H6 1 should be "H6 One"
252
252
  And the text for H6 2 should be "H6 Two"
253
253
  And the text for H6 3 should be "H6 Three"
254
-
254
+
255
255
  Scenario: Selecting h6s using no identifier
256
256
  When I select h6s using no identifier
257
257
  Then I should have 3 h6s
@@ -295,7 +295,7 @@ Feature: Multi Elements
295
295
  And the text of div 1 should be "Div 1"
296
296
  And the text of div 2 should be "Div 2"
297
297
  And the text of div 3 should be "Div 3"
298
-
298
+
299
299
  Scenario: Selecting all divs using a block instead of an identifier
300
300
  When I select the divs using a block
301
301
  Then I should have 3 divs
@@ -421,35 +421,35 @@ Feature: Multi Elements
421
421
  And the text for h1 1 should be "H1 One"
422
422
  And the text for h1 2 should be "H1 Two"
423
423
  And the text for h1 3 should be "H1 Three"
424
-
424
+
425
425
  Scenario: Selecting h2s based on a class declaration
426
426
  When I select the h2s using the generated method
427
427
  Then I should have 3 h2s
428
428
  And the text for h2 1 should be "H2 One"
429
429
  And the text for h2 2 should be "H2 Two"
430
430
  And the text for h2 3 should be "H2 Three"
431
-
431
+
432
432
  Scenario: Selecting h3s based on a class declaration
433
433
  When I select the h3s using the generated method
434
434
  Then I should have 3 h3s
435
435
  And the text for h3 1 should be "H3 One"
436
436
  And the text for h3 2 should be "H3 Two"
437
437
  And the text for h3 3 should be "H3 Three"
438
-
438
+
439
439
  Scenario: Selecting h4s based on a class declaration
440
440
  When I select the h4s using the generated method
441
441
  Then I should have 3 h4s
442
442
  And the text for H4 1 should be "H4 One"
443
443
  And the text for H4 2 should be "H4 Two"
444
444
  And the text for H4 3 should be "H4 Three"
445
-
445
+
446
446
  Scenario: Selecting h5s based on a class declaration
447
447
  When I select the h5s using the generated method
448
448
  Then I should have 3 h5s
449
449
  And the text for H5 1 should be "H5 One"
450
450
  And the text for H5 2 should be "H5 Two"
451
451
  And the text for H5 3 should be "H5 Three"
452
-
452
+
453
453
  Scenario: Selecting h6s based on a class declaration
454
454
  When I select the h6s using the generated method
455
455
  Then I should have 3 h6s
@@ -490,3 +490,9 @@ Feature: Multi Elements
490
490
  Then I should have 2 bs
491
491
  And the text for b 1 should be "One B"
492
492
  And the text for b 2 should be "Two B"
493
+
494
+ Scenario: Selecting is using an identifier
495
+ When I select the is
496
+ Then I should have 2 is
497
+ And the text for i 1 should be "One I"
498
+ And the text for i 2 should be "Two I"