howitzer 1.0.2 → 1.1.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/.coveralls.yml +1 -0
- data/.gitignore +3 -1
- data/.ruby-gemset +1 -0
- data/.travis.yml +4 -1
- data/.yardopts +5 -0
- data/CHANGELOG.md +23 -1
- data/CONTRIBUTING.md +14 -0
- data/GETTING_STARTED.md +283 -183
- data/Gemfile +3 -2
- data/LICENSE +1 -1
- data/README.md +93 -39
- data/Rakefile +4 -0
- data/bin/howitzer +34 -5
- data/features/cli_help.feature +3 -2
- data/features/cli_new.feature +1 -1
- data/features/cli_unknown.feature +1 -1
- data/features/cli_update.feature +84 -0
- data/features/step_definitions/common_steps.rb +9 -1
- data/generators/base_generator.rb +30 -15
- data/generators/config/config_generator.rb +7 -7
- data/generators/config/templates/custom.yml +1 -0
- data/generators/config/templates/default.yml +35 -5
- data/generators/cucumber/templates/env.rb +2 -2
- data/generators/cucumber/templates/transformers.rb +3 -1
- data/generators/root/templates/Gemfile +5 -3
- data/generators/root/templates/Rakefile +2 -0
- data/generators/rspec/templates/example_spec.rb +3 -3
- data/generators/rspec/templates/spec_helper.rb +6 -7
- data/howitzer.gemspec +15 -15
- data/lib/howitzer/capybara/settings.rb +125 -49
- data/lib/howitzer/helpers.rb +161 -94
- data/lib/howitzer/mailgun/client.rb +1 -1
- data/lib/howitzer/tasks/framework.rake +3 -0
- data/lib/howitzer/utils.rb +1 -1
- data/lib/howitzer/utils/locator_store.rb +1 -1
- data/lib/howitzer/utils/log.rb +1 -1
- data/lib/howitzer/utils/page_validator.rb +1 -1
- data/lib/howitzer/version.rb +1 -1
- data/lib/howitzer/web_page.rb +11 -11
- data/spec/spec_helper.rb +25 -22
- data/spec/support/generator_helper.rb +8 -1
- data/spec/unit/generators/base_generator_spec.rb +242 -0
- data/spec/unit/generators/config_generator_spec.rb +34 -0
- data/spec/unit/generators/cucumber_generator_spec.rb +45 -0
- data/spec/unit/generators/emails_generator_spec.rb +31 -0
- data/spec/unit/generators/pages_generator_spec.rb +33 -0
- data/spec/unit/generators/root_generator_spec.rb +35 -0
- data/spec/unit/generators/rspec_generator_spec.rb +36 -0
- data/spec/unit/generators/tasks_generator_spec.rb +31 -0
- data/spec/unit/lib/capybara/dsl_ex_spec.rb +11 -11
- data/spec/unit/lib/capybara/settings_spec.rb +336 -58
- data/spec/unit/lib/email_spec.rb +17 -17
- data/spec/unit/lib/helpers_spec.rb +699 -315
- data/spec/unit/lib/mailgun/client_spec.rb +9 -9
- data/spec/unit/lib/mailgun/connector_spec.rb +20 -20
- data/spec/unit/lib/mailgun/response_spec.rb +9 -9
- data/spec/unit/lib/settings_spec.rb +6 -6
- data/spec/unit/lib/utils/data_generator/data_storage_spec.rb +31 -31
- data/spec/unit/lib/utils/data_generator/gen_spec.rb +20 -20
- data/spec/unit/lib/utils/locator_store_spec.rb +39 -39
- data/spec/unit/lib/utils/log_spec.rb +42 -42
- data/spec/unit/lib/utils/page_validator_spec.rb +69 -70
- data/spec/unit/lib/web_page_spec.rb +91 -69
- data/spec/unit/version_spec.rb +3 -3
- metadata +100 -78
- data/spec/unit/generators/generators_spec.rb +0 -175
@@ -2,9 +2,9 @@ require 'spec_helper'
|
|
2
2
|
require 'howitzer/web_page'
|
3
3
|
require 'howitzer/capybara/settings'
|
4
4
|
|
5
|
-
describe
|
6
|
-
describe
|
7
|
-
let(:url_value) {
|
5
|
+
RSpec.describe 'WebPage' do
|
6
|
+
describe '.open' do
|
7
|
+
let(:url_value) { 'google.com' }
|
8
8
|
let(:retryable) { double }
|
9
9
|
let(:check_correct_page_loaded) { double }
|
10
10
|
let(:other_instance) { WebPage.instance }
|
@@ -18,20 +18,21 @@ describe "WebPage" do
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
-
describe
|
21
|
+
describe '.given' do
|
22
22
|
subject { WebPage.given }
|
23
23
|
before do
|
24
24
|
expect(WebPage).to receive(:wait_for_opened).with(no_args).once
|
25
|
-
|
25
|
+
expect(WebPage).to receive(:instance) { true }
|
26
26
|
end
|
27
|
-
it {
|
27
|
+
it { is_expected.to be_truthy }
|
28
28
|
end
|
29
29
|
|
30
|
-
describe
|
30
|
+
describe '.title' do
|
31
31
|
let(:page) { double }
|
32
32
|
subject { WebPage.instance.title }
|
33
33
|
before do
|
34
|
-
|
34
|
+
allow_any_instance_of(WebPage).to receive(:check_validations_are_defined!) { true }
|
35
|
+
allow(WebPage.instance).to receive(:current_url) { 'google.com' }
|
35
36
|
end
|
36
37
|
it do
|
37
38
|
expect(WebPage.instance).to receive(:page) { page }
|
@@ -40,47 +41,47 @@ describe "WebPage" do
|
|
40
41
|
end
|
41
42
|
end
|
42
43
|
|
43
|
-
describe
|
44
|
+
describe '.url' do
|
44
45
|
let(:page) { double }
|
45
46
|
subject { WebPage.url }
|
46
47
|
it do
|
47
48
|
expect(WebPage).to receive(:page) { page }
|
48
|
-
expect(page).to receive(:current_url) {
|
49
|
-
|
49
|
+
expect(page).to receive(:current_url) { 'google.com' }
|
50
|
+
is_expected.to eq('google.com')
|
50
51
|
end
|
51
52
|
end
|
52
53
|
|
53
|
-
describe
|
54
|
+
describe '.current_url' do
|
54
55
|
let(:page) { double }
|
55
56
|
subject { WebPage.current_url }
|
56
57
|
it do
|
57
58
|
expect(WebPage).to receive(:page) { page }
|
58
|
-
expect(page).to receive(:current_url) {
|
59
|
-
|
59
|
+
expect(page).to receive(:current_url) { 'google.com' }
|
60
|
+
is_expected.to eq('google.com')
|
60
61
|
end
|
61
62
|
end
|
62
63
|
|
63
|
-
describe
|
64
|
+
describe '.text' do
|
64
65
|
let(:page) { double }
|
65
66
|
let(:find) { double }
|
66
67
|
subject { WebPage.text }
|
67
68
|
it do
|
68
69
|
expect(WebPage).to receive(:page) { page }
|
69
70
|
expect(page).to receive(:find).with('body') { find }
|
70
|
-
expect(find).to receive(:text) {
|
71
|
-
|
71
|
+
expect(find).to receive(:text) { 'some body text' }
|
72
|
+
is_expected.to eq('some body text')
|
72
73
|
end
|
73
74
|
end
|
74
75
|
|
75
|
-
describe
|
76
|
+
describe '.current_page' do
|
76
77
|
subject { WebPage.current_page }
|
77
|
-
context
|
78
|
+
context 'when matched_pages has no pages' do
|
78
79
|
before { allow(WebPage).to receive(:matched_pages){ [] } }
|
79
|
-
it {
|
80
|
+
it { is_expected.to eq(WebPage::UnknownPage) }
|
80
81
|
end
|
81
|
-
context
|
82
|
-
let(:foo_page) { double(inspect:
|
83
|
-
let(:bar_page) { double(inspect:
|
82
|
+
context 'when matched_pages has more than 1 page' do
|
83
|
+
let(:foo_page) { double(inspect: 'FooPage') }
|
84
|
+
let(:bar_page) { double(inspect: 'BarPage') }
|
84
85
|
before do
|
85
86
|
allow(WebPage).to receive(:current_url) { 'http://test.com' }
|
86
87
|
allow(WebPage).to receive(:title) { 'Test site' }
|
@@ -94,20 +95,20 @@ describe "WebPage" do
|
|
94
95
|
subject
|
95
96
|
end
|
96
97
|
end
|
97
|
-
context
|
98
|
-
let(:foo_page) { double(to_s:
|
98
|
+
context 'when matched_pages has only 1 page' do
|
99
|
+
let(:foo_page) { double(to_s: 'FooPage') }
|
99
100
|
before { allow(WebPage).to receive(:matched_pages){ [foo_page] } }
|
100
|
-
it {
|
101
|
+
it { is_expected.to eq(foo_page) }
|
101
102
|
end
|
102
103
|
end
|
103
104
|
|
104
|
-
describe
|
105
|
+
describe '.wait_for_opened' do
|
105
106
|
subject { WebPage.wait_for_opened }
|
106
|
-
context
|
107
|
+
context 'when page is opened' do
|
107
108
|
before { allow(WebPage).to receive(:opened?) { true } }
|
108
|
-
it {
|
109
|
+
it { is_expected.to be_nil }
|
109
110
|
end
|
110
|
-
context
|
111
|
+
context 'when page is not opened' do
|
111
112
|
before do
|
112
113
|
allow(WebPage).to receive(:current_page) { 'FooPage' }
|
113
114
|
allow(WebPage).to receive(:current_url) { 'http://test.com' }
|
@@ -125,26 +126,47 @@ describe "WebPage" do
|
|
125
126
|
end
|
126
127
|
end
|
127
128
|
|
128
|
-
describe
|
129
|
+
describe '#initialize' do
|
130
|
+
subject { WebPage.send(:new) }
|
131
|
+
before do
|
132
|
+
expect_any_instance_of(WebPage).to receive(:check_validations_are_defined!).once { true }
|
133
|
+
end
|
134
|
+
context 'when maximized_window is true' do
|
135
|
+
before { allow(settings).to receive(:maximized_window) { true } }
|
136
|
+
it do
|
137
|
+
expect_any_instance_of(WebPage).to receive_message_chain('page.driver.browser.manage.window.maximize')
|
138
|
+
subject
|
139
|
+
end
|
140
|
+
end
|
141
|
+
context 'when maximized_window is false' do
|
142
|
+
before { allow(settings).to receive(:maximized_window) { false } }
|
143
|
+
it do
|
144
|
+
expect_any_instance_of(WebPage).not_to receive('page')
|
145
|
+
subject
|
146
|
+
end
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
describe 'inherited callback' do
|
129
151
|
let!(:page_class) do
|
130
152
|
Howitzer::Utils::PageValidator.instance_variable_set(:@pages, [])
|
131
153
|
Class.new(WebPage)
|
132
154
|
end
|
133
155
|
it { expect(Howitzer::Utils::PageValidator.pages).to eq([page_class]) }
|
134
|
-
it
|
156
|
+
it 'can not be instantiated with new' do
|
135
157
|
expect { page_class.new }.to raise_error(NoMethodError, "private method `new' called for #{page_class}")
|
136
158
|
end
|
137
159
|
end
|
138
160
|
|
139
|
-
describe
|
161
|
+
describe '#tinymce_fill_in' do
|
140
162
|
subject { WebPage.instance.tinymce_fill_in(name,options) }
|
141
163
|
let(:name) { 'name' }
|
142
|
-
let(:options) { {with:
|
164
|
+
let(:options) { {with: 'some content'} }
|
143
165
|
before do
|
144
|
-
allow(WebPage.instance).to receive(:current_url) {
|
166
|
+
allow(WebPage.instance).to receive(:current_url) { 'google.com' }
|
145
167
|
allow(settings).to receive(:driver) { driver_name }
|
146
168
|
end
|
147
|
-
context
|
169
|
+
context 'when correct driver specified' do
|
148
170
|
let(:driver_name) { 'selenium' }
|
149
171
|
let(:page) { double }
|
150
172
|
let(:driver) { double }
|
@@ -157,11 +179,11 @@ describe "WebPage" do
|
|
157
179
|
expect(page).to receive(:driver).ordered { driver }
|
158
180
|
expect(driver).to receive(:browser).ordered { browser }
|
159
181
|
expect(browser).to receive(:switch_to).ordered { switch_to }
|
160
|
-
expect(switch_to).to receive(:frame).with(
|
182
|
+
expect(switch_to).to receive(:frame).with('name_ifr').once
|
161
183
|
|
162
184
|
expect(page).to receive(:find).with(:css, '#tinymce').ordered { find }
|
163
185
|
expect(find).to receive(:native).ordered { native }
|
164
|
-
expect(native).to receive(:send_keys).with(
|
186
|
+
expect(native).to receive(:send_keys).with('some content').once
|
165
187
|
|
166
188
|
expect(page).to receive(:driver) { driver }
|
167
189
|
expect(driver).to receive(:browser) { browser }
|
@@ -171,7 +193,7 @@ describe "WebPage" do
|
|
171
193
|
subject
|
172
194
|
end
|
173
195
|
end
|
174
|
-
context
|
196
|
+
context 'when incorrect driver specified' do
|
175
197
|
let(:driver_name) { 'ff' }
|
176
198
|
let(:page) { double }
|
177
199
|
it do
|
@@ -181,14 +203,14 @@ describe "WebPage" do
|
|
181
203
|
end
|
182
204
|
end
|
183
205
|
end
|
184
|
-
describe
|
206
|
+
describe '#click_alert_box' do
|
185
207
|
subject { WebPage.instance.click_alert_box(flag_value) }
|
186
208
|
before do
|
187
209
|
allow(settings).to receive(:driver) { driver_name }
|
188
210
|
allow(settings).to receive(:timeout_tiny) { 0 }
|
189
|
-
allow(WebPage.instance).to receive(:current_url) {
|
211
|
+
allow(WebPage.instance).to receive(:current_url) { 'google.com' }
|
190
212
|
end
|
191
|
-
context
|
213
|
+
context 'when flag true and correct driver specified' do
|
192
214
|
let(:flag_value) { true }
|
193
215
|
let(:page) { double }
|
194
216
|
let(:alert) { double }
|
@@ -206,7 +228,7 @@ describe "WebPage" do
|
|
206
228
|
subject
|
207
229
|
end
|
208
230
|
end
|
209
|
-
context
|
231
|
+
context 'when flag false and correct driver specified' do
|
210
232
|
let(:flag_value) { false }
|
211
233
|
let(:page) { double }
|
212
234
|
let(:alert) { double }
|
@@ -224,7 +246,7 @@ describe "WebPage" do
|
|
224
246
|
subject
|
225
247
|
end
|
226
248
|
end
|
227
|
-
context
|
249
|
+
context 'when flag true and wrong driver specified' do
|
228
250
|
let(:flag_value) { true }
|
229
251
|
let(:page) { double }
|
230
252
|
let(:driver_name) { 'ff' }
|
@@ -234,7 +256,7 @@ describe "WebPage" do
|
|
234
256
|
subject
|
235
257
|
end
|
236
258
|
end
|
237
|
-
context
|
259
|
+
context 'when flag false and wrong driver specified' do
|
238
260
|
let(:driver_name) { 'ff' }
|
239
261
|
let(:flag_value) { false }
|
240
262
|
let(:page) { double }
|
@@ -246,11 +268,11 @@ describe "WebPage" do
|
|
246
268
|
end
|
247
269
|
end
|
248
270
|
|
249
|
-
describe
|
250
|
-
subject { WebPage.instance.js_click(
|
271
|
+
describe '#js_click' do
|
272
|
+
subject { WebPage.instance.js_click('.some_class') }
|
251
273
|
before do
|
252
274
|
allow(settings).to receive(:timeout_tiny) { 0.1 }
|
253
|
-
allow(WebPage.instance).to receive(:current_url) {
|
275
|
+
allow(WebPage.instance).to receive(:current_url) { 'google.com' }
|
254
276
|
end
|
255
277
|
let(:page) { double }
|
256
278
|
it do
|
@@ -261,22 +283,22 @@ describe "WebPage" do
|
|
261
283
|
|
262
284
|
end
|
263
285
|
|
264
|
-
describe
|
286
|
+
describe '#wait_for_title' do
|
265
287
|
subject { WebPage.instance.wait_for_title(expected_title) }
|
266
288
|
before do
|
267
289
|
allow(settings).to receive(:timeout_small) { 0.1 }
|
268
|
-
allow(WebPage.instance).to receive(:title) {
|
290
|
+
allow(WebPage.instance).to receive(:title) { 'title' }
|
269
291
|
end
|
270
|
-
context
|
271
|
-
let(:expected_title) {
|
292
|
+
context 'when title equals expected title' do
|
293
|
+
let(:expected_title) { 'title' }
|
272
294
|
it do
|
273
|
-
|
295
|
+
is_expected.to be_truthy
|
274
296
|
end
|
275
297
|
end
|
276
|
-
context
|
277
|
-
let(:expected_title) {
|
298
|
+
context 'when title not equals expected title' do
|
299
|
+
let(:expected_title) { 'bad title' }
|
278
300
|
let(:error) { Howitzer::IncorrectPageError }
|
279
|
-
let(:error_message) {
|
301
|
+
let(:error_message) { 'Current title: title, expected: bad title' }
|
280
302
|
it do
|
281
303
|
expect(log).to receive(:error).with(error,error_message).once.and_call_original
|
282
304
|
expect { subject }.to raise_error(error)
|
@@ -284,18 +306,18 @@ describe "WebPage" do
|
|
284
306
|
end
|
285
307
|
end
|
286
308
|
|
287
|
-
describe
|
309
|
+
describe '#wait_for_url' do
|
288
310
|
subject { WebPage.instance.wait_for_url(expected_url) }
|
289
311
|
before do
|
290
312
|
allow(settings).to receive(:timeout_small) { 0.1 }
|
291
|
-
allow(WebPage.instance).to receive(:current_url) {
|
313
|
+
allow(WebPage.instance).to receive(:current_url) { 'google.com' }
|
292
314
|
end
|
293
|
-
context
|
294
|
-
let(:expected_url) {
|
295
|
-
it {
|
315
|
+
context 'when current_url equals expected_url' do
|
316
|
+
let(:expected_url) { 'google.com' }
|
317
|
+
it { is_expected.to be_truthy }
|
296
318
|
end
|
297
|
-
context
|
298
|
-
let(:expected_url) {
|
319
|
+
context 'when current_url not equals expected_url' do
|
320
|
+
let(:expected_url) { 'bad_url' }
|
299
321
|
let(:error) { Howitzer::IncorrectPageError }
|
300
322
|
let(:error_message) { "Current url: google.com, expected: #{expected_url}" }
|
301
323
|
it do
|
@@ -305,19 +327,19 @@ describe "WebPage" do
|
|
305
327
|
end
|
306
328
|
end
|
307
329
|
|
308
|
-
describe
|
330
|
+
describe '#reload' do
|
309
331
|
let(:wait_for_url) { double }
|
310
332
|
subject { WebPage.instance.reload }
|
311
333
|
let(:visit) { double }
|
312
334
|
let(:webpage) { double }
|
313
335
|
before do
|
314
|
-
allow(WebPage.instance).to receive(:current_url) {
|
315
|
-
stub_const(
|
316
|
-
allow(wait_for_url).to receive('pattern')
|
336
|
+
allow(WebPage.instance).to receive(:current_url) { 'google.com' }
|
337
|
+
stub_const('WebPage::URL_PATTERN', 'pattern')
|
338
|
+
allow(wait_for_url).to receive('pattern') { true }
|
317
339
|
end
|
318
340
|
it do
|
319
|
-
expect(log).to receive(:info) { "Reload 'google.com'
|
320
|
-
expect(WebPage.instance).to receive(:visit).with(
|
341
|
+
expect(log).to receive(:info) { "Reload 'google.com'" }
|
342
|
+
expect(WebPage.instance).to receive(:visit).with('google.com')
|
321
343
|
subject
|
322
344
|
end
|
323
345
|
end
|
data/spec/unit/version_spec.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Howitzer do
|
3
|
+
RSpec.describe Howitzer do
|
4
4
|
it { expect(subject.constants).to include(:VERSION) }
|
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,309 +1,312 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: howitzer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
- Roman Parashchenko
|
7
|
+
- Roman Parashchenko
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-05-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :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
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: gli
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: i18n
|
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
|
-
- - '>='
|
38
|
+
- - ">="
|
53
39
|
- !ruby/object:Gem::Version
|
54
40
|
version: '0'
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
42
|
name: syntax
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
58
44
|
requirements:
|
59
|
-
- -
|
45
|
+
- - ">="
|
60
46
|
- !ruby/object:Gem::Version
|
61
47
|
version: '0'
|
62
48
|
type: :runtime
|
63
49
|
prerelease: false
|
64
50
|
version_requirements: !ruby/object:Gem::Requirement
|
65
51
|
requirements:
|
66
|
-
- -
|
52
|
+
- - ">="
|
67
53
|
- !ruby/object:Gem::Version
|
68
54
|
version: '0'
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
56
|
name: cucumber
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
72
58
|
requirements:
|
73
|
-
- -
|
59
|
+
- - "~>"
|
74
60
|
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
61
|
+
version: '2.0'
|
76
62
|
type: :runtime
|
77
63
|
prerelease: false
|
78
64
|
version_requirements: !ruby/object:Gem::Requirement
|
79
65
|
requirements:
|
80
|
-
- -
|
66
|
+
- - "~>"
|
81
67
|
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
68
|
+
version: '2.0'
|
83
69
|
- !ruby/object:Gem::Dependency
|
84
70
|
name: rspec
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|
86
72
|
requirements:
|
87
|
-
- - ~>
|
73
|
+
- - "~>"
|
88
74
|
- !ruby/object:Gem::Version
|
89
|
-
version: '2
|
75
|
+
version: '3.2'
|
90
76
|
type: :runtime
|
91
77
|
prerelease: false
|
92
78
|
version_requirements: !ruby/object:Gem::Requirement
|
93
79
|
requirements:
|
94
|
-
- - ~>
|
80
|
+
- - "~>"
|
95
81
|
- !ruby/object:Gem::Version
|
96
|
-
version: '2
|
82
|
+
version: '3.2'
|
97
83
|
- !ruby/object:Gem::Dependency
|
98
84
|
name: sexy_settings
|
99
85
|
requirement: !ruby/object:Gem::Requirement
|
100
86
|
requirements:
|
101
|
-
- -
|
87
|
+
- - ">="
|
102
88
|
- !ruby/object:Gem::Version
|
103
89
|
version: '0'
|
104
90
|
type: :runtime
|
105
91
|
prerelease: false
|
106
92
|
version_requirements: !ruby/object:Gem::Requirement
|
107
93
|
requirements:
|
108
|
-
- -
|
94
|
+
- - ">="
|
109
95
|
- !ruby/object:Gem::Version
|
110
96
|
version: '0'
|
111
97
|
- !ruby/object:Gem::Dependency
|
112
98
|
name: repeater
|
113
99
|
requirement: !ruby/object:Gem::Requirement
|
114
100
|
requirements:
|
115
|
-
- -
|
101
|
+
- - ">="
|
116
102
|
- !ruby/object:Gem::Version
|
117
103
|
version: '0'
|
118
104
|
type: :runtime
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
107
|
requirements:
|
122
|
-
- -
|
108
|
+
- - ">="
|
123
109
|
- !ruby/object:Gem::Version
|
124
110
|
version: '0'
|
125
111
|
- !ruby/object:Gem::Dependency
|
126
112
|
name: launchy
|
127
113
|
requirement: !ruby/object:Gem::Requirement
|
128
114
|
requirements:
|
129
|
-
- -
|
115
|
+
- - ">="
|
130
116
|
- !ruby/object:Gem::Version
|
131
117
|
version: '0'
|
132
118
|
type: :runtime
|
133
119
|
prerelease: false
|
134
120
|
version_requirements: !ruby/object:Gem::Requirement
|
135
121
|
requirements:
|
136
|
-
- -
|
122
|
+
- - ">="
|
137
123
|
- !ruby/object:Gem::Version
|
138
124
|
version: '0'
|
139
125
|
- !ruby/object:Gem::Dependency
|
140
126
|
name: log4r
|
141
127
|
requirement: !ruby/object:Gem::Requirement
|
142
128
|
requirements:
|
143
|
-
- -
|
129
|
+
- - "~>"
|
144
130
|
- !ruby/object:Gem::Version
|
145
131
|
version: 1.1.10
|
146
132
|
type: :runtime
|
147
133
|
prerelease: false
|
148
134
|
version_requirements: !ruby/object:Gem::Requirement
|
149
135
|
requirements:
|
150
|
-
- -
|
136
|
+
- - "~>"
|
151
137
|
- !ruby/object:Gem::Version
|
152
138
|
version: 1.1.10
|
153
139
|
- !ruby/object:Gem::Dependency
|
154
140
|
name: rest-client
|
155
141
|
requirement: !ruby/object:Gem::Requirement
|
156
142
|
requirements:
|
157
|
-
- -
|
143
|
+
- - ">="
|
158
144
|
- !ruby/object:Gem::Version
|
159
145
|
version: '0'
|
160
146
|
type: :runtime
|
161
147
|
prerelease: false
|
162
148
|
version_requirements: !ruby/object:Gem::Requirement
|
163
149
|
requirements:
|
164
|
-
- -
|
150
|
+
- - ">="
|
165
151
|
- !ruby/object:Gem::Version
|
166
152
|
version: '0'
|
167
153
|
- !ruby/object:Gem::Dependency
|
168
154
|
name: poltergeist
|
169
155
|
requirement: !ruby/object:Gem::Requirement
|
170
156
|
requirements:
|
171
|
-
- -
|
157
|
+
- - ">="
|
172
158
|
- !ruby/object:Gem::Version
|
173
159
|
version: '0'
|
174
160
|
type: :runtime
|
175
161
|
prerelease: false
|
176
162
|
version_requirements: !ruby/object:Gem::Requirement
|
177
163
|
requirements:
|
178
|
-
- -
|
164
|
+
- - ">="
|
179
165
|
- !ruby/object:Gem::Version
|
180
166
|
version: '0'
|
181
167
|
- !ruby/object:Gem::Dependency
|
182
168
|
name: rawler
|
183
169
|
requirement: !ruby/object:Gem::Requirement
|
184
170
|
requirements:
|
185
|
-
- -
|
171
|
+
- - ">="
|
186
172
|
- !ruby/object:Gem::Version
|
187
173
|
version: '0'
|
188
174
|
type: :runtime
|
189
175
|
prerelease: false
|
190
176
|
version_requirements: !ruby/object:Gem::Requirement
|
191
177
|
requirements:
|
192
|
-
- -
|
178
|
+
- - ">="
|
193
179
|
- !ruby/object:Gem::Version
|
194
180
|
version: '0'
|
195
181
|
- !ruby/object:Gem::Dependency
|
196
182
|
name: capybara
|
197
183
|
requirement: !ruby/object:Gem::Requirement
|
198
184
|
requirements:
|
199
|
-
- -
|
185
|
+
- - ">="
|
200
186
|
- !ruby/object:Gem::Version
|
201
187
|
version: '0'
|
202
188
|
type: :runtime
|
203
189
|
prerelease: false
|
204
190
|
version_requirements: !ruby/object:Gem::Requirement
|
205
191
|
requirements:
|
206
|
-
- -
|
192
|
+
- - ">="
|
207
193
|
- !ruby/object:Gem::Version
|
208
194
|
version: '0'
|
209
195
|
- !ruby/object:Gem::Dependency
|
210
196
|
name: selenium-webdriver
|
211
197
|
requirement: !ruby/object:Gem::Requirement
|
212
198
|
requirements:
|
213
|
-
- -
|
199
|
+
- - ">="
|
214
200
|
- !ruby/object:Gem::Version
|
215
201
|
version: '0'
|
216
202
|
type: :runtime
|
217
203
|
prerelease: false
|
218
204
|
version_requirements: !ruby/object:Gem::Requirement
|
219
205
|
requirements:
|
220
|
-
- -
|
206
|
+
- - ">="
|
221
207
|
- !ruby/object:Gem::Version
|
222
208
|
version: '0'
|
223
209
|
- !ruby/object:Gem::Dependency
|
224
210
|
name: activesupport
|
225
211
|
requirement: !ruby/object:Gem::Requirement
|
226
212
|
requirements:
|
227
|
-
- - ~>
|
213
|
+
- - "~>"
|
228
214
|
- !ruby/object:Gem::Version
|
229
|
-
version: '4.
|
215
|
+
version: '4.2'
|
230
216
|
type: :runtime
|
231
217
|
prerelease: false
|
232
218
|
version_requirements: !ruby/object:Gem::Requirement
|
233
219
|
requirements:
|
234
|
-
- - ~>
|
220
|
+
- - "~>"
|
235
221
|
- !ruby/object:Gem::Version
|
236
|
-
version: '4.
|
222
|
+
version: '4.2'
|
237
223
|
- !ruby/object:Gem::Dependency
|
238
224
|
name: testingbot
|
239
225
|
requirement: !ruby/object:Gem::Requirement
|
240
226
|
requirements:
|
241
|
-
- -
|
227
|
+
- - ">="
|
242
228
|
- !ruby/object:Gem::Version
|
243
229
|
version: '0'
|
244
230
|
type: :runtime
|
245
231
|
prerelease: false
|
246
232
|
version_requirements: !ruby/object:Gem::Requirement
|
247
233
|
requirements:
|
248
|
-
- -
|
234
|
+
- - ">="
|
249
235
|
- !ruby/object:Gem::Version
|
250
236
|
version: '0'
|
251
237
|
- !ruby/object:Gem::Dependency
|
252
238
|
name: aruba
|
253
239
|
requirement: !ruby/object:Gem::Requirement
|
254
240
|
requirements:
|
255
|
-
- -
|
241
|
+
- - ">="
|
256
242
|
- !ruby/object:Gem::Version
|
257
243
|
version: '0'
|
258
244
|
type: :development
|
259
245
|
prerelease: false
|
260
246
|
version_requirements: !ruby/object:Gem::Requirement
|
261
247
|
requirements:
|
262
|
-
- -
|
248
|
+
- - ">="
|
263
249
|
- !ruby/object:Gem::Version
|
264
250
|
version: '0'
|
265
251
|
- !ruby/object:Gem::Dependency
|
266
252
|
name: fuubar
|
267
253
|
requirement: !ruby/object:Gem::Requirement
|
268
254
|
requirements:
|
269
|
-
- -
|
255
|
+
- - ">="
|
270
256
|
- !ruby/object:Gem::Version
|
271
|
-
version: 0
|
257
|
+
version: '0'
|
272
258
|
type: :development
|
273
259
|
prerelease: false
|
274
260
|
version_requirements: !ruby/object:Gem::Requirement
|
275
261
|
requirements:
|
276
|
-
- -
|
262
|
+
- - ">="
|
277
263
|
- !ruby/object:Gem::Version
|
278
|
-
version: 0
|
264
|
+
version: '0'
|
279
265
|
- !ruby/object:Gem::Dependency
|
280
266
|
name: ffaker
|
281
267
|
requirement: !ruby/object:Gem::Requirement
|
282
268
|
requirements:
|
283
|
-
- -
|
269
|
+
- - ">="
|
270
|
+
- !ruby/object:Gem::Version
|
271
|
+
version: '0'
|
272
|
+
type: :development
|
273
|
+
prerelease: false
|
274
|
+
version_requirements: !ruby/object:Gem::Requirement
|
275
|
+
requirements:
|
276
|
+
- - ">="
|
277
|
+
- !ruby/object:Gem::Version
|
278
|
+
version: '0'
|
279
|
+
- !ruby/object:Gem::Dependency
|
280
|
+
name: yard
|
281
|
+
requirement: !ruby/object:Gem::Requirement
|
282
|
+
requirements:
|
283
|
+
- - ">="
|
284
284
|
- !ruby/object:Gem::Version
|
285
285
|
version: '0'
|
286
286
|
type: :development
|
287
287
|
prerelease: false
|
288
288
|
version_requirements: !ruby/object:Gem::Requirement
|
289
289
|
requirements:
|
290
|
-
- -
|
290
|
+
- - ">="
|
291
291
|
- !ruby/object:Gem::Version
|
292
292
|
version: '0'
|
293
|
-
description: Howitzer
|
294
|
-
|
295
|
-
cross-browser testing in the Cloud.
|
296
|
-
email:
|
297
|
-
- strongqa@gmail.com
|
293
|
+
description: Howitzer uses the best practices and design patterns allowing to generate
|
294
|
+
a test project in less than 5 minutes. It has out-of-the-box configurations for
|
295
|
+
parallel cross-browser testing in the Cloud.
|
296
|
+
email: howitzer@strongqa.com
|
298
297
|
executables:
|
299
298
|
- howitzer
|
300
299
|
extensions: []
|
301
300
|
extra_rdoc_files: []
|
302
301
|
files:
|
303
|
-
- .
|
304
|
-
- .
|
305
|
-
- .
|
302
|
+
- ".coveralls.yml"
|
303
|
+
- ".gitignore"
|
304
|
+
- ".rspec"
|
305
|
+
- ".ruby-gemset"
|
306
|
+
- ".travis.yml"
|
307
|
+
- ".yardopts"
|
306
308
|
- CHANGELOG.md
|
309
|
+
- CONTRIBUTING.md
|
307
310
|
- GETTING_STARTED.md
|
308
311
|
- Gemfile
|
309
312
|
- LICENSE
|
@@ -313,6 +316,7 @@ files:
|
|
313
316
|
- features/cli_help.feature
|
314
317
|
- features/cli_new.feature
|
315
318
|
- features/cli_unknown.feature
|
319
|
+
- features/cli_update.feature
|
316
320
|
- features/cli_version.feature
|
317
321
|
- features/step_definitions/common_steps.rb
|
318
322
|
- features/support/env.rb
|
@@ -358,6 +362,7 @@ files:
|
|
358
362
|
- lib/howitzer/mailgun/response.rb
|
359
363
|
- lib/howitzer/patches/rawler_patched.rb
|
360
364
|
- lib/howitzer/settings.rb
|
365
|
+
- lib/howitzer/tasks/framework.rake
|
361
366
|
- lib/howitzer/utils.rb
|
362
367
|
- lib/howitzer/utils/data_generator/data_storage.rb
|
363
368
|
- lib/howitzer/utils/data_generator/gen.rb
|
@@ -376,7 +381,14 @@ files:
|
|
376
381
|
- spec/support/generator_helper.rb
|
377
382
|
- spec/support/logger_helper.rb
|
378
383
|
- spec/support/mailgun_unit_client.rb
|
379
|
-
- spec/unit/generators/
|
384
|
+
- spec/unit/generators/base_generator_spec.rb
|
385
|
+
- spec/unit/generators/config_generator_spec.rb
|
386
|
+
- spec/unit/generators/cucumber_generator_spec.rb
|
387
|
+
- spec/unit/generators/emails_generator_spec.rb
|
388
|
+
- spec/unit/generators/pages_generator_spec.rb
|
389
|
+
- spec/unit/generators/root_generator_spec.rb
|
390
|
+
- spec/unit/generators/rspec_generator_spec.rb
|
391
|
+
- spec/unit/generators/tasks_generator_spec.rb
|
380
392
|
- spec/unit/lib/capybara/dsl_ex_spec.rb
|
381
393
|
- spec/unit/lib/capybara/settings_spec.rb
|
382
394
|
- spec/unit/lib/email_spec.rb
|
@@ -393,8 +405,9 @@ files:
|
|
393
405
|
- spec/unit/lib/utils/page_validator_spec.rb
|
394
406
|
- spec/unit/lib/web_page_spec.rb
|
395
407
|
- spec/unit/version_spec.rb
|
396
|
-
homepage:
|
397
|
-
licenses:
|
408
|
+
homepage: http://strongqa.github.io/howitzer/
|
409
|
+
licenses:
|
410
|
+
- MIT
|
398
411
|
metadata: {}
|
399
412
|
post_install_message:
|
400
413
|
rdoc_options: []
|
@@ -402,17 +415,17 @@ require_paths:
|
|
402
415
|
- lib
|
403
416
|
required_ruby_version: !ruby/object:Gem::Requirement
|
404
417
|
requirements:
|
405
|
-
- -
|
418
|
+
- - ">="
|
406
419
|
- !ruby/object:Gem::Version
|
407
420
|
version: 1.9.3
|
408
421
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
409
422
|
requirements:
|
410
|
-
- -
|
423
|
+
- - ">="
|
411
424
|
- !ruby/object:Gem::Version
|
412
425
|
version: '0'
|
413
426
|
requirements: []
|
414
427
|
rubyforge_project:
|
415
|
-
rubygems_version: 2.
|
428
|
+
rubygems_version: 2.4.5
|
416
429
|
signing_key:
|
417
430
|
specification_version: 4
|
418
431
|
summary: Ruby based framework for acceptance testing
|
@@ -420,6 +433,7 @@ test_files:
|
|
420
433
|
- features/cli_help.feature
|
421
434
|
- features/cli_new.feature
|
422
435
|
- features/cli_unknown.feature
|
436
|
+
- features/cli_update.feature
|
423
437
|
- features/cli_version.feature
|
424
438
|
- features/step_definitions/common_steps.rb
|
425
439
|
- features/support/env.rb
|
@@ -432,7 +446,14 @@ test_files:
|
|
432
446
|
- spec/support/generator_helper.rb
|
433
447
|
- spec/support/logger_helper.rb
|
434
448
|
- spec/support/mailgun_unit_client.rb
|
435
|
-
- spec/unit/generators/
|
449
|
+
- spec/unit/generators/base_generator_spec.rb
|
450
|
+
- spec/unit/generators/config_generator_spec.rb
|
451
|
+
- spec/unit/generators/cucumber_generator_spec.rb
|
452
|
+
- spec/unit/generators/emails_generator_spec.rb
|
453
|
+
- spec/unit/generators/pages_generator_spec.rb
|
454
|
+
- spec/unit/generators/root_generator_spec.rb
|
455
|
+
- spec/unit/generators/rspec_generator_spec.rb
|
456
|
+
- spec/unit/generators/tasks_generator_spec.rb
|
436
457
|
- spec/unit/lib/capybara/dsl_ex_spec.rb
|
437
458
|
- spec/unit/lib/capybara/settings_spec.rb
|
438
459
|
- spec/unit/lib/email_spec.rb
|
@@ -449,3 +470,4 @@ test_files:
|
|
449
470
|
- spec/unit/lib/utils/page_validator_spec.rb
|
450
471
|
- spec/unit/lib/web_page_spec.rb
|
451
472
|
- spec/unit/version_spec.rb
|
473
|
+
has_rdoc:
|