cello 0.0.23 → 0.0.25
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/cello.gemspec +10 -13
- data/features/access_element_inside_iframe.feature +8 -0
- data/features/browser.feature +7 -1
- data/features/{pages → browsers}/firefox.rb +1 -1
- data/features/{pages → browsers}/headless.rb +0 -0
- data/features/pages/iframe.rb +14 -0
- data/features/pages/input_fields.rb +4 -1
- data/features/pages/input_fields_module.rb +12 -0
- data/features/pages/response_page.rb +4 -7
- data/features/site/iframe.html +11 -0
- data/features/step_definitions/browser.rb +9 -0
- data/features/step_definitions/common_steps.rb +15 -0
- data/features/step_definitions/radio.rb +7 -7
- data/features/step_definitions/select.rb +1 -1
- data/features/step_definitions/textarea.rb +9 -9
- data/features/step_definitions/textfield.rb +10 -10
- data/lib/cello.rb +1 -0
- data/lib/cello/pageobjects/browser.rb +6 -6
- data/lib/cello/pageobjects/html_elements/element_helper.rb +3 -4
- data/lib/cello/pageobjects/html_elements/iframe_helper.rb +21 -0
- data/lib/cello/pageobjects/iframe.rb +11 -0
- data/lib/cello/pageobjects/page.rb +4 -4
- data/lib/cello/pageobjects/recorder.rb +7 -7
- data/lib/cello/version.rb +1 -1
- data/spec/checkbox_spec.rb +4 -4
- data/spec/element_spec.rb +5 -5
- data/spec/select_spec.rb +2 -6
- data/spec/spec_helper.rb +1 -1
- data/spec/textarea_spec.rb +9 -9
- data/spec/textfield_spec.rb +9 -9
- metadata +92 -80
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c9bea50c1e1c99955d16569b8e6f0590861b1c00
|
4
|
+
data.tar.gz: 6f1eb4111de8aaafeaa7810bf30f50b8b6171a90
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ecaead65fa5527b56f63c14f7f9d3f34938e8e01906c946ee941aecb95905c3dbe58594f15dcbc5163d8d047530e4f117cb24b1136c4460698635e13e0f35362
|
7
|
+
data.tar.gz: 656bd32c1d0143ad22ed40703ed5d1bec0b65d214bdf7975b758d1f51f355908610001d2c4b5a2bbb52ba4b67190498f4a1c22b915e4d6d21ca1bf04f9bf2c7c
|
data/cello.gemspec
CHANGED
@@ -21,19 +21,16 @@ Gem::Specification.new do |s|
|
|
21
21
|
|
22
22
|
s.require_paths = ["lib"]
|
23
23
|
|
24
|
-
s.add_development_dependency 'simplecov'
|
25
|
-
s.add_development_dependency 'pry'
|
26
|
-
s.add_development_dependency '
|
27
|
-
s.add_development_dependency '
|
28
|
-
s.add_development_dependency '
|
29
|
-
s.add_development_dependency 'rspec'
|
30
|
-
s.add_development_dependency 'headless'
|
31
|
-
s.add_development_dependency 'nyan-cat-formatter'
|
24
|
+
s.add_development_dependency 'simplecov', '~> 0'
|
25
|
+
s.add_development_dependency 'pry', '~> 0'
|
26
|
+
s.add_development_dependency 'rake', '~> 10.4.2'
|
27
|
+
s.add_development_dependency 'headless', '~> 0'
|
28
|
+
s.add_development_dependency 'nyan-cat-formatter', '~> 0'
|
32
29
|
|
33
|
-
s.add_dependency 'cucumber'
|
34
|
-
s.add_dependency 'rspec'
|
35
|
-
s.add_dependency 'watir-webdriver'
|
36
|
-
s.add_dependency 'sourcify'
|
37
|
-
s.add_dependency 'icecream'
|
30
|
+
s.add_dependency 'cucumber', '~> 2.0.0'
|
31
|
+
s.add_dependency 'rspec', '~> 3.2.0'
|
32
|
+
s.add_dependency 'watir-webdriver', '~> 0.7.0'
|
33
|
+
s.add_dependency 'sourcify', '~> 0.5.0'
|
34
|
+
s.add_dependency 'icecream', '~> 0.0.14'
|
38
35
|
|
39
36
|
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
Feature: Access elements inside Iframe
|
2
|
+
As developer
|
3
|
+
I want access elements inside an iframe
|
4
|
+
|
5
|
+
@wip
|
6
|
+
Scenario: Write in a element textfield using id
|
7
|
+
Given I am on a page that has a textfield inside a iframe
|
8
|
+
Then I should be able to write "Test" in a element inside the iframe using id
|
data/features/browser.feature
CHANGED
@@ -8,13 +8,19 @@ Feature: Browser
|
|
8
8
|
And and I ask to visit the page
|
9
9
|
Then I should see the page inputs
|
10
10
|
|
11
|
+
Scenario: Get another context
|
12
|
+
Given I have a browser with no context (blank page)
|
13
|
+
When I ask for the context iframe
|
14
|
+
And and I ask to visit the page
|
15
|
+
Then I should see the page iframe
|
16
|
+
|
11
17
|
Scenario: Fill a textfield on a context
|
12
18
|
Given I am in the inputs context
|
13
19
|
When I ask for fill the textfield
|
14
20
|
Then I should see the filled textfield
|
15
21
|
And I should be able to close the browser
|
16
22
|
|
17
|
-
@pending
|
23
|
+
@pending
|
18
24
|
Scenario: Pass by two different contexts
|
19
25
|
Given I am in the inputs context
|
20
26
|
When I ask for fill the textfield
|
File without changes
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require "cello"
|
2
|
+
require File.dirname(__FILE__) + "/input_fields_module.rb"
|
3
|
+
|
4
|
+
module StaticPages
|
5
|
+
module Site
|
6
|
+
class IframePage < Cello::PageObjects::Page
|
7
|
+
iframe "check", StaticPages::Site::InputIframe, :id => 'annoying-iframe'
|
8
|
+
|
9
|
+
def url
|
10
|
+
'file://' + File.dirname(__FILE__) + '/../site/iframe.html'
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -3,6 +3,7 @@ require "cello"
|
|
3
3
|
module StaticPages
|
4
4
|
module Site
|
5
5
|
class InputPage < Cello::PageObjects::Page
|
6
|
+
|
6
7
|
element :text_field, :text_field, :id => 'text1'
|
7
8
|
element :text_fieldname, :text_field, :name => 'text1'
|
8
9
|
element :text_fieldxpath, :text_field, :xpah, '//*[@id="text1"]'
|
@@ -12,7 +13,9 @@ module StaticPages
|
|
12
13
|
element :select, :select, :id => 'select1'
|
13
14
|
element :link, :link, :id => 'link1'
|
14
15
|
|
15
|
-
url
|
16
|
+
def url
|
17
|
+
'file://' + File.dirname(__FILE__) + '/../site/inputs.html'
|
18
|
+
end
|
16
19
|
|
17
20
|
end
|
18
21
|
end
|
@@ -1,17 +1,14 @@
|
|
1
|
-
require
|
1
|
+
require "cello"
|
2
2
|
|
3
3
|
module StaticPages
|
4
4
|
module Site
|
5
5
|
class ResponsePage < Cello::PageObjects::Page
|
6
6
|
element :text, :text_field, :id => 'new_element'
|
7
|
-
|
8
|
-
def get_url
|
9
|
-
'file://' + File.dirname(__FILE__) + '/../site/read_page.html'
|
10
|
-
end
|
11
7
|
|
12
|
-
def
|
13
|
-
|
8
|
+
def url
|
9
|
+
'file://' + File.dirname(__FILE__) + '/../site/read_page.html'
|
14
10
|
end
|
11
|
+
|
15
12
|
end
|
16
13
|
end
|
17
14
|
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<html>
|
2
|
+
<head>
|
3
|
+
<title> Iframe page </title>
|
4
|
+
</head>
|
5
|
+
<div>
|
6
|
+
<div> <p><b>Textfield:</b></p>
|
7
|
+
<div>Textfield with id text1</div><div> <input id='text1' type='text'></div>
|
8
|
+
</div>
|
9
|
+
</div>
|
10
|
+
<iframe src=".iframe.html" id="annoying-iframe"></iframe>
|
11
|
+
</html>
|
@@ -8,6 +8,10 @@ When /^I ask for the context inputs$/ do
|
|
8
8
|
@browser.context StaticPages::Site::InputPage
|
9
9
|
end
|
10
10
|
|
11
|
+
When /^I ask for the context iframe$/ do
|
12
|
+
@browser.context StaticPages::Site::IframePage
|
13
|
+
end
|
14
|
+
|
11
15
|
When /^and I ask to visit the page$/ do
|
12
16
|
@browser.visit
|
13
17
|
end
|
@@ -17,6 +21,11 @@ Then /^I should see the page inputs$/ do
|
|
17
21
|
@browser.close
|
18
22
|
end
|
19
23
|
|
24
|
+
Then /^I should see the page iframe$/ do
|
25
|
+
@browser.title.should == "Iframe page"
|
26
|
+
@browser.close
|
27
|
+
end
|
28
|
+
|
20
29
|
Given /^I am in the inputs context$/ do
|
21
30
|
steps %Q{
|
22
31
|
Given I have a browser with no context (blank page)
|
@@ -15,3 +15,18 @@ end
|
|
15
15
|
And /^There is a checkbox checked$/ do
|
16
16
|
@browser.checkbox_check
|
17
17
|
end
|
18
|
+
|
19
|
+
Given /^I am on a page that has a textfield inside a iframe$/ do
|
20
|
+
@browser.should be nil
|
21
|
+
@browser = StaticPages::Site::Phantom.new
|
22
|
+
@browser.title.should == ""
|
23
|
+
@browser.context StaticPages::Site::IframePage
|
24
|
+
@browser.title.should == ""
|
25
|
+
@browser.visit
|
26
|
+
@browser.title.should == "Iframe page"
|
27
|
+
end
|
28
|
+
|
29
|
+
Then /^I should be able to write "(.*?)" in a element inside the iframe using id$/ do |text|
|
30
|
+
@browser.text_inside_iframe_fill_with(text)
|
31
|
+
@browser.close
|
32
|
+
end
|
@@ -9,7 +9,7 @@ end
|
|
9
9
|
|
10
10
|
Given /^the option "(.*?)" is setted$/ do |option|
|
11
11
|
@browser.radios_set(option)
|
12
|
-
@browser.radios_checked_option_is?(option).should
|
12
|
+
@browser.radios_checked_option_is?(option).should be true
|
13
13
|
end
|
14
14
|
|
15
15
|
Then /^I should be able to know that the option "(.*?)" is setted$/ do |option|
|
@@ -17,32 +17,32 @@ Then /^I should be able to know that the option "(.*?)" is setted$/ do |option|
|
|
17
17
|
end
|
18
18
|
|
19
19
|
Then /^I should be able to know if the option "(.*?)" is not setted$/ do |option|
|
20
|
-
@browser.radios_checked_option_is_not?(option).should
|
20
|
+
@browser.radios_checked_option_is_not?(option).should be true
|
21
21
|
@browser.close
|
22
22
|
end
|
23
23
|
|
24
24
|
Then /^I should fail when ask if the the option "(.*?)" is not setted$/ do |option|
|
25
|
-
@browser.radios_checked_option_is_not?(option).should
|
25
|
+
@browser.radios_checked_option_is_not?(option).should be false
|
26
26
|
@browser.close
|
27
27
|
end
|
28
28
|
|
29
29
|
Then /^I should be able to know if the option "(.*?)" is setted$/ do |option|
|
30
|
-
@browser.radios_checked_option_is?(option).should
|
30
|
+
@browser.radios_checked_option_is?(option).should be true
|
31
31
|
@browser.close
|
32
32
|
end
|
33
33
|
|
34
34
|
Then /^I should fail when ask if the option "(.*?)" is setted$/ do |option|
|
35
|
-
@browser.radios_checked_option_is?(option).should
|
35
|
+
@browser.radios_checked_option_is?(option).should be false
|
36
36
|
@browser.close
|
37
37
|
end
|
38
38
|
|
39
39
|
Then /^I should be able to know if there is some options setted$/ do
|
40
|
-
@browser.radios_has_selected_option?.should
|
40
|
+
@browser.radios_has_selected_option?.should be true
|
41
41
|
@browser.close
|
42
42
|
end
|
43
43
|
|
44
44
|
Then /^I should fail when ask if there is some options setted$/ do
|
45
|
-
@browser.radios_has_selected_option?.should
|
45
|
+
@browser.radios_has_selected_option?.should be false
|
46
46
|
@browser.close
|
47
47
|
end
|
48
48
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require "cello"
|
2
2
|
|
3
3
|
Then /^I should can knows if this page has a textarea$/ do
|
4
|
-
@browser.textarea_is_real?.should
|
4
|
+
@browser.textarea_is_real?.should be true
|
5
5
|
@browser.close
|
6
6
|
end
|
7
7
|
|
@@ -16,42 +16,42 @@ Then /^I shoud be able to get the text "(.*?)" from this textarea$/ do |text|
|
|
16
16
|
end
|
17
17
|
|
18
18
|
Then /^I should be able to know if the text on the textarea does not contais the text "(.*?)"$/ do |text|
|
19
|
-
@browser.textarea_dont_contain(text).should
|
19
|
+
@browser.textarea_dont_contain(text).should be true
|
20
20
|
@browser.close
|
21
21
|
end
|
22
22
|
|
23
23
|
Then /^I should fail when ask if the text on the textarea does not contais the text "(.*?)"$/ do |text|
|
24
|
-
@browser.textarea_dont_contain(text).should
|
24
|
+
@browser.textarea_dont_contain(text).should be false
|
25
25
|
@browser.close
|
26
26
|
end
|
27
27
|
|
28
28
|
Then /^I should be able to know if the text on the textarea contais the text "(.*?)"$/ do |text|
|
29
|
-
@browser.textarea_contains(text).should
|
29
|
+
@browser.textarea_contains(text).should be true
|
30
30
|
@browser.close
|
31
31
|
end
|
32
32
|
|
33
33
|
Then /^I should fail when ask if the text on the textarea contais the text "(.*?)"$/ do |text|
|
34
|
-
@browser.textarea_contains(text).should
|
34
|
+
@browser.textarea_contains(text).should be false
|
35
35
|
@browser.close
|
36
36
|
end
|
37
37
|
|
38
38
|
Then /^I should be able to know if the text on the textarea is exacly the text "(.*?)"$/ do |text|
|
39
|
-
@browser.textarea_text_is(text).should
|
39
|
+
@browser.textarea_text_is(text).should be true
|
40
40
|
@browser.close
|
41
41
|
end
|
42
42
|
|
43
43
|
Then /^I should fail when ask if the text on the textarea is exacly the text "(.*?)"$/ do |text|
|
44
|
-
@browser.textarea_text_is(text).should
|
44
|
+
@browser.textarea_text_is(text).should be false
|
45
45
|
@browser.close
|
46
46
|
end
|
47
47
|
|
48
48
|
Then /^I should be able to know if the textarea is empty$/ do
|
49
|
-
@browser.textarea_is_empty?.should
|
49
|
+
@browser.textarea_is_empty?.should be true
|
50
50
|
@browser.close
|
51
51
|
end
|
52
52
|
|
53
53
|
Then /^I should fail when ask if the textarea is empty$/ do
|
54
|
-
@browser.textarea_is_empty?.should
|
54
|
+
@browser.textarea_is_empty?.should be false
|
55
55
|
@browser.close
|
56
56
|
end
|
57
57
|
|
@@ -1,12 +1,12 @@
|
|
1
1
|
require "cello"
|
2
2
|
|
3
3
|
Then /^I should can knows if this page has a textfield named "(.*?)"$/ do |text_field_name|
|
4
|
-
@browser.send("#{text_field_name}_is_real?").should
|
4
|
+
@browser.send("#{text_field_name}_is_real?").should be true
|
5
5
|
@browser.close
|
6
6
|
end
|
7
7
|
|
8
8
|
Then /^I should fail when ask if this page has a textfield named "(.*?)"$/ do |text_field_name|
|
9
|
-
@browser.send("#{text_field_name}_is_real?").should
|
9
|
+
@browser.send("#{text_field_name}_is_real?").should be false
|
10
10
|
@browser.close
|
11
11
|
end
|
12
12
|
|
@@ -27,42 +27,42 @@ Then /^I shoud fail to try get the text "(.*?)" from this textfield$/ do |text|
|
|
27
27
|
end
|
28
28
|
|
29
29
|
Then /^I should be able to know if the text on the textfield does not contais the text "(.*?)"$/ do |text|
|
30
|
-
@browser.text_field_dont_contain(text).should
|
30
|
+
@browser.text_field_dont_contain(text).should be true
|
31
31
|
@browser.close
|
32
32
|
end
|
33
33
|
|
34
34
|
Then /^I should fail when ask if the text on the textfield does not contais the text "(.*?)"$/ do |text|
|
35
|
-
@browser.text_field_dont_contain(text).should
|
35
|
+
@browser.text_field_dont_contain(text).should be false
|
36
36
|
@browser.close
|
37
37
|
end
|
38
38
|
|
39
39
|
Then /^I should be able to know if the text on the textfield contais the text "(.*?)"$/ do |text|
|
40
|
-
@browser.text_field_contains(text).should
|
40
|
+
@browser.text_field_contains(text).should be true
|
41
41
|
@browser.close
|
42
42
|
end
|
43
43
|
|
44
44
|
Then /^I should fail when ask if the text on the textfield contais the text "(.*?)"$/ do |text|
|
45
|
-
@browser.text_field_contains(text).should
|
45
|
+
@browser.text_field_contains(text).should be false
|
46
46
|
@browser.close
|
47
47
|
end
|
48
48
|
|
49
49
|
Then /^I should be able to know if the text on the textfield is exacly the text "(.*?)"$/ do |text|
|
50
|
-
@browser.text_field_text_is(text).should
|
50
|
+
@browser.text_field_text_is(text).should be true
|
51
51
|
@browser.close
|
52
52
|
end
|
53
53
|
|
54
54
|
Then /^I should fail when ask if the text on the textfield is exacly the text "(.*?)"$/ do |text|
|
55
|
-
@browser.text_field_text_is(text).should
|
55
|
+
@browser.text_field_text_is(text).should be false
|
56
56
|
@browser.close
|
57
57
|
end
|
58
58
|
|
59
59
|
Then /^I should be able to know if the textfield is empty$/ do
|
60
|
-
@browser.text_field_is_empty?.should
|
60
|
+
@browser.text_field_is_empty?.should be true
|
61
61
|
@browser.close
|
62
62
|
end
|
63
63
|
|
64
64
|
Then /^I should fail when ask if the textfield is empty$/ do
|
65
|
-
@browser.text_field_is_empty?.should
|
65
|
+
@browser.text_field_is_empty?.should be false
|
66
66
|
@browser.close
|
67
67
|
end
|
68
68
|
|
data/lib/cello.rb
CHANGED
@@ -13,6 +13,7 @@ require File.join(File.dirname(__FILE__), './cello/commands')
|
|
13
13
|
|
14
14
|
#internal dependences
|
15
15
|
require File.join(File.dirname(__FILE__), './cello/pageobjects/page')
|
16
|
+
require File.join(File.dirname(__FILE__), './cello/pageobjects/iframe')
|
16
17
|
require File.join(File.dirname(__FILE__), './cello/pageobjects/browser')
|
17
18
|
require File.join(File.dirname(__FILE__), './cello/pageobjects/recorder')
|
18
19
|
|
@@ -7,7 +7,7 @@ module Cello
|
|
7
7
|
attr_accessor :context
|
8
8
|
attr_reader :browser
|
9
9
|
|
10
|
-
def initialize
|
10
|
+
def initialize browser
|
11
11
|
@browser = Watir::Browser.new browser
|
12
12
|
end
|
13
13
|
|
@@ -15,11 +15,11 @@ module Cello
|
|
15
15
|
@context.visit
|
16
16
|
end
|
17
17
|
|
18
|
-
def context
|
19
|
-
@context = page.new
|
18
|
+
def context page
|
19
|
+
@context = page.new @browser
|
20
20
|
end
|
21
21
|
|
22
|
-
def search
|
22
|
+
def search text
|
23
23
|
@browser.text.include? text
|
24
24
|
end
|
25
25
|
|
@@ -39,8 +39,8 @@ module Cello
|
|
39
39
|
#pending
|
40
40
|
end
|
41
41
|
|
42
|
-
def method_missing
|
43
|
-
@context.send
|
42
|
+
def method_missing method_name, *arguments
|
43
|
+
@context.send method_name, *arguments
|
44
44
|
end
|
45
45
|
end
|
46
46
|
end
|
@@ -11,15 +11,14 @@ module Cello
|
|
11
11
|
def element(name, type, *args)
|
12
12
|
class_eval do
|
13
13
|
define_method name do
|
14
|
-
engine.
|
14
|
+
engine.send(type, *args)
|
15
15
|
end
|
16
16
|
|
17
|
-
#define_extras(name, type)
|
18
17
|
define_extras(name, type)
|
19
18
|
end
|
20
|
-
|
21
19
|
end
|
22
20
|
|
21
|
+
|
23
22
|
def define_extras(name, type)
|
24
23
|
include LogHelper
|
25
24
|
|
@@ -39,7 +38,6 @@ module Cello
|
|
39
38
|
end
|
40
39
|
define_method "#{name}_click" do
|
41
40
|
logger(name, __method__, type) {
|
42
|
-
# require "pry"; binding.pry
|
43
41
|
send(name).click
|
44
42
|
}
|
45
43
|
end
|
@@ -75,6 +73,7 @@ module Cello
|
|
75
73
|
include ButtonHelper
|
76
74
|
include SpanHelper
|
77
75
|
include HiddenHelper
|
76
|
+
include IframeHelper
|
78
77
|
|
79
78
|
end
|
80
79
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
Dir[File.dirname(__FILE__) + "/*.rb"].each do |file|
|
2
|
+
require file
|
3
|
+
end
|
4
|
+
|
5
|
+
module Cello
|
6
|
+
module PageObjects
|
7
|
+
module IframeHelper
|
8
|
+
|
9
|
+
def iframe name, elements, *args
|
10
|
+
class_eval do
|
11
|
+
include elements
|
12
|
+
define_method name do
|
13
|
+
engine.browser.iframe(*args)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -7,17 +7,17 @@ module Cello
|
|
7
7
|
extend Cello::PageObjects::ElementHelper
|
8
8
|
attr_reader :engine
|
9
9
|
|
10
|
+
MESS = "SYSTEM ERROR: method missing"
|
11
|
+
|
10
12
|
def initialize(engine)
|
11
13
|
@engine = engine
|
12
14
|
end
|
13
15
|
|
14
16
|
def visit
|
15
|
-
@engine.goto
|
17
|
+
@engine.goto url
|
16
18
|
end
|
17
19
|
|
18
|
-
def
|
19
|
-
@@url = url
|
20
|
-
end
|
20
|
+
def url; raise MESS; end
|
21
21
|
|
22
22
|
end
|
23
23
|
end
|
@@ -9,7 +9,7 @@ class Cello::PageObjects::Recorder
|
|
9
9
|
title = page_source.scan(/\<title\>(.*?)\<\/title\>/)[0].to_s.gsub!(/\W+/, ' ').strip!.split(" ").each { |w| w.capitalize! }.join("")
|
10
10
|
page = "require 'cello'\n\n"
|
11
11
|
page += "class #{title} < Cello::PageObjects::Page\n\n"
|
12
|
-
|
12
|
+
raw_element = Array.new()
|
13
13
|
page_source.scan(/\<input(.*?)\>/).each do |raw_element|
|
14
14
|
element_object = Elem.new nil, nil, nil
|
15
15
|
raw_element.to_s.split(" ").each do |element|
|
@@ -17,15 +17,15 @@ class Cello::PageObjects::Recorder
|
|
17
17
|
element_object.element_name = element.split("=")[1].gsub!(/\W+/, '') if !element.scan(/name/).empty?
|
18
18
|
element_object.element_id = element.split("=")[1].gsub!(/\W+/, '') if !element.scan(/id/).empty?
|
19
19
|
end
|
20
|
-
|
20
|
+
raw_element.push element_object if (!element_object.element_type.nil? && (!element_object.element_id.nil? || !element_object.element_name.nil?))
|
21
21
|
end
|
22
22
|
|
23
|
-
|
23
|
+
raw_element.each do |complete_element|
|
24
24
|
key = ":id"
|
25
|
-
|
26
|
-
key = ":name" if
|
27
|
-
|
28
|
-
page += " element :#{
|
25
|
+
complete_element.element_name = complete_element.element_id if complete_element.element_name.nil?
|
26
|
+
key = ":name" if complete_element.element_id.nil?
|
27
|
+
complete_element.element_id = complete_element.element_name if complete_element.element_id.nil?
|
28
|
+
page += " element :#{complete_element.element_name}, :#{complete_element.element_type}, #{key} => '#{complete_element.element_id }'\n" if !complete_element.element_type.empty? && !complete_element.element_type != "hidden"
|
29
29
|
end
|
30
30
|
page += "\n url(\"#{page_url}\")\n\n"
|
31
31
|
page += "end\n"
|
data/lib/cello/version.rb
CHANGED
data/spec/checkbox_spec.rb
CHANGED
@@ -7,16 +7,16 @@ describe Cello::PageObjects::CheckboxHelper do
|
|
7
7
|
@page = Mock::Site::MockPage.new "foo"
|
8
8
|
end
|
9
9
|
it "Verify if is checked method exists" do
|
10
|
-
(@page.methods.map.include? :checkbox_is_checked?).should
|
10
|
+
(@page.methods.map.include? :checkbox_is_checked?).should be true
|
11
11
|
end
|
12
12
|
it "Verify if there it is unchecked" do
|
13
|
-
(@page.methods.map.include? :checkbox_is_unchecked?).should
|
13
|
+
(@page.methods.map.include? :checkbox_is_unchecked?).should be true
|
14
14
|
end
|
15
15
|
it "Check a Checkbox" do
|
16
|
-
(@page.methods.map.include? :checkbox_check).should
|
16
|
+
(@page.methods.map.include? :checkbox_check).should be true
|
17
17
|
end
|
18
18
|
it "Clear a Checkbox" do
|
19
|
-
(@page.methods.map.include? :checkbox_uncheck).should
|
19
|
+
(@page.methods.map.include? :checkbox_uncheck).should be true
|
20
20
|
end
|
21
21
|
end
|
22
22
|
end
|
data/spec/element_spec.rb
CHANGED
@@ -7,19 +7,19 @@ describe "Class with element" do
|
|
7
7
|
@page = Mock::Site::MockPage.new "foo"
|
8
8
|
end
|
9
9
|
it "Verify if the element exists method exists" do
|
10
|
-
(@page.methods.map.include? :element_is_real?).should
|
10
|
+
(@page.methods.map.include? :element_is_real?).should be true
|
11
11
|
end
|
12
12
|
it "Click on the element method exists" do
|
13
|
-
(@page.methods.map.include? :element_click).should
|
13
|
+
(@page.methods.map.include? :element_click).should be true
|
14
14
|
end
|
15
15
|
it "Verify if the element is visible method exists" do
|
16
|
-
(@page.methods.map.include? :element_is_visible?).should
|
16
|
+
(@page.methods.map.include? :element_is_visible?).should be true
|
17
17
|
end
|
18
18
|
it "Verify if the element is enable methods exists" do
|
19
|
-
(@page.methods.map.include? :element_is_enable?).should
|
19
|
+
(@page.methods.map.include? :element_is_enable?).should be true
|
20
20
|
end
|
21
21
|
it "Click with the right button on the element method exists" do
|
22
|
-
(@page.methods.map.include? :element_right_click).should
|
22
|
+
(@page.methods.map.include? :element_right_click).should be true
|
23
23
|
end
|
24
24
|
end
|
25
25
|
end
|
data/spec/select_spec.rb
CHANGED
@@ -7,14 +7,10 @@ describe Cello::PageObjects::SelectHelper do
|
|
7
7
|
@page = Mock::Site::MockPage.new "foo"
|
8
8
|
end
|
9
9
|
it "Select an option method exists" do
|
10
|
-
(@page.methods.map.include? :select_select).should
|
11
|
-
end
|
12
|
-
it "go to default or empty option method exists" do
|
13
|
-
pending
|
14
|
-
(@page.methods.map.include? :select_clear).should be_true
|
10
|
+
(@page.methods.map.include? :select_select).should be true
|
15
11
|
end
|
16
12
|
it "return the selected option method exists" do
|
17
|
-
(@page.methods.map.include? :select_selected).should
|
13
|
+
(@page.methods.map.include? :select_selected).should be true
|
18
14
|
end
|
19
15
|
end
|
20
16
|
end
|
data/spec/spec_helper.rb
CHANGED
data/spec/textarea_spec.rb
CHANGED
@@ -7,31 +7,31 @@ describe Cello::PageObjects::TextareaHelper do
|
|
7
7
|
@page = Mock::Site::MockPage.new "foo"
|
8
8
|
end
|
9
9
|
it "Veify if the textarea is enable method exists" do
|
10
|
-
(@page.methods.map.include? :textarea_is_enable?).should
|
10
|
+
(@page.methods.map.include? :textarea_is_enable?).should be true
|
11
11
|
end
|
12
12
|
it "Clear the textarea method exists" do
|
13
|
-
(@page.methods.map.include? :textarea_clear).should
|
13
|
+
(@page.methods.map.include? :textarea_clear).should be true
|
14
14
|
end
|
15
15
|
it "Get the text from the textarea" do
|
16
|
-
(@page.methods.map.include? :textarea_get_text).should
|
16
|
+
(@page.methods.map.include? :textarea_get_text).should be true
|
17
17
|
end
|
18
18
|
it "Fill the textarea with some specific text" do
|
19
|
-
(@page.methods.map.include? :textarea_fill_with).should
|
19
|
+
(@page.methods.map.include? :textarea_fill_with).should be true
|
20
20
|
end
|
21
21
|
it "Verify if the textarea does not contain some text" do
|
22
|
-
(@page.methods.map.include? :textarea_dont_contain).should
|
22
|
+
(@page.methods.map.include? :textarea_dont_contain).should be true
|
23
23
|
end
|
24
24
|
it "Verify if the textarea contains some text" do
|
25
|
-
(@page.methods.map.include? :textarea_contains).should
|
25
|
+
(@page.methods.map.include? :textarea_contains).should be true
|
26
26
|
end
|
27
27
|
it "Verify if the containt of the textarea is exacly some text" do
|
28
|
-
(@page.methods.map.include? :textarea_text_is).should
|
28
|
+
(@page.methods.map.include? :textarea_text_is).should be true
|
29
29
|
end
|
30
30
|
it "Verify if the textarea is empty" do
|
31
|
-
(@page.methods.map.include? :textarea_is_empty?).should
|
31
|
+
(@page.methods.map.include? :textarea_is_empty?).should be true
|
32
32
|
end
|
33
33
|
it "Get the size of the containt of the textarea" do
|
34
|
-
(@page.methods.map.include? :textarea_text_size).should
|
34
|
+
(@page.methods.map.include? :textarea_text_size).should be true
|
35
35
|
end
|
36
36
|
end
|
37
37
|
end
|
data/spec/textfield_spec.rb
CHANGED
@@ -7,31 +7,31 @@ describe Cello::PageObjects::TextfieldHelper do
|
|
7
7
|
@page = Mock::Site::MockPage.new "foo"
|
8
8
|
end
|
9
9
|
it "Veify if the textfield is enabled" do
|
10
|
-
(@page.methods.map.include? :text_field_is_enable?).should
|
10
|
+
(@page.methods.map.include? :text_field_is_enable?).should be true
|
11
11
|
end
|
12
12
|
it "Clear the textfield" do
|
13
|
-
(@page.methods.map.include? :text_field_clear).should
|
13
|
+
(@page.methods.map.include? :text_field_clear).should be true
|
14
14
|
end
|
15
15
|
it "Get the text from the textfield" do
|
16
|
-
(@page.methods.map.include? :text_field_get_text).should
|
16
|
+
(@page.methods.map.include? :text_field_get_text).should be true
|
17
17
|
end
|
18
18
|
it "Fill the textfield with some specific text" do
|
19
|
-
(@page.methods.map.include? :text_field_fill_with).should
|
19
|
+
(@page.methods.map.include? :text_field_fill_with).should be true
|
20
20
|
end
|
21
21
|
it "Verify if the textfield does not contain some text" do
|
22
|
-
(@page.methods.map.include? :text_field_dont_contain).should
|
22
|
+
(@page.methods.map.include? :text_field_dont_contain).should be true
|
23
23
|
end
|
24
24
|
it "Verify if the textfield contains some text" do
|
25
|
-
(@page.methods.map.include? :text_field_contains).should
|
25
|
+
(@page.methods.map.include? :text_field_contains).should be true
|
26
26
|
end
|
27
27
|
it "Verify if the containt of the textfield is exacly some text" do
|
28
|
-
(@page.methods.map.include? :text_field_text_is).should
|
28
|
+
(@page.methods.map.include? :text_field_text_is).should be true
|
29
29
|
end
|
30
30
|
it "Verify if the textfield is empty" do
|
31
|
-
(@page.methods.map.include? :text_field_is_empty?).should
|
31
|
+
(@page.methods.map.include? :text_field_is_empty?).should be true
|
32
32
|
end
|
33
33
|
it "Get the size of the containt of the textfield" do
|
34
|
-
(@page.methods.map.include? :text_field_text_size).should
|
34
|
+
(@page.methods.map.include? :text_field_text_size).should be true
|
35
35
|
end
|
36
36
|
end
|
37
37
|
end
|
metadata
CHANGED
@@ -1,197 +1,155 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cello
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.25
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Camilo Ribeiro
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-04-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: simplecov
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: pry
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ~>
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: cucumber
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - '>='
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - '>='
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: watir-webdriver
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - '>='
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - '>='
|
38
|
+
- - ~>
|
67
39
|
- !ruby/object:Gem::Version
|
68
40
|
version: '0'
|
69
41
|
- !ruby/object:Gem::Dependency
|
70
42
|
name: rake
|
71
43
|
requirement: !ruby/object:Gem::Requirement
|
72
44
|
requirements:
|
73
|
-
- -
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - '>='
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: rspec
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - '>='
|
45
|
+
- - ~>
|
88
46
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
47
|
+
version: 10.4.2
|
90
48
|
type: :development
|
91
49
|
prerelease: false
|
92
50
|
version_requirements: !ruby/object:Gem::Requirement
|
93
51
|
requirements:
|
94
|
-
- -
|
52
|
+
- - ~>
|
95
53
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
54
|
+
version: 10.4.2
|
97
55
|
- !ruby/object:Gem::Dependency
|
98
56
|
name: headless
|
99
57
|
requirement: !ruby/object:Gem::Requirement
|
100
58
|
requirements:
|
101
|
-
- -
|
59
|
+
- - ~>
|
102
60
|
- !ruby/object:Gem::Version
|
103
61
|
version: '0'
|
104
62
|
type: :development
|
105
63
|
prerelease: false
|
106
64
|
version_requirements: !ruby/object:Gem::Requirement
|
107
65
|
requirements:
|
108
|
-
- -
|
66
|
+
- - ~>
|
109
67
|
- !ruby/object:Gem::Version
|
110
68
|
version: '0'
|
111
69
|
- !ruby/object:Gem::Dependency
|
112
70
|
name: nyan-cat-formatter
|
113
71
|
requirement: !ruby/object:Gem::Requirement
|
114
72
|
requirements:
|
115
|
-
- -
|
73
|
+
- - ~>
|
116
74
|
- !ruby/object:Gem::Version
|
117
75
|
version: '0'
|
118
76
|
type: :development
|
119
77
|
prerelease: false
|
120
78
|
version_requirements: !ruby/object:Gem::Requirement
|
121
79
|
requirements:
|
122
|
-
- -
|
80
|
+
- - ~>
|
123
81
|
- !ruby/object:Gem::Version
|
124
82
|
version: '0'
|
125
83
|
- !ruby/object:Gem::Dependency
|
126
84
|
name: cucumber
|
127
85
|
requirement: !ruby/object:Gem::Requirement
|
128
86
|
requirements:
|
129
|
-
- -
|
87
|
+
- - ~>
|
130
88
|
- !ruby/object:Gem::Version
|
131
|
-
version:
|
89
|
+
version: 2.0.0
|
132
90
|
type: :runtime
|
133
91
|
prerelease: false
|
134
92
|
version_requirements: !ruby/object:Gem::Requirement
|
135
93
|
requirements:
|
136
|
-
- -
|
94
|
+
- - ~>
|
137
95
|
- !ruby/object:Gem::Version
|
138
|
-
version:
|
96
|
+
version: 2.0.0
|
139
97
|
- !ruby/object:Gem::Dependency
|
140
98
|
name: rspec
|
141
99
|
requirement: !ruby/object:Gem::Requirement
|
142
100
|
requirements:
|
143
|
-
- -
|
101
|
+
- - ~>
|
144
102
|
- !ruby/object:Gem::Version
|
145
|
-
version:
|
103
|
+
version: 3.2.0
|
146
104
|
type: :runtime
|
147
105
|
prerelease: false
|
148
106
|
version_requirements: !ruby/object:Gem::Requirement
|
149
107
|
requirements:
|
150
|
-
- -
|
108
|
+
- - ~>
|
151
109
|
- !ruby/object:Gem::Version
|
152
|
-
version:
|
110
|
+
version: 3.2.0
|
153
111
|
- !ruby/object:Gem::Dependency
|
154
112
|
name: watir-webdriver
|
155
113
|
requirement: !ruby/object:Gem::Requirement
|
156
114
|
requirements:
|
157
|
-
- -
|
115
|
+
- - ~>
|
158
116
|
- !ruby/object:Gem::Version
|
159
|
-
version:
|
117
|
+
version: 0.7.0
|
160
118
|
type: :runtime
|
161
119
|
prerelease: false
|
162
120
|
version_requirements: !ruby/object:Gem::Requirement
|
163
121
|
requirements:
|
164
|
-
- -
|
122
|
+
- - ~>
|
165
123
|
- !ruby/object:Gem::Version
|
166
|
-
version:
|
124
|
+
version: 0.7.0
|
167
125
|
- !ruby/object:Gem::Dependency
|
168
126
|
name: sourcify
|
169
127
|
requirement: !ruby/object:Gem::Requirement
|
170
128
|
requirements:
|
171
|
-
- -
|
129
|
+
- - ~>
|
172
130
|
- !ruby/object:Gem::Version
|
173
|
-
version:
|
131
|
+
version: 0.5.0
|
174
132
|
type: :runtime
|
175
133
|
prerelease: false
|
176
134
|
version_requirements: !ruby/object:Gem::Requirement
|
177
135
|
requirements:
|
178
|
-
- -
|
136
|
+
- - ~>
|
179
137
|
- !ruby/object:Gem::Version
|
180
|
-
version:
|
138
|
+
version: 0.5.0
|
181
139
|
- !ruby/object:Gem::Dependency
|
182
140
|
name: icecream
|
183
141
|
requirement: !ruby/object:Gem::Requirement
|
184
142
|
requirements:
|
185
|
-
- -
|
143
|
+
- - ~>
|
186
144
|
- !ruby/object:Gem::Version
|
187
|
-
version:
|
145
|
+
version: 0.0.14
|
188
146
|
type: :runtime
|
189
147
|
prerelease: false
|
190
148
|
version_requirements: !ruby/object:Gem::Requirement
|
191
149
|
requirements:
|
192
|
-
- -
|
150
|
+
- - ~>
|
193
151
|
- !ruby/object:Gem::Version
|
194
|
-
version:
|
152
|
+
version: 0.0.14
|
195
153
|
description: Cello is a framework that allows automate acceptance tests using page-object
|
196
154
|
email:
|
197
155
|
- cribeiro@thoughtworks.com
|
@@ -211,7 +169,10 @@ files:
|
|
211
169
|
- bin/cello
|
212
170
|
- cello.gemspec
|
213
171
|
- features/access_element.feature
|
172
|
+
- features/access_element_inside_iframe.feature
|
214
173
|
- features/browser.feature
|
174
|
+
- features/browsers/firefox.rb
|
175
|
+
- features/browsers/headless.rb
|
215
176
|
- features/button.feature
|
216
177
|
- features/checkbox.feature
|
217
178
|
- features/choose_browser.feature
|
@@ -219,12 +180,13 @@ files:
|
|
219
180
|
- features/element.feature
|
220
181
|
- features/fire_event.feature
|
221
182
|
- features/get_html_attributes.feature
|
222
|
-
- features/pages/
|
223
|
-
- features/pages/headless.rb
|
183
|
+
- features/pages/iframe.rb
|
224
184
|
- features/pages/input_fields.rb
|
185
|
+
- features/pages/input_fields_module.rb
|
225
186
|
- features/pages/response_page.rb
|
226
187
|
- features/radio.feature
|
227
188
|
- features/select.feature
|
189
|
+
- features/site/iframe.html
|
228
190
|
- features/site/inputs.html
|
229
191
|
- features/site/read_page.html
|
230
192
|
- features/step_definitions/access_element.rb
|
@@ -256,6 +218,7 @@ files:
|
|
256
218
|
- lib/cello/pageobjects/html_elements/dsl.rb
|
257
219
|
- lib/cello/pageobjects/html_elements/element_helper.rb
|
258
220
|
- lib/cello/pageobjects/html_elements/hidden_helper.rb
|
221
|
+
- lib/cello/pageobjects/html_elements/iframe_helper.rb
|
259
222
|
- lib/cello/pageobjects/html_elements/link_helper.rb
|
260
223
|
- lib/cello/pageobjects/html_elements/logger.rb
|
261
224
|
- lib/cello/pageobjects/html_elements/radio_helper.rb
|
@@ -263,6 +226,7 @@ files:
|
|
263
226
|
- lib/cello/pageobjects/html_elements/span_helper.rb
|
264
227
|
- lib/cello/pageobjects/html_elements/textarea_helper.rb
|
265
228
|
- lib/cello/pageobjects/html_elements/textfield_helper.rb
|
229
|
+
- lib/cello/pageobjects/iframe.rb
|
266
230
|
- lib/cello/pageobjects/page.rb
|
267
231
|
- lib/cello/pageobjects/recorder.rb
|
268
232
|
- lib/cello/structure.rb
|
@@ -303,8 +267,56 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
303
267
|
version: '0'
|
304
268
|
requirements: []
|
305
269
|
rubyforge_project: cello
|
306
|
-
rubygems_version: 2.
|
270
|
+
rubygems_version: 2.4.4
|
307
271
|
signing_key:
|
308
272
|
specification_version: 4
|
309
273
|
summary: Fast and simple Page-Object with BDD
|
310
|
-
test_files:
|
274
|
+
test_files:
|
275
|
+
- features/access_element.feature
|
276
|
+
- features/access_element_inside_iframe.feature
|
277
|
+
- features/browser.feature
|
278
|
+
- features/browsers/firefox.rb
|
279
|
+
- features/browsers/headless.rb
|
280
|
+
- features/button.feature
|
281
|
+
- features/checkbox.feature
|
282
|
+
- features/choose_browser.feature
|
283
|
+
- features/dsl.feature
|
284
|
+
- features/element.feature
|
285
|
+
- features/fire_event.feature
|
286
|
+
- features/get_html_attributes.feature
|
287
|
+
- features/pages/iframe.rb
|
288
|
+
- features/pages/input_fields.rb
|
289
|
+
- features/pages/input_fields_module.rb
|
290
|
+
- features/pages/response_page.rb
|
291
|
+
- features/radio.feature
|
292
|
+
- features/select.feature
|
293
|
+
- features/site/iframe.html
|
294
|
+
- features/site/inputs.html
|
295
|
+
- features/site/read_page.html
|
296
|
+
- features/step_definitions/access_element.rb
|
297
|
+
- features/step_definitions/browser.rb
|
298
|
+
- features/step_definitions/checkbox.rb
|
299
|
+
- features/step_definitions/common_steps.rb
|
300
|
+
- features/step_definitions/element.rb
|
301
|
+
- features/step_definitions/html_attributes.rb
|
302
|
+
- features/step_definitions/radio.rb
|
303
|
+
- features/step_definitions/select.rb
|
304
|
+
- features/step_definitions/textarea.rb
|
305
|
+
- features/step_definitions/textfield.rb
|
306
|
+
- features/support/env.rb
|
307
|
+
- features/textarea.feature
|
308
|
+
- features/textfield.feature
|
309
|
+
- spec/button_spec.rb
|
310
|
+
- spec/checkbox_spec.rb
|
311
|
+
- spec/div_spec.rb
|
312
|
+
- spec/element_spec.rb
|
313
|
+
- spec/hidden_spec.rb
|
314
|
+
- spec/link_spec.rb
|
315
|
+
- spec/mock/page.rb
|
316
|
+
- spec/page_spec.rb
|
317
|
+
- spec/radio_spec.rb
|
318
|
+
- spec/select_spec.rb
|
319
|
+
- spec/span_spec.rb
|
320
|
+
- spec/spec_helper.rb
|
321
|
+
- spec/textarea_spec.rb
|
322
|
+
- spec/textfield_spec.rb
|