howitzer 2.1.1 → 2.2.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 (68) hide show
  1. checksums.yaml +5 -5
  2. data/.rubocop.yml +27 -18
  3. data/.travis.yml +4 -3
  4. data/CHANGELOG.md +15 -1
  5. data/README.md +6 -3
  6. data/Rakefile +1 -1
  7. data/features/cli_new.feature +12 -8
  8. data/features/cli_update.feature +14 -9
  9. data/features/step_definitions/common_steps.rb +3 -3
  10. data/generators/base_generator.rb +1 -1
  11. data/generators/config/config_generator.rb +2 -1
  12. data/generators/config/templates/boot.rb +1 -1
  13. data/generators/config/templates/capybara.rb +2 -1
  14. data/generators/config/templates/default.yml +22 -4
  15. data/generators/config/templates/drivers/appium.rb +25 -0
  16. data/generators/config/templates/drivers/headless_firefox.rb +23 -0
  17. data/generators/cucumber/templates/cuke_sniffer.rake +2 -2
  18. data/generators/cucumber/templates/env.rb +8 -0
  19. data/generators/prerequisites/templates/factory_bot.rb +1 -0
  20. data/generators/root/root_generator.rb +1 -1
  21. data/generators/root/templates/{.rubocop.yml → .rubocop.yml.erb} +34 -13
  22. data/generators/root/templates/Gemfile.erb +4 -0
  23. data/generators/rspec/templates/spec_helper.rb +1 -0
  24. data/generators/turnip/templates/spec_helper.rb +1 -0
  25. data/howitzer.gemspec +3 -3
  26. data/lib/howitzer.rb +40 -0
  27. data/lib/howitzer/cache.rb +19 -18
  28. data/lib/howitzer/capybara_helpers.rb +13 -5
  29. data/lib/howitzer/email.rb +1 -0
  30. data/lib/howitzer/mail_adapters/gmail.rb +3 -0
  31. data/lib/howitzer/mail_adapters/mailgun.rb +2 -0
  32. data/lib/howitzer/mail_adapters/mailtrap.rb +3 -0
  33. data/lib/howitzer/mailgun_api/connector.rb +1 -0
  34. data/lib/howitzer/meta.rb +11 -0
  35. data/lib/howitzer/meta/actions.rb +38 -0
  36. data/lib/howitzer/meta/element.rb +38 -0
  37. data/lib/howitzer/meta/entry.rb +62 -0
  38. data/lib/howitzer/meta/iframe.rb +41 -0
  39. data/lib/howitzer/meta/section.rb +30 -0
  40. data/lib/howitzer/version.rb +1 -1
  41. data/lib/howitzer/web/capybara_context_holder.rb +1 -0
  42. data/lib/howitzer/web/capybara_methods_proxy.rb +4 -1
  43. data/lib/howitzer/web/element_dsl.rb +1 -0
  44. data/lib/howitzer/web/iframe_dsl.rb +2 -0
  45. data/lib/howitzer/web/page.rb +10 -0
  46. data/lib/howitzer/web/page_dsl.rb +3 -0
  47. data/lib/howitzer/web/page_validator.rb +2 -0
  48. data/lib/howitzer/web/section.rb +8 -0
  49. data/lib/howitzer/web/section_dsl.rb +1 -0
  50. data/spec/support/shared_examples/capybara_context_holder.rb +1 -1
  51. data/spec/support/shared_examples/meta_highlight_xpath.rb +41 -0
  52. data/spec/unit/generators/config_generator_spec.rb +4 -2
  53. data/spec/unit/generators/root_generator_spec.rb +32 -21
  54. data/spec/unit/generators/templates/cucumber_spec.rb +97 -0
  55. data/spec/unit/generators/templates/rspec_spec.rb +88 -0
  56. data/spec/unit/generators/templates/turnip_spec.rb +98 -0
  57. data/spec/unit/lib/capybara_helpers_spec.rb +37 -4
  58. data/spec/unit/lib/howitzer_spec.rb +23 -0
  59. data/spec/unit/lib/meta/element_spec.rb +59 -0
  60. data/spec/unit/lib/meta/entry_spec.rb +77 -0
  61. data/spec/unit/lib/meta/iframe_spec.rb +66 -0
  62. data/spec/unit/lib/meta/section_spec.rb +43 -0
  63. data/spec/unit/lib/utils/string_extensions_spec.rb +1 -1
  64. data/spec/unit/lib/web/element_dsl_spec.rb +10 -1
  65. data/spec/unit/lib/web/page_spec.rb +7 -0
  66. data/spec/unit/lib/web/section_spec.rb +7 -0
  67. metadata +31 -15
  68. data/generators/config/templates/drivers/phantomjs.rb +0 -19
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 94940ab8c75aebb8875f48220c8019504db644bd
4
- data.tar.gz: 1228bad1fea3a9b128e74d248c394c8a4ac1bcfb
2
+ SHA256:
3
+ metadata.gz: 7364832d86f0134a208559b840387a50685f15458ca2e54a7cac8f9869fe2974
4
+ data.tar.gz: e761cd0524e173f0414ecd57ab2a9c1a99fba1325bb379fa9d56873aa74b6516
5
5
  SHA512:
6
- metadata.gz: 87eefa4b47bfc459116c1ada0bd47b013f4ef7f519b8e88297adbe2b6526513a78bc401980b97a07fc50ce737505b2a95e13738ad21b42a9bf2cf22097f88cd9
7
- data.tar.gz: 520dc413394cdc682f421477f0e6779fc403dd364172e5b83afbfd28d99c22d957fd5841852dfd427f0ce3b08f398921afa5a6dcb5fdb90a91e4d741a80ed99a
6
+ metadata.gz: 943c4121f3f8d1f9264a94819236543da59b7ad9aefb7f226b5d47049c5b34bf2ddc1bdb38b6ca10992ea3285fc738ddae774f95ff4ad3dd79bd437397ce7f69
7
+ data.tar.gz: de7ca6029f7e6eae2837a3fbbc799403cbff55ca33a6b4b4de05200ef10466477e76fcc416fdad94226919565f3d1574bc7129e23ad66f0a86335e5bcc716765
@@ -5,43 +5,40 @@ AllCops:
5
5
  TargetRubyVersion: 2.3
6
6
  DisplayCopNames: true
7
7
 
8
- LineLength:
9
- Max: 120
10
-
11
8
  Layout/CaseIndentation:
12
9
  Enabled: false
13
10
 
14
- Style/EmptyElse:
11
+ Lint/AmbiguousBlockAssociation:
15
12
  Enabled: false
16
13
 
17
14
  Lint/AmbiguousRegexpLiteral:
18
15
  Enabled: false
19
16
 
20
- Lint/AmbiguousBlockAssociation:
17
+ Metrics/BlockLength:
21
18
  Enabled: false
22
19
 
23
- Lint/RescueWithoutErrorClass:
24
- Enabled: false
20
+ Metrics/LineLength:
21
+ Max: 120
22
+
23
+ Metrics/MethodLength:
24
+ Max: 30
25
+
26
+ Metrics/ModuleLength:
27
+ Max: 150
25
28
 
26
29
  Style/CaseEquality:
27
30
  Enabled: false
28
31
 
29
- Style/YodaCondition:
32
+ Style/EmptyElse:
30
33
  Enabled: false
31
34
 
32
- MethodLength:
33
- Max: 30
34
-
35
- Style/TrivialAccessors:
36
- AllowDSLWriters: true
37
-
38
- Style/FrozenStringLiteralComment:
35
+ Style/EvalWithLocation:
39
36
  Enabled: false
40
37
 
41
- Metrics/ModuleLength:
42
- Max: 150
38
+ Style/FormatStringToken:
39
+ Enabled: false
43
40
 
44
- Metrics/BlockLength:
41
+ Style/FrozenStringLiteralComment:
45
42
  Enabled: false
46
43
 
47
44
  Style/MixinGrouping:
@@ -49,3 +46,15 @@ Style/MixinGrouping:
49
46
  Exclude:
50
47
  - '**/*_steps.rb'
51
48
  - 'tmp/**'
49
+
50
+ Style/MixinUsage:
51
+ Enabled: false
52
+
53
+ Style/RescueStandardError:
54
+ Enabled: false
55
+
56
+ Style/TrivialAccessors:
57
+ AllowDSLWriters: true
58
+
59
+ Style/YodaCondition:
60
+ Enabled: false
@@ -2,6 +2,7 @@ language: ruby
2
2
  before_install:
3
3
  - gem install bundler
4
4
  rvm:
5
- - 2.2.8
6
- - 2.3.5
7
- - 2.4.2
5
+ - 2.3.8
6
+ - 2.4.9
7
+ - 2.5.7
8
+ - 2.6.5
@@ -1,9 +1,23 @@
1
- ## [In git](https://github.com/strongqa/howitzer/compare/v2.1.1...master)
1
+ ## [In git](https://github.com/strongqa/howitzer/compare/v2.2.0...master)
2
2
 
3
3
  ### New Features
4
4
 
5
5
  ### Bug-fixes
6
6
 
7
+ ## [v2.2.0](https://github.com/strongqa/howitzer/compare/v2.1.1...v2.2.0)
8
+
9
+ ### New Features
10
+ - [#293](https://github.com/strongqa/howitzer/issues/293) add support ordering for run tests
11
+ - [#276](https://github.com/strongqa/howitzer/issues/276) Add support Capybara v3
12
+ - [#280](https://github.com/strongqa/howitzer/issues/280) Add support Firefox Headless
13
+ - [#241](https://github.com/strongqa/howitzer/issues/241) meta interface added. Allows tracking elements,sections, iframes on the page.
14
+ - [#266](https://github.com/strongqa/howitzer/issues/266) ruby 2.2 no longer supported
15
+ - [#265](https://github.com/strongqa/howitzer/issues/265) Add Appium driver
16
+ ### Bug-fixes
17
+ - [#286](https://github.com/strongqa/howitzer/issues/286) [Installation] generated rubocop.yml doesn't cover ruby sources
18
+ - [#274](https://github.com/strongqa/howitzer/issues/274) Stopped PhantomJS supporting
19
+ - [#282](https://github.com/strongqa/howitzer/issues/282) Multiple sessions don't work properly
20
+
7
21
  ## [v2.1.1](https://github.com/strongqa/howitzer/compare/v2.1.0...v2.1.1)
8
22
 
9
23
  ### New Features
data/README.md CHANGED
@@ -12,7 +12,6 @@
12
12
  <a href="https://gitter.im/strongqa/howitzer"><img src="https://badges.gitter.im/Join%20Chat.svg" /></a>
13
13
  <a href="https://rubygems.org/gems/howitzer"><img src="http://img.shields.io/gem/v/howitzer.svg" /></a>
14
14
  <a href="https://travis-ci.org/strongqa/howitzer"><img src="https://travis-ci.org/strongqa/howitzer.svg?branch=master" /></a>
15
- <a href='https://gemnasium.com/strongqa/howitzer'><img src="https://gemnasium.com/strongqa/howitzer.svg" /></a>
16
15
  <a href="https://codeclimate.com/github/strongqa/howitzer"><img src="https://codeclimate.com/github/strongqa/howitzer.png" /></a>
17
16
  <a href='https://coveralls.io/github/strongqa/howitzer?branch=master'><img src='https://coveralls.io/repos/github/strongqa/howitzer/badge.svg?branch=master' alt='Coverage Status' /></a>
18
17
  <a href="https://github.com/strongqa/howitzer/blob/master/LICENSE"><img src="http://img.shields.io/badge/license-MIT-blue.svg" /></a>
@@ -42,14 +41,16 @@ You can also find the Rdoc documentation on [Rubygems](https://rubygems.org/gems
42
41
 
43
42
  ## Requirements
44
43
  * Supported OS: Mac OS X, Linux, Windows
45
- * [Ruby](https://www.ruby-lang.org/en/downloads/) 2.2.2+
44
+ * [Ruby](https://www.ruby-lang.org/en/downloads/) 2.3+
46
45
  * [DevKit](https://github.com/oneclick/rubyinstaller/wiki/Development-Kit#installation-instructions) (For **Windows** only)
47
- * [PhantomJS](http://phantomjs.org/download.html) (For **phantomjs** and **poltergeist** drivers only)
46
+ * [PhantomJS](http://phantomjs.org/download.html) (For **poltergeist** driver only)
48
47
  * [ChromeDriver](https://sites.google.com/a/chromium.org/chromedriver/) (For **chrome** selenium browser, 2.29+ for headless mode)
49
48
  * [GeckoDriver](https://github.com/mozilla/geckodriver/releases) (For **firefox** selenium browser)
50
49
  * [SafariDriver](https://webkit.org/blog/6900/webdriver-support-in-safari-10/) (For **safari** selenium browser)
51
50
  * [QT](https://github.com/thoughtbot/capybara-webkit/wiki/Installing-Qt-and-compiling-capybara-webkit) (For **webkit** driver only)
52
51
  * [Chrome](https://www.google.com/chrome/browser/desktop/index.html) v.59+ (For **headless chrome** support)
52
+ * [Firefox](https://www.mozilla.org/en-US/firefox/new/) v.56+ (For **headless firefox** support)
53
+ * [Android SDK](https://developer.android.com/studio/index.html) and [Appium](http://appium.io/getting-started.html) (For Appium driver)
53
54
  ## Setup
54
55
  To install, type
55
56
 
@@ -134,6 +135,8 @@ Don't forget to review the difference, to see if there were any unexpected chang
134
135
  Contributing
135
136
  ------------
136
137
 
138
+ [![](https://sourcerer.io/fame/romikoops/strongqa/howitzer/images/0)](https://sourcerer.io/fame/romikoops/strongqa/howitzer/links/0)[![](https://sourcerer.io/fame/romikoops/strongqa/howitzer/images/1)](https://sourcerer.io/fame/romikoops/strongqa/howitzer/links/1)[![](https://sourcerer.io/fame/romikoops/strongqa/howitzer/images/2)](https://sourcerer.io/fame/romikoops/strongqa/howitzer/links/2)[![](https://sourcerer.io/fame/romikoops/strongqa/howitzer/images/3)](https://sourcerer.io/fame/romikoops/strongqa/howitzer/links/3)[![](https://sourcerer.io/fame/romikoops/strongqa/howitzer/images/4)](https://sourcerer.io/fame/romikoops/strongqa/howitzer/links/4)[![](https://sourcerer.io/fame/romikoops/strongqa/howitzer/images/5)](https://sourcerer.io/fame/romikoops/strongqa/howitzer/links/5)[![](https://sourcerer.io/fame/romikoops/strongqa/howitzer/images/6)](https://sourcerer.io/fame/romikoops/strongqa/howitzer/links/6)[![](https://sourcerer.io/fame/romikoops/strongqa/howitzer/images/7)](https://sourcerer.io/fame/romikoops/strongqa/howitzer/links/7)
139
+
137
140
  Please see [CONTRIBUTING.md](CONTRIBUTING.md).
138
141
 
139
142
  howitzer was originally designed by Roman Parashchenko and is now maintained by StrongQA team. You can find list of contributors here [open source
data/Rakefile CHANGED
@@ -28,7 +28,7 @@ namespace :yard do
28
28
  doc.use_document_file = false
29
29
  doc.use_yardopts_file = false
30
30
  doc.generate = false
31
- doc.run('--list-undoc')
31
+ doc.run('stats --list-undoc')
32
32
  output = log.string
33
33
  puts output
34
34
  exit(1) unless output.include?('100.00% documented')
@@ -60,10 +60,11 @@ Feature: Howitzer CLI New Project Creation
60
60
  Added 'config/custom.yml' file
61
61
  Added 'config/capybara.rb' file
62
62
  Added 'config/default.yml' file
63
+ Added 'config/drivers/appium.rb' file
63
64
  Added 'config/drivers/browserstack.rb' file
64
65
  Added 'config/drivers/crossbrowsertesting.rb' file
65
66
  Added 'config/drivers/headless_chrome.rb' file
66
- Added 'config/drivers/phantomjs.rb' file
67
+ Added 'config/drivers/headless_firefox.rb' file
67
68
  Added 'config/drivers/poltergeist.rb' file
68
69
  Added 'config/drivers/sauce.rb' file
69
70
  Added 'config/drivers/selenium.rb' file
@@ -79,8 +80,8 @@ Feature: Howitzer CLI New Project Creation
79
80
  Added '/emails/example_email.rb' file
80
81
  * Root files generation ...
81
82
  Added '.gitignore' file
82
- Added '.rubocop.yml' file
83
83
  Added 'Rakefile' file
84
+ Added template '.rubocop.yml.erb' with params '{:r=>true, :rspec=>true, :c=>false, :cucumber=>false, :t=>false, :turnip=>false}' to destination '.rubocop.yml'
84
85
  Added template 'Gemfile.erb' with params '{:r=>true, :rspec=>true, :c=>false, :cucumber=>false, :t=>false, :turnip=>false}' to destination 'Gemfile'
85
86
  * Pre-requisites integration to the framework ...
86
87
  Added 'prerequisites/factory_bot.rb' file
@@ -131,10 +132,11 @@ Feature: Howitzer CLI New Project Creation
131
132
  Added 'config/custom.yml' file
132
133
  Added 'config/capybara.rb' file
133
134
  Added 'config/default.yml' file
135
+ Added 'config/drivers/appium.rb' file
134
136
  Added 'config/drivers/browserstack.rb' file
135
137
  Added 'config/drivers/crossbrowsertesting.rb' file
136
138
  Added 'config/drivers/headless_chrome.rb' file
137
- Added 'config/drivers/phantomjs.rb' file
139
+ Added 'config/drivers/headless_firefox.rb' file
138
140
  Added 'config/drivers/poltergeist.rb' file
139
141
  Added 'config/drivers/sauce.rb' file
140
142
  Added 'config/drivers/selenium.rb' file
@@ -150,8 +152,8 @@ Feature: Howitzer CLI New Project Creation
150
152
  Added '/emails/example_email.rb' file
151
153
  * Root files generation ...
152
154
  Added '.gitignore' file
153
- Added '.rubocop.yml' file
154
155
  Added 'Rakefile' file
156
+ Added template '.rubocop.yml.erb' with params '{:c=>true, :cucumber=>true, :r=>false, :rspec=>false, :t=>false, :turnip=>false}' to destination '.rubocop.yml'
155
157
  Added template 'Gemfile.erb' with params '{:c=>true, :cucumber=>true, :r=>false, :rspec=>false, :t=>false, :turnip=>false}' to destination 'Gemfile'
156
158
  * Pre-requisites integration to the framework ...
157
159
  Added 'prerequisites/factory_bot.rb' file
@@ -209,10 +211,11 @@ Feature: Howitzer CLI New Project Creation
209
211
  Added 'config/custom.yml' file
210
212
  Added 'config/capybara.rb' file
211
213
  Added 'config/default.yml' file
214
+ Added 'config/drivers/appium.rb' file
212
215
  Added 'config/drivers/browserstack.rb' file
213
216
  Added 'config/drivers/crossbrowsertesting.rb' file
214
217
  Added 'config/drivers/headless_chrome.rb' file
215
- Added 'config/drivers/phantomjs.rb' file
218
+ Added 'config/drivers/headless_firefox.rb' file
216
219
  Added 'config/drivers/poltergeist.rb' file
217
220
  Added 'config/drivers/sauce.rb' file
218
221
  Added 'config/drivers/selenium.rb' file
@@ -228,8 +231,8 @@ Feature: Howitzer CLI New Project Creation
228
231
  Added '/emails/example_email.rb' file
229
232
  * Root files generation ...
230
233
  Added '.gitignore' file
231
- Added '.rubocop.yml' file
232
234
  Added 'Rakefile' file
235
+ Added template '.rubocop.yml.erb' with params '{:t=>true, :turnip=>true, :c=>false, :cucumber=>false, :r=>false, :rspec=>false}' to destination '.rubocop.yml'
233
236
  Added template 'Gemfile.erb' with params '{:t=>true, :turnip=>true, :c=>false, :cucumber=>false, :r=>false, :rspec=>false}' to destination 'Gemfile'
234
237
  * Pre-requisites integration to the framework ...
235
238
  Added 'prerequisites/factory_bot.rb' file
@@ -329,10 +332,11 @@ Feature: Howitzer CLI New Project Creation
329
332
  Added 'config/custom.yml' file
330
333
  Added 'config/capybara.rb' file
331
334
  Added 'config/default.yml' file
335
+ Added 'config/drivers/appium.rb' file
332
336
  Added 'config/drivers/browserstack.rb' file
333
337
  Added 'config/drivers/crossbrowsertesting.rb' file
334
338
  Added 'config/drivers/headless_chrome.rb' file
335
- Added 'config/drivers/phantomjs.rb' file
339
+ Added 'config/drivers/headless_firefox.rb' file
336
340
  Added 'config/drivers/poltergeist.rb' file
337
341
  Added 'config/drivers/sauce.rb' file
338
342
  Added 'config/drivers/selenium.rb' file
@@ -348,8 +352,8 @@ Feature: Howitzer CLI New Project Creation
348
352
  Added '/emails/example_email.rb' file
349
353
  * Root files generation ...
350
354
  Added '.gitignore' file
351
- Added '.rubocop.yml' file
352
355
  Added 'Rakefile' file
356
+ Added template '.rubocop.yml.erb' with params '{:r=>true, :rspec=>true, :c=>false, :cucumber=>false, :t=>false, :turnip=>false}' to destination '.rubocop.yml'
353
357
  Added template 'Gemfile.erb' with params '{:r=>true, :rspec=>true, :c=>false, :cucumber=>false, :t=>false, :turnip=>false}' to destination 'Gemfile'
354
358
  * Pre-requisites integration to the framework ...
355
359
  Added 'prerequisites/factory_bot.rb' file
@@ -13,10 +13,11 @@ Feature: Howitzer CLI Update Existing Project
13
13
  Identical 'config/custom.yml' file
14
14
  Identical 'config/capybara.rb' file
15
15
  Added 'config/default.yml' file
16
+ Identical 'config/drivers/appium.rb' file
16
17
  Identical 'config/drivers/browserstack.rb' file
17
18
  Identical 'config/drivers/crossbrowsertesting.rb' file
18
19
  Identical 'config/drivers/headless_chrome.rb' file
19
- Identical 'config/drivers/phantomjs.rb' file
20
+ Identical 'config/drivers/headless_firefox.rb' file
20
21
  Identical 'config/drivers/poltergeist.rb' file
21
22
  Identical 'config/drivers/sauce.rb' file
22
23
  Identical 'config/drivers/selenium.rb' file
@@ -37,9 +38,9 @@ Feature: Howitzer CLI Update Existing Project
37
38
  Identical 'prerequisites/models/user.rb' file
38
39
  * Root files generation ...
39
40
  Added '.gitignore' file
40
- Added '.rubocop.yml' file
41
41
  Conflict with 'Rakefile' file
42
42
  Overwrite 'Rakefile' file? [Yn]: Forced 'Rakefile' file
43
+ Added template '.rubocop.yml.erb' with params '{:rspec=>true}' to destination '.rubocop.yml'
43
44
  Conflict with 'Gemfile' template
44
45
  Overwrite 'Gemfile' template? [Yn]: Skipped 'Gemfile' template
45
46
  * RSpec integration to the framework ...
@@ -50,6 +51,7 @@ Feature: Howitzer CLI Update Existing Project
50
51
  And the exit status should be 0
51
52
  When I run `howitzer update` interactively
52
53
  And I type "y"
54
+ And I type "y"
53
55
  Then the output should contain:
54
56
  """
55
57
  * Config files generation ...
@@ -57,10 +59,11 @@ Feature: Howitzer CLI Update Existing Project
57
59
  Identical 'config/custom.yml' file
58
60
  Identical 'config/capybara.rb' file
59
61
  Identical 'config/default.yml' file
62
+ Identical 'config/drivers/appium.rb' file
60
63
  Identical 'config/drivers/browserstack.rb' file
61
64
  Identical 'config/drivers/crossbrowsertesting.rb' file
62
65
  Identical 'config/drivers/headless_chrome.rb' file
63
- Identical 'config/drivers/phantomjs.rb' file
66
+ Identical 'config/drivers/headless_firefox.rb' file
64
67
  Identical 'config/drivers/poltergeist.rb' file
65
68
  Identical 'config/drivers/sauce.rb' file
66
69
  Identical 'config/drivers/selenium.rb' file
@@ -81,8 +84,9 @@ Feature: Howitzer CLI Update Existing Project
81
84
  Identical 'prerequisites/models/user.rb' file
82
85
  * Root files generation ...
83
86
  Identical '.gitignore' file
84
- Identical '.rubocop.yml' file
85
87
  Identical 'Rakefile' file
88
+ Conflict with '.rubocop.yml' template
89
+ Overwrite '.rubocop.yml' template? [Yn]: Forced '.rubocop.yml' template
86
90
  Conflict with 'Gemfile' template
87
91
  Overwrite 'Gemfile' template? [Yn]: Forced 'Gemfile' template
88
92
  * RSpec integration to the framework ...
@@ -105,10 +109,11 @@ Feature: Howitzer CLI Update Existing Project
105
109
  Identical 'config/custom.yml' file
106
110
  Identical 'config/capybara.rb' file
107
111
  Added 'config/default.yml' file
112
+ Identical 'config/drivers/appium.rb' file
108
113
  Identical 'config/drivers/browserstack.rb' file
109
114
  Identical 'config/drivers/crossbrowsertesting.rb' file
110
115
  Identical 'config/drivers/headless_chrome.rb' file
111
- Identical 'config/drivers/phantomjs.rb' file
116
+ Identical 'config/drivers/headless_firefox.rb' file
112
117
  Identical 'config/drivers/poltergeist.rb' file
113
118
  Identical 'config/drivers/sauce.rb' file
114
119
  Identical 'config/drivers/selenium.rb' file
@@ -129,9 +134,9 @@ Feature: Howitzer CLI Update Existing Project
129
134
  Identical 'prerequisites/models/user.rb' file
130
135
  * Root files generation ...
131
136
  Added '.gitignore' file
132
- Added '.rubocop.yml' file
133
137
  Conflict with 'Rakefile' file
134
138
  Overwrite 'Rakefile' file? [Yn]: Forced 'Rakefile' file
139
+ Added template '.rubocop.yml.erb' with params '{:cucumber=>true}' to destination '.rubocop.yml'
135
140
  Conflict with 'Gemfile' template
136
141
  Overwrite 'Gemfile' template? [Yn]: Skipped 'Gemfile' template
137
142
  * Cucumber integration to the framework ...
@@ -155,10 +160,11 @@ Feature: Howitzer CLI Update Existing Project
155
160
  Identical 'config/custom.yml' file
156
161
  Identical 'config/capybara.rb' file
157
162
  Identical 'config/default.yml' file
163
+ Identical 'config/drivers/appium.rb' file
158
164
  Identical 'config/drivers/browserstack.rb' file
159
165
  Identical 'config/drivers/crossbrowsertesting.rb' file
160
166
  Identical 'config/drivers/headless_chrome.rb' file
161
- Identical 'config/drivers/phantomjs.rb' file
167
+ Identical 'config/drivers/headless_firefox.rb' file
162
168
  Identical 'config/drivers/poltergeist.rb' file
163
169
  Identical 'config/drivers/sauce.rb' file
164
170
  Identical 'config/drivers/selenium.rb' file
@@ -179,8 +185,8 @@ Feature: Howitzer CLI Update Existing Project
179
185
  Identical 'prerequisites/models/user.rb' file
180
186
  * Root files generation ...
181
187
  Added '.gitignore' file
182
- Added '.rubocop.yml' file
183
188
  Identical 'Rakefile' file
189
+ Added template '.rubocop.yml.erb' with params '{:turnip=>true}' to destination '.rubocop.yml'
184
190
  Conflict with 'Gemfile' template
185
191
  Overwrite 'Gemfile' template? [Yn]: Forced 'Gemfile' template
186
192
  * Turnip integration to the framework ...
@@ -209,7 +215,6 @@ Feature: Howitzer CLI Update Existing Project
209
215
 
210
216
  SYNOPSIS
211
217
  howitzer [global options] update
212
-
213
218
  """
214
219
  And the exit status should be 0
215
220
  Examples:
@@ -1,5 +1,5 @@
1
1
  Given /^created old howitzer project based on rspec$/ do
2
- run_simple 'howitzer new test_automation --rspec'
2
+ run_command_and_stop 'howitzer new test_automation --rspec'
3
3
  all_commands.shift
4
4
 
5
5
  FileUtils.move(Dir.glob("#{expand_path('.')}/test_automation/*"), expand_path('.'))
@@ -10,7 +10,7 @@ Given /^created old howitzer project based on rspec$/ do
10
10
  end
11
11
 
12
12
  Given /^created old howitzer project based on cucumber$/ do
13
- run_simple 'howitzer new test_automation --cucumber'
13
+ run_command_and_stop 'howitzer new test_automation --cucumber'
14
14
  all_commands.shift
15
15
 
16
16
  FileUtils.move(Dir.glob("#{expand_path('.')}/test_automation/*"), expand_path('.'))
@@ -21,7 +21,7 @@ Given /^created old howitzer project based on cucumber$/ do
21
21
  end
22
22
 
23
23
  Given /^created old howitzer project based on turnip$/ do
24
- run_simple 'howitzer new test_automation --turnip'
24
+ run_command_and_stop 'howitzer new test_automation --turnip'
25
25
  all_commands.shift
26
26
 
27
27
  FileUtils.move(Dir.glob("#{expand_path('.')}/test_automation/*"), expand_path('.'))
@@ -170,7 +170,7 @@ module Howitzer
170
170
  when 'y'
171
171
  FileUtils.cp(source, destination)
172
172
  puts_info(" #{ColorizedString.new('Forced').light_green} '#{data[:destination]}' file")
173
- when 'n' then
173
+ when 'n'
174
174
  puts_info(" #{ColorizedString.new('Skipped').light_black} '#{data[:destination]}' file")
175
175
  else nil
176
176
  end
@@ -9,10 +9,11 @@ module Howitzer
9
9
  { source: 'custom.yml', destination: 'config/custom.yml' },
10
10
  { source: 'capybara.rb', destination: 'config/capybara.rb' },
11
11
  { source: 'default.yml', destination: 'config/default.yml' },
12
+ { source: 'drivers/appium.rb', destination: 'config/drivers/appium.rb' },
12
13
  { source: 'drivers/browserstack.rb', destination: 'config/drivers/browserstack.rb' },
13
14
  { source: 'drivers/crossbrowsertesting.rb', destination: 'config/drivers/crossbrowsertesting.rb' },
14
15
  { source: 'drivers/headless_chrome.rb', destination: 'config/drivers/headless_chrome.rb' },
15
- { source: 'drivers/phantomjs.rb', destination: 'config/drivers/phantomjs.rb' },
16
+ { source: 'drivers/headless_firefox.rb', destination: 'config/drivers/headless_firefox.rb' },
16
17
  { source: 'drivers/poltergeist.rb', destination: 'config/drivers/poltergeist.rb' },
17
18
  { source: 'drivers/sauce.rb', destination: 'config/drivers/sauce.rb' },
18
19
  { source: 'drivers/selenium.rb', destination: 'config/drivers/selenium.rb' },
@@ -11,4 +11,4 @@ Dir[
11
11
  './prerequisites/factory_bot.rb'
12
12
  ].each { |f| require f }
13
13
 
14
- String.send(:include, Howitzer::Utils::StringExtensions)
14
+ String.include Howitzer::Utils::StringExtensions
@@ -1,14 +1,15 @@
1
1
  HOWITZER_KNOWN_DRIVERS = %i[
2
+ appium
2
3
  selenium
3
4
  selenium_grid
4
5
  webkit
5
6
  poltergeist
6
- phantomjs
7
7
  sauce
8
8
  testingbot
9
9
  browserstack
10
10
  crossbrowsertesting
11
11
  headless_chrome
12
+ headless_firefox
12
13
  ].freeze
13
14
 
14
15
  unless HOWITZER_KNOWN_DRIVERS.include?(Howitzer.driver.to_s.to_sym)
@@ -21,9 +21,14 @@
21
21
  page_load_idle_timeout: 20
22
22
  maximized_window: true # Specify maximized browser window size
23
23
 
24
- # Specify one of the following drivers: selenium, selenium_grid, webkit, poltergeist, phantomjs, sauce,
25
- # testingbot, browserstack, crossbrowsertesting, headless_chrome
26
- driver: phantomjs
24
+ # Run scenarios in the order they were 'defined' (default).
25
+ # 'random' - shuffle scenarios before running.
26
+ # Specify SEED to reproduce the shuffling from a previous run. e.g. 'random:5738'
27
+ test_order: defined
28
+
29
+ # Specify one of the following drivers: selenium, selenium_grid, webkit, poltergeist, sauce,
30
+ # testingbot, browserstack, crossbrowsertesting, headless_chrome, headless_firefox, appium
31
+ driver: poltergeist
27
32
 
28
33
  # -Selenium-
29
34
  # specify one of next browsers: iexplore (ie), firefox (ff), chrome, safari
@@ -33,14 +38,27 @@
33
38
  # List of available flags (http://peter.sh/experiments/chromium-command-line-switches/)
34
39
  headless_chrome_flags: "window-size=1920x1080, disable-gpu"
35
40
 
41
+ # -Headless Firefox-
42
+ # For use custom screen size "maximized_window" should be false
43
+ headless_firefox_flags: "-height=1920, -width=1080"
44
+
36
45
  # -Selenium Grid-
37
46
  selenium_hub_url: "http://example.com:4444/wd/hub"
38
47
 
39
- # -PhantomJS/Poltergeist-
48
+ # -Poltergeist-
40
49
  # specify settings for poltergeist
41
50
  phantom_ignore_js_errors: false
42
51
  phantom_ignore_ssl_errors: true
43
52
 
53
+ # -Appium- (https://appium.io/docs/en/writing-running-appium/caps/)
54
+ appium_url: "http://localhost:80/wd/hub"
55
+ appium_platform_name: "iOS"
56
+ appium_platform_version: "10.0"
57
+ appium_browser_name: "Safari"
58
+ appium_device_name: "iPad Air 2 Simulator"
59
+ appium_device_orientation: "portrait"
60
+
61
+
44
62
  rspec_wait_timeout: 10
45
63
 
46
64
  ###########################################################