swamp 1.2.0 → 1.3.0
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.
- checksums.yaml +4 -4
- data/.gitignore +2 -1
- data/.ruby-version +1 -0
- data/Guardfile +33 -0
- data/README.md +24 -10
- data/features/specifications/changing_scope_to_source.feature +16 -0
- data/features/specifications/scope_changing.feature +14 -24
- data/features/specifications/using_prism_scope.feature +100 -0
- data/features/step_definitions/swamp_steps.rb +14 -4
- data/lib/swamp/builders/basic.rb +39 -0
- data/lib/swamp/builders/prism.rb +9 -0
- data/lib/swamp/collections/buttons.rb +28 -0
- data/lib/swamp/{fields.rb → collections/fields.rb} +9 -3
- data/lib/swamp/{input_buttons.rb → collections/input_buttons.rb} +7 -2
- data/lib/swamp/{links.rb → collections/links.rb} +3 -1
- data/lib/swamp/collections/select_boxes.rb +28 -0
- data/lib/swamp/{button.rb → elements/button.rb} +1 -0
- data/lib/swamp/{complex_select_box.rb → elements/complex_select_box.rb} +2 -0
- data/lib/swamp/{element.rb → elements/element.rb} +12 -0
- data/lib/swamp/{field.rb → elements/field.rb} +1 -0
- data/lib/swamp/{input_button.rb → elements/input_button.rb} +1 -0
- data/lib/swamp/{link.rb → elements/link.rb} +1 -0
- data/lib/swamp/{select_box.rb → elements/select_box.rb} +1 -0
- data/lib/swamp/scopes/page.rb +9 -0
- data/lib/swamp/scopes/prism.rb +9 -0
- data/lib/swamp/scopes/scope.rb +13 -0
- data/lib/swamp/scopes/source.rb +9 -0
- data/lib/swamp/setup.rb +7 -3
- data/lib/swamp/version.rb +1 -1
- data/lib/swamp/wrapper.rb +1 -1
- data/lib/swamp.rb +19 -14
- data/spec/swamp/builders/basic_spec.rb +44 -0
- data/spec/swamp/builders/prism_spec.rb +17 -0
- data/spec/swamp/buttons_spec.rb +7 -4
- data/spec/swamp/fields_spec.rb +3 -0
- data/spec/swamp/input_buttons_spec.rb +1 -0
- data/spec/swamp/links_spec.rb +1 -0
- data/spec/swamp/select_boxes_spec.rb +3 -0
- data/spec/swamp/setup_spec.rb +11 -4
- data/swamp.gemspec +12 -10
- metadata +96 -55
- data/lib/swamp/builder.rb +0 -39
- data/lib/swamp/buttons.rb +0 -22
- data/lib/swamp/select_boxes.rb +0 -22
- data/spec/swamp/builder_spec.rb +0 -46
- /data/lib/swamp/{elements.rb → collections/elements.rb} +0 -0
data/lib/swamp.rb
CHANGED
@@ -4,22 +4,27 @@ require 'swamp/setup'
|
|
4
4
|
require 'swamp/interface'
|
5
5
|
require 'swamp/evaluator'
|
6
6
|
require 'swamp/base'
|
7
|
-
require 'swamp/elements'
|
7
|
+
require 'swamp/collections/elements'
|
8
8
|
require 'swamp/wrapper'
|
9
|
-
require 'swamp/element'
|
10
|
-
require 'swamp/fields'
|
11
|
-
require 'swamp/field'
|
12
|
-
require 'swamp/buttons'
|
13
|
-
require 'swamp/button'
|
14
|
-
require 'swamp/
|
9
|
+
require 'swamp/elements/element'
|
10
|
+
require 'swamp/collections/fields'
|
11
|
+
require 'swamp/elements/field'
|
12
|
+
require 'swamp/collections/buttons'
|
13
|
+
require 'swamp/elements/button'
|
14
|
+
require 'swamp/builders/basic'
|
15
|
+
require 'swamp/builders/prism'
|
15
16
|
require 'swamp/formatter'
|
16
|
-
require 'swamp/input_buttons'
|
17
|
-
require 'swamp/input_button'
|
18
|
-
require 'swamp/select_boxes'
|
19
|
-
require 'swamp/select_box'
|
20
|
-
require 'swamp/complex_select_box'
|
21
|
-
require 'swamp/links'
|
22
|
-
require 'swamp/link'
|
17
|
+
require 'swamp/collections/input_buttons'
|
18
|
+
require 'swamp/elements/input_button'
|
19
|
+
require 'swamp/collections/select_boxes'
|
20
|
+
require 'swamp/elements/select_box'
|
21
|
+
require 'swamp/elements/complex_select_box'
|
22
|
+
require 'swamp/collections/links'
|
23
|
+
require 'swamp/elements/link'
|
24
|
+
require 'swamp/scopes/source'
|
25
|
+
require 'swamp/scopes/page'
|
26
|
+
require 'swamp/scopes/prism'
|
27
|
+
require 'swamp/scopes/scope'
|
23
28
|
|
24
29
|
module Swamp
|
25
30
|
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
module Swamp
|
3
|
+
module Builders
|
4
|
+
describe Basic do
|
5
|
+
let(:builder) { Swamp::Builders::Basic.new('page') }
|
6
|
+
let(:source_builder) { Swamp::Builders::Basic.new('source') }
|
7
|
+
|
8
|
+
describe "#build_snippet" do
|
9
|
+
context "when the type is field" do
|
10
|
+
context "when the name and the selector are present" do
|
11
|
+
it "returns the method's snippet" do
|
12
|
+
element = Swamp::Field.new("User-Name", "User-Name")
|
13
|
+
expect(builder.build_snippet(element)).to eq("def type_user_name(input)\n page.fill_in(\"User-Name\", with: input)\nend")
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
context "when the type is button" do
|
19
|
+
context "when the name and the selector are present" do
|
20
|
+
it "returns the method's snippet" do
|
21
|
+
element = Swamp::Button.new("Log_in", "Log_in")
|
22
|
+
expect(builder.build_snippet(element)).to eq("def log_in\n page.click_button(\"Log_in\")\nend")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
context "when just the selector is present" do
|
27
|
+
it "returns just the selector snippet" do
|
28
|
+
element = Swamp::Button.new(nil, "$ 9.90 Buy")
|
29
|
+
expect(builder.build_snippet(element)).to eq("page.click_button(\"$ 9.90 Buy\")")
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context "when the scope has changed" do
|
34
|
+
it "returns the method's snippet with the changed scope" do
|
35
|
+
element = Swamp::Button.new("Log_in", "Log_in")
|
36
|
+
expect(source_builder.build_snippet(element)).to eq("def log_in\n source.click_button(\"Log_in\")\nend")
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Swamp
|
4
|
+
module Builders
|
5
|
+
describe Prism do
|
6
|
+
let(:builder) { Swamp::Builders::Prism.new }
|
7
|
+
|
8
|
+
describe "#build_snippet" do
|
9
|
+
it "returns the method's snippet" do
|
10
|
+
element = Swamp::Button.new("User-Name", "User-Name")
|
11
|
+
element.prism_selector = "'#User-Name'"
|
12
|
+
expect(builder.build_snippet(element)).to eq("element :user_name, '#User-Name'")
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/spec/swamp/buttons_spec.rb
CHANGED
@@ -30,8 +30,9 @@ module Swamp
|
|
30
30
|
it "returns the element in the array using the text as both the name and the selector" do
|
31
31
|
allow(buttons.page).to receive(:execute_script).and_return(nil)
|
32
32
|
expect(buttons.get.size).to eq(1)
|
33
|
-
expect(buttons.get.
|
34
|
-
expect(buttons.get.
|
33
|
+
expect(buttons.get.first.name).to eq("Sign Up")
|
34
|
+
expect(buttons.get.first.selector).to eq("Sign Up")
|
35
|
+
expect(buttons.get.first.prism_selector).to eq(%\'button', text: 'Sign Up'\)
|
35
36
|
end
|
36
37
|
end
|
37
38
|
|
@@ -53,8 +54,9 @@ module Swamp
|
|
53
54
|
it "returns the element in the array using the id as both the name and the selector" do
|
54
55
|
allow(buttons.page).to receive(:execute_script).and_return(nil)
|
55
56
|
expect(buttons.get.size).to eq(1)
|
56
|
-
expect(buttons.get.
|
57
|
-
expect(buttons.get.
|
57
|
+
expect(buttons.get.first.name).to eq("search-button")
|
58
|
+
expect(buttons.get.first.selector).to eq("search-button")
|
59
|
+
expect(buttons.get.first.prism_selector).to eq("'#search-button'")
|
58
60
|
end
|
59
61
|
end
|
60
62
|
|
@@ -78,6 +80,7 @@ module Swamp
|
|
78
80
|
expect(buttons.get.size).to eq(1)
|
79
81
|
expect(buttons.get.each.first.name).to eq("search-button")
|
80
82
|
expect(buttons.get.each.first.selector).to eq("search-button")
|
83
|
+
expect(buttons.get.each.first.prism_selector).to eq(%\"[value='search-button']"\)
|
81
84
|
end
|
82
85
|
end
|
83
86
|
|
data/spec/swamp/fields_spec.rb
CHANGED
@@ -38,6 +38,7 @@ module Swamp
|
|
38
38
|
allow(fields.page).to receive(:execute_script).and_return(nil)
|
39
39
|
expect(fields.get.size).to eq(1)
|
40
40
|
expect(fields.get.first.selector).to eq("u_0_b")
|
41
|
+
expect(fields.get.first.prism_selector).to eq("'#u_0_b'")
|
41
42
|
end
|
42
43
|
end
|
43
44
|
|
@@ -64,6 +65,7 @@ module Swamp
|
|
64
65
|
allow(fields.page).to receive(:execute_script).and_return(nil)
|
65
66
|
expect(fields.get.size).to eq(1)
|
66
67
|
expect(fields.get.first.selector).to eq("username")
|
68
|
+
expect(fields.get.first.prism_selector).to eq("'#username'")
|
67
69
|
end
|
68
70
|
end
|
69
71
|
|
@@ -90,6 +92,7 @@ module Swamp
|
|
90
92
|
allow(fields.page).to receive(:execute_script).and_return(nil)
|
91
93
|
expect(fields.get.size).to eq(1)
|
92
94
|
expect(fields.get.first.selector).to eq("username")
|
95
|
+
expect(fields.get.first.prism_selector).to eq(%/'input[name="username"]'/)
|
93
96
|
end
|
94
97
|
end
|
95
98
|
end
|
@@ -61,6 +61,7 @@ module Swamp
|
|
61
61
|
allow(input_buttons.page).to receive(:execute_script).and_return(nil)
|
62
62
|
expect(input_buttons.get.size).to eq(1)
|
63
63
|
expect(input_buttons.get.first.selector).to eq("input.btn.without.id[value='Log In']")
|
64
|
+
expect(input_buttons.get.first.prism_selector).to eq(%\"input.btn.without.id[value='Log In']"\)
|
64
65
|
end
|
65
66
|
end
|
66
67
|
end
|
data/spec/swamp/links_spec.rb
CHANGED
@@ -35,6 +35,7 @@ module Swamp
|
|
35
35
|
allow(links.page).to receive(:execute_script).and_return(nil)
|
36
36
|
expect(links.get.size).to eq(1)
|
37
37
|
expect(links.get.first.selector).to eq("forgot-password")
|
38
|
+
expect(links.get.first.prism_selector).to eq("'#forgot-password'")
|
38
39
|
end
|
39
40
|
end
|
40
41
|
end
|
@@ -35,6 +35,7 @@ module Swamp
|
|
35
35
|
allow(select_boxes.page).to receive(:execute_script).and_return(nil)
|
36
36
|
expect(select_boxes.get.size).to eq(1)
|
37
37
|
expect(select_boxes.get.first.selector).to eq("month")
|
38
|
+
expect(select_boxes.get.first.prism_selector).to eq("'#month'")
|
38
39
|
end
|
39
40
|
end
|
40
41
|
|
@@ -61,6 +62,7 @@ module Swamp
|
|
61
62
|
allow(select_boxes.page).to receive(:execute_script).and_return(nil)
|
62
63
|
expect(select_boxes.get.size).to eq(1)
|
63
64
|
expect(select_boxes.get.first.selector).to eq("birthday_month")
|
65
|
+
expect(select_boxes.get.first.prism_selector).to eq(%\"select[name='birthday_month']"\)
|
64
66
|
end
|
65
67
|
end
|
66
68
|
|
@@ -87,6 +89,7 @@ module Swamp
|
|
87
89
|
allow(select_boxes.page).to receive(:execute_script).and_return(nil)
|
88
90
|
expect(select_boxes.get.size).to eq(1)
|
89
91
|
expect(select_boxes.get.first.selector).to eq("provider-select")
|
92
|
+
expect(select_boxes.get.first.prism_selector).to eq("'select.provider-select'")
|
90
93
|
end
|
91
94
|
end
|
92
95
|
end
|
data/spec/swamp/setup_spec.rb
CHANGED
@@ -2,17 +2,24 @@ require 'spec_helper'
|
|
2
2
|
module Swamp
|
3
3
|
describe Setup do
|
4
4
|
let(:setup) { Swamp::Setup.new }
|
5
|
+
let(:source_scope) { Swamp::Scope::Source.new }
|
6
|
+
let(:page_scope) { Swamp::Scope::Page.new }
|
7
|
+
|
8
|
+
before :each do
|
9
|
+
allow(Swamp::Scope).to receive(:from_value).with('source').and_return(source_scope)
|
10
|
+
allow(Swamp::Scope).to receive(:from_value).with('page').and_return(page_scope)
|
11
|
+
end
|
5
12
|
|
6
13
|
it "should set the default options" do
|
7
|
-
expect(setup.scope).to eq(
|
14
|
+
expect(setup.scope).to eq(page_scope)
|
8
15
|
end
|
9
16
|
|
10
17
|
describe "#handle_command" do
|
11
18
|
context "when the command is valid" do
|
12
19
|
context "when the scope changes" do
|
13
|
-
it "should set the option :scope
|
20
|
+
it "should set the option :scope" do
|
14
21
|
setup.handle_command(":scope = source")
|
15
|
-
expect(setup.scope).to eq(
|
22
|
+
expect(setup.scope).to eq(source_scope)
|
16
23
|
end
|
17
24
|
|
18
25
|
it "should return a message confirming the scope was set to source" do
|
@@ -21,7 +28,7 @@ module Swamp
|
|
21
28
|
|
22
29
|
it "should set the option :scope to page" do
|
23
30
|
setup.handle_command(":scope = page")
|
24
|
-
expect(setup.scope).to eq(
|
31
|
+
expect(setup.scope).to eq(page_scope)
|
25
32
|
end
|
26
33
|
|
27
34
|
it "should return a message confirming the scope was set to page" do
|
data/swamp.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.email = ["juraci.vieira@gmail.com"]
|
11
11
|
spec.description = "Automatically generates the methods and selectors to help on faster page-object creation using capybara"
|
12
12
|
spec.summary = "Swamp, where capybaras belong"
|
13
|
-
spec.homepage = ""
|
13
|
+
spec.homepage = "https://github.com/Juraci/swamp"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
16
16
|
spec.files = `git ls-files`.split($/)
|
@@ -18,14 +18,16 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_dependency "capybara"
|
22
|
-
spec.add_dependency "selenium-webdriver"
|
21
|
+
spec.add_dependency "capybara", '~> 2.4'
|
22
|
+
spec.add_dependency "selenium-webdriver", '~> 2.43'
|
23
23
|
|
24
|
-
spec.add_development_dependency "bundler"
|
25
|
-
spec.add_development_dependency "rake"
|
26
|
-
spec.add_development_dependency "rspec"
|
27
|
-
spec.add_development_dependency "cucumber"
|
28
|
-
spec.add_development_dependency "json"
|
29
|
-
spec.add_development_dependency "pry"
|
30
|
-
spec.add_development_dependency "pry-nav"
|
24
|
+
spec.add_development_dependency "bundler", '~> 1.6'
|
25
|
+
spec.add_development_dependency "rake", '~> 10.3'
|
26
|
+
spec.add_development_dependency "rspec", '~> 3'
|
27
|
+
spec.add_development_dependency "cucumber", '~> 1.3'
|
28
|
+
spec.add_development_dependency "json", '~> 1.8'
|
29
|
+
spec.add_development_dependency "pry", '~> 0.9'
|
30
|
+
spec.add_development_dependency "pry-nav", '~> 0.2'
|
31
|
+
spec.add_development_dependency "guard", '~> 2.6'
|
32
|
+
spec.add_development_dependency "guard-rspec", '~> 4.3'
|
31
33
|
end
|
metadata
CHANGED
@@ -1,141 +1,169 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: swamp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Juraci de Lima Vieira Neto
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-10-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: capybara
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '2.4'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '2.4'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: selenium-webdriver
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '2.43'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '2.43'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '1.6'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '1.6'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rake
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '10.3'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '10.3'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rspec
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
75
|
+
version: '3'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
82
|
+
version: '3'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: cucumber
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
89
|
+
version: '1.3'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - "
|
94
|
+
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
96
|
+
version: '1.3'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: json
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - "
|
101
|
+
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
103
|
+
version: '1.8'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- - "
|
108
|
+
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: '
|
110
|
+
version: '1.8'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: pry
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- - "
|
115
|
+
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: '0'
|
117
|
+
version: '0.9'
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- - "
|
122
|
+
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: '0'
|
124
|
+
version: '0.9'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: pry-nav
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
|
-
- - "
|
129
|
+
- - "~>"
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version: '0'
|
131
|
+
version: '0.2'
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
|
-
- - "
|
136
|
+
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version: '0'
|
138
|
+
version: '0.2'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: guard
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - "~>"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '2.6'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '2.6'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: guard-rspec
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - "~>"
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '4.3'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - "~>"
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '4.3'
|
139
167
|
description: Automatically generates the methods and selectors to help on faster page-object
|
140
168
|
creation using capybara
|
141
169
|
email:
|
@@ -147,11 +175,14 @@ extra_rdoc_files: []
|
|
147
175
|
files:
|
148
176
|
- ".gitignore"
|
149
177
|
- ".rspec"
|
178
|
+
- ".ruby-version"
|
150
179
|
- ".travis.yml"
|
151
180
|
- Gemfile
|
181
|
+
- Guardfile
|
152
182
|
- README.md
|
153
183
|
- Rakefile
|
154
184
|
- bin/swamp
|
185
|
+
- features/specifications/changing_scope_to_source.feature
|
155
186
|
- features/specifications/scope_changing.feature
|
156
187
|
- features/specifications/user_scans_a_page_interactively.feature
|
157
188
|
- features/specifications/user_scans_buttons_in_a_page.feature
|
@@ -160,6 +191,7 @@ files:
|
|
160
191
|
- features/specifications/user_scans_links_in_a_page.feature
|
161
192
|
- features/specifications/user_scans_select_box_elements_in_a_page.feature
|
162
193
|
- features/specifications/user_starts_swamp.feature
|
194
|
+
- features/specifications/using_prism_scope.feature
|
163
195
|
- features/step_definitions/swamp_steps.rb
|
164
196
|
- features/support/env.rb
|
165
197
|
- features/support/page_examples/button.html
|
@@ -185,28 +217,34 @@ files:
|
|
185
217
|
- lib/swamp.rb
|
186
218
|
- lib/swamp/assertions.rb
|
187
219
|
- lib/swamp/base.rb
|
188
|
-
- lib/swamp/
|
189
|
-
- lib/swamp/
|
190
|
-
- lib/swamp/buttons.rb
|
191
|
-
- lib/swamp/
|
192
|
-
- lib/swamp/
|
193
|
-
- lib/swamp/
|
220
|
+
- lib/swamp/builders/basic.rb
|
221
|
+
- lib/swamp/builders/prism.rb
|
222
|
+
- lib/swamp/collections/buttons.rb
|
223
|
+
- lib/swamp/collections/elements.rb
|
224
|
+
- lib/swamp/collections/fields.rb
|
225
|
+
- lib/swamp/collections/input_buttons.rb
|
226
|
+
- lib/swamp/collections/links.rb
|
227
|
+
- lib/swamp/collections/select_boxes.rb
|
228
|
+
- lib/swamp/elements/button.rb
|
229
|
+
- lib/swamp/elements/complex_select_box.rb
|
230
|
+
- lib/swamp/elements/element.rb
|
231
|
+
- lib/swamp/elements/field.rb
|
232
|
+
- lib/swamp/elements/input_button.rb
|
233
|
+
- lib/swamp/elements/link.rb
|
234
|
+
- lib/swamp/elements/select_box.rb
|
194
235
|
- lib/swamp/evaluator.rb
|
195
|
-
- lib/swamp/field.rb
|
196
|
-
- lib/swamp/fields.rb
|
197
236
|
- lib/swamp/formatter.rb
|
198
|
-
- lib/swamp/input_button.rb
|
199
|
-
- lib/swamp/input_buttons.rb
|
200
237
|
- lib/swamp/interface.rb
|
201
|
-
- lib/swamp/
|
202
|
-
- lib/swamp/
|
203
|
-
- lib/swamp/
|
204
|
-
- lib/swamp/
|
238
|
+
- lib/swamp/scopes/page.rb
|
239
|
+
- lib/swamp/scopes/prism.rb
|
240
|
+
- lib/swamp/scopes/scope.rb
|
241
|
+
- lib/swamp/scopes/source.rb
|
205
242
|
- lib/swamp/setup.rb
|
206
243
|
- lib/swamp/version.rb
|
207
244
|
- lib/swamp/wrapper.rb
|
208
245
|
- spec/spec_helper.rb
|
209
|
-
- spec/swamp/
|
246
|
+
- spec/swamp/builders/basic_spec.rb
|
247
|
+
- spec/swamp/builders/prism_spec.rb
|
210
248
|
- spec/swamp/buttons_spec.rb
|
211
249
|
- spec/swamp/evaluator_spec.rb
|
212
250
|
- spec/swamp/fields_spec.rb
|
@@ -219,7 +257,7 @@ files:
|
|
219
257
|
- spec/swamp/wrapper_spec.rb
|
220
258
|
- swamp.gemspec
|
221
259
|
- tags
|
222
|
-
homepage:
|
260
|
+
homepage: https://github.com/Juraci/swamp
|
223
261
|
licenses:
|
224
262
|
- MIT
|
225
263
|
metadata: {}
|
@@ -244,6 +282,7 @@ signing_key:
|
|
244
282
|
specification_version: 4
|
245
283
|
summary: Swamp, where capybaras belong
|
246
284
|
test_files:
|
285
|
+
- features/specifications/changing_scope_to_source.feature
|
247
286
|
- features/specifications/scope_changing.feature
|
248
287
|
- features/specifications/user_scans_a_page_interactively.feature
|
249
288
|
- features/specifications/user_scans_buttons_in_a_page.feature
|
@@ -252,6 +291,7 @@ test_files:
|
|
252
291
|
- features/specifications/user_scans_links_in_a_page.feature
|
253
292
|
- features/specifications/user_scans_select_box_elements_in_a_page.feature
|
254
293
|
- features/specifications/user_starts_swamp.feature
|
294
|
+
- features/specifications/using_prism_scope.feature
|
255
295
|
- features/step_definitions/swamp_steps.rb
|
256
296
|
- features/support/env.rb
|
257
297
|
- features/support/page_examples/button.html
|
@@ -275,7 +315,8 @@ test_files:
|
|
275
315
|
- features/support/page_examples/select_without_id_and_name.html
|
276
316
|
- features/support/setup.rb
|
277
317
|
- spec/spec_helper.rb
|
278
|
-
- spec/swamp/
|
318
|
+
- spec/swamp/builders/basic_spec.rb
|
319
|
+
- spec/swamp/builders/prism_spec.rb
|
279
320
|
- spec/swamp/buttons_spec.rb
|
280
321
|
- spec/swamp/evaluator_spec.rb
|
281
322
|
- spec/swamp/fields_spec.rb
|
data/lib/swamp/builder.rb
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
module Swamp
|
2
|
-
class Builder
|
3
|
-
|
4
|
-
attr_reader :element
|
5
|
-
|
6
|
-
def initialize(element, setup)
|
7
|
-
@element = element
|
8
|
-
@setup = setup
|
9
|
-
end
|
10
|
-
|
11
|
-
def build_snippet
|
12
|
-
if element.name
|
13
|
-
[method_definition, element.method_signature, line_break, identation, scope, element.accessor, line_break, method_end].join
|
14
|
-
else
|
15
|
-
[scope, element.accessor].join
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
def method_definition
|
20
|
-
"def "
|
21
|
-
end
|
22
|
-
|
23
|
-
def method_end
|
24
|
-
"end"
|
25
|
-
end
|
26
|
-
|
27
|
-
def scope
|
28
|
-
[@setup.scope, "."].join
|
29
|
-
end
|
30
|
-
|
31
|
-
def identation
|
32
|
-
" "
|
33
|
-
end
|
34
|
-
|
35
|
-
def line_break
|
36
|
-
"\n"
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
data/lib/swamp/buttons.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
module Swamp
|
2
|
-
class Buttons < Elements
|
3
|
-
def get
|
4
|
-
elements = []
|
5
|
-
page.all("button").map do |element|
|
6
|
-
if element.visible?
|
7
|
-
if has_valid_text?(element)
|
8
|
-
shine %\//button[text()='#{element.text}']\, :xpath
|
9
|
-
elements << Swamp::Button.new(element.text, element.text)
|
10
|
-
elsif has_id?(element) and has_valid_id?(element)
|
11
|
-
shine %/##{element["id"]}/
|
12
|
-
elements << Swamp::Button.new(element["id"], element["id"])
|
13
|
-
elsif has_value?(element) and has_valid_value?(element)
|
14
|
-
shine %/button[value='#{element["value"]}']/
|
15
|
-
elements << Swamp::Button.new(element["value"], element["value"])
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
elements
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|