howitzer 1.1.1 → 2.0.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.
Files changed (166) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +32 -0
  4. data/.travis.yml +1 -4
  5. data/.yardopts +1 -2
  6. data/CHANGELOG.md +28 -1
  7. data/Gemfile +6 -0
  8. data/LICENSE +1 -1
  9. data/README.md +55 -85
  10. data/Rakefile +7 -7
  11. data/bin/howitzer +56 -31
  12. data/features/cli_new.feature +162 -79
  13. data/features/cli_update.feature +114 -21
  14. data/features/step_definitions/common_steps.rb +29 -9
  15. data/features/support/env.rb +1 -1
  16. data/features/support/transformers.rb +2 -2
  17. data/generators/base_generator.rb +121 -49
  18. data/generators/config/config_generator.rb +8 -5
  19. data/generators/config/templates/boot.rb +14 -0
  20. data/generators/config/templates/capybara.rb +156 -0
  21. data/generators/config/templates/custom.yml +2 -3
  22. data/generators/config/templates/default.yml +50 -82
  23. data/generators/cucumber/cucumber_generator.rb +9 -9
  24. data/generators/cucumber/templates/common_steps.rb +4 -4
  25. data/generators/cucumber/templates/cucumber.rake +63 -54
  26. data/generators/cucumber/templates/env.rb +24 -23
  27. data/generators/cucumber/templates/transformers.rb +23 -15
  28. data/generators/emails/emails_generator.rb +4 -2
  29. data/generators/emails/templates/example_email.rb +4 -4
  30. data/generators/prerequisites/prerequisites_generator.rb +24 -0
  31. data/generators/prerequisites/templates/base.rb +22 -0
  32. data/generators/prerequisites/templates/factory_girl.rb +30 -0
  33. data/generators/prerequisites/templates/user.rb +7 -0
  34. data/generators/prerequisites/templates/users.rb +12 -0
  35. data/generators/root/root_generator.rb +11 -7
  36. data/generators/root/templates/.rubocop.yml +32 -0
  37. data/generators/root/templates/Gemfile.erb +27 -0
  38. data/generators/root/templates/Rakefile +6 -8
  39. data/generators/rspec/rspec_generator.rb +7 -7
  40. data/generators/rspec/templates/example_spec.rb +1 -1
  41. data/generators/rspec/templates/rspec.rake +48 -29
  42. data/generators/rspec/templates/spec_helper.rb +33 -32
  43. data/generators/tasks/tasks_generator.rb +4 -2
  44. data/generators/tasks/templates/common.rake +1 -16
  45. data/generators/turnip/templates/.rspec +1 -0
  46. data/generators/turnip/templates/common_steps.rb +25 -0
  47. data/generators/turnip/templates/example.feature +8 -0
  48. data/generators/turnip/templates/spec_helper.rb +56 -0
  49. data/generators/turnip/templates/turnip.rake +61 -0
  50. data/generators/turnip/templates/turnip_helper.rb +6 -0
  51. data/generators/turnip/turnip_generator.rb +26 -0
  52. data/generators/web/templates/example_page.rb +15 -0
  53. data/generators/web/templates/menu_section.rb +13 -0
  54. data/generators/web/web_generator.rb +22 -0
  55. data/howitzer.gemspec +14 -21
  56. data/lib/howitzer.rb +47 -7
  57. data/lib/howitzer/cache.rb +70 -0
  58. data/lib/howitzer/capybara_helpers.rb +194 -0
  59. data/lib/howitzer/email.rb +96 -104
  60. data/lib/howitzer/exceptions.rb +10 -6
  61. data/lib/howitzer/log.rb +120 -0
  62. data/lib/howitzer/mail_adapters.rb +7 -0
  63. data/lib/howitzer/mail_adapters/abstract.rb +84 -0
  64. data/lib/howitzer/mail_adapters/mailgun.rb +115 -0
  65. data/lib/howitzer/mailgun_api.rb +9 -0
  66. data/lib/howitzer/mailgun_api/client.rb +79 -0
  67. data/lib/howitzer/mailgun_api/connector.rb +37 -0
  68. data/lib/howitzer/mailgun_api/response.rb +28 -0
  69. data/lib/howitzer/tasks/framework.rake +2 -2
  70. data/lib/howitzer/utils.rb +7 -1
  71. data/lib/howitzer/utils/string_extensions.rb +66 -0
  72. data/lib/howitzer/version.rb +2 -1
  73. data/lib/howitzer/web.rb +11 -0
  74. data/lib/howitzer/web/base_section.rb +27 -0
  75. data/lib/howitzer/web/blank_page.rb +12 -0
  76. data/lib/howitzer/web/capybara_methods_proxy.rb +29 -0
  77. data/lib/howitzer/web/element_dsl.rb +109 -0
  78. data/lib/howitzer/web/iframe_dsl.rb +93 -0
  79. data/lib/howitzer/web/page.rb +173 -0
  80. data/lib/howitzer/web/page_dsl.rb +64 -0
  81. data/lib/howitzer/web/page_validator.rb +118 -0
  82. data/lib/howitzer/web/section.rb +27 -0
  83. data/lib/howitzer/web/section_dsl.rb +154 -0
  84. data/spec/config/custom.yml +10 -1
  85. data/spec/spec_helper.rb +37 -19
  86. data/spec/support/generator_helper.rb +12 -11
  87. data/spec/support/logger_helper.rb +10 -9
  88. data/spec/support/mailgun_unit_client.rb +52 -44
  89. data/spec/support/shared_examples/capybara_context_holder.rb +33 -0
  90. data/spec/support/shared_examples/capybara_methods_proxy.rb +94 -0
  91. data/spec/support/shared_examples/dynamic_section_methods.rb +35 -0
  92. data/spec/support/shared_examples/element_dsl.rb +119 -0
  93. data/spec/unit/generators/base_generator_spec.rb +64 -33
  94. data/spec/unit/generators/config_generator_spec.rb +11 -7
  95. data/spec/unit/generators/cucumber_generator_spec.rb +26 -17
  96. data/spec/unit/generators/emails_generator_spec.rb +10 -6
  97. data/spec/unit/generators/prerequisites_generator_spec.rb +53 -0
  98. data/spec/unit/generators/root_generator_spec.rb +50 -13
  99. data/spec/unit/generators/rspec_generator_spec.rb +9 -9
  100. data/spec/unit/generators/tasks_generator_spec.rb +6 -6
  101. data/spec/unit/generators/turnip_generator_spec.rb +52 -0
  102. data/spec/unit/generators/web_generator_spec.rb +52 -0
  103. data/spec/unit/lib/cache_spec.rb +85 -0
  104. data/spec/unit/lib/capybara_helpers_spec.rb +696 -0
  105. data/spec/unit/lib/email_spec.rb +104 -91
  106. data/spec/unit/lib/howitzer.rb +31 -0
  107. data/spec/unit/lib/init_spec.rb +0 -1
  108. data/spec/unit/lib/log_spec.rb +122 -0
  109. data/spec/unit/lib/mail_adapters/abstract_spec.rb +62 -0
  110. data/spec/unit/lib/mail_adapters/mailgun_spec.rb +163 -0
  111. data/spec/unit/lib/mailgun_api/client_spec.rb +58 -0
  112. data/spec/unit/lib/mailgun_api/connector_spec.rb +54 -0
  113. data/spec/unit/lib/mailgun_api/response_spec.rb +28 -0
  114. data/spec/unit/lib/utils/string_extensions_spec.rb +77 -0
  115. data/spec/unit/lib/web/base_section_spec.rb +41 -0
  116. data/spec/unit/lib/web/element_dsl_spec.rb +17 -0
  117. data/spec/unit/lib/web/iframe_dsl_spec.rb +99 -0
  118. data/spec/unit/lib/web/page_dsl_spec.rb +52 -0
  119. data/spec/unit/lib/web/page_spec.rb +304 -0
  120. data/spec/unit/lib/web/page_validator_spec.rb +218 -0
  121. data/spec/unit/lib/web/section_dsl_spec.rb +165 -0
  122. data/spec/unit/lib/web/section_spec.rb +61 -0
  123. data/spec/unit/version_spec.rb +1 -1
  124. metadata +116 -203
  125. data/GETTING_STARTED.md +0 -774
  126. data/generators/cucumber/templates/cucumber.yml +0 -10
  127. data/generators/pages/pages_generator.rb +0 -21
  128. data/generators/pages/templates/example_menu.rb +0 -15
  129. data/generators/pages/templates/example_page.rb +0 -15
  130. data/generators/root/templates/Gemfile +0 -7
  131. data/generators/root/templates/boot.rb +0 -10
  132. data/lib/howitzer/blank_page.rb +0 -6
  133. data/lib/howitzer/capybara/dsl_ex.rb +0 -15
  134. data/lib/howitzer/capybara/settings.rb +0 -343
  135. data/lib/howitzer/helpers.rb +0 -230
  136. data/lib/howitzer/init.rb +0 -1
  137. data/lib/howitzer/mailgun/client.rb +0 -65
  138. data/lib/howitzer/mailgun/connector.rb +0 -34
  139. data/lib/howitzer/mailgun/response.rb +0 -28
  140. data/lib/howitzer/patches/rawler_patched.rb +0 -86
  141. data/lib/howitzer/settings.rb +0 -27
  142. data/lib/howitzer/utils/data_generator/data_storage.rb +0 -88
  143. data/lib/howitzer/utils/data_generator/gen.rb +0 -135
  144. data/lib/howitzer/utils/locator_store.rb +0 -217
  145. data/lib/howitzer/utils/log.rb +0 -139
  146. data/lib/howitzer/utils/page_validator.rb +0 -133
  147. data/lib/howitzer/vendor/firebug-1.12.1-fx.xpi +0 -0
  148. data/lib/howitzer/vendor/firepath-0.9.7-fx.xpi +0 -0
  149. data/lib/howitzer/web_page.rb +0 -253
  150. data/spec/active_resource.rb +0 -0
  151. data/spec/config/default.yml +0 -26
  152. data/spec/support/boot_helper.rb +0 -15
  153. data/spec/unit/generators/pages_generator_spec.rb +0 -33
  154. data/spec/unit/lib/capybara/dsl_ex_spec.rb +0 -60
  155. data/spec/unit/lib/capybara/settings_spec.rb +0 -441
  156. data/spec/unit/lib/helpers_spec.rb +0 -1129
  157. data/spec/unit/lib/mailgun/client_spec.rb +0 -36
  158. data/spec/unit/lib/mailgun/connector_spec.rb +0 -70
  159. data/spec/unit/lib/mailgun/response_spec.rb +0 -28
  160. data/spec/unit/lib/settings_spec.rb +0 -17
  161. data/spec/unit/lib/utils/data_generator/data_storage_spec.rb +0 -80
  162. data/spec/unit/lib/utils/data_generator/gen_spec.rb +0 -90
  163. data/spec/unit/lib/utils/locator_store_spec.rb +0 -157
  164. data/spec/unit/lib/utils/log_spec.rb +0 -107
  165. data/spec/unit/lib/utils/page_validator_spec.rb +0 -265
  166. data/spec/unit/lib/web_page_spec.rb +0 -346
