howitzer 2.2.0 → 2.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/CHANGELOG.md +16 -1
- data/LICENSE +1 -1
- data/README.md +16 -16
- data/generators/base_generator.rb +1 -1
- data/generators/config/config_generator.rb +1 -4
- data/generators/config/templates/boot.rb +1 -1
- data/generators/config/templates/capybara.rb +1 -3
- data/generators/config/templates/default.yml +5 -19
- data/generators/config/templates/drivers/browserstack.rb +1 -1
- data/generators/config/templates/drivers/crossbrowsertesting.rb +1 -1
- data/generators/config/templates/drivers/headless_chrome.rb +1 -1
- data/generators/config/templates/drivers/headless_firefox.rb +1 -1
- data/generators/config/templates/drivers/sauce.rb +1 -1
- data/generators/config/templates/drivers/selenium.rb +1 -1
- data/generators/config/templates/drivers/selenium_grid.rb +2 -2
- data/generators/config/templates/drivers/testingbot.rb +1 -1
- data/generators/cucumber/templates/env.rb +1 -1
- data/generators/cucumber/templates/hooks.rb +8 -2
- data/generators/cucumber/templates/transformers.rb +1 -1
- data/generators/prerequisites/templates/factory_bot.rb +1 -1
- data/generators/root/templates/Gemfile.erb +4 -10
- data/generators/rspec/templates/spec_helper.rb +4 -4
- data/generators/turnip/templates/spec_helper.rb +4 -4
- data/generators/web/templates/example_page.rb +1 -1
- data/lib/howitzer/cache.rb +1 -1
- data/lib/howitzer/capybara_helpers.rb +27 -7
- data/lib/howitzer/email.rb +2 -2
- data/lib/howitzer/exceptions.rb +21 -21
- data/lib/howitzer/gmail_api/client.rb +13 -4
- data/lib/howitzer/log.rb +6 -6
- data/lib/howitzer/mailgun_api/client.rb +3 -2
- data/lib/howitzer/mailgun_api/response.rb +1 -2
- data/lib/howitzer/mailtrap_api/client.rb +1 -1
- data/lib/howitzer/meta/actions.rb +13 -16
- data/lib/howitzer/meta/element.rb +12 -10
- data/lib/howitzer/utils/string_extensions.rb +6 -2
- data/lib/howitzer/version.rb +1 -1
- data/lib/howitzer/web/base_section.rb +1 -1
- data/lib/howitzer/web/capybara_methods_proxy.rb +11 -5
- data/lib/howitzer/web/element_dsl.rb +104 -45
- data/lib/howitzer/web/iframe_dsl.rb +2 -2
- data/lib/howitzer/web/page.rb +4 -14
- data/lib/howitzer/web/page_dsl.rb +15 -6
- data/lib/howitzer/web/page_validator.rb +25 -26
- data/lib/howitzer/web/section.rb +5 -2
- data/lib/howitzer/web/section_dsl.rb +64 -30
- data/lib/howitzer.rb +2 -2
- metadata +24 -161
- data/.coveralls.yml +0 -1
- data/.gitignore +0 -14
- data/.rspec +0 -3
- data/.rubocop.yml +0 -60
- data/.ruby-gemset +0 -1
- data/.travis.yml +0 -8
- data/Gemfile +0 -14
- data/ISSUE_TEMPLATE.md +0 -16
- data/MAINTENANCE.md +0 -32
- data/Rakefile +0 -38
- data/features/cli_help.feature +0 -31
- data/features/cli_new.feature +0 -393
- data/features/cli_unknown.feature +0 -17
- data/features/cli_update.feature +0 -223
- data/features/cli_version.feature +0 -14
- data/features/step_definitions/common_steps.rb +0 -34
- data/features/support/env.rb +0 -1
- data/generators/config/templates/drivers/poltergeist.rb +0 -11
- data/generators/config/templates/drivers/webkit.rb +0 -6
- data/generators/root/templates/.gitignore +0 -21
- data/generators/root/templates/.rubocop.yml.erb +0 -56
- data/generators/turnip/templates/.rspec +0 -1
- data/howitzer.gemspec +0 -39
- data/lib/howitzer/mail_adapters/debugmail.rb +0 -0
- data/spec/config/custom.yml +0 -9
- data/spec/spec_helper.rb +0 -73
- data/spec/support/generator_helper.rb +0 -21
- data/spec/support/logger_helper.rb +0 -13
- data/spec/support/shared_examples/capybara_context_holder.rb +0 -33
- data/spec/support/shared_examples/capybara_methods_proxy.rb +0 -94
- data/spec/support/shared_examples/dynamic_section_methods.rb +0 -35
- data/spec/support/shared_examples/element_dsl.rb +0 -242
- data/spec/support/shared_examples/meta_highlight_xpath.rb +0 -41
- data/spec/unit/generators/base_generator_spec.rb +0 -283
- data/spec/unit/generators/config_generator_spec.rb +0 -61
- data/spec/unit/generators/cucumber_generator_spec.rb +0 -62
- data/spec/unit/generators/emails_generator_spec.rb +0 -35
- data/spec/unit/generators/prerequisites_generator_spec.rb +0 -53
- data/spec/unit/generators/root_generator_spec.rb +0 -86
- data/spec/unit/generators/rspec_generator_spec.rb +0 -36
- data/spec/unit/generators/tasks_generator_spec.rb +0 -31
- data/spec/unit/generators/templates/cucumber_spec.rb +0 -97
- data/spec/unit/generators/templates/rspec_spec.rb +0 -88
- data/spec/unit/generators/templates/turnip_spec.rb +0 -98
- data/spec/unit/generators/turnip_generator_spec.rb +0 -52
- data/spec/unit/generators/web_generator_spec.rb +0 -52
- data/spec/unit/lib/cache_spec.rb +0 -85
- data/spec/unit/lib/capybara_helpers_spec.rb +0 -730
- data/spec/unit/lib/email_spec.rb +0 -186
- data/spec/unit/lib/gmail_api/client_spec.rb +0 -26
- data/spec/unit/lib/howitzer_spec.rb +0 -92
- data/spec/unit/lib/init_spec.rb +0 -2
- data/spec/unit/lib/log_spec.rb +0 -122
- data/spec/unit/lib/mail_adapters/abstract_spec.rb +0 -62
- data/spec/unit/lib/mail_adapters/gmail_spec.rb +0 -128
- data/spec/unit/lib/mail_adapters/mailgun_spec.rb +0 -158
- data/spec/unit/lib/mail_adapters/mailtrap_spec.rb +0 -130
- data/spec/unit/lib/mailgun_api/client_spec.rb +0 -80
- data/spec/unit/lib/mailgun_api/connector_spec.rb +0 -54
- data/spec/unit/lib/mailgun_api/response_spec.rb +0 -28
- data/spec/unit/lib/mailtrap_api/client_spec.rb +0 -67
- data/spec/unit/lib/meta/element_spec.rb +0 -59
- data/spec/unit/lib/meta/entry_spec.rb +0 -77
- data/spec/unit/lib/meta/iframe_spec.rb +0 -66
- data/spec/unit/lib/meta/section_spec.rb +0 -43
- data/spec/unit/lib/utils/string_extensions_spec.rb +0 -77
- data/spec/unit/lib/web/base_section_spec.rb +0 -43
- data/spec/unit/lib/web/element_dsl_spec.rb +0 -31
- data/spec/unit/lib/web/iframe_dsl_spec.rb +0 -203
- data/spec/unit/lib/web/page_dsl_spec.rb +0 -74
- data/spec/unit/lib/web/page_spec.rb +0 -385
- data/spec/unit/lib/web/page_validator_spec.rb +0 -276
- data/spec/unit/lib/web/section_dsl_spec.rb +0 -165
- data/spec/unit/lib/web/section_spec.rb +0 -70
- data/spec/unit/version_spec.rb +0 -8
data/features/cli_update.feature
DELETED
|
@@ -1,223 +0,0 @@
|
|
|
1
|
-
Feature: Howitzer CLI Update Existing Project
|
|
2
|
-
|
|
3
|
-
Scenario: Run with update command when rspec based project present
|
|
4
|
-
Given created old howitzer project based on rspec
|
|
5
|
-
When I run `howitzer update` interactively
|
|
6
|
-
And I type "y"
|
|
7
|
-
And I type "n"
|
|
8
|
-
And I type "i"
|
|
9
|
-
Then the output should contain:
|
|
10
|
-
"""
|
|
11
|
-
* Config files generation ...
|
|
12
|
-
Identical 'config/boot.rb' file
|
|
13
|
-
Identical 'config/custom.yml' file
|
|
14
|
-
Identical 'config/capybara.rb' file
|
|
15
|
-
Added 'config/default.yml' file
|
|
16
|
-
Identical 'config/drivers/appium.rb' file
|
|
17
|
-
Identical 'config/drivers/browserstack.rb' file
|
|
18
|
-
Identical 'config/drivers/crossbrowsertesting.rb' file
|
|
19
|
-
Identical 'config/drivers/headless_chrome.rb' file
|
|
20
|
-
Identical 'config/drivers/headless_firefox.rb' file
|
|
21
|
-
Identical 'config/drivers/poltergeist.rb' file
|
|
22
|
-
Identical 'config/drivers/sauce.rb' file
|
|
23
|
-
Identical 'config/drivers/selenium.rb' file
|
|
24
|
-
Identical 'config/drivers/selenium_grid.rb' file
|
|
25
|
-
Identical 'config/drivers/testingbot.rb' file
|
|
26
|
-
Identical 'config/drivers/webkit.rb' file
|
|
27
|
-
* PageOriented pattern structure generation ...
|
|
28
|
-
Identical 'web/pages/example_page.rb' file
|
|
29
|
-
Identical 'web/sections/menu_section.rb' file
|
|
30
|
-
* Base rake task generation ...
|
|
31
|
-
Identical 'tasks/common.rake' file
|
|
32
|
-
* Email example generation ...
|
|
33
|
-
Identical '/emails/example_email.rb' file
|
|
34
|
-
* Pre-requisites integration to the framework ...
|
|
35
|
-
Identical 'prerequisites/factory_bot.rb' file
|
|
36
|
-
Identical 'prerequisites/factories/users.rb' file
|
|
37
|
-
Identical 'prerequisites/models/base.rb' file
|
|
38
|
-
Identical 'prerequisites/models/user.rb' file
|
|
39
|
-
* Root files generation ...
|
|
40
|
-
Added '.gitignore' file
|
|
41
|
-
Conflict with 'Rakefile' file
|
|
42
|
-
Overwrite 'Rakefile' file? [Yn]: Forced 'Rakefile' file
|
|
43
|
-
Added template '.rubocop.yml.erb' with params '{:rspec=>true}' to destination '.rubocop.yml'
|
|
44
|
-
Conflict with 'Gemfile' template
|
|
45
|
-
Overwrite 'Gemfile' template? [Yn]: Skipped 'Gemfile' template
|
|
46
|
-
* RSpec integration to the framework ...
|
|
47
|
-
Identical 'spec/spec_helper.rb' file
|
|
48
|
-
Identical 'spec/example_spec.rb' file
|
|
49
|
-
Identical 'tasks/rspec.rake' file
|
|
50
|
-
"""
|
|
51
|
-
And the exit status should be 0
|
|
52
|
-
When I run `howitzer update` interactively
|
|
53
|
-
And I type "y"
|
|
54
|
-
And I type "y"
|
|
55
|
-
Then the output should contain:
|
|
56
|
-
"""
|
|
57
|
-
* Config files generation ...
|
|
58
|
-
Identical 'config/boot.rb' file
|
|
59
|
-
Identical 'config/custom.yml' file
|
|
60
|
-
Identical 'config/capybara.rb' file
|
|
61
|
-
Identical 'config/default.yml' file
|
|
62
|
-
Identical 'config/drivers/appium.rb' file
|
|
63
|
-
Identical 'config/drivers/browserstack.rb' file
|
|
64
|
-
Identical 'config/drivers/crossbrowsertesting.rb' file
|
|
65
|
-
Identical 'config/drivers/headless_chrome.rb' file
|
|
66
|
-
Identical 'config/drivers/headless_firefox.rb' file
|
|
67
|
-
Identical 'config/drivers/poltergeist.rb' file
|
|
68
|
-
Identical 'config/drivers/sauce.rb' file
|
|
69
|
-
Identical 'config/drivers/selenium.rb' file
|
|
70
|
-
Identical 'config/drivers/selenium_grid.rb' file
|
|
71
|
-
Identical 'config/drivers/testingbot.rb' file
|
|
72
|
-
Identical 'config/drivers/webkit.rb' file
|
|
73
|
-
* PageOriented pattern structure generation ...
|
|
74
|
-
Identical 'web/pages/example_page.rb' file
|
|
75
|
-
Identical 'web/sections/menu_section.rb' file
|
|
76
|
-
* Base rake task generation ...
|
|
77
|
-
Identical 'tasks/common.rake' file
|
|
78
|
-
* Email example generation ...
|
|
79
|
-
Identical '/emails/example_email.rb' file
|
|
80
|
-
* Pre-requisites integration to the framework ...
|
|
81
|
-
Identical 'prerequisites/factory_bot.rb' file
|
|
82
|
-
Identical 'prerequisites/factories/users.rb' file
|
|
83
|
-
Identical 'prerequisites/models/base.rb' file
|
|
84
|
-
Identical 'prerequisites/models/user.rb' file
|
|
85
|
-
* Root files generation ...
|
|
86
|
-
Identical '.gitignore' file
|
|
87
|
-
Identical 'Rakefile' file
|
|
88
|
-
Conflict with '.rubocop.yml' template
|
|
89
|
-
Overwrite '.rubocop.yml' template? [Yn]: Forced '.rubocop.yml' template
|
|
90
|
-
Conflict with 'Gemfile' template
|
|
91
|
-
Overwrite 'Gemfile' template? [Yn]: Forced 'Gemfile' template
|
|
92
|
-
* RSpec integration to the framework ...
|
|
93
|
-
Identical 'spec/spec_helper.rb' file
|
|
94
|
-
Identical 'spec/example_spec.rb' file
|
|
95
|
-
Identical 'tasks/rspec.rake' file
|
|
96
|
-
"""
|
|
97
|
-
And the exit status should be 0
|
|
98
|
-
|
|
99
|
-
Scenario: Run with update command when cucumber based project present
|
|
100
|
-
Given created old howitzer project based on cucumber
|
|
101
|
-
When I run `howitzer update` interactively
|
|
102
|
-
And I type "y"
|
|
103
|
-
And I type "n"
|
|
104
|
-
And I type "i"
|
|
105
|
-
Then the output should contain:
|
|
106
|
-
"""
|
|
107
|
-
* Config files generation ...
|
|
108
|
-
Identical 'config/boot.rb' file
|
|
109
|
-
Identical 'config/custom.yml' file
|
|
110
|
-
Identical 'config/capybara.rb' file
|
|
111
|
-
Added 'config/default.yml' file
|
|
112
|
-
Identical 'config/drivers/appium.rb' file
|
|
113
|
-
Identical 'config/drivers/browserstack.rb' file
|
|
114
|
-
Identical 'config/drivers/crossbrowsertesting.rb' file
|
|
115
|
-
Identical 'config/drivers/headless_chrome.rb' file
|
|
116
|
-
Identical 'config/drivers/headless_firefox.rb' file
|
|
117
|
-
Identical 'config/drivers/poltergeist.rb' file
|
|
118
|
-
Identical 'config/drivers/sauce.rb' file
|
|
119
|
-
Identical 'config/drivers/selenium.rb' file
|
|
120
|
-
Identical 'config/drivers/selenium_grid.rb' file
|
|
121
|
-
Identical 'config/drivers/testingbot.rb' file
|
|
122
|
-
Identical 'config/drivers/webkit.rb' file
|
|
123
|
-
* PageOriented pattern structure generation ...
|
|
124
|
-
Identical 'web/pages/example_page.rb' file
|
|
125
|
-
Identical 'web/sections/menu_section.rb' file
|
|
126
|
-
* Base rake task generation ...
|
|
127
|
-
Identical 'tasks/common.rake' file
|
|
128
|
-
* Email example generation ...
|
|
129
|
-
Identical '/emails/example_email.rb' file
|
|
130
|
-
* Pre-requisites integration to the framework ...
|
|
131
|
-
Identical 'prerequisites/factory_bot.rb' file
|
|
132
|
-
Identical 'prerequisites/factories/users.rb' file
|
|
133
|
-
Identical 'prerequisites/models/base.rb' file
|
|
134
|
-
Identical 'prerequisites/models/user.rb' file
|
|
135
|
-
* Root files generation ...
|
|
136
|
-
Added '.gitignore' file
|
|
137
|
-
Conflict with 'Rakefile' file
|
|
138
|
-
Overwrite 'Rakefile' file? [Yn]: Forced 'Rakefile' file
|
|
139
|
-
Added template '.rubocop.yml.erb' with params '{:cucumber=>true}' to destination '.rubocop.yml'
|
|
140
|
-
Conflict with 'Gemfile' template
|
|
141
|
-
Overwrite 'Gemfile' template? [Yn]: Skipped 'Gemfile' template
|
|
142
|
-
* Cucumber integration to the framework ...
|
|
143
|
-
Identical 'features/step_definitions/common_steps.rb' file
|
|
144
|
-
Identical 'features/support/env.rb' file
|
|
145
|
-
Identical 'features/support/hooks.rb' file
|
|
146
|
-
Identical 'features/support/transformers.rb' file
|
|
147
|
-
Identical 'features/example.feature' file
|
|
148
|
-
Identical 'tasks/cucumber.rake' file
|
|
149
|
-
"""
|
|
150
|
-
And the exit status should be 0
|
|
151
|
-
|
|
152
|
-
Scenario: Run with update command when turnip based project present
|
|
153
|
-
Given created old howitzer project based on turnip
|
|
154
|
-
When I run `howitzer update` interactively
|
|
155
|
-
And I type "y"
|
|
156
|
-
Then the output should contain:
|
|
157
|
-
"""
|
|
158
|
-
* Config files generation ...
|
|
159
|
-
Identical 'config/boot.rb' file
|
|
160
|
-
Identical 'config/custom.yml' file
|
|
161
|
-
Identical 'config/capybara.rb' file
|
|
162
|
-
Identical 'config/default.yml' file
|
|
163
|
-
Identical 'config/drivers/appium.rb' file
|
|
164
|
-
Identical 'config/drivers/browserstack.rb' file
|
|
165
|
-
Identical 'config/drivers/crossbrowsertesting.rb' file
|
|
166
|
-
Identical 'config/drivers/headless_chrome.rb' file
|
|
167
|
-
Identical 'config/drivers/headless_firefox.rb' file
|
|
168
|
-
Identical 'config/drivers/poltergeist.rb' file
|
|
169
|
-
Identical 'config/drivers/sauce.rb' file
|
|
170
|
-
Identical 'config/drivers/selenium.rb' file
|
|
171
|
-
Identical 'config/drivers/selenium_grid.rb' file
|
|
172
|
-
Identical 'config/drivers/testingbot.rb' file
|
|
173
|
-
Identical 'config/drivers/webkit.rb' file
|
|
174
|
-
* PageOriented pattern structure generation ...
|
|
175
|
-
Identical 'web/pages/example_page.rb' file
|
|
176
|
-
Identical 'web/sections/menu_section.rb' file
|
|
177
|
-
* Base rake task generation ...
|
|
178
|
-
Identical 'tasks/common.rake' file
|
|
179
|
-
* Email example generation ...
|
|
180
|
-
Identical '/emails/example_email.rb' file
|
|
181
|
-
* Pre-requisites integration to the framework ...
|
|
182
|
-
Identical 'prerequisites/factory_bot.rb' file
|
|
183
|
-
Identical 'prerequisites/factories/users.rb' file
|
|
184
|
-
Identical 'prerequisites/models/base.rb' file
|
|
185
|
-
Identical 'prerequisites/models/user.rb' file
|
|
186
|
-
* Root files generation ...
|
|
187
|
-
Added '.gitignore' file
|
|
188
|
-
Identical 'Rakefile' file
|
|
189
|
-
Added template '.rubocop.yml.erb' with params '{:turnip=>true}' to destination '.rubocop.yml'
|
|
190
|
-
Conflict with 'Gemfile' template
|
|
191
|
-
Overwrite 'Gemfile' template? [Yn]: Forced 'Gemfile' template
|
|
192
|
-
* Turnip integration to the framework ...
|
|
193
|
-
Added '.rspec' file
|
|
194
|
-
Identical 'spec/spec_helper.rb' file
|
|
195
|
-
Identical 'spec/turnip_helper.rb' file
|
|
196
|
-
Identical 'spec/acceptance/example.feature' file
|
|
197
|
-
Identical 'spec/steps/common_steps.rb' file
|
|
198
|
-
"""
|
|
199
|
-
And the exit status should be 0
|
|
200
|
-
|
|
201
|
-
Scenario: Run with update command when project missing
|
|
202
|
-
When I run `howitzer update`
|
|
203
|
-
Then the output should contain:
|
|
204
|
-
"""
|
|
205
|
-
error: Current directory is not Howitzer project
|
|
206
|
-
"""
|
|
207
|
-
And the exit status should be 126
|
|
208
|
-
|
|
209
|
-
Scenario Outline: Run with update command with help option
|
|
210
|
-
When I run `howitzer update <option>`
|
|
211
|
-
Then the output should contain exactly:
|
|
212
|
-
"""
|
|
213
|
-
NAME
|
|
214
|
-
update - Upgrade existing project
|
|
215
|
-
|
|
216
|
-
SYNOPSIS
|
|
217
|
-
howitzer [global options] update
|
|
218
|
-
"""
|
|
219
|
-
And the exit status should be 0
|
|
220
|
-
Examples:
|
|
221
|
-
| option |
|
|
222
|
-
| --help |
|
|
223
|
-
| -h |
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
Feature: Howitzer CLI Version
|
|
2
|
-
|
|
3
|
-
Scenario Outline: Run with version global option
|
|
4
|
-
When I run `howitzer <option>`
|
|
5
|
-
Then the output should be exactly:
|
|
6
|
-
"""
|
|
7
|
-
howitzer version <HOWITZER_VERSION>
|
|
8
|
-
|
|
9
|
-
"""
|
|
10
|
-
And the exit status should be 0
|
|
11
|
-
Examples:
|
|
12
|
-
| option |
|
|
13
|
-
| --version |
|
|
14
|
-
| -v |
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
Given /^created old howitzer project based on rspec$/ do
|
|
2
|
-
run_command_and_stop 'howitzer new test_automation --rspec'
|
|
3
|
-
all_commands.shift
|
|
4
|
-
|
|
5
|
-
FileUtils.move(Dir.glob("#{expand_path('.')}/test_automation/*"), expand_path('.'))
|
|
6
|
-
FileUtils.remove_dir File.join(expand_path('.'), 'test_automation'), true
|
|
7
|
-
overwrite_file('Rakefile', "Dir.chdir(File.join(__dir__, '.'))")
|
|
8
|
-
overwrite_file('Gemfile', 'Hello')
|
|
9
|
-
remove 'config/default.yml'
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
Given /^created old howitzer project based on cucumber$/ do
|
|
13
|
-
run_command_and_stop 'howitzer new test_automation --cucumber'
|
|
14
|
-
all_commands.shift
|
|
15
|
-
|
|
16
|
-
FileUtils.move(Dir.glob("#{expand_path('.')}/test_automation/*"), expand_path('.'))
|
|
17
|
-
FileUtils.remove_dir File.join(expand_path('.'), 'test_automation'), true
|
|
18
|
-
overwrite_file('Rakefile', "Dir.chdir(File.join(__dir__, '.'))")
|
|
19
|
-
overwrite_file('Gemfile', 'Hello')
|
|
20
|
-
remove 'config/default.yml'
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
Given /^created old howitzer project based on turnip$/ do
|
|
24
|
-
run_command_and_stop 'howitzer new test_automation --turnip'
|
|
25
|
-
all_commands.shift
|
|
26
|
-
|
|
27
|
-
FileUtils.move(Dir.glob("#{expand_path('.')}/test_automation/*"), expand_path('.'))
|
|
28
|
-
FileUtils.remove_dir File.join(expand_path('.'), 'test_automation'), true
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
Then 'the output should be exactly:' do |text|
|
|
32
|
-
text.gsub!('<HOWITZER_VERSION>', Howitzer::VERSION)
|
|
33
|
-
step 'the output should contain exactly:', text
|
|
34
|
-
end
|
data/features/support/env.rb
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
require 'aruba/cucumber'
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
# :poltergeist driver
|
|
2
|
-
|
|
3
|
-
CapybaraHelpers.load_driver_gem!(:poltergeist, 'capybara/poltergeist', 'poltergeist')
|
|
4
|
-
|
|
5
|
-
Capybara.register_driver :poltergeist do |app|
|
|
6
|
-
Capybara::Poltergeist::Driver.new(
|
|
7
|
-
app,
|
|
8
|
-
js_errors: !Howitzer.phantom_ignore_js_errors,
|
|
9
|
-
phantomjs_options: ["--ignore-ssl-errors=#{Howitzer.phantom_ignore_ssl_errors ? 'yes' : 'no'}"]
|
|
10
|
-
)
|
|
11
|
-
end
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
.idea/
|
|
2
|
-
custom.yml
|
|
3
|
-
bin/
|
|
4
|
-
log/
|
|
5
|
-
eylogs/
|
|
6
|
-
spec/results/
|
|
7
|
-
spec/sandbox/
|
|
8
|
-
tmp/
|
|
9
|
-
*.swp
|
|
10
|
-
*.orig
|
|
11
|
-
.rakeTasks
|
|
12
|
-
.bundle
|
|
13
|
-
.DS_STORE
|
|
14
|
-
.DS_Store
|
|
15
|
-
*.xml
|
|
16
|
-
*.log
|
|
17
|
-
*.pem
|
|
18
|
-
build-number.txt
|
|
19
|
-
sauce_connect.log*
|
|
20
|
-
*.*~
|
|
21
|
-
capybara-*.html
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
# See full list of defaults here: https://github.com/bbatsov/rubocop/blob/master/config/default.yml
|
|
2
|
-
# To see all cops used see here: https://github.com/bbatsov/rubocop/blob/master/config/enabled.yml
|
|
3
|
-
|
|
4
|
-
AllCops:
|
|
5
|
-
DisplayCopNames: true
|
|
6
|
-
TargetRubyVersion: 2.4
|
|
7
|
-
|
|
8
|
-
Layout/CaseIndentation:
|
|
9
|
-
Enabled: false
|
|
10
|
-
<% if cucumber -%>
|
|
11
|
-
|
|
12
|
-
Lint/AmbiguousBlockAssociation:
|
|
13
|
-
Enabled: false
|
|
14
|
-
<% end -%>
|
|
15
|
-
|
|
16
|
-
Lint/AmbiguousRegexpLiteral:
|
|
17
|
-
Enabled: false
|
|
18
|
-
|
|
19
|
-
Metrics/BlockLength:
|
|
20
|
-
Enabled: false
|
|
21
|
-
|
|
22
|
-
Metrics/LineLength:
|
|
23
|
-
Max: 120
|
|
24
|
-
|
|
25
|
-
Metrics/ModuleLength:
|
|
26
|
-
Max: 150
|
|
27
|
-
|
|
28
|
-
Style/CaseEquality:
|
|
29
|
-
Enabled: false
|
|
30
|
-
|
|
31
|
-
Style/Documentation:
|
|
32
|
-
Enabled: false
|
|
33
|
-
|
|
34
|
-
Style/EmptyElse:
|
|
35
|
-
Enabled: false
|
|
36
|
-
|
|
37
|
-
Style/FrozenStringLiteralComment:
|
|
38
|
-
Enabled: false
|
|
39
|
-
<% if turnip -%>
|
|
40
|
-
|
|
41
|
-
Style/MixinGrouping:
|
|
42
|
-
EnforcedStyle: separated
|
|
43
|
-
Exclude:
|
|
44
|
-
- '**/*_steps.rb'
|
|
45
|
-
<% end -%>
|
|
46
|
-
<% if cucumber || turnip -%>
|
|
47
|
-
|
|
48
|
-
Style/SymbolProc:
|
|
49
|
-
Exclude:
|
|
50
|
-
<% if cucumber -%>
|
|
51
|
-
- 'features/step_definitions/**/*.rb'
|
|
52
|
-
<%- end -%>
|
|
53
|
-
<% if turnip -%>
|
|
54
|
-
- 'spec/steps/**/*.rb'
|
|
55
|
-
<%- end -%>
|
|
56
|
-
<% end -%>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
-r turnip/rspec
|
data/howitzer.gemspec
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
require File.expand_path('lib/howitzer/version', __dir__)
|
|
2
|
-
|
|
3
|
-
Gem::Specification.new do |gem|
|
|
4
|
-
gem.author = 'Roman Parashchenko'
|
|
5
|
-
gem.email = 'howitzer@strongqa.com'
|
|
6
|
-
gem.description = 'Howitzer uses the best practices and design patterns allowing to generate a test project in' \
|
|
7
|
-
' less than 5 minutes. It has out-of-the-box configurations for parallel cross-browser testing in the cloud.'
|
|
8
|
-
gem.summary = 'Ruby based framework for acceptance testing'
|
|
9
|
-
gem.homepage = 'http://strongqa.github.io/howitzer/'
|
|
10
|
-
gem.license = 'MIT'
|
|
11
|
-
|
|
12
|
-
gem.bindir = 'bin'
|
|
13
|
-
gem.files = `git ls-files`.split($OUTPUT_RECORD_SEPARATOR)
|
|
14
|
-
gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
|
|
15
|
-
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
|
16
|
-
gem.name = 'howitzer'
|
|
17
|
-
gem.require_paths = ['lib']
|
|
18
|
-
gem.version = Howitzer::VERSION
|
|
19
|
-
gem.required_ruby_version = '>= 2.3'
|
|
20
|
-
|
|
21
|
-
gem.add_runtime_dependency 'activesupport', '~>5.0'
|
|
22
|
-
gem.add_runtime_dependency 'capybara', '< 4.0'
|
|
23
|
-
gem.add_runtime_dependency 'colorize'
|
|
24
|
-
gem.add_runtime_dependency 'gli'
|
|
25
|
-
gem.add_runtime_dependency 'gmail'
|
|
26
|
-
gem.add_runtime_dependency 'launchy'
|
|
27
|
-
gem.add_runtime_dependency 'log4r', '~>1.1.10'
|
|
28
|
-
gem.add_runtime_dependency 'nokogiri', '~> 1.6' if gem.platform.to_s =~ /mswin|mingw/
|
|
29
|
-
gem.add_runtime_dependency 'rake'
|
|
30
|
-
gem.add_runtime_dependency 'rspec', '~>3.2'
|
|
31
|
-
gem.add_runtime_dependency 'rspec-wait'
|
|
32
|
-
gem.add_runtime_dependency 'selenium-webdriver', ['>= 3.4.1', '< 4.0']
|
|
33
|
-
gem.add_runtime_dependency 'sexy_settings'
|
|
34
|
-
|
|
35
|
-
gem.add_development_dependency('aruba')
|
|
36
|
-
gem.add_development_dependency('ffaker')
|
|
37
|
-
gem.add_development_dependency('fuubar')
|
|
38
|
-
gem.add_development_dependency('yard')
|
|
39
|
-
end
|
|
File without changes
|
data/spec/config/custom.yml
DELETED
data/spec/spec_helper.rb
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
require 'rubygems'
|
|
2
|
-
require 'bundler/setup'
|
|
3
|
-
require 'simplecov'
|
|
4
|
-
require 'coveralls'
|
|
5
|
-
Coveralls.wear!
|
|
6
|
-
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new(
|
|
7
|
-
[
|
|
8
|
-
SimpleCov::Formatter::HTMLFormatter,
|
|
9
|
-
Coveralls::SimpleCov::Formatter
|
|
10
|
-
]
|
|
11
|
-
)
|
|
12
|
-
|
|
13
|
-
SimpleCov.start do
|
|
14
|
-
add_filter '/spec/'
|
|
15
|
-
add_filter '/config/'
|
|
16
|
-
add_filter do |source_file|
|
|
17
|
-
source_file.lines.count < 5
|
|
18
|
-
end
|
|
19
|
-
add_group 'generators', '/generators'
|
|
20
|
-
add_group 'lib', '/lib'
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
require 'tmpdir'
|
|
24
|
-
require 'ffaker'
|
|
25
|
-
require 'capybara'
|
|
26
|
-
require 'json'
|
|
27
|
-
require 'capybara/dsl'
|
|
28
|
-
require 'active_support'
|
|
29
|
-
require 'active_support/deprecation'
|
|
30
|
-
require 'active_support/deprecation/method_wrappers'
|
|
31
|
-
require 'active_support/core_ext'
|
|
32
|
-
require 'repeater'
|
|
33
|
-
require 'sexy_settings'
|
|
34
|
-
require 'fake_web'
|
|
35
|
-
|
|
36
|
-
SexySettings.configure do |config|
|
|
37
|
-
config.path_to_default_settings = File.expand_path(
|
|
38
|
-
'default.yml',
|
|
39
|
-
File.join(__dir__, '..', 'generators', 'config', 'templates')
|
|
40
|
-
)
|
|
41
|
-
config.path_to_custom_settings = File.expand_path(
|
|
42
|
-
'custom.yml',
|
|
43
|
-
File.join(__dir__, 'config')
|
|
44
|
-
)
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
puts SexySettings::Base.instance.as_formatted_text
|
|
48
|
-
|
|
49
|
-
require 'howitzer'
|
|
50
|
-
require 'howitzer/exceptions'
|
|
51
|
-
|
|
52
|
-
def project_path
|
|
53
|
-
File.expand_path(File.join(__dir__, '..'))
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
def lib_path
|
|
57
|
-
File.join(project_path, 'lib')
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
def generators_path
|
|
61
|
-
File.join(project_path, 'generators')
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
def log_path
|
|
65
|
-
File.join(project_path, 'spec/log')
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
Dir[File.join(__dir__, 'support', '**', '*.rb')].each { |f| require f }
|
|
69
|
-
|
|
70
|
-
RSpec.configure do |config|
|
|
71
|
-
config.include Howitzer::GeneratorHelper
|
|
72
|
-
config.disable_monkey_patching!
|
|
73
|
-
end
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
require 'fileutils'
|
|
2
|
-
require_relative '../../generators/base_generator'
|
|
3
|
-
|
|
4
|
-
module Howitzer
|
|
5
|
-
module GeneratorHelper
|
|
6
|
-
def file_tree_info(root)
|
|
7
|
-
Dir["#{root}/**/.*", "#{root}/**/*"].sort_by { |name| name.sub(root, '') }.map do |name|
|
|
8
|
-
hash = { name: name.sub(root, ''), is_directory: File.directory?(name) }
|
|
9
|
-
hash[:size] = File.stat(name).size unless hash[:is_directory]
|
|
10
|
-
hash
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def template_file_size(root_directory, file)
|
|
15
|
-
File.size(File.join(generators_path, root_directory, 'templates', file))
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
Howitzer::BaseGenerator.logger = StringIO.new
|
|
20
|
-
Howitzer::BaseGenerator.destination = Dir.mktmpdir
|
|
21
|
-
Dir[File.join(generators_path, '**', '*_generator.rb')].each { |f| require f }
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
RSpec.shared_examples :capybara_context_holder do
|
|
4
|
-
describe '#capybara_context' do
|
|
5
|
-
let(:web_page_class) do
|
|
6
|
-
klass = described_class
|
|
7
|
-
Class.new do
|
|
8
|
-
include klass
|
|
9
|
-
end
|
|
10
|
-
end
|
|
11
|
-
subject { web_page_class.new.capybara_context }
|
|
12
|
-
context 'when parent class has the method' do
|
|
13
|
-
before do
|
|
14
|
-
web_page_class.class_eval do
|
|
15
|
-
def capybara_scopes
|
|
16
|
-
@capybara_scopes ||= [true]
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
it 'should execute parent method' do
|
|
21
|
-
is_expected.to eq(true)
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
context 'when parent class does not have the method' do
|
|
25
|
-
it 'should raise error' do
|
|
26
|
-
expect { subject }.to raise_error(
|
|
27
|
-
NotImplementedError,
|
|
28
|
-
"Please define 'capybara_scopes' method for class holder"
|
|
29
|
-
)
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
RSpec.shared_examples :capybara_methods_proxy do
|
|
4
|
-
let(:session) { double(:session) }
|
|
5
|
-
before do
|
|
6
|
-
allow(Capybara).to receive(:current_session) { session }
|
|
7
|
-
allow(Howitzer).to receive(:driver) { driver_name }
|
|
8
|
-
allow(session).to receive(:current_url) { 'google.com' }
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
describe '#driver' do
|
|
12
|
-
it 'should proxy #driver method' do
|
|
13
|
-
expect(session).to receive(:driver).once
|
|
14
|
-
reciever.driver
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
describe '#text' do
|
|
19
|
-
it 'should proxy #text method' do
|
|
20
|
-
expect(session).to receive(:text).once
|
|
21
|
-
reciever.text
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
context 'when capybara session method' do
|
|
26
|
-
it 'should proxy method' do
|
|
27
|
-
expect(session).to receive(:visit).once
|
|
28
|
-
reciever.visit
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
context 'when capybara modal method' do
|
|
33
|
-
it 'should proxy method' do
|
|
34
|
-
expect(session).to receive(:dismiss_prompt).with(:some_text).once
|
|
35
|
-
reciever.dismiss_prompt(:some_text)
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
describe '#click_alert_box' do
|
|
40
|
-
subject { reciever.click_alert_box(flag_value) }
|
|
41
|
-
context 'when flag true and correct driver specified' do
|
|
42
|
-
let(:flag_value) { true }
|
|
43
|
-
let(:page) { double }
|
|
44
|
-
let(:alert) { double }
|
|
45
|
-
let(:driver) { double }
|
|
46
|
-
let(:browser) { double }
|
|
47
|
-
let(:switch_to) { double }
|
|
48
|
-
let(:driver_name) { 'selenium' }
|
|
49
|
-
it do
|
|
50
|
-
expect(session).to receive(:driver).ordered.and_return(driver)
|
|
51
|
-
expect(driver).to receive(:browser).ordered.and_return(browser)
|
|
52
|
-
expect(browser).to receive(:switch_to).ordered.and_return(switch_to)
|
|
53
|
-
expect(switch_to).to receive(:alert).ordered.and_return(alert)
|
|
54
|
-
expect(alert).to receive(:accept).once
|
|
55
|
-
subject
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
context 'when flag false and correct driver specified' do
|
|
59
|
-
let(:flag_value) { false }
|
|
60
|
-
let(:page) { double }
|
|
61
|
-
let(:alert) { double }
|
|
62
|
-
let(:driver) { double }
|
|
63
|
-
let(:browser) { double }
|
|
64
|
-
let(:switch_to) { double }
|
|
65
|
-
let(:driver_name) { 'selenium' }
|
|
66
|
-
it do
|
|
67
|
-
expect(session).to receive(:driver).ordered.and_return(driver)
|
|
68
|
-
expect(driver).to receive(:browser).ordered.and_return(browser)
|
|
69
|
-
expect(browser).to receive(:switch_to).ordered.and_return(switch_to)
|
|
70
|
-
expect(switch_to).to receive(:alert).ordered.and_return(alert)
|
|
71
|
-
expect(alert).to receive(:dismiss).once
|
|
72
|
-
subject
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
context 'when flag true and wrong driver specified' do
|
|
76
|
-
let(:flag_value) { true }
|
|
77
|
-
let(:page) { double }
|
|
78
|
-
let(:driver_name) { 'ff' }
|
|
79
|
-
it do
|
|
80
|
-
expect(session).to receive(:evaluate_script).with('window.confirm = function() { return true; }')
|
|
81
|
-
subject
|
|
82
|
-
end
|
|
83
|
-
end
|
|
84
|
-
context 'when flag false and wrong driver specified' do
|
|
85
|
-
let(:driver_name) { 'ff' }
|
|
86
|
-
let(:flag_value) { false }
|
|
87
|
-
let(:page) { double }
|
|
88
|
-
it do
|
|
89
|
-
expect(session).to receive(:evaluate_script).with('window.confirm = function() { return false; }')
|
|
90
|
-
subject
|
|
91
|
-
end
|
|
92
|
-
end
|
|
93
|
-
end
|
|
94
|
-
end
|