page-object 0.0.5 → 0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ChangeLog +46 -1
- data/README.md +2 -0
- data/cucumber.yml +2 -2
- data/features/button.feature +11 -2
- data/features/check_box.feature +7 -5
- data/features/div.feature +7 -15
- data/features/{element.feature → element_attributes.feature} +1 -1
- data/features/form.feature +7 -6
- data/features/hidden_field.feature +9 -1
- data/features/html/static_elements.html +6 -1
- data/features/image.feature +9 -9
- data/features/link.feature +8 -1
- data/features/list_item.feature +6 -13
- data/features/ordered_list.feature +9 -17
- data/features/radio_button.feature +7 -6
- data/features/select_list.feature +12 -10
- data/features/span.feature +7 -15
- data/features/step_definitions/accessor_steps.rb +101 -26
- data/features/step_definitions/element_steps.rb +5 -0
- data/features/support/page.rb +36 -0
- data/features/table.feature +6 -15
- data/features/table_cell.feature +6 -12
- data/features/text_area.feature +7 -6
- data/features/text_field.feature +7 -6
- data/features/unordered_list.feature +9 -17
- data/lib/page-object/accessors.rb +93 -76
- data/lib/page-object/elements.rb +1 -0
- data/lib/page-object/elements/element.rb +76 -6
- data/lib/page-object/elements/option.rb +7 -0
- data/lib/page-object/elements/select_list.rb +24 -1
- data/lib/page-object/page_factory.rb +3 -3
- data/lib/page-object/platforms/selenium_select_list.rb +29 -0
- data/lib/page-object/platforms/watir_select_list.rb +30 -0
- data/lib/page-object/selenium_page_object.rb +53 -3
- data/lib/page-object/version.rb +1 -1
- data/lib/page-object/watir_page_object.rb +20 -1
- data/page-object.gemspec +2 -2
- data/spec/page-object/accessors_spec.rb +2 -2
- data/spec/page-object/elements/button_spec.rb +1 -1
- data/spec/page-object/elements/check_box_spec.rb +1 -1
- data/spec/page-object/elements/div_spec.rb +1 -1
- data/spec/page-object/elements/hidden_field_spec.rb +1 -1
- data/spec/page-object/elements/image_spec.rb +1 -1
- data/spec/page-object/elements/link_spec.rb +1 -1
- data/spec/page-object/elements/list_item_spec.rb +1 -1
- data/spec/page-object/elements/ordered_list_spec.rb +1 -1
- data/spec/page-object/elements/radio_button_spec.rb +1 -1
- data/spec/page-object/elements/select_list_spec.rb +43 -2
- data/spec/page-object/elements/span_spec.rb +1 -1
- data/spec/page-object/elements/table_row_spec.rb +5 -1
- data/spec/page-object/elements/table_spec.rb +1 -1
- data/spec/page-object/elements/text_area_spec.rb +1 -1
- data/spec/page-object/elements/text_field_spec.rb +1 -1
- data/spec/page-object/elements/unordered_list_spec.rb +1 -1
- metadata +9 -6
data/lib/page-object/version.rb
CHANGED
@@ -244,6 +244,7 @@ module PageObject
|
|
244
244
|
# See PageObject::Accessors#div
|
245
245
|
#
|
246
246
|
def div_text_for(identifier)
|
247
|
+
identifier = add_tagname_if_needed identifier, "div"
|
247
248
|
identifier = Elements::Div.watir_identifier_for identifier
|
248
249
|
@browser.div(identifier).text
|
249
250
|
end
|
@@ -253,6 +254,7 @@ module PageObject
|
|
253
254
|
# See PageObject::Accessors#div
|
254
255
|
#
|
255
256
|
def div_for(identifier)
|
257
|
+
identifier = add_tagname_if_needed identifier, "div"
|
256
258
|
identifier = Elements::Div.watir_identifier_for identifier
|
257
259
|
element = @browser.div(identifier)
|
258
260
|
PageObject::Elements::Div.new(element, :platform => :watir)
|
@@ -263,6 +265,7 @@ module PageObject
|
|
263
265
|
# See PageObject::Accessors#span
|
264
266
|
#
|
265
267
|
def span_text_for(identifier)
|
268
|
+
identifier = add_tagname_if_needed identifier, "span"
|
266
269
|
identifier = Elements::Span.watir_identifier_for identifier
|
267
270
|
@browser.span(identifier).text
|
268
271
|
end
|
@@ -272,6 +275,7 @@ module PageObject
|
|
272
275
|
# See PageObject::Accessors#span
|
273
276
|
#
|
274
277
|
def span_for(identifier)
|
278
|
+
identifier = add_tagname_if_needed identifier, "span"
|
275
279
|
identifier = Elements::Span.watir_identifier_for identifier
|
276
280
|
element = @browser.span(identifier)
|
277
281
|
PageObject::Elements::Span.new(element, :platform => :watir)
|
@@ -301,7 +305,8 @@ module PageObject
|
|
301
305
|
# See PageObject::Accessors#table
|
302
306
|
#
|
303
307
|
def table_for(identifier)
|
304
|
-
identifier =
|
308
|
+
identifier = add_tagname_if_needed identifier, "table"
|
309
|
+
identifier = Elements::Table.watir_identifier_for identifier.clone
|
305
310
|
element = @browser.table(identifier)
|
306
311
|
PageObject::Elements::Table.new(element, :platform => :watir)
|
307
312
|
end
|
@@ -311,6 +316,7 @@ module PageObject
|
|
311
316
|
# See PageObject::Accessors#cell
|
312
317
|
#
|
313
318
|
def cell_text_for(identifier)
|
319
|
+
identifier = add_tagname_if_needed identifier, "td"
|
314
320
|
identifier = Elements::TableCell.watir_identifier_for identifier
|
315
321
|
@browser.td(identifier).text
|
316
322
|
end
|
@@ -320,6 +326,7 @@ module PageObject
|
|
320
326
|
# See PageObject::Accessors#cell
|
321
327
|
#
|
322
328
|
def cell_for(identifier)
|
329
|
+
identifier = add_tagname_if_needed identifier, "td"
|
323
330
|
identifier = Elements::TableCell.watir_identifier_for identifier
|
324
331
|
element = @browser.td(identifier)
|
325
332
|
PageObject::Elements::TableCell.new(element, :platform => :watir)
|
@@ -350,6 +357,7 @@ module PageObject
|
|
350
357
|
# See PageObject::Accessors#list_item
|
351
358
|
#
|
352
359
|
def list_item_text_for(identifier)
|
360
|
+
identifier = add_tagname_if_needed identifier, "li"
|
353
361
|
identifier = Elements::ListItem.watir_identifier_for identifier
|
354
362
|
@browser.li(identifier).text
|
355
363
|
end
|
@@ -359,6 +367,7 @@ module PageObject
|
|
359
367
|
# See PageObject::Accessors#list_item
|
360
368
|
#
|
361
369
|
def list_item_for(identifier)
|
370
|
+
identifier = add_tagname_if_needed identifier, "li"
|
362
371
|
identifier = Elements::ListItem.watir_identifier_for identifier
|
363
372
|
element = @browser.li(identifier)
|
364
373
|
PageObject::Elements::ListItem.new(element, :platform => :watir)
|
@@ -369,6 +378,7 @@ module PageObject
|
|
369
378
|
# See PageObject::Accessors#unordered_list
|
370
379
|
#
|
371
380
|
def unordered_list_for(identifier)
|
381
|
+
identifier = add_tagname_if_needed identifier, "ul"
|
372
382
|
identifier = Elements::UnorderedList.watir_identifier_for identifier
|
373
383
|
element = @browser.ul(identifier)
|
374
384
|
PageObject::Elements::UnorderedList.new(element, :platform => :watir)
|
@@ -379,9 +389,18 @@ module PageObject
|
|
379
389
|
# See PageObject::Accessors#ordered_list
|
380
390
|
#
|
381
391
|
def ordered_list_for(identifier)
|
392
|
+
identifier = add_tagname_if_needed identifier, "ol"
|
382
393
|
identifier = Elements::OrderedList.watir_identifier_for identifier
|
383
394
|
element = @browser.ol(identifier)
|
384
395
|
PageObject::Elements::OrderedList.new(element, :platform => :watir)
|
385
396
|
end
|
397
|
+
|
398
|
+
private
|
399
|
+
|
400
|
+
def add_tagname_if_needed identifier, tag
|
401
|
+
return identifier if identifier.length < 2 and not identifier[:name]
|
402
|
+
identifier[:tag_name] = tag if identifier[:name]
|
403
|
+
identifier
|
404
|
+
end
|
386
405
|
end
|
387
406
|
end
|
data/page-object.gemspec
CHANGED
@@ -19,8 +19,8 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
20
|
s.require_paths = ["lib"]
|
21
21
|
|
22
|
-
s.add_dependency 'watir-webdriver', '>= 0.2.
|
23
|
-
s.add_dependency 'selenium-webdriver', '>= 0.2.
|
22
|
+
s.add_dependency 'watir-webdriver', '>= 0.2.5'
|
23
|
+
s.add_dependency 'selenium-webdriver', '>= 0.2.2'
|
24
24
|
|
25
25
|
s.add_development_dependency 'rspec', '>= 2.5.0'
|
26
26
|
s.add_development_dependency 'cucumber', '>= 0.10.2'
|
@@ -360,14 +360,14 @@ describe PageObject::Accessors do
|
|
360
360
|
it "should check a check box element" do
|
361
361
|
selenium_browser.should_receive(:find_element).twice.and_return(selenium_browser)
|
362
362
|
selenium_browser.should_receive(:selected?).and_return(false)
|
363
|
-
selenium_browser.should_receive(:
|
363
|
+
selenium_browser.should_receive(:click)
|
364
364
|
selenium_page_object.check_active
|
365
365
|
end
|
366
366
|
|
367
367
|
it "should clear a check box element" do
|
368
368
|
selenium_browser.should_receive(:find_element).twice.and_return(selenium_browser)
|
369
369
|
selenium_browser.should_receive(:selected?).and_return(true)
|
370
|
-
selenium_browser.should_receive(:
|
370
|
+
selenium_browser.should_receive(:click)
|
371
371
|
selenium_page_object.uncheck_active
|
372
372
|
end
|
373
373
|
|
@@ -13,7 +13,7 @@ describe PageObject::Elements::Button do
|
|
13
13
|
end
|
14
14
|
|
15
15
|
it "should map selenium types to same" do
|
16
|
-
[:class, :id, :name, :xpath].each do |t|
|
16
|
+
[:class, :id, :index, :name, :xpath].each do |t|
|
17
17
|
key, value = button.selenium_identifier_for t => 'value'
|
18
18
|
key.should == t
|
19
19
|
end
|
@@ -12,7 +12,7 @@ describe PageObject::Elements::CheckBox do
|
|
12
12
|
end
|
13
13
|
end
|
14
14
|
it "should map selenium types to same" do
|
15
|
-
[:class, :id, :name, :xpath].each do |t|
|
15
|
+
[:class, :id, :name, :xpath, :index].each do |t|
|
16
16
|
key, value = checkbox.selenium_identifier_for t => 'value'
|
17
17
|
key.should == t
|
18
18
|
end
|
@@ -13,7 +13,7 @@ describe PageObject::Elements::Div do
|
|
13
13
|
end
|
14
14
|
|
15
15
|
it "should map selenium types to same" do
|
16
|
-
[:class, :id, :name, :xpath].each do |t|
|
16
|
+
[:class, :id, :index, :name, :xpath].each do |t|
|
17
17
|
key, value = div.selenium_identifier_for t => 'value'
|
18
18
|
key.should == t
|
19
19
|
end
|
@@ -18,7 +18,7 @@ describe PageObject::Elements::HiddenField do
|
|
18
18
|
end
|
19
19
|
|
20
20
|
it "should map selenium types to same" do
|
21
|
-
[:class, :css, :id, :name, :xpath].each do |t|
|
21
|
+
[:class, :css, :id, :name, :xpath, :index].each do |t|
|
22
22
|
key, value = hiddenfield.selenium_identifier_for t => 'value'
|
23
23
|
key.should == t
|
24
24
|
end
|
@@ -13,7 +13,7 @@ describe PageObject::Elements::Image do
|
|
13
13
|
end
|
14
14
|
|
15
15
|
it "should map selenium types to same" do
|
16
|
-
[:class, :id, :name, :xpath].each do |t|
|
16
|
+
[:class, :id, :index, :name, :xpath].each do |t|
|
17
17
|
key, value = image.selenium_identifier_for t => 'value'
|
18
18
|
key.should == t
|
19
19
|
end
|
@@ -20,7 +20,7 @@ describe PageObject::Elements::Link do
|
|
20
20
|
end
|
21
21
|
|
22
22
|
it "should map selenium types to same" do
|
23
|
-
[:class, :id, :link, :link_text, :name, :xpath].each do |t|
|
23
|
+
[:class, :id, :link, :link_text, :name, :xpath, :index].each do |t|
|
24
24
|
key, value = link.selenium_identifier_for t => 'value'
|
25
25
|
key.should == t
|
26
26
|
end
|
@@ -13,7 +13,7 @@ describe PageObject::Elements::ListItem do
|
|
13
13
|
end
|
14
14
|
|
15
15
|
it "should map selenium types to same" do
|
16
|
-
[:class, :id, :name, :xpath].each do |t|
|
16
|
+
[:class, :id, :index, :name, :xpath].each do |t|
|
17
17
|
key, value = list_item.selenium_identifier_for t => 'value'
|
18
18
|
key.should == t
|
19
19
|
end
|
@@ -13,7 +13,7 @@ describe PageObject::Elements::OrderedList do
|
|
13
13
|
end
|
14
14
|
|
15
15
|
it "should map selenium types to same" do
|
16
|
-
[:class, :id, :name, :xpath].each do |t|
|
16
|
+
[:class, :id, :index, :name, :xpath].each do |t|
|
17
17
|
key, value = ol.selenium_identifier_for t => 'value'
|
18
18
|
key.should == t
|
19
19
|
end
|
@@ -12,7 +12,7 @@ describe PageObject::Elements::RadioButton do
|
|
12
12
|
end
|
13
13
|
end
|
14
14
|
it "should map selenium types to same" do
|
15
|
-
[:class, :id, :name, :xpath].each do |t|
|
15
|
+
[:class, :id, :name, :xpath, :index].each do |t|
|
16
16
|
key, value = radiobutton.selenium_identifier_for t => 'value'
|
17
17
|
key.should == t
|
18
18
|
end
|
@@ -13,10 +13,51 @@ describe PageObject::Elements::SelectList do
|
|
13
13
|
end
|
14
14
|
|
15
15
|
it "should map selenium types to same" do
|
16
|
-
[:class, :id, :name, :xpath].each do |t|
|
16
|
+
[:class, :id, :name, :xpath, :index].each do |t|
|
17
17
|
key, value = selectlist.selenium_identifier_for t => 'value'
|
18
18
|
key.should == t
|
19
19
|
end
|
20
20
|
end
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
|
+
describe "interface" do
|
24
|
+
let(:sel_list) { double('select_list') }
|
25
|
+
let(:opts) { [sel_list, sel_list] }
|
26
|
+
|
27
|
+
before(:each) do
|
28
|
+
sel_list.stub(:find_elements).and_return(sel_list)
|
29
|
+
sel_list.stub(:each)
|
30
|
+
end
|
31
|
+
|
32
|
+
context "for watir" do
|
33
|
+
it "should return an option when indexed" do
|
34
|
+
watir_sel_list = PageObject::Elements::SelectList.new(sel_list, :platform => :watir)
|
35
|
+
sel_list.stub(:wd).and_return(sel_list)
|
36
|
+
sel_list.should_receive(:find_elements).with(:xpath, ".//child::option").and_return(opts)
|
37
|
+
watir_sel_list[0].should be_instance_of PageObject::Elements::Option
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should return an array of options" do
|
41
|
+
watir_sel_list = PageObject::Elements::SelectList.new(sel_list, :platform => :watir)
|
42
|
+
sel_list.stub(:wd).and_return(sel_list)
|
43
|
+
sel_list.should_receive(:find_elements).with(:xpath, ".//child::option").and_return(opts)
|
44
|
+
watir_sel_list.options.size.should == 2
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
|
49
|
+
context "for selenium" do
|
50
|
+
it "should return an option when indexed" do
|
51
|
+
selenium_sel_list = PageObject::Elements::SelectList.new(sel_list, :platform => :selenium)
|
52
|
+
sel_list.should_receive(:find_elements).with(:xpath, ".//child::option").and_return(opts)
|
53
|
+
selenium_sel_list[1].should be_instance_of PageObject::Elements::Option
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should return an array of options" do
|
57
|
+
selenium_sel_list = PageObject::Elements::SelectList.new(sel_list, :platform => :selenium)
|
58
|
+
sel_list.should_receive(:find_elements).with(:xpath, ".//child::option").and_return(opts)
|
59
|
+
selenium_sel_list.options.size.should == 2
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -13,7 +13,7 @@ describe PageObject::Elements::Span do
|
|
13
13
|
end
|
14
14
|
|
15
15
|
it "should map selenium types to same" do
|
16
|
-
[:class, :id, :name, :xpath].each do |t|
|
16
|
+
[:class, :id, :index, :name, :xpath].each do |t|
|
17
17
|
key, value = span.selenium_identifier_for t => 'value'
|
18
18
|
key.should == t
|
19
19
|
end
|
@@ -32,6 +32,10 @@ describe PageObject::Elements::TableRow do
|
|
32
32
|
end
|
33
33
|
|
34
34
|
context "for watir" do
|
35
|
+
before(:each) do
|
36
|
+
table_row_driver.stub(:find_elements).and_return(table_row_driver)
|
37
|
+
end
|
38
|
+
|
35
39
|
it "should return a table cell when indexed" do
|
36
40
|
table_row = PageObject::Elements::TableRow.new(table_row_driver, :platform => :watir)
|
37
41
|
table_row_driver.should_receive(:[]).with(1).and_return(table_cell)
|
@@ -40,7 +44,7 @@ describe PageObject::Elements::TableRow do
|
|
40
44
|
|
41
45
|
it "should return the number of columns" do
|
42
46
|
table_row = PageObject::Elements::TableRow.new(table_row_driver, :platform => :watir)
|
43
|
-
table_row_driver.
|
47
|
+
table_row_driver.stub(:wd).and_return(table_row_driver)
|
44
48
|
table_row_driver.should_receive(:find_elements).with(:xpath, ".//child::td|th").and_return(table_row_driver)
|
45
49
|
table_row_driver.should_receive(:size).and_return(3)
|
46
50
|
table_row.columns.should == 3
|
@@ -11,7 +11,7 @@ describe PageObject::Elements::Table do
|
|
11
11
|
end
|
12
12
|
|
13
13
|
it "should map selenium types to same" do
|
14
|
-
[:class, :id, :name, :xpath].each do |t|
|
14
|
+
[:class, :id, :index, :name, :xpath].each do |t|
|
15
15
|
key, value = PageObject::Elements::Table.selenium_identifier_for t => 'value'
|
16
16
|
key.should == t
|
17
17
|
end
|
@@ -18,7 +18,7 @@ describe PageObject::Elements::TextArea do
|
|
18
18
|
end
|
19
19
|
|
20
20
|
it "should map selenium types to same" do
|
21
|
-
[:class, :css, :id, :name, :xpath].each do |t|
|
21
|
+
[:class, :css, :id, :name, :xpath, :index].each do |t|
|
22
22
|
key, value = textarea.selenium_identifier_for t => 'value'
|
23
23
|
key.should == t
|
24
24
|
end
|
@@ -18,7 +18,7 @@ describe PageObject::Elements::TextField do
|
|
18
18
|
end
|
19
19
|
|
20
20
|
it "should map selenium types to same" do
|
21
|
-
[:class, :css, :id, :name, :xpath].each do |t|
|
21
|
+
[:class, :css, :id, :name, :xpath, :index].each do |t|
|
22
22
|
key, value = textfield.selenium_identifier_for t => 'value'
|
23
23
|
key.should == t
|
24
24
|
end
|
@@ -13,7 +13,7 @@ describe PageObject::Elements::UnorderedList do
|
|
13
13
|
end
|
14
14
|
|
15
15
|
it "should map selenium types to same" do
|
16
|
-
[:class, :id, :name, :xpath].each do |t|
|
16
|
+
[:class, :id, :index, :name, :xpath].each do |t|
|
17
17
|
key, value = ul.selenium_identifier_for t => 'value'
|
18
18
|
key.should == t
|
19
19
|
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: page-object
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.
|
5
|
+
version: "0.1"
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Jeff Morgan
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-
|
13
|
+
date: 2011-07-01 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: watir-webdriver
|
@@ -20,7 +20,7 @@ dependencies:
|
|
20
20
|
requirements:
|
21
21
|
- - ">="
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: 0.2.
|
23
|
+
version: 0.2.5
|
24
24
|
type: :runtime
|
25
25
|
version_requirements: *id001
|
26
26
|
- !ruby/object:Gem::Dependency
|
@@ -31,7 +31,7 @@ dependencies:
|
|
31
31
|
requirements:
|
32
32
|
- - ">="
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: 0.2.
|
34
|
+
version: 0.2.2
|
35
35
|
type: :runtime
|
36
36
|
version_requirements: *id002
|
37
37
|
- !ruby/object:Gem::Dependency
|
@@ -89,7 +89,7 @@ files:
|
|
89
89
|
- features/button.feature
|
90
90
|
- features/check_box.feature
|
91
91
|
- features/div.feature
|
92
|
-
- features/
|
92
|
+
- features/element_attributes.feature
|
93
93
|
- features/form.feature
|
94
94
|
- features/hidden_field.feature
|
95
95
|
- features/html/images/circle.png
|
@@ -128,6 +128,7 @@ files:
|
|
128
128
|
- lib/page-object/elements/image.rb
|
129
129
|
- lib/page-object/elements/link.rb
|
130
130
|
- lib/page-object/elements/list_item.rb
|
131
|
+
- lib/page-object/elements/option.rb
|
131
132
|
- lib/page-object/elements/ordered_list.rb
|
132
133
|
- lib/page-object/elements/radio_button.rb
|
133
134
|
- lib/page-object/elements/select_list.rb
|
@@ -145,6 +146,7 @@ files:
|
|
145
146
|
- lib/page-object/platforms/selenium_image.rb
|
146
147
|
- lib/page-object/platforms/selenium_link.rb
|
147
148
|
- lib/page-object/platforms/selenium_ordered_list.rb
|
149
|
+
- lib/page-object/platforms/selenium_select_list.rb
|
148
150
|
- lib/page-object/platforms/selenium_table.rb
|
149
151
|
- lib/page-object/platforms/selenium_table_row.rb
|
150
152
|
- lib/page-object/platforms/selenium_unordered_list.rb
|
@@ -152,6 +154,7 @@ files:
|
|
152
154
|
- lib/page-object/platforms/watir_form.rb
|
153
155
|
- lib/page-object/platforms/watir_image.rb
|
154
156
|
- lib/page-object/platforms/watir_ordered_list.rb
|
157
|
+
- lib/page-object/platforms/watir_select_list.rb
|
155
158
|
- lib/page-object/platforms/watir_table.rb
|
156
159
|
- lib/page-object/platforms/watir_table_row.rb
|
157
160
|
- lib/page-object/platforms/watir_unordered_list.rb
|
@@ -212,7 +215,7 @@ test_files:
|
|
212
215
|
- features/button.feature
|
213
216
|
- features/check_box.feature
|
214
217
|
- features/div.feature
|
215
|
-
- features/
|
218
|
+
- features/element_attributes.feature
|
216
219
|
- features/form.feature
|
217
220
|
- features/hidden_field.feature
|
218
221
|
- features/html/images/circle.png
|