@@ -0,0 +1,165 @@
1
+ require 'spec_helper'
2
+ require 'howitzer/web/section'
3
+
4
+ RSpec.describe Howitzer::Web::SectionDsl do
5
+ let(:section_class) do
6
+ Class.new(Howitzer::Web::Section) do
7
+ me :xpath, './/div'
8
+ end
9
+ end
10
+ let(:web_page_class) do
11
+ Class.new do
12
+ include Howitzer::Web::SectionDsl
13
+
14
+ def capybara_context
15
+ Capybara.current_session
16
+ end
17
+ end
18
+ end
19
+ before { stub_const('FooSection', section_class) }
20
+ describe '.section' do
21
+ subject do
22
+ web_page_class.class_eval do
23
+ section :foo
24
+ end
25
+ web_page_class
26
+ end
27
+
28
+ it 'should create public :foo_section instance method' do
29
+ expect(subject.new.public_methods(false)).to include(:foo_section)
30
+ end
31
+ it 'should create public :foo_sections instance method' do
32
+ expect(subject.new.public_methods(false)).to include(:foo_sections)
33
+ end
34
+ it 'should create public :has_foo_section? instance method' do
35
+ expect(subject.new.public_methods(false)).to include(:has_foo_section?)
36
+ end
37
+ it 'should create public :has_no_foo_section? instance method' do
38
+ expect(subject.new.public_methods(false)).to include(:has_no_foo_section?)
39
+ end
40
+ it 'should be protected class method' do
41
+ expect { subject.section :bar }.to raise_error(NoMethodError)
42
+ expect(subject.protected_methods(true)).to include(:section)
43
+ end
44
+ end
45
+
46
+ describe 'Dsl on section' do
47
+ let(:other_section_class) do
48
+ Class.new(Howitzer::Web::Section) do
49
+ me '#id'
50
+ element :baz, '.klass'
51
+ end
52
+ end
53
+ let(:parent) { double }
54
+ let(:capybara_context) { double }
55
+ let(:nested_capybara_context) { double }
56
+ let(:capybara_element) { double }
57
+ subject { section_class.new(parent, capybara_context) }
58
+ before do
59
+ stub_const('BarSection', other_section_class)
60
+ section_class.class_eval do
61
+ section :bar
62
+ end
63
+ expect(capybara_context).to receive(:find).with('#id').at_least(:once) { nested_capybara_context }
64
+ expect(nested_capybara_context).to receive(:find).with('.klass') { capybara_element }
65
+ end
66
+ it 'can work with nested section' do
67
+ expect(subject.bar_section).to be_a(other_section_class)
68
+ expect(subject.bar_section.private_methods(false)).to include(:baz_element)
69
+ expect(subject.bar_section.send(:baz_element)).to eq(capybara_element)
70
+ end
71
+ end
72
+
73
+ describe 'Dsl on page' do
74
+ let(:session) { double(:session) }
75
+ before do
76
+ allow(Capybara).to receive(:current_session) { session }
77
+ end
78
+ context 'when section with single argument without block' do
79
+ let(:finder_args) { [:xpath, './/div'] }
80
+ let(:section_name) { :foo }
81
+ before do
82
+ web_page_class.class_eval do
83
+ section :foo
84
+ end
85
+ end
86
+ include_examples :dynamic_section_methods
87
+ end
88
+
89
+ context 'when section with single argument and block' do
90
+ subject do
91
+ web_page_class.class_eval do
92
+ section :unknown do
93
+ element :some, :id, 'do_do'
94
+ end
95
+ end
96
+ end
97
+ it 'should generate error' do
98
+ expect { subject }.to raise_error(ArgumentError, 'Missing finder arguments')
99
+ end
100
+ end
101
+
102
+ context 'when section with 2 arguments without block' do
103
+ let(:finder_args) { ['.some_class'] }
104
+ let(:section_name) { :foo }
105
+ before do
106
+ web_page_class.class_eval do
107
+ section :foo, '.some_class'
108
+ end
109
+ end
110
+ include_examples :dynamic_section_methods
111
+ end
112
+
113
+ context 'when section with 2 arguments and block' do
114
+ let(:finder_args) { [:xpath, './/div'] }
115
+ let(:section_name) { :unknown }
116
+ let(:section_class) { Howitzer::Web::BaseSection }
117
+ before do
118
+ web_page_class.class_eval do
119
+ section :unknown, :xpath, './/div' do
120
+ element :some, :id, 'do_do'
121
+ end
122
+ end
123
+ end
124
+ include_examples :dynamic_section_methods
125
+ end
126
+
127
+ context 'when nested section with 2 arguments and block' do
128
+ let(:finder_args) { [:xpath, './/div'] }
129
+ let(:section_name) { :name1 }
130
+ let(:section_class) { Howitzer::Web::BaseSection }
131
+ before do
132
+ web_page_class.class_eval do
133
+ section :name1, :xpath, './/div' do
134
+ element :some1, :id, 'do_do'
135
+
136
+ section :name2, '#klass' do
137
+ element :some2, :xpath, './/a'
138
+ end
139
+ end
140
+ end
141
+ end
142
+
143
+ include_examples :dynamic_section_methods
144
+ include_examples :capybara_context_holder
145
+
146
+ context 'checking nested level' do
147
+ let(:context2) { double }
148
+ let(:context3) { double }
149
+ let(:capybara_element) { double }
150
+ before do
151
+ expect(session).to receive(:find).with(*finder_args).once { context2 }
152
+ expect(context2).to receive(:find).with('#klass') { context3 }
153
+ expect(context3).to receive(:find).with(:xpath, './/a') { capybara_element }
154
+ end
155
+
156
+ it 'can work with nested section' do
157
+ nested_section = web_page_class.new.name1_section.name2_section
158
+ expect(nested_section).to be_a(section_class)
159
+ expect(nested_section.private_methods(false)).to include(:some2_element)
160
+ expect(nested_section.send(:some2_element)).to eq(capybara_element)
161
+ end
162
+ end
163
+ end
164
+ end
165
+ end
@@ -0,0 +1,61 @@
1
+ require 'spec_helper'
2
+ require 'howitzer/web/section_dsl'
3
+ require 'howitzer/web/section'
4
+ require 'howitzer/web/element_dsl'
5
+ RSpec.describe Howitzer::Web::Section do
6
+ describe 'element dsl methods' do
7
+ let(:parent) { double }
8
+ let(:capybara_context) { double }
9
+
10
+ let(:klass) { Class.new(described_class) }
11
+ let(:klass_object) { klass.new(parent, capybara_context) }
12
+ before { allow(klass_object).to receive(:capybara_context) { kontext } }
13
+
14
+ include_examples :element_dsl
15
+ end
16
+
17
+ describe 'DSL' do
18
+ describe '.me' do
19
+ let(:section_class) { Class.new(described_class) }
20
+ context 'when args missing' do
21
+ it { expect { section_class.send(:me) }.to raise_error(ArgumentError, 'Finder arguments are missing') }
22
+ end
23
+
24
+ context 'when args present' do
25
+ subject { section_class.send(:me, '.foo') }
26
+ it { is_expected.to eq(['.foo']) }
27
+ end
28
+
29
+ it 'should be private' do
30
+ expect { section_class.me('.foo') }.to raise_error(NoMethodError)
31
+ end
32
+ end
33
+ end
34
+
35
+ describe '.default_finder_args' do
36
+ context 'by default' do
37
+ subject { described_class.default_finder_args }
38
+ it { is_expected.to be_nil }
39
+ end
40
+
41
+ context 'when defined via dsl' do
42
+ let(:section_class) do
43
+ Class.new(described_class) do
44
+ me :xpath, './/div'
45
+ end
46
+ end
47
+ subject { section_class.default_finder_args }
48
+ it { is_expected.to eq([:xpath, './/div']) }
49
+ end
50
+ end
51
+
52
+ describe '#parent' do
53
+ subject { described_class.new(:test, 1).parent }
54
+ it { is_expected.to eq(:test) }
55
+ end
56
+
57
+ describe '#capybara_context' do
58
+ subject { described_class.new(1, :test).capybara_context }
59
+ it { is_expected.to eq(:test) }
60
+ end
61
+ end
@@ -5,4 +5,4 @@ RSpec.describe Howitzer do
5
5
  it 'should contains VERSION constant with correct format' do
