howitzer 1.0.1 → 1.0.2

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 (81) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +4 -1
  3. data/.travis.yml +3 -2
  4. data/CHANGELOG.md +25 -5
  5. data/GETTING_STARTED.md +158 -13
  6. data/README.md +49 -32
  7. data/Rakefile +10 -1
  8. data/bin/howitzer +49 -78
  9. data/features/cli_help.feature +30 -0
  10. data/features/cli_new.feature +263 -0
  11. data/features/cli_unknown.feature +17 -0
  12. data/features/cli_version.feature +14 -0
  13. data/features/step_definitions/common_steps.rb +1 -0
  14. data/features/support/env.rb +1 -0
  15. data/features/support/transformers.rb +3 -0
  16. data/generators/base_generator.rb +2 -0
  17. data/generators/config/config_generator.rb +1 -1
  18. data/generators/config/templates/default.yml +4 -14
  19. data/generators/cucumber/cucumber_generator.rb +1 -1
  20. data/generators/cucumber/templates/cucumber.yml +1 -2
  21. data/generators/cucumber/templates/env.rb +8 -7
  22. data/generators/emails/emails_generator.rb +1 -1
  23. data/generators/pages/pages_generator.rb +1 -1
  24. data/generators/pages/templates/example_page.rb +2 -2
  25. data/generators/root/root_generator.rb +1 -1
  26. data/generators/root/templates/Gemfile +1 -1
  27. data/generators/rspec/rspec_generator.rb +1 -1
  28. data/generators/rspec/templates/example_spec.rb +2 -2
  29. data/generators/rspec/templates/rspec.rake +1 -1
  30. data/generators/rspec/templates/spec_helper.rb +6 -5
  31. data/generators/tasks/tasks_generator.rb +1 -1
  32. data/generators/tasks/templates/common.rake +1 -0
  33. data/howitzer.gemspec +8 -8
  34. data/lib/howitzer.rb +4 -1
  35. data/lib/howitzer/blank_page.rb +6 -0
  36. data/lib/howitzer/capybara/dsl_ex.rb +15 -0
  37. data/lib/howitzer/capybara/settings.rb +267 -0
  38. data/lib/howitzer/email.rb +134 -0
  39. data/lib/howitzer/exceptions.rb +18 -0
  40. data/lib/howitzer/helpers.rb +34 -23
  41. data/lib/howitzer/init.rb +1 -4
  42. data/lib/howitzer/mailgun/client.rb +48 -0
  43. data/lib/howitzer/mailgun/connector.rb +34 -0
  44. data/lib/howitzer/mailgun/response.rb +28 -0
  45. data/lib/howitzer/utils.rb +2 -2
  46. data/lib/howitzer/utils/data_generator/data_storage.rb +15 -2
  47. data/lib/howitzer/utils/data_generator/gen.rb +14 -10
  48. data/lib/howitzer/utils/locator_store.rb +14 -7
  49. data/lib/howitzer/utils/log.rb +2 -0
  50. data/lib/howitzer/utils/page_validator.rb +74 -27
  51. data/lib/howitzer/version.rb +1 -1
  52. data/lib/howitzer/web_page.rb +83 -32
  53. data/spec/config/default.yml +10 -12
  54. data/spec/spec_helper.rb +12 -0
  55. data/spec/support/mailgun_unit_client.rb +60 -0
  56. data/spec/unit/generators/generators_spec.rb +7 -7
  57. data/spec/unit/lib/capybara/dsl_ex_spec.rb +60 -0
  58. data/spec/unit/lib/{capybara_settings_spec.rb → capybara/settings_spec.rb} +16 -10
  59. data/spec/unit/lib/email_spec.rb +129 -0
  60. data/spec/unit/lib/helpers_spec.rb +160 -34
  61. data/spec/unit/lib/init_spec.rb +1 -12
  62. data/spec/unit/lib/mailgun/client_spec.rb +36 -0
  63. data/spec/unit/lib/mailgun/connector_spec.rb +70 -0
  64. data/spec/unit/lib/mailgun/response_spec.rb +29 -0
  65. data/spec/unit/lib/utils/data_generator/data_storage_spec.rb +23 -5
  66. data/spec/unit/lib/utils/data_generator/gen_spec.rb +2 -63
  67. data/spec/unit/lib/utils/locator_store_spec.rb +41 -6
  68. data/spec/unit/lib/utils/log_spec.rb +1 -1
  69. data/spec/unit/lib/utils/page_validator_spec.rb +149 -25
  70. data/spec/unit/lib/web_page_spec.rb +127 -53
  71. metadata +102 -142
  72. data/lib/howitzer/utils/capybara_patched.rb +0 -23
  73. data/lib/howitzer/utils/capybara_settings.rb +0 -247
  74. data/lib/howitzer/utils/email/email.rb +0 -85
  75. data/lib/howitzer/utils/email/mail_client.rb +0 -132
  76. data/lib/howitzer/utils/email/mailgun.rb +0 -175
  77. data/lib/howitzer/utils/email/mailgun_helper.rb +0 -61
  78. data/spec/unit/bin/howitzer_spec.rb +0 -175
  79. data/spec/unit/lib/utils/email/email_spec.rb +0 -75
  80. data/spec/unit/lib/utils/email/mail_client_spec.rb +0 -115
  81. data/spec/unit/lib/utils/email/mailgun_helper_spec.rb +0 -95
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1ccf5128e9fd63e0b38181fb268f299e7fce85b5
4
+ data.tar.gz: 7673a8839534fa1b4e66857b3c5ece195564637f
5
+ SHA512:
6
+ metadata.gz: 5a38c6ce3b3c19ddd8479290fc106fd248ea8746938fb8fd5efae051b5a3fe404007b41504f6d701b48d3ee44d1ca53a1326d7da4c220f62cd5d6753d95535c8
7
+ data.tar.gz: f53c4432a9ebe7407ea49b53b978370b6d7bfa790ce3ebee55c3591897800156beaf3c810ed3a51817fd22087ce8998cbf3fc9a9f91cf88adeb1dcc4df426c6d
data/.gitignore CHANGED
@@ -5,4 +5,7 @@ coverage
5
5
  vendor/bundle/*
6
6
  spec/log/*
7
7
  Gemfile.lock
8
- doc
8
+ doc
9
+ tmp
10
+ .bundle
11
+ **/.DS_Store
data/.travis.yml CHANGED
@@ -1,4 +1,5 @@
1
1
  language: ruby
2
2
  rvm:
3
- - "1.9.3"
4
- - "2.0.0"
3
+ - 1.9.3
4
+ - 2.0.0
5
+ - 2.1.1
data/CHANGELOG.md CHANGED
@@ -1,23 +1,43 @@
1
- ## In git
1
+ ## [In git](https://github.com/strongqa/howitzer/compare/master...develop)
2
2
 
3
3
  ### New Features
4
4
 
5
5
  ### Bugfixes
6
6
 
7
- ## [v1.0.1](https://github.com/romikoops/howitzer/compare/v1.0...v1.0.1)
7
+ ## [v1.0.2](https://github.com/strongqa/howitzer/compare/v1.0.1...v1.0.2)
8
+
9
+ ### New Features
10
+ - Added Ruby 2.1 supporting
11
+ - Added Windows Supporting
12
+ - Improved project documentation
13
+ - Simplified new project creation
14
+ - Rewritten Mailgun integration to support Fabruary changes
15
+ - Created [Howitzer_example](https://github.com/strongqa/howitzer_example)
16
+ - Moved from personal github account to organization
17
+ - Added supporting of native selenium phantomjs driver
18
+ - Implemented smart page identification
19
+ - Rewritten command line interface and covered by acceptance tests fully
20
+ - Simplified DataStorage clearing after each tests
21
+
22
+ ### Bugfixes
23
+ - Fixed reset session after each scenario against to IE
24
+ - Corrected default Cucumber and Rspec formatters
25
+ - Minor bug fixing and code refactoring
26
+
27
+ ## [v1.0.1](https://github.com/strongqa/howitzer/compare/v1.0...v1.0.1)
8
28
 
9
29
  ### Bugfixes
10
30
  - Fixed unit tests
11
31
  - Fixed correct Ruby version supporting
12
32
 
13
- ## [v1.0](https://github.com/romikoops/howitzer/compare/v0.0.3...v1.0)
33
+ ## [v1.0](https://github.com/strongqa/howitzer/compare/v0.0.3...v1.0)
14
34
 
15
35
  It is major release, so there are many new features, refactoring, unit tests, code documentation.
16
36
 
17
37
  **Caution**: It is not going to support old versions anymore.
18
38
 
19
39
 
20
- ## [v0.0.3](https://github.com/romikoops/howitzer/compare/v0.0.1...v0.0.3)
40
+ ## [v0.0.3](https://github.com/strongqa/howitzer/compare/v0.0.1...v0.0.3)
21
41
 
22
42
  ### New Features
23
43
 
@@ -27,6 +47,6 @@ It is major release, so there are many new features, refactoring, unit tests, co
27
47
 
28
48
  * Fixed problem with dependencies
29
49
 
30
- ## [v0.0.1](https://github.com/romikoops/howitzer/tree/v0.0.1)
50
+ ## [v0.0.1](https://github.com/strongqa/howitzer/tree/v0.0.1)
31
51
 
32
52
  Initial version
data/GETTING_STARTED.md CHANGED
@@ -2,6 +2,7 @@ Getting Started
2
2
  ===============
3
3
 
4
4
  ## Jump to Section
5
+ * [Available Drivers](#available-drivers)
5
6
  * [Pages](#pages)
6
7
  * [Validations](#validations)
7
8
  * [Locators](#locators)
@@ -18,6 +19,126 @@ Getting Started
18
19
  * [Cucumber Tranformers](#cucumber-transformers)
19
20
  * [RSpec Folder Structure](#rspec-folder-structure)
20
21
 
22
+ Available Drivers
23
+ ------
24
+ [[Back To Top]](#jump-to-section)
25
+
26
+ **Driver** - universal interface for test runners against to different web browsers. All implementations of drivers can be divided to 2 categories:
27
+
28
+ * **Headless testing** - browser emulation without GUI(very useful on CI servers, like Bamboo, TeamCity, Jenkins, etc.)
29
+ * **Real browser testing** - integration with real browsers via extensions, plugins, ActiveX, etc.(for local and cloud based testing, like SauceLabs, Testingbot)
30
+
31
+ Howitzer uses [Capybara](http://jnicklas.github.io/capybara/) for driver management and configuration. All that you really need:
32
+ - specify the **driver** settings in _config/default.yml_
33
+ - specify some additional settings for chosen driver.
34
+ Bellow you can find aggregated table with some useful informations about driver settings in Howitzer:
35
+
36
+ <table>
37
+ <thead>
38
+ <tr>
39
+ <th>Driver</th>
40
+ <th align="center">Category</th>
41
+ <th align="center">Setting name</th>
42
+ <th align="center">Setting type</th>
43
+ <th align="center">Description</th>
44
+ </tr>
45
+ </thead>
46
+ <tbody>
47
+ <tr>
48
+ <td><a href="http://phantomjs.org/">phantomjs</a>(<strong>default</strong>)</td>
49
+ <td align="center">Headless</td>
50
+ <td align="left" rowspan="2">
51
+ <strong>pjs_ignore_js_errors</strong><br/><br/>
52
+ <strong>pjs_ignore_ssl_errors</strong>
53
+ </td>
54
+ <td align="left" rowspan="2">
55
+ Boolean <br/><br/>
56
+ Boolean
57
+ </td>
58
+ <td align="left" rowspan="2">
59
+ if false, then raises exception on js error in app<br/>
60
+ if false, then ignores ssl warnings
61
+ </td>
62
+ </tr>
63
+ <tr>
64
+ <td><a href="https://github.com/teampoltergeist/poltergeist">poltergeist</a></td>
65
+ <td align="center">Headless</td>
66
+ </tr>
67
+ <tr>
68
+ <td><a href="https://github.com/thoughtbot/capybara-webkit">webkit</a></td>
69
+ <td align="center">Headless</td>
70
+ <td align="center">-</td>
71
+ <td align="center">-</td>
72
+ <td align="center">-</td>
73
+ </tr>
74
+ <tr>
75
+ <td><a href="https://code.google.com/p/selenium/wiki/RubyBindings">selenium</a></td>
76
+ <td align="center">Real</td>
77
+ <td align="center"><strong>sel_browser</strong></td>
78
+ <td align="center">String</td>
79
+ <td align="center">specify one of next browsers: iexplore (ie), firefox (ff), chrome, opera, safari</td>
80
+ </tr>
81
+ <tr>
82
+ <td>selenium_dev</td>
83
+ <td align="center">Real</td>
84
+ <td align="center"><strong>-</strong></td>
85
+ <td align="center">-</td>
86
+ <td align="center">Execute tests against to FireFox with firebug and firepath extensions</td>
87
+ </tr>
88
+ <tr>
89
+ <td><a href="https://saucelabs.com">sauce</a></td>
90
+ <td align="center">Real</td>
91
+ <td align="center">
92
+ <strong>sl_user<strong><br/>
93
+ <strong>sl_api_key</strong><br/>
94
+ <strong>sl_url</strong><br/>
95
+ <strong>sl_platform</strong><br/>
96
+ <strong>sl_browser_name</strong><br/>
97
+ <strong>sl_selenium_version</strong><br/>
98
+ <strong>sl_max_duration</strong><br/>
99
+ <strong>sl_idle_timeout</strong></td>
100
+ <td align="center">
101
+ String<br/>
102
+ String<br/>
103
+ String<br/>
104
+ Symbol<br/>
105
+ String<br/>
106
+ String<br/>
107
+ String<br/>
108
+ String</td>
109
+ <td align="center">See details <a href="https://saucelabs.com/docs/additional-config">here</a></td>
110
+ </tr>
111
+ <tr>
112
+ <td><a href="http://testingbot.com">testingbot</a></td>
113
+ <td align="center">Real</td>
114
+ <td align="center">
115
+ <strong>tb_api_key<strong><br/>
116
+ <strong>tb_api_secret<strong><br/>
117
+ <strong>tb_url<strong><br/>
118
+ <strong>tb_platform<strong><br/>
119
+ <strong>tb_browser_name<strong><br/>
120
+ <strong>tb_browser_version<strong><br/>
121
+ <strong>tb_selenium_version<strong><br/>
122
+ <strong>tb_max_duration<strong><br/>
123
+ <strong>tb_idle_timeout<strong><br/>
124
+ <strong>tb_record_screenshot<strong>
125
+ </td>
126
+ <td align="center">
127
+ String<br/>
128
+ String<br/>
129
+ String<br/>
130
+ Symbol<br/>
131
+ String<br/>
132
+ Numberic<br/>
133
+ String<br/>
134
+ String<br/>
135
+ String<br/>
136
+ Boolean</td>
137
+ <td align="center">See details <a href="http://testingbot.com/support/other/test-options">here</a></td>
138
+ </tr>
139
+ </tbody>
140
+ </table>
141
+
21
142
  Pages
22
143
  ------
23
144
  [[Back To Top]](#jump-to-section)
@@ -36,6 +157,8 @@ Each page contains required constant URL(the relative URL of the page):
36
157
  **Example :**
37
158
 
38
159
  ```ruby
160
+ # put the class to ./pages/home_page.rb file
161
+
39
162
  class HomePage < WebPage
40
163
  URL = '/'
41
164
  end
@@ -65,7 +188,7 @@ Validation Type | Options | Value Type | Description
65
188
  ```ruby
66
189
  class HomePage < WebPage
67
190
  URL = '/'
68
- validates :url, pattern: /#{Regexp.escape(settings.app_host)}\/?\z/
191
+ validates :url, pattern: /\A(?:.*?:\/\/)?[^\/]*\/?\z/
69
192
  end
70
193
  ```
71
194
 
@@ -119,7 +242,7 @@ Each page contains a description of all elements by adding the appropriate locat
119
242
  ```ruby
120
243
  class HomePage < WebPage
121
244
  URL = '/'
122
- validates :url, pattern: /#{Regexp.escape(settings.app_host)}\/?\z/
245
+ validates :url, pattern: /\A(?:.*?:\/\/)?[^\/]*\/?\z/
123
246
 
124
247
  add_locator :test_locator_name1, '.foo' #css locator, default
125
248
  add_locator :test_locator_name2, css: '.foo' #css locator
@@ -247,16 +370,34 @@ Emails
247
370
  ------
248
371
  [[Back To Top]](#jump-to-section)
249
372
 
250
- _**Email**_ class uses `Mailgun` gem and allows you to work with the mailbox.
251
- Class corresponds to one letter. Used to test the notifications.
373
+ Howitzer uses amazing service [Mailgun](http://mailgun.com) which allows to catch all emails of sandbox domain, and to store them to its data storage during 3 days. It is extrimaly useful for new user creation with email confirmation during testing of web applications
374
+
375
+ You can use **free** account. Follow steps below:
252
376
 
253
- **.find_by_recipient (recipient)** - search for the letter recipient. The parameter receives email recipient.
377
+ 1. Sign up [here](https://mailgun.com/signup)
378
+ 2. Login and copy your API Key
379
+ 3. Open config/default.yml file of your project, find **mailgun_key** setting and past copied api key there.
380
+ 4. Open Mailgun web page again and copy mailgun domain, ie. 'sandboxbaf443d4c81b43d0b64a413805dc6f68.mailgun.org'
381
+ 5. Open config/default.yml file of your project again, find **mailgun_domain** setting and past copied mailgun domain there.
382
+ 6. Open Mailgun web page again and navigate to **Routes** menu
383
+ 7. Create new route with following parameters
254
384
 
255
- **.find (recipient, subject)** - same as the **self.find_by_recipient (recipient)**, but only in case, when we do not know in advance what kind of _subject_ has email.
385
+ Priority | Filter Expression | Action | Description
386
+ :--------:|:---------------------:|:-------:|:------------------
387
+ 0 | match_recipient(".*") | store() | Store all messages
256
388
 
257
- **\#plain_text_body** - receiving text of messages
389
+ _**Email**_ Class corresponds to one letter. Used to test the notifications.
258
390
 
259
- **\#get_mime_part** - allows you to receive the attachment of email
391
+ * **.find_by_recipient (recipient)** - search for the letter recipient. The parameter receives email recipient.
392
+ * **.find (recipient, subject)** - same as the **self.find_by_recipient (recipient)**, but only in case, when we do not know in advance what kind of _subject_ has email.
393
+ * **\#plain_text_body** - receiving body of message as plain text
394
+ * **\#html_body** - receiving body of messages as html
395
+ * **\#text_body** - receiving body of messages as stripped text
396
+ * **\#mail_from** - returns who has send email data in format: User Name <user@email>
397
+ * **\#recipients** - returns array of recipients who has received current email
398
+ * **\#received_time** - returns email received time
399
+ * **\#sender_email** - returns sender user email
400
+ * **\#get_mime_part** - allows you to receive the attachment of email
260
401
 
261
402
  **Example:**
262
403
  ```ruby
@@ -267,6 +408,8 @@ end
267
408
 
268
409
  Example, how custom class might look like:
269
410
  ```ruby
411
+ # put the class to ./emails/my_email.rb file
412
+
270
413
  class MyEmail <Email
271
414
  SUBJECT = "Test email" # specify the subject of an email
272
415
 
@@ -403,11 +546,12 @@ Data Storage is simple key value storage, which uses namespaces (for example, :u
403
546
  This module has next methods:
404
547
 
405
548
 
406
- Method | Description
407
- :------------------------------------:|:--------------------------------------------------:
408
- | DataStorage.store(ns,key,value) | Adds data to storage, where ns - uniq namespace name
409
- | DataStorage::extract(ns, key=nil) | Gets data from storage by namespace and key. If key is not specified, then it will returns all data from namespace
410
- | DataStorage::clear_ns(ns) | Removes namespace with data
549
+ Method | Description
550
+ :------------------------------------------:|:--------------------------------------------------:
551
+ | DataStorage.store(ns,key,value) | Adds data to storage, where ns - uniq namespace name
552
+ | DataStorage::extract(ns, key=nil) | Gets data from storage by namespace and key. If key is not specified, then it will returns all data from namespace
553
+ | DataStorage::clear_ns(ns) | Removes namespace with data
554
+ | DataStorage::clear_all_ns(exception_list=SPECIAL_NS_LIST)| Removes all namespaces except special namespaces provided as array
411
555
 
412
556
  **Example:**
413
557
  ```ruby
@@ -527,3 +671,4 @@ You can run all tests from this folder by command:
527
671
  ```bash
528
672
  rake rspec:bvt:accounts
529
673
  ```
674
+
data/README.md CHANGED
@@ -1,12 +1,20 @@
1
1
  # Howitzer
2
-
3
- [![Build Status](https://api.travis-ci.org/romikoops/howitzer.png)](http://travis-ci.org/romikoops/howitzer)
4
- [![Dependency Status](https://gemnasium.com/romikoops/howitzer.png)](https://gemnasium.com/romikoops/howitzer)
2
+ [![Gem Version](http://img.shields.io/gem/v/howitzer.svg)][gem]
3
+ [![Build Status](https://travis-ci.org/strongqa/howitzer.svg?branch=master)][travis]
4
+ [![Dependency Status](https://gemnasium.com/romikoops/howitzer.png)][gemnasium]
5
+ [![Code Climate](https://codeclimate.com/github/romikoops/howitzer.png)][codeclimate]
6
+ [![License](http://img.shields.io/badge/license-MIT-blue.svg)][license]
7
+
8
+ [gem]: https://rubygems.org/gems/howitzer
9
+ [travis]: https://travis-ci.org/strongqa/howitzer
10
+ [gemnasium]: https://gemnasium.com/romikoops/howitzer
11
+ [codeclimate]: https://codeclimate.com/github/romikoops/howitzer
12
+ [license]: https://github.com/strongqa/howitzer/blob/master/LICENSE
5
13
 
6
14
  Howitzer is Ruby based framework for acceptance testing.
7
15
 
8
16
  Initially it was developed for testing of web applications, but it is applicable to testing of web services or some API as well.
9
- The framework uses modern patterns, techniques and tools in automated testing area. For details, please see [Test Framework Design](https://github.com/romikoops/howitzer/wiki/Test-Framework-Design).
17
+ The framework uses modern patterns, techniques and tools in automated testing area. For details, please see [Test Framework Design](https://github.com/strongqa/howitzer/wiki/Test-Framework-Design).
10
18
 
11
19
  ## Key benefits
12
20
  - Independent of test web application, its technologies and lanquage.
@@ -20,44 +28,35 @@ The framework uses modern patterns, techniques and tools in automated testing ar
20
28
 
21
29
 
22
30
  ## Documentation
23
- See [GETTING_STARTED](https://github.com/romikoops/howitzer/blob/develop/GETTING_STARTED.md) how to work with *howitzer*.
31
+ See [GETTING_STARTED](https://github.com/strongqa/howitzer/blob/develop/GETTING_STARTED.md) how to work with *howitzer*.
24
32
 
25
33
  Also you can find Rdoc documentation on [Rubygems](https://rubygems.org/gems/howitzer).
26
34
 
35
+ ## Related products
36
+ * [Howitzer Example](https://github.com/strongqa/howitzer_example) - Demo Rails application and Acceptance tests
37
+ * [Howitzer Stat](https://github.com/strongqa/howitzer_stat) - Howitzer extension for test coverage visualization of web web pages
38
+
27
39
  ## Requirements
28
- Ruby 1.9.3+
40
+ * Supported OS: Mac OS X, Linux, Windows
41
+ * Ruby 1.9.3+
42
+ * [DevKit](https://github.com/oneclick/rubyinstaller/wiki/Development-Kit#installation-instructions)(For **Windows** only)
43
+ * [PhantomJS](http://phantomjs.org/download.html)
44
+ * [ChromeDriver](https://code.google.com/p/selenium/wiki/ChromeDriver)
29
45
 
30
46
  ## Setup
31
47
  To install, type
32
48
 
33
49
  ```bash
34
- sudo gem install howitzer
50
+ gem install howitzer
35
51
  ```
36
52
 
37
53
  ## Usage
38
- To deploy the framework, type:
39
-
40
- ```bash
41
- mkdir test_automation
42
- cd test_automation
43
- ```
44
-
45
- Then for Cucumber:
46
-
47
- ```bash
48
- howitzer install --cucumber
49
- ```
50
-
51
- For Rspec:
52
-
53
- ```bash
54
- howitzer install --rspec
55
- ```
54
+ navigate to desired directory where new project will be created
56
55
 
57
- Or for both the ones:
56
+ To deploy the framework with Cucumber, type:
58
57
 
59
58
  ```bash
60
- howitzer install --cucumber --rspec
59
+ howitzer new <PROJECT NAME> --cucumber
61
60
  ```
62
61
 
63
62
  This command will generate next folders and files:
@@ -84,15 +83,33 @@ Gemfile
84
83
  Rakefile
85
84
  .gitignore
86
85
  ```
86
+
87
+ With Rspec:
88
+
89
+ ```bash
90
+ howitzer new <PROJECT NAME> --rspec
91
+ ```
92
+
93
+ With both the ones:
94
+
95
+ ```bash
96
+ howitzer new <PROJECT NAME> --cucumber --rspec
97
+ ```
98
+
87
99
  ### Configuration
88
100
  Learn and specify correct default settings in `config/default.yml` file. For details, please see original [sexy_settings](https://github.com/romikoops/sexy_settings) gem.
89
101
 
90
102
  ## Test implementation workflow
91
103
 
92
- - Prepare some feature with scenarios in `features/some.feature` file.
93
- - Implement step definitions in `features/step_definitions/common_steps.rb` file.
94
- - Implement appropriate pages in `pages` folder. For details, see [Page Object Pattern](https://github.com/romikoops/howitzer/wiki/PageObject-pattern).
95
- - Debug feature.
104
+ - Prepare Features and Scenarios
105
+ - Implement appropriate pages in `pages` folder. For details, see [Page Object Pattern](https://github.com/strongqa/howitzer/wiki/PageObject-pattern).
106
+ - Implement emails in `emails` folder.
107
+ - Implement scenarios:
108
+ * Cucumber:
109
+ 1. Read and learn [Cucumber Best Practices](https://github.com/strongqa/howitzer/wiki/Cucumber-Best-Practices)
110
+ 2. Implement step definitions in `features/step_definitions/common_steps.rb` file.
111
+ * Rspec: Use [DSL](https://github.com/jnicklas/capybara/blob/master/lib/capybara/rspec/features.rb) provided by Capybara for creating descriptive acceptance tests
112
+ - Debug feature against to desired driver.
96
113
  - Enjoy it!
97
114
 
98
115
  ## Rake tasks
@@ -106,7 +123,7 @@ rake -T
106
123
  ## More information
107
124
  * [Rubygems](https://rubygems.org/gems/howitzer)
108
125
  * [Mailing list](https://groups.google.com/forum/#!forum/howitzer_ruby)
109
- * [Issues](https://github.com/romikoops/howitzer/issues)
126
+ * [Issues](https://github.com/strongqa/howitzer/issues)
110
127
 
111
128
  ## Contributing
112
129
 
data/Rakefile CHANGED
@@ -4,6 +4,15 @@ Bundler.setup
4
4
 
5
5
  require 'rake'
6
6
  require 'rspec/core/rake_task'
7
+ require 'cucumber/rake/task'
7
8
  Bundler::GemHelper.install_tasks
8
9
  RSpec::Core::RakeTask.new(:spec) { |spec| }
9
- task :default => :spec
10
+
11
+ Cucumber::Rake::Task.new(:cucumber, 'Run all cucumber features') do |t|
12
+ t.fork = false
13
+ end
14
+
15
+ desc "All tests"
16
+ task(all_tests: [:spec, :cucumber]) {}
17
+
18
+ task :default => :all_tests