howitzer 2.0.2 → 2.0.3
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/.rubocop.yml +3 -0
- data/.travis.yml +3 -3
- data/CHANGELOG.md +11 -1
- data/MAINTENANCE.md +32 -0
- data/README.md +3 -3
- data/Rakefile +1 -1
- data/bin/howitzer +3 -3
- data/generators/config/templates/capybara.rb +16 -2
- data/generators/config/templates/default.yml +5 -1
- data/generators/cucumber/templates/env.rb +0 -1
- data/generators/emails/templates/example_email.rb +1 -1
- data/generators/root/templates/.rubocop.yml +4 -1
- data/lib/howitzer/capybara_helpers.rb +1 -1
- data/lib/howitzer/mail_adapters/debugmail.rb +0 -0
- data/lib/howitzer/version.rb +1 -1
- data/lib/howitzer/web/capybara_methods_proxy.rb +5 -3
- data/lib/howitzer/web/page.rb +1 -1
- data/spec/config/custom.yml +0 -1
- data/spec/unit/generators/root_generator_spec.rb +1 -1
- data/spec/unit/lib/cache_spec.rb +1 -1
- data/spec/unit/lib/howitzer_spec.rb +1 -1
- data/spec/unit/lib/web/page_spec.rb +10 -0
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bb8410811f708378094fa35c54437e100e62efc6
|
4
|
+
data.tar.gz: 9b2fa233a0ccc0ce63c8a4f410a053228dd6bace
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2ec55c0135ef0929e65808aa5a1d61aa62b96b40f29ab0ce13fb57b6c0dd14ff5730358d3a7812e66c999f758f3c9b4b6aeeb3c5b62b1547a6fbbe0e096c2e45
|
7
|
+
data.tar.gz: 7f02cc2ba7ffe493e812b84fa2167c120af2bd7f2238e88c334e70dd5fced7d5b9f8f1c0f0057dd47f3d944e0ae0e3f4b54cb2bc6dd5e9aceefadd20d9a9d126
|
data/.rubocop.yml
CHANGED
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,9 +1,19 @@
|
|
1
|
-
## [In git](https://github.com/strongqa/howitzer/compare/v2.0.
|
1
|
+
## [In git](https://github.com/strongqa/howitzer/compare/v2.0.3...master)
|
2
2
|
|
3
3
|
### New Features
|
4
4
|
|
5
5
|
### Bugfixes
|
6
6
|
|
7
|
+
## [v2.0.3](https://github.com/strongqa/howitzer/compare/v2.0.2...v2.0.3)
|
8
|
+
|
9
|
+
### New Features
|
10
|
+
- Integrate Google Chrome Headless
|
11
|
+
- Stop supported **mailgun_idle_timeout** deprecated setting
|
12
|
+
- Added maintenance instructions for releasing
|
13
|
+
|
14
|
+
### Bugfixes
|
15
|
+
- [#222](https://github.com/strongqa/howitzer/issues/222) fix issue with incorrect iframe scope identifying
|
16
|
+
|
7
17
|
## [v2.0.2](https://github.com/strongqa/howitzer/compare/v2.0.1...v2.0.2)
|
8
18
|
|
9
19
|
### New Features
|
data/MAINTENANCE.md
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# Howitzer Maintenance
|
2
|
+
|
3
|
+
This guide provides detailed instructions how to release a new Howitzer version
|
4
|
+
|
5
|
+
To release a new Howitzer version:
|
6
|
+
|
7
|
+
* Make sure all pull requests have been merged to master branch
|
8
|
+
* Make sure last build is passed in [TravisCI](https://travis-ci.org/strongqa/howitzer)
|
9
|
+
* Make sure the code is covered 100% in [Coveralls](https://coveralls.io/github/strongqa/howitzer?branch=master)
|
10
|
+
* Make sure all gem dependencies are up-to-date with [Gemnasium](https://gemnasium.com/strongqa/howitzer)
|
11
|
+
* Make sure the code is documented 100% with following command:
|
12
|
+
```
|
13
|
+
rake yard
|
14
|
+
```
|
15
|
+
* [Upgrade](https://github.com/strongqa/howitzer/wiki/Migration-to-new-version) Howitzer examples [Cucumber](https://github.com/strongqa/howitzer_example_cucumber), [Rspec](https://github.com/strongqa/howitzer_example_rspec) and [Turnip](https://github.com/strongqa/howitzer_example_turnip) to last version of code from master and make sure all builds are green
|
16
|
+
* Bump [version](lib/howitzer/version.rb). Please note howitzer uses [semantic versioning](http://semver.org/)
|
17
|
+
* Verify and actualize [ChangeLog](CHANGELOG.md)
|
18
|
+
* Commit all changes and push to origin master
|
19
|
+
* Specify credentials for Rubygems.org (once only) with following commands:
|
20
|
+
```bash
|
21
|
+
curl https://rubygems.org/api/v1/api_key.yaml > ~/.gem/credentials
|
22
|
+
chmod 0600 ~/.gem/credentials
|
23
|
+
```
|
24
|
+
* Release Gem with following command:
|
25
|
+
```bash
|
26
|
+
rake release
|
27
|
+
```
|
28
|
+
* Verify successful release on [Rubygems](https://rubygems.org/gems/howitzer)
|
29
|
+
* Force API documentation indexing for the new version on [Rubygems](https://rubygems.org/gems/howitzer)
|
30
|
+
* Update new link to documentation on [web site](https://github.com/romikoops/howitzer-framework.io/tree/gh-pages) Note: The web site will be updated automatically after pushing code to Github
|
31
|
+
* Update [Howitzer Guides](https://github.com/strongqa/docs.howitzer-framework.io/blob/gh-pages/README.md) regarding new changes
|
32
|
+
* Notify Community (Gitter, Twitter, Google Group) about the new release
|
data/README.md
CHANGED
@@ -44,11 +44,11 @@ You can also find the Rdoc documentation on [Rubygems](https://rubygems.org/gems
|
|
44
44
|
* [Ruby](https://www.ruby-lang.org/en/downloads/) 2.2.2+
|
45
45
|
* [DevKit](https://github.com/oneclick/rubyinstaller/wiki/Development-Kit#installation-instructions) (For **Windows** only)
|
46
46
|
* [PhantomJS](http://phantomjs.org/download.html) (For **phantomjs** and **poltergeist** drivers only)
|
47
|
-
* [ChromeDriver](https://sites.google.com/a/chromium.org/chromedriver/) (For **chrome** selenium browser)
|
47
|
+
* [ChromeDriver](https://sites.google.com/a/chromium.org/chromedriver/) (For **chrome** selenium browser, 2.29+ for headless mode)
|
48
48
|
* [GeckoDriver](https://github.com/mozilla/geckodriver/releases) (For **firefox** selenium browser)
|
49
49
|
* [SafariDriver](https://webkit.org/blog/6900/webdriver-support-in-safari-10/) (For **safari** selenium browser)
|
50
50
|
* [QT](https://github.com/thoughtbot/capybara-webkit/wiki/Installing-Qt-and-compiling-capybara-webkit) (For **webkit** driver only)
|
51
|
-
|
51
|
+
* [Chrome](https://www.google.com/chrome/browser/desktop/index.html) v.59+ (For **headless chrome** support)
|
52
52
|
## Setup
|
53
53
|
To install, type
|
54
54
|
|
@@ -141,7 +141,7 @@ community](https://github.com/strongqa/howitzer/graphs/contributors).
|
|
141
141
|
License
|
142
142
|
-------
|
143
143
|
|
144
|
-
howitzer is Copyright © 2012-
|
144
|
+
howitzer is Copyright © 2012-2017 Roman Parashchenko and StrongQA Ltd. It is free
|
145
145
|
software, and may be redistributed under the terms specified in the
|
146
146
|
[LICENSE](LICENSE) file.
|
147
147
|
|
data/Rakefile
CHANGED
data/bin/howitzer
CHANGED
@@ -13,13 +13,13 @@ module HowitzerCli
|
|
13
13
|
arg_name '<PROJECT NAME>'
|
14
14
|
command :new do |c|
|
15
15
|
c.desc 'Integrate Cucumber'
|
16
|
-
c.switch %i
|
16
|
+
c.switch %i[c cucumber], negatable: false
|
17
17
|
|
18
18
|
c.desc 'Integrate Rspec'
|
19
|
-
c.switch %i
|
19
|
+
c.switch %i[r rspec], negatable: false
|
20
20
|
|
21
21
|
c.desc 'Integrate Turnip'
|
22
|
-
c.switch %i
|
22
|
+
c.switch %i[t turnip], negatable: false
|
23
23
|
|
24
24
|
c.action do |_global_options, options, args|
|
25
25
|
if !args.empty?
|
@@ -1,4 +1,4 @@
|
|
1
|
-
HOWITZER_KNOWN_DRIVERS = %i
|
1
|
+
HOWITZER_KNOWN_DRIVERS = %i[
|
2
2
|
selenium
|
3
3
|
selenium_grid
|
4
4
|
webkit
|
@@ -7,7 +7,8 @@ HOWITZER_KNOWN_DRIVERS = %i(
|
|
7
7
|
sauce
|
8
8
|
testingbot
|
9
9
|
browserstack
|
10
|
-
|
10
|
+
headless_chrome
|
11
|
+
].freeze
|
11
12
|
|
12
13
|
unless HOWITZER_KNOWN_DRIVERS.include?(Howitzer.driver.to_s.to_sym)
|
13
14
|
raise Howitzer::UnknownDriverError, "Unknown '#{Howitzer.driver}' driver." \
|
@@ -52,6 +53,16 @@ Capybara.register_driver :selenium do |app|
|
|
52
53
|
Capybara::Selenium::Driver.new app, params
|
53
54
|
end
|
54
55
|
|
56
|
+
# :headless_chrome driver
|
57
|
+
|
58
|
+
Capybara.register_driver :headless_chrome do |app|
|
59
|
+
startup_flags = ['--headless']
|
60
|
+
startup_flags << '-start-maximized' if Howitzer.maximized_window
|
61
|
+
startup_flags.concat(Howitzer.headless_chrome_flags.split(/\s*,\s*/)) if Howitzer.headless_chrome_flags
|
62
|
+
params = { browser: :chrome, switches: startup_flags }
|
63
|
+
Capybara::Selenium::Driver.new app, params
|
64
|
+
end
|
65
|
+
|
55
66
|
# :webkit driver
|
56
67
|
|
57
68
|
if Howitzer.driver.to_sym == :webkit
|
@@ -151,6 +162,9 @@ Capybara.save_path = Howitzer.log_dir
|
|
151
162
|
Capybara::Screenshot.register_driver(:phantomjs) do |driver, path|
|
152
163
|
driver.browser.save_screenshot path
|
153
164
|
end
|
165
|
+
Capybara::Screenshot.register_driver(:headless_chrome) do |driver, path|
|
166
|
+
driver.browser.save_screenshot path
|
167
|
+
end
|
154
168
|
Capybara::Screenshot.append_timestamp = false
|
155
169
|
Capybara::Screenshot.register_filename_prefix_formatter(:default) do
|
156
170
|
"capybara-screenshot-#{Gen.serial}"
|
@@ -21,13 +21,17 @@
|
|
21
21
|
maximized_window: true # Specify maximized browser window size
|
22
22
|
|
23
23
|
# Specify one of the following drivers: selenium, selenium_grid, webkit, poltergeist, phantomjs, sauce,
|
24
|
-
# testingbot, browserstack
|
24
|
+
# testingbot, browserstack, headless_chrome
|
25
25
|
driver: phantomjs
|
26
26
|
|
27
27
|
# -Selenium-
|
28
28
|
# specify one of next browsers: iexplore (ie), firefox (ff), chrome, safari
|
29
29
|
selenium_browser: ff
|
30
30
|
|
31
|
+
# -Headless Chrome-
|
32
|
+
# List of available flags (http://peter.sh/experiments/chromium-command-line-switches/)
|
33
|
+
headless_chrome_flags: "--window-size=1920x1080, --disable-gpu"
|
34
|
+
|
31
35
|
# -Selenium Grid-
|
32
36
|
selenium_hub_url: "http://example.com:4444/wd/hub"
|
33
37
|
|
@@ -19,6 +19,9 @@ Style/EmptyElse:
|
|
19
19
|
Lint/AmbiguousRegexpLiteral:
|
20
20
|
Enabled: false
|
21
21
|
|
22
|
+
Lint/AmbiguousBlockAssociation:
|
23
|
+
Enabled: false
|
24
|
+
|
22
25
|
Style/CaseEquality:
|
23
26
|
Enabled: false
|
24
27
|
|
@@ -29,4 +32,4 @@ Style/FrozenStringLiteralComment:
|
|
29
32
|
Enabled: false
|
30
33
|
|
31
34
|
Metrics/ModuleLength:
|
32
|
-
Max: 150
|
35
|
+
Max: 150
|
@@ -10,7 +10,7 @@ module Howitzer
|
|
10
10
|
# Testingbot or Browserstack cloud service
|
11
11
|
|
12
12
|
def cloud_driver?
|
13
|
-
%i
|
13
|
+
%i[sauce testingbot browserstack].include?(Howitzer.driver.to_sym)
|
14
14
|
end
|
15
15
|
|
16
16
|
# @return [Boolean] whether or not current browser is
|
File without changes
|
data/lib/howitzer/version.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
require 'capybara'
|
2
|
+
require 'active_support'
|
3
|
+
require 'active_support/core_ext'
|
2
4
|
|
3
5
|
# Remove this monkey patch after fixing the bugs in selenium-webdriver / capybara
|
4
6
|
#:nocov:
|
@@ -20,7 +22,7 @@ class Capybara::Selenium::Driver # rubocop:disable Style/ClassAndModuleChildren
|
|
20
22
|
private
|
21
23
|
|
22
24
|
def within_frame?
|
23
|
-
!(@frame_handles.
|
25
|
+
!(@frame_handles.blank? || @frame_handles[browser.window_handle].blank?)
|
24
26
|
end
|
25
27
|
end
|
26
28
|
#:nocov:
|
@@ -31,7 +33,7 @@ module Howitzer
|
|
31
33
|
module CapybaraMethodsProxy
|
32
34
|
PROXIED_CAPYBARA_METHODS = Capybara::Session::SESSION_METHODS + #:nodoc:
|
33
35
|
Capybara::Session::MODAL_METHODS +
|
34
|
-
%i
|
36
|
+
%i[driver text]
|
35
37
|
|
36
38
|
# Capybara form dsl methods are not compatible with page object pattern and Howitzer gem.
|
37
39
|
# Instead of including Capybara::DSL module, we proxy most interesting Capybara methods and
|
@@ -44,7 +46,7 @@ module Howitzer
|
|
44
46
|
# @param flag [Boolean] Determines accept or decline alert box
|
45
47
|
|
46
48
|
def click_alert_box(flag)
|
47
|
-
if %w
|
49
|
+
if %w[selenium sauce].include? Howitzer.driver
|
48
50
|
alert = driver.browser.switch_to.alert
|
49
51
|
flag ? alert.accept : alert.dismiss
|
50
52
|
else
|
data/lib/howitzer/web/page.rb
CHANGED
@@ -153,7 +153,7 @@ module Howitzer
|
|
153
153
|
|
154
154
|
def initialize
|
155
155
|
check_validations_are_defined!
|
156
|
-
current_window.maximize if Howitzer.maximized_window
|
156
|
+
current_window.maximize if Howitzer.maximized_window && Howitzer.driver != 'headless_chrome'
|
157
157
|
end
|
158
158
|
|
159
159
|
# Reloads current page in a browser
|
data/spec/config/custom.yml
CHANGED
@@ -15,7 +15,7 @@ RSpec.describe 'Generators' do
|
|
15
15
|
let(:expected_result) do
|
16
16
|
[
|
17
17
|
{ name: '/.gitignore', is_directory: false, size: 196 },
|
18
|
-
{ name: '/.rubocop.yml', is_directory: false, size:
|
18
|
+
{ name: '/.rubocop.yml', is_directory: false, size: 634 },
|
19
19
|
{ name: '/Gemfile', is_directory: false, size: 625 },
|
20
20
|
{ name: '/Rakefile', is_directory: false, size: template_file_size('root', 'Rakefile') }
|
21
21
|
]
|
data/spec/unit/lib/cache_spec.rb
CHANGED
@@ -70,7 +70,7 @@ RSpec.describe Howitzer::Cache do
|
|
70
70
|
it { expect(described_class.data).to eq(cloud: { status: false }, foo: {}, bar: {}, baz: {}) }
|
71
71
|
end
|
72
72
|
context 'when custom argument' do
|
73
|
-
let(:exception_list) { %i
|
73
|
+
let(:exception_list) { %i[foo bar] }
|
74
74
|
before { described_class.clear_all_ns(exception_list) }
|
75
75
|
it do
|
76
76
|
expect(described_class.data).to eq(
|
@@ -296,6 +296,16 @@ RSpec.describe Howitzer::Web::Page do
|
|
296
296
|
subject
|
297
297
|
end
|
298
298
|
end
|
299
|
+
context 'when maximized_window is true and driver is headless_chrome' do
|
300
|
+
before do
|
301
|
+
allow(Howitzer).to receive(:maximized_window) { true }
|
302
|
+
allow(Howitzer).to receive(:driver) { 'headless_chrome' }
|
303
|
+
end
|
304
|
+
it do
|
305
|
+
expect_any_instance_of(described_class).not_to receive('current_window.maximize')
|
306
|
+
subject
|
307
|
+
end
|
308
|
+
end
|
299
309
|
context 'when maximized_window is false' do
|
300
310
|
before { allow(Howitzer).to receive(:maximized_window) { false } }
|
301
311
|
it do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: howitzer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Roman Parashchenko
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-06-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -232,6 +232,7 @@ files:
|
|
232
232
|
- CONTRIBUTING.md
|
233
233
|
- Gemfile
|
234
234
|
- LICENSE
|
235
|
+
- MAINTENANCE.md
|
235
236
|
- README.md
|
236
237
|
- Rakefile
|
237
238
|
- bin/howitzer
|
@@ -294,6 +295,7 @@ files:
|
|
294
295
|
- lib/howitzer/log.rb
|
295
296
|
- lib/howitzer/mail_adapters.rb
|
296
297
|
- lib/howitzer/mail_adapters/abstract.rb
|
298
|
+
- lib/howitzer/mail_adapters/debugmail.rb
|
297
299
|
- lib/howitzer/mail_adapters/mailgun.rb
|
298
300
|
- lib/howitzer/mailgun_api.rb
|
299
301
|
- lib/howitzer/mailgun_api/client.rb
|
@@ -375,7 +377,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
375
377
|
version: '0'
|
376
378
|
requirements: []
|
377
379
|
rubyforge_project:
|
378
|
-
rubygems_version: 2.6.
|
380
|
+
rubygems_version: 2.6.8
|
379
381
|
signing_key:
|
380
382
|
specification_version: 4
|
381
383
|
summary: Ruby based framework for acceptance testing
|