6
6
  expect(Howitzer::VERSION).to match(/^\d+\.\d+(\.\d+)?$/)
7
7
  end
8
- end
8
+ end
metadata CHANGED
@@ -1,129 +1,51 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: howitzer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roman Parashchenko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-07 00:00:00.000000000 Z
11
+ date: 2016-09-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rack
14
+ name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.0'
19
+ version: '5.0'
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: '1.0'
26
+ version: '5.0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: tins
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - '='
32
- - !ruby/object:Gem::Version
33
- version: 1.6.0
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - '='
39
- - !ruby/object:Gem::Version
40
- version: 1.6.0
41
- - !ruby/object:Gem::Dependency
42
- name: rake
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :runtime
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: gli
28
+ name: capybara
57
29
  requirement: !ruby/object:Gem::Requirement
58
30
  requirements:
59
31
  - - ">="
60
32
  - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: syntax
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
33
+ version: '2.1'
34
+ - - "<"
74
35
  - !ruby/object:Gem::Version
75
- version: '0'
36
+ version: '3.0'
76
37
  type: :runtime
77
38
  prerelease: false
78
39
  version_requirements: !ruby/object:Gem::Requirement
79
40
  requirements:
80
41
  - - ">="
81
42
  - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: cucumber
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '2.0'
90
- type: :runtime
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
43
+ version: '2.1'
44
+ - - "<"
95
45
  - !ruby/object:Gem::Version
96
- version: '2.0'
46
+ version: '3.0'
97
47
  - !ruby/object:Gem::Dependency
98
- name: rspec
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '3.2'
104
- type: :runtime
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '3.2'
111
- - !ruby/object:Gem::Dependency
112
- name: sexy_settings
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :runtime
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: '0'
125
- - !ruby/object:Gem::Dependency
126
- name: repeater
48
+ name: gli
127
49
  requirement: !ruby/object:Gem::Requirement
128
50
  requirements:
129
51
  - - ">="
@@ -165,35 +87,7 @@ dependencies:
165
87
  - !ruby/object:Gem::Version
166
88
  version: 1.1.10
167
89
  - !ruby/object:Gem::Dependency
168
- name: rest-client
169
- requirement: !ruby/object:Gem::Requirement
170
- requirements:
171
- - - "~>"
172
- - !ruby/object:Gem::Version
173
- version: '1.8'
174
- type: :runtime
175
- prerelease: false
176
- version_requirements: !ruby/object:Gem::Requirement
177
- requirements:
178
- - - "~>"
179
- - !ruby/object:Gem::Version
180
- version: '1.8'
181
- - !ruby/object:Gem::Dependency
182
- name: poltergeist
183
- requirement: !ruby/object:Gem::Requirement
184
- requirements:
185
- - - ">="
186
- - !ruby/object:Gem::Version
187
- version: '0'
188
- type: :runtime
189
- prerelease: false
190
- version_requirements: !ruby/object:Gem::Requirement
191
- requirements:
192
- - - ">="
193
- - !ruby/object:Gem::Version
194
- version: '0'
195
- - !ruby/object:Gem::Dependency
196
- name: rawler
90
+ name: rake
197
91
  requirement: !ruby/object:Gem::Requirement
198
92
  requirements:
199
93
  - - ">="
@@ -207,19 +101,19 @@ dependencies:
207
101
  - !ruby/object:Gem::Version
208
102
  version: '0'
209
103
  - !ruby/object:Gem::Dependency
210
- name: capybara
104
+ name: rspec
211
105
  requirement: !ruby/object:Gem::Requirement
212
106
  requirements:
213
- - - ">="
107
+ - - "~>"
214
108
  - !ruby/object:Gem::Version
215
- version: '0'
109
+ version: '3.2'
216
110
  type: :runtime
217
111
  prerelease: false
218
112
  version_requirements: !ruby/object:Gem::Requirement
219
113
  requirements:
220
- - - ">="
114
+ - - "~>"
221
115
  - !ruby/object:Gem::Version
222
- version: '0'
116
+ version: '3.2'
223
117
  - !ruby/object:Gem::Dependency
224
118
  name: selenium-webdriver
225
119
  requirement: !ruby/object:Gem::Requirement
@@ -235,21 +129,7 @@ dependencies:
235
129
  - !ruby/object:Gem::Version
236
130
  version: '0'
237
131
  - !ruby/object:Gem::Dependency
238
- name: activesupport
239
- requirement: !ruby/object:Gem::Requirement
240
- requirements:
241
- - - "~>"
242
- - !ruby/object:Gem::Version
243
- version: '4.2'
244
- type: :runtime
245
- prerelease: false
246
- version_requirements: !ruby/object:Gem::Requirement
247
- requirements:
248
- - - "~>"
249
- - !ruby/object:Gem::Version
250
- version: '4.2'
251
- - !ruby/object:Gem::Dependency
252
- name: testingbot
132
+ name: sexy_settings
253
133
  requirement: !ruby/object:Gem::Requirement
254
134
  requirements:
255
135
  - - ">="
@@ -277,7 +157,7 @@ dependencies:
277
157
  - !ruby/object:Gem::Version
278
158
  version: '0'
279
159
  - !ruby/object:Gem::Dependency
280
- name: fuubar
160
+ name: ffaker
281
161
  requirement: !ruby/object:Gem::Requirement
282
162
  requirements:
283
163
  - - ">="
@@ -291,7 +171,7 @@ dependencies:
291
171
  - !ruby/object:Gem::Version
292
172
  version: '0'
293
173
  - !ruby/object:Gem::Dependency
294
- name: ffaker
174
+ name: fuubar
295
175
  requirement: !ruby/object:Gem::Requirement
296
176
  requirements:
297
177
  - - ">="
@@ -320,7 +200,7 @@ dependencies:
320
200
  version: '0'
321
201
  description: Howitzer uses the best practices and design patterns allowing to generate
322
202
  a test project in less than 5 minutes. It has out-of-the-box configurations for
323
- parallel cross-browser testing in the Cloud.
203
+ parallel cross-browser testing in the cloud.
324
204
  email: howitzer@strongqa.com
325
205
  executables:
326
206
  - howitzer
@@ -330,12 +210,12 @@ files:
330
210
  - ".coveralls.yml"
331
211
  - ".gitignore"
332
212
  - ".rspec"
213
+ - ".rubocop.yml"
333
214
  - ".ruby-gemset"
334
215
  - ".travis.yml"
335
216
  - ".yardopts"
336
217
  - CHANGELOG.md
337
218
  - CONTRIBUTING.md
338
- - GETTING_STARTED.md
339
219
  - Gemfile
340
220
  - LICENSE
341
221
  - README.md
@@ -351,87 +231,112 @@ files:
351
231
  - features/support/transformers.rb
352
232
  - generators/base_generator.rb
353
233
  - generators/config/config_generator.rb
234
+ - generators/config/templates/boot.rb
235
+ - generators/config/templates/capybara.rb
354
236
  - generators/config/templates/custom.yml
355
237
  - generators/config/templates/default.yml
356
238
  - generators/cucumber/cucumber_generator.rb
357
239
  - generators/cucumber/templates/common_steps.rb
358
240
  - generators/cucumber/templates/cucumber.rake
359
- - generators/cucumber/templates/cucumber.yml
360
241
  - generators/cucumber/templates/env.rb
361
242
  - generators/cucumber/templates/example.feature
362
243
  - generators/cucumber/templates/transformers.rb
363
244
  - generators/emails/emails_generator.rb
364
245
  - generators/emails/templates/example_email.rb
365
- - generators/pages/pages_generator.rb
366
- - generators/pages/templates/example_menu.rb
367
- - generators/pages/templates/example_page.rb
246
+ - generators/prerequisites/prerequisites_generator.rb
247
+ - generators/prerequisites/templates/base.rb
248
+ - generators/prerequisites/templates/factory_girl.rb
249
+ - generators/prerequisites/templates/user.rb
250
+ - generators/prerequisites/templates/users.rb
368
251
  - generators/root/root_generator.rb
369
252
  - generators/root/templates/.gitignore
370
- - generators/root/templates/Gemfile
253
+ - generators/root/templates/.rubocop.yml
254
+ - generators/root/templates/Gemfile.erb
371
255
  - generators/root/templates/Rakefile
372
- - generators/root/templates/boot.rb
373
256
  - generators/rspec/rspec_generator.rb
374
257
  - generators/rspec/templates/example_spec.rb
375
258
  - generators/rspec/templates/rspec.rake
376
259
  - generators/rspec/templates/spec_helper.rb
377
260
  - generators/tasks/tasks_generator.rb
378
261
  - generators/tasks/templates/common.rake
262
+ - generators/turnip/templates/.rspec
263
+ - generators/turnip/templates/common_steps.rb
264
+ - generators/turnip/templates/example.feature
265
+ - generators/turnip/templates/spec_helper.rb
266
+ - generators/turnip/templates/turnip.rake
267
+ - generators/turnip/templates/turnip_helper.rb
268
+ - generators/turnip/turnip_generator.rb
269
+ - generators/web/templates/example_page.rb
270
+ - generators/web/templates/menu_section.rb
271
+ - generators/web/web_generator.rb
379
272
  - howitzer.gemspec
380
273
  - lib/howitzer.rb
381
- - lib/howitzer/blank_page.rb
382
- - lib/howitzer/capybara/dsl_ex.rb
383
- - lib/howitzer/capybara/settings.rb
274
+ - lib/howitzer/cache.rb
275
+ - lib/howitzer/capybara_helpers.rb
384
276
  - lib/howitzer/email.rb
385
277
  - lib/howitzer/exceptions.rb
386
- - lib/howitzer/helpers.rb
387
- - lib/howitzer/init.rb
388
- - lib/howitzer/mailgun/client.rb
389
- - lib/howitzer/mailgun/connector.rb
390
- - lib/howitzer/mailgun/response.rb
391
- - lib/howitzer/patches/rawler_patched.rb
392
- - lib/howitzer/settings.rb
278
+ - lib/howitzer/log.rb
279
+ - lib/howitzer/mail_adapters.rb
280
+ - lib/howitzer/mail_adapters/abstract.rb
281
+ - lib/howitzer/mail_adapters/mailgun.rb
282
+ - lib/howitzer/mailgun_api.rb
283
+ - lib/howitzer/mailgun_api/client.rb
284
+ - lib/howitzer/mailgun_api/connector.rb
285
+ - lib/howitzer/mailgun_api/response.rb
393
286
  - lib/howitzer/tasks/framework.rake
394
287
  - lib/howitzer/utils.rb
395
- - lib/howitzer/utils/data_generator/data_storage.rb
396
- - lib/howitzer/utils/data_generator/gen.rb
397
- - lib/howitzer/utils/locator_store.rb
398
- - lib/howitzer/utils/log.rb
399
- - lib/howitzer/utils/page_validator.rb
400
- - lib/howitzer/vendor/firebug-1.12.1-fx.xpi
401
- - lib/howitzer/vendor/firepath-0.9.7-fx.xpi
288
+ - lib/howitzer/utils/string_extensions.rb
402
289
  - lib/howitzer/version.rb
403
- - lib/howitzer/web_page.rb
404
- - spec/active_resource.rb
290
+ - lib/howitzer/web.rb
291
+ - lib/howitzer/web/base_section.rb
292
+ - lib/howitzer/web/blank_page.rb
293
+ - lib/howitzer/web/capybara_methods_proxy.rb
294
+ - lib/howitzer/web/element_dsl.rb
295
+ - lib/howitzer/web/iframe_dsl.rb
296
+ - lib/howitzer/web/page.rb
297
+ - lib/howitzer/web/page_dsl.rb
298
+ - lib/howitzer/web/page_validator.rb
299
+ - lib/howitzer/web/section.rb
300
+ - lib/howitzer/web/section_dsl.rb
405
301
  - spec/config/custom.yml
406
- - spec/config/default.yml
407
302
  - spec/spec_helper.rb
408
- - spec/support/boot_helper.rb
409
303
  - spec/support/generator_helper.rb
410
304
  - spec/support/logger_helper.rb
411
305
  - spec/support/mailgun_unit_client.rb
306
+ - spec/support/shared_examples/capybara_context_holder.rb
307
+ - spec/support/shared_examples/capybara_methods_proxy.rb
308
+ - spec/support/shared_examples/dynamic_section_methods.rb
309
+ - spec/support/shared_examples/element_dsl.rb
412
310
  - spec/unit/generators/base_generator_spec.rb
413
311
  - spec/unit/generators/config_generator_spec.rb
414
312
  - spec/unit/generators/cucumber_generator_spec.rb
415
313
  - spec/unit/generators/emails_generator_spec.rb
416
- - spec/unit/generators/pages_generator_spec.rb
314
+ - spec/unit/generators/prerequisites_generator_spec.rb
417
315
  - spec/unit/generators/root_generator_spec.rb
418
316
  - spec/unit/generators/rspec_generator_spec.rb
419
317
  - spec/unit/generators/tasks_generator_spec.rb
420
- - spec/unit/lib/capybara/dsl_ex_spec.rb
421
- - spec/unit/lib/capybara/settings_spec.rb
318
+ - spec/unit/generators/turnip_generator_spec.rb
319
+ - spec/unit/generators/web_generator_spec.rb
320
+ - spec/unit/lib/cache_spec.rb
321
+ - spec/unit/lib/capybara_helpers_spec.rb
422
322
  - spec/unit/lib/email_spec.rb
423
- - spec/unit/lib/helpers_spec.rb
323
+ - spec/unit/lib/howitzer.rb
424
324
  - spec/unit/lib/init_spec.rb
425
- - spec/unit/lib/mailgun/client_spec.rb
426
- - spec/unit/lib/mailgun/connector_spec.rb
427
- - spec/unit/lib/mailgun/response_spec.rb
428
- - spec/unit/lib/settings_spec.rb
429
- - spec/unit/lib/utils/data_generator/data_storage_spec.rb
430
- - spec/unit/lib/utils/data_generator/gen_spec.rb
431
- - spec/unit/lib/utils/locator_store_spec.rb
432
- - spec/unit/lib/utils/log_spec.rb
433
- - spec/unit/lib/utils/page_validator_spec.rb
434
- - spec/unit/lib/web_page_spec.rb
325
+ - spec/unit/lib/log_spec.rb
326
+ - spec/unit/lib/mail_adapters/abstract_spec.rb
327
+ - spec/unit/lib/mail_adapters/mailgun_spec.rb
328
+ - spec/unit/lib/mailgun_api/client_spec.rb
329
+ - spec/unit/lib/mailgun_api/connector_spec.rb
330
+ - spec/unit/lib/mailgun_api/response_spec.rb
331
+ - spec/unit/lib/utils/string_extensions_spec.rb
332
+ - spec/unit/lib/web/base_section_spec.rb
333
+ - spec/unit/lib/web/element_dsl_spec.rb
334
+ - spec/unit/lib/web/iframe_dsl_spec.rb
335
+ - spec/unit/lib/web/page_dsl_spec.rb
336
+ - spec/unit/lib/web/page_spec.rb
337
+ - spec/unit/lib/web/page_validator_spec.rb
338
+ - spec/unit/lib/web/section_dsl_spec.rb
339
+ - spec/unit/lib/web/section_spec.rb
435
340
  - spec/unit/version_spec.rb
436
341
  homepage: http://strongqa.github.io/howitzer/
437
342
  licenses:
@@ -445,7 +350,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
445
350
  requirements:
446
351
  - - ">="
447
352
  - !ruby/object:Gem::Version
448
- version: 1.9.3
353
+ version: 2.2.2
449
354
  required_rubygems_version: !ruby/object:Gem::Requirement
450
355
  requirements:
451
356
  - - ">="
@@ -466,35 +371,43 @@ test_files:
466
371
  - features/step_definitions/common_steps.rb
467
372
  - features/support/env.rb
468
373
  - features/support/transformers.rb
469
- - spec/active_resource.rb
470
374
  - spec/config/custom.yml
471
- - spec/config/default.yml
472
375
  - spec/spec_helper.rb
473
- - spec/support/boot_helper.rb
474
376
  - spec/support/generator_helper.rb
475
377
  - spec/support/logger_helper.rb
476
378
  - spec/support/mailgun_unit_client.rb
379
+ - spec/support/shared_examples/capybara_context_holder.rb
380
+ - spec/support/shared_examples/capybara_methods_proxy.rb
381
+ - spec/support/shared_examples/dynamic_section_methods.rb
382
+ - spec/support/shared_examples/element_dsl.rb
477
383
  - spec/unit/generators/base_generator_spec.rb
478
384
  - spec/unit/generators/config_generator_spec.rb
479
385
  - spec/unit/generators/cucumber_generator_spec.rb
480
386
  - spec/unit/generators/emails_generator_spec.rb
481
- - spec/unit/generators/pages_generator_spec.rb
387
+ - spec/unit/generators/prerequisites_generator_spec.rb
482
388
  - spec/unit/generators/root_generator_spec.rb
483
389
  - spec/unit/generators/rspec_generator_spec.rb
484
390
  - spec/unit/generators/tasks_generator_spec.rb
485
- - spec/unit/lib/capybara/dsl_ex_spec.rb
486
- - spec/unit/lib/capybara/settings_spec.rb
391
+ - spec/unit/generators/turnip_generator_spec.rb
392
+ - spec/unit/generators/web_generator_spec.rb
393
+ - spec/unit/lib/cache_spec.rb
394
+ - spec/unit/lib/capybara_helpers_spec.rb
487
395
  - spec/unit/lib/email_spec.rb
488
- - spec/unit/lib/helpers_spec.rb
396
+ - spec/unit/lib/howitzer.rb
489
397
  - spec/unit/lib/init_spec.rb
490
- - spec/unit/lib/mailgun/client_spec.rb
491
- - spec/unit/lib/mailgun/connector_spec.rb
492
- - spec/unit/lib/mailgun/response_spec.rb
493
- - spec/unit/lib/settings_spec.rb
494
- - spec/unit/lib/utils/data_generator/data_storage_spec.rb
495
- - spec/unit/lib/utils/data_generator/gen_spec.rb
496
- - spec/unit/lib/utils/locator_store_spec.rb
497
- - spec/unit/lib/utils/log_spec.rb
498
- - spec/unit/lib/utils/page_validator_spec.rb
499
- - spec/unit/lib/web_page_spec.rb
398
+ - spec/unit/lib/log_spec.rb
399
+ - spec/unit/lib/mail_adapters/abstract_spec.rb
400
+ - spec/unit/lib/mail_adapters/mailgun_spec.rb
401
+ - spec/unit/lib/mailgun_api/client_spec.rb
402
+ - spec/unit/lib/mailgun_api/connector_spec.rb
403
+ - spec/unit/lib/mailgun_api/response_spec.rb
404
+ - spec/unit/lib/utils/string_extensions_spec.rb
405
+ - spec/unit/lib/web/base_section_spec.rb
406
+ - spec/unit/lib/web/element_dsl_spec.rb
407
+ - spec/unit/lib/web/iframe_dsl_spec.rb
408
+ - spec/unit/lib/web/page_dsl_spec.rb
409
+ - spec/unit/lib/web/page_spec.rb
410
+ - spec/unit/lib/web/page_validator_spec.rb
411
+ - spec/unit/lib/web/section_dsl_spec.rb
412
+ - spec/unit/lib/web/section_spec.rb
500
413
  - spec/unit/version_spec.rb