howitzer 2.1.1 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
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
  ###########################################################