howitzer 2.0.3 → 2.3.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 (139) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +69 -11
  3. data/LICENSE +1 -1
  4. data/README.md +21 -17
  5. data/bin/howitzer +7 -6
  6. data/generators/base_generator.rb +31 -17
  7. data/generators/config/config_generator.rb +11 -3
  8. data/generators/config/templates/boot.rb +3 -3
  9. data/generators/config/templates/capybara.rb +6 -131
  10. data/generators/config/templates/default.yml +34 -13
  11. data/generators/config/templates/drivers/appium.rb +25 -0
  12. data/generators/config/templates/drivers/browserstack.rb +23 -0
  13. data/generators/config/templates/drivers/crossbrowsertesting.rb +29 -0
  14. data/generators/config/templates/drivers/headless_chrome.rb +15 -0
  15. data/generators/config/templates/drivers/headless_firefox.rb +23 -0
  16. data/generators/config/templates/drivers/sauce.rb +25 -0
  17. data/generators/config/templates/drivers/selenium.rb +24 -0
  18. data/generators/config/templates/drivers/selenium_grid.rb +31 -0
  19. data/generators/config/templates/drivers/testingbot.rb +24 -0
  20. data/generators/cucumber/cucumber_generator.rb +2 -2
  21. data/generators/cucumber/templates/common_steps.rb +3 -3
  22. data/generators/cucumber/templates/cucumber.rake +5 -13
  23. data/generators/cucumber/templates/cuke_sniffer.rake +2 -2
  24. data/generators/cucumber/templates/env.rb +9 -1
  25. data/generators/cucumber/templates/hooks.rb +8 -2
  26. data/generators/cucumber/templates/transformers.rb +11 -25
  27. data/generators/emails/emails_generator.rb +2 -2
  28. data/generators/emails/templates/example_email.rb +1 -1
  29. data/generators/prerequisites/prerequisites_generator.rb +3 -3
  30. data/generators/prerequisites/templates/base.rb +1 -1
  31. data/generators/prerequisites/templates/{factory_girl.rb → factory_bot.rb} +7 -6
  32. data/generators/prerequisites/templates/users.rb +1 -1
  33. data/generators/root/root_generator.rb +3 -3
  34. data/generators/root/templates/Gemfile.erb +16 -22
  35. data/generators/rspec/rspec_generator.rb +2 -2
  36. data/generators/rspec/templates/rspec.rake +8 -8
  37. data/generators/rspec/templates/spec_helper.rb +6 -5
  38. data/generators/tasks/tasks_generator.rb +2 -2
  39. data/generators/turnip/templates/spec_helper.rb +6 -5
  40. data/generators/turnip/turnip_generator.rb +2 -2
  41. data/generators/web/templates/example_page.rb +1 -1
  42. data/generators/web/web_generator.rb +2 -2
  43. data/lib/howitzer/cache.rb +20 -19
  44. data/lib/howitzer/capybara_helpers.rb +58 -13
  45. data/lib/howitzer/email.rb +3 -2
  46. data/lib/howitzer/exceptions.rb +21 -20
  47. data/lib/howitzer/gmail_api/client.rb +31 -0
  48. data/lib/howitzer/gmail_api.rb +7 -0
  49. data/lib/howitzer/log.rb +6 -6
  50. data/lib/howitzer/mail_adapters/gmail.rb +96 -0
  51. data/lib/howitzer/mail_adapters/mailgun.rb +4 -2
  52. data/lib/howitzer/mail_adapters/mailtrap.rb +108 -0
  53. data/lib/howitzer/mailgun_api/client.rb +3 -2
  54. data/lib/howitzer/mailgun_api/connector.rb +1 -0
  55. data/lib/howitzer/mailgun_api/response.rb +1 -2
  56. data/lib/howitzer/mailtrap_api/client.rb +52 -0
  57. data/lib/howitzer/mailtrap_api.rb +7 -0
  58. data/lib/howitzer/meta/actions.rb +35 -0
  59. data/lib/howitzer/meta/element.rb +40 -0
  60. data/lib/howitzer/meta/entry.rb +62 -0
  61. data/lib/howitzer/meta/iframe.rb +41 -0
  62. data/lib/howitzer/meta/section.rb +30 -0
  63. data/lib/howitzer/meta.rb +11 -0
  64. data/lib/howitzer/utils/string_extensions.rb +6 -2
  65. data/lib/howitzer/version.rb +1 -1
  66. data/lib/howitzer/web/base_section.rb +1 -1
  67. data/lib/howitzer/web/capybara_context_holder.rb +1 -0
  68. data/lib/howitzer/web/capybara_methods_proxy.rb +15 -6
  69. data/lib/howitzer/web/element_dsl.rb +104 -44
  70. data/lib/howitzer/web/iframe_dsl.rb +23 -3
  71. data/lib/howitzer/web/page.rb +16 -4
  72. data/lib/howitzer/web/page_dsl.rb +19 -7
  73. data/lib/howitzer/web/page_validator.rb +27 -26
  74. data/lib/howitzer/web/section.rb +13 -2
  75. data/lib/howitzer/web/section_dsl.rb +65 -30
  76. data/lib/howitzer.rb +66 -10
  77. metadata +67 -133
  78. data/.coveralls.yml +0 -1
  79. data/.gitignore +0 -14
  80. data/.rspec +0 -3
  81. data/.rubocop.yml +0 -44
  82. data/.ruby-gemset +0 -1
  83. data/.travis.yml +0 -7
  84. data/Gemfile +0 -13
  85. data/MAINTENANCE.md +0 -32
  86. data/Rakefile +0 -22
  87. data/features/cli_help.feature +0 -31
  88. data/features/cli_new.feature +0 -349
  89. data/features/cli_unknown.feature +0 -17
  90. data/features/cli_update.feature +0 -178
  91. data/features/cli_version.feature +0 -14
  92. data/features/step_definitions/common_steps.rb +0 -29
  93. data/features/support/env.rb +0 -1
  94. data/features/support/transformers.rb +0 -3
  95. data/generators/root/templates/.gitignore +0 -21
  96. data/generators/root/templates/.rubocop.yml +0 -35
  97. data/generators/turnip/templates/.rspec +0 -1
  98. data/howitzer.gemspec +0 -37
  99. data/lib/howitzer/mail_adapters/debugmail.rb +0 -0
  100. data/spec/config/custom.yml +0 -9
  101. data/spec/spec_helper.rb +0 -72
  102. data/spec/support/generator_helper.rb +0 -21
  103. data/spec/support/logger_helper.rb +0 -13
  104. data/spec/support/mailgun_unit_client.rb +0 -68
  105. data/spec/support/shared_examples/capybara_context_holder.rb +0 -33
  106. data/spec/support/shared_examples/capybara_methods_proxy.rb +0 -94
  107. data/spec/support/shared_examples/dynamic_section_methods.rb +0 -35
  108. data/spec/support/shared_examples/element_dsl.rb +0 -242
  109. data/spec/unit/generators/base_generator_spec.rb +0 -272
  110. data/spec/unit/generators/config_generator_spec.rb +0 -38
  111. data/spec/unit/generators/cucumber_generator_spec.rb +0 -62
  112. data/spec/unit/generators/emails_generator_spec.rb +0 -35
  113. data/spec/unit/generators/prerequisites_generator_spec.rb +0 -53
  114. data/spec/unit/generators/root_generator_spec.rb +0 -72
  115. data/spec/unit/generators/rspec_generator_spec.rb +0 -36
  116. data/spec/unit/generators/tasks_generator_spec.rb +0 -31
  117. data/spec/unit/generators/turnip_generator_spec.rb +0 -52
  118. data/spec/unit/generators/web_generator_spec.rb +0 -52
  119. data/spec/unit/lib/cache_spec.rb +0 -85
  120. data/spec/unit/lib/capybara_helpers_spec.rb +0 -696
  121. data/spec/unit/lib/email_spec.rb +0 -186
  122. data/spec/unit/lib/howitzer_spec.rb +0 -40
  123. data/spec/unit/lib/init_spec.rb +0 -2
  124. data/spec/unit/lib/log_spec.rb +0 -122
  125. data/spec/unit/lib/mail_adapters/abstract_spec.rb +0 -62
  126. data/spec/unit/lib/mail_adapters/mailgun_spec.rb +0 -163
  127. data/spec/unit/lib/mailgun_api/client_spec.rb +0 -58
  128. data/spec/unit/lib/mailgun_api/connector_spec.rb +0 -54
  129. data/spec/unit/lib/mailgun_api/response_spec.rb +0 -28
  130. data/spec/unit/lib/utils/string_extensions_spec.rb +0 -77
  131. data/spec/unit/lib/web/base_section_spec.rb +0 -43
  132. data/spec/unit/lib/web/element_dsl_spec.rb +0 -22
  133. data/spec/unit/lib/web/iframe_dsl_spec.rb +0 -144
  134. data/spec/unit/lib/web/page_dsl_spec.rb +0 -74
  135. data/spec/unit/lib/web/page_spec.rb +0 -349
  136. data/spec/unit/lib/web/page_validator_spec.rb +0 -276
  137. data/spec/unit/lib/web/section_dsl_spec.rb +0 -165
  138. data/spec/unit/lib/web/section_spec.rb +0 -63
  139. data/spec/unit/version_spec.rb +0 -8
@@ -5,7 +5,7 @@ module Howitzer
5
5
  module SectionDsl
6
6
  include CapybaraContextHolder
7
7
 
8
- def self.included(base) #:nodoc:
8
+ def self.included(base) # :nodoc:
9
9
  base.extend(ClassMethods)
10
10
  end
11
11
 
@@ -17,8 +17,9 @@ module Howitzer
17
17
 
18
18
  # Instantiates an anynomous or named section and executes block code in the section scope
19
19
 
20
- def initialize(name, *args, &block)
20
+ def initialize(name, *args, **options, &block)
21
21
  @args = args
22
+ @options = options
22
23
  self.section_class =
23
24
  if block
24
25
  Class.new(Howitzer::Web::BaseSection)
@@ -29,29 +30,40 @@ module Howitzer
29
30
  end
30
31
 
31
32
  # # Defines an element on the section
32
- # # @see Howitzer::PageDsl::ClassMethods#element
33
+ # # @see Howitzer::Web::ElementDsl::ClassMethods#element
33
34
 
34
- def element(*args)
35
- section_class.send(:element, *args)
35
+ def element(*args, **options)
36
+ section_class.send(:element, *args, **options)
36
37
  end
37
38
 
38
39
  # Delegates a section describing to the section class
39
40
 
40
- def section(name, *args, &block)
41
- section_class.send(:section, name, *args, &block)
41
+ def section(name, *args, **options, &block)
42
+ section_class.send(:section, name, *args, **options, &block)
42
43
  end
43
44
 
44
- # Returns a selector for the section.
45
+ # Returns selector arguments for the section.
45
46
  # @note If anonymous section uses, then inline selector should be specified.
46
47
  # Otherwise arguments should be defined with `.me` dsl method in named section
47
48
  # @return [Array]
48
49
  # @raise [ArgumentError] when finder arguments were not specified
49
50
 
50
51
  def finder_args
51
- @finder_args ||= begin
52
- return @args if @args.present?
53
- section_class.default_finder_args || raise(ArgumentError, 'Missing finder arguments')
54
- end
52
+ return @args if @args.present?
53
+
54
+ @finder_args ||= (section_class.default_finder_args || raise(ArgumentError, 'Missing finder arguments'))
55
+ end
56
+
57
+ # Returns selector options for the section.
58
+ # @note If anonymous section uses, then inline selector should be specified.
59
+ # Otherwise arguments should be defined with `.me` dsl method in named section
60
+ # @return [Array]
61
+ # @raise [ArgumentError] when finder arguments were not specified
62
+
63
+ def finder_options
64
+ @options if @args.present? # it is ok to have blank options, so we rely here on the argments
65
+
66
+ @finder_options ||= (section_class.default_finder_options || {})
55
67
  end
56
68
  end
57
69
 
@@ -74,6 +86,9 @@ module Howitzer
74
86
  # @param args [Array] original Capybara arguments. For details, see `Capybara::Node::Finders#all.
75
87
  # (In most cases should be ommited for named sections because the section selector is specified
76
88
  # with `#me` method. But must be specified for anonymous sections)
89
+ # @param options [Hash] original Capybara options. For details, see `Capybara::Node::Finders#all.
90
+ # (In most cases should be ommited for named sections because the section selector is specified
91
+ # with `#me` method. But may be specified for anonymous sections)
77
92
  # @param block [Proc] this block can contain nested sections and elements
78
93
  # @example Named section
79
94
  # class MenuSection < Howitzer::Web::Section
@@ -109,37 +124,57 @@ module Howitzer
109
124
  # HomePage.on { info_panel_section.edit_info(title: 'Test Title') }
110
125
  # @!visibility public
111
126
 
112
- def section(name, *args, &block)
113
- scope = SectionScope.new(name, *args, &block)
114
- define_section_method(scope.section_class, name, scope.finder_args)
115
- define_sections_method(scope.section_class, name, scope.finder_args)
116
- define_has_section_method(name, scope.finder_args)
117
- define_has_no_section_method(name, scope.finder_args)
127
+ def section(name, *args, **options, &block)
128
+ scope = SectionScope.new(name, *args, **options, &block)
129
+ define_section_method(scope.section_class, name, *scope.finder_args, **scope.finder_options)
130
+ define_sections_method(scope.section_class, name, *scope.finder_args, **scope.finder_options)
131
+ define_has_section_method(name, *scope.finder_args, **scope.finder_options)
132
+ define_has_no_section_method(name, *scope.finder_args, **scope.finder_options)
118
133
  end
119
134
 
120
135
  private
121
136
 
122
- def define_section_method(klass, name, args)
123
- define_method("#{name}_section") do
124
- klass.new(self, capybara_context.find(*args))
137
+ def define_section_method(klass, name, *args, **options)
138
+ define_method("#{name}_section") do |**block_options|
139
+ kwdargs = options.transform_keys(&:to_sym).merge(block_options.transform_keys(&:to_sym))
140
+ if kwdargs.present?
141
+ klass.new(self, capybara_context.find(*args, **kwdargs))
142
+ else
143
+ klass.new(self, capybara_context.find(*args))
144
+ end
125
145
  end
126
146
  end
127
147
 
128
- def define_sections_method(klass, name, args)
129
- define_method("#{name}_sections") do
130
- capybara_context.all(*args).map { |el| klass.new(self, el) }
148
+ def define_sections_method(klass, name, *args, **options)
149
+ define_method("#{name}_sections") do |**block_options|
150
+ kwdargs = options.transform_keys(&:to_sym).merge(block_options.transform_keys(&:to_sym))
151
+ if kwdargs.present?
152
+ capybara_context.all(*args, **kwdargs).map { |el| klass.new(self, el) }
153
+ else
154
+ capybara_context.all(*args).map { |el| klass.new(self, el) }
155
+ end
131
156
  end
132
157
  end
133
158
 
134
- def define_has_section_method(name, args)
135
- define_method("has_#{name}_section?") do
136
- capybara_context.has_selector?(*args)
159
+ def define_has_section_method(name, *args, **options)
160
+ define_method("has_#{name}_section?") do |**block_options|
161
+ kwdargs = options.transform_keys(&:to_sym).merge(block_options.transform_keys(&:to_sym))
162
+ if kwdargs.present?
163
+ capybara_context.has_selector?(*args, **kwdargs)
164
+ else
165
+ capybara_context.has_selector?(*args)
166
+ end
137
167
  end
138
168
  end
139
169
 
140
- def define_has_no_section_method(name, args)
141
- define_method("has_no_#{name}_section?") do
142
- capybara_context.has_no_selector?(*args)
170
+ def define_has_no_section_method(name, *args, **options)
171
+ define_method("has_no_#{name}_section?") do |**block_options|
172
+ kwdargs = options.transform_keys(&:to_sym).merge(block_options.transform_keys(&:to_sym))
173
+ if kwdargs.present?
174
+ capybara_context.has_no_selector?(*args, **kwdarg)
175
+ else
176
+ capybara_context.has_no_selector?(*args)
177
+ end
143
178
  end
144
179
  end
145
180
  end
data/lib/howitzer.rb CHANGED
@@ -2,6 +2,8 @@ require 'selenium-webdriver'
2
2
  require 'capybara'
3
3
  require 'sexy_settings'
4
4
  require 'rspec/wait'
5
+ require 'howitzer/version'
6
+ require 'howitzer/exceptions'
5
7
 
6
8
  SexySettings.configure do |config|
7
9
  config.path_to_default_settings = File.expand_path('config/default.yml', Dir.pwd)
@@ -27,28 +29,82 @@ module Howitzer
27
29
  ::SexySettings::Base.instance.all['mailgun_idle_timeout']
28
30
  end
29
31
 
32
+ # @return active session name
33
+
34
+ def session_name
35
+ @session_name ||= 'default'
36
+ end
37
+
38
+ # Sets new session name
39
+ #
40
+ # @param name [String] string identifier for the session
41
+ #
42
+ # @example Executing code in another browser
43
+ # Howitzer.session_name = 'browser2'
44
+ # LoginPage.on do
45
+ # expect(title).to eq('Login Page')
46
+ # end
47
+ #
48
+ # # Switching back to main browser
49
+ # Howitzer.session_name = 'default'
50
+
51
+ def session_name=(name)
52
+ @session_name = name
53
+ Capybara.session_name = @session_name
54
+ end
55
+
56
+ # Yield a block using a specific session name
57
+ #
58
+ # @param name [String] string identifier for the session
59
+ #
60
+ # @example Opening page in another browser
61
+ # Howitzer.using_session('browser2') do
62
+ # LoginPage.on do
63
+ # expect(title).to eq('Login Page')
64
+ # end
65
+ # end
66
+
67
+ def using_session(name, &block)
68
+ Capybara.using_session(name, &block)
69
+ end
70
+
30
71
  attr_accessor :current_rake_task
31
72
  end
32
73
 
33
- # @return an application uri
74
+ # @return an application uri for particular application name
75
+ #
76
+ # @param name [Symbol, String] an application name from framework settings
34
77
  #
35
- # @example returns url with auth
78
+ # @example returns default application url with auth
36
79
  # app_uri.site
37
- # @example returns url without auth
80
+ # @example returns example application url with auth
81
+ # app_uri(:example).site
82
+ # @example returns default application url without auth
38
83
  # app_uri.origin
39
84
 
40
- def self.app_uri
85
+ def self.app_uri(name = nil)
86
+ prefix = "#{name}_" if name.present?
41
87
  ::Addressable::URI.new(
42
- user: Howitzer.app_base_auth_login,
43
- password: Howitzer.app_base_auth_pass,
44
- host: Howitzer.app_host,
45
- scheme: Howitzer.app_protocol || 'http'
88
+ user: Howitzer.sexy_setting!("#{prefix}app_base_auth_login"),
89
+ password: Howitzer.sexy_setting!("#{prefix}app_base_auth_pass"),
90
+ host: Howitzer.sexy_setting!("#{prefix}app_host"),
91
+ scheme: Howitzer.sexy_setting!("#{prefix}app_protocol") || 'http'
46
92
  )
47
93
  end
94
+
95
+ # @return an setting value or raise error
96
+ #
97
+ # @param name [Symbol, String] an setting name
98
+ # @raise [Howitzer::UndefinedSexySettingError] when the setting is not specified
99
+
100
+ def self.sexy_setting!(name)
101
+ return Howitzer.public_send(name) if Howitzer.respond_to?(name)
102
+
103
+ raise UndefinedSexySettingError,
104
+ "Undefined '#{name}' setting. Please add the setting to config/default.yml:\n #{name}: some_value\n"
105
+ end
48
106
  end
49
107
 
50
- require 'howitzer/version'
51
- require 'howitzer/exceptions'
52
108
  require 'howitzer/log'
53
109
  require 'howitzer/utils'
54
110
  require 'howitzer/cache'
metadata CHANGED
@@ -1,49 +1,63 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: howitzer
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.3
4
+ version: 2.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roman Parashchenko
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-12 00:00:00.000000000 Z
11
+ date: 2021-09-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '5'
20
+ - - "<"
18
21
  - !ruby/object:Gem::Version
19
- version: '5.0'
22
+ version: '7'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - "~>"
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '5'
30
+ - - "<"
25
31
  - !ruby/object:Gem::Version
26
- version: '5.0'
32
+ version: '7'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: capybara
29
35
  requirement: !ruby/object:Gem::Requirement
30
36
  requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '2.1'
34
37
  - - "<"
35
38
  - !ruby/object:Gem::Version
36
- version: '3.0'
39
+ version: '4.0'
37
40
  type: :runtime
38
41
  prerelease: false
39
42
  version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "<"
45
+ - !ruby/object:Gem::Version
46
+ version: '4.0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: colorize
49
+ requirement: !ruby/object:Gem::Requirement
40
50
  requirements:
41
51
  - - ">="
42
52
  - !ruby/object:Gem::Version
43
- version: '2.1'
44
- - - "<"
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
45
59
  - !ruby/object:Gem::Version
46
- version: '3.0'
60
+ version: '0'
47
61
  - !ruby/object:Gem::Dependency
48
62
  name: gli
49
63
  requirement: !ruby/object:Gem::Requirement
@@ -132,6 +146,9 @@ dependencies:
132
146
  name: selenium-webdriver
133
147
  requirement: !ruby/object:Gem::Requirement
134
148
  requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: 3.4.1
135
152
  - - "<"
136
153
  - !ruby/object:Gem::Version
137
154
  version: '4.0'
@@ -139,6 +156,9 @@ dependencies:
139
156
  prerelease: false
140
157
  version_requirements: !ruby/object:Gem::Requirement
141
158
  requirements:
159
+ - - ">="
160
+ - !ruby/object:Gem::Version
161
+ version: 3.4.1
142
162
  - - "<"
143
163
  - !ruby/object:Gem::Version
144
164
  version: '4.0'
@@ -221,35 +241,27 @@ executables:
221
241
  extensions: []
222
242
  extra_rdoc_files: []
223
243
  files:
224
- - ".coveralls.yml"
225
- - ".gitignore"
226
- - ".rspec"
227
- - ".rubocop.yml"
228
- - ".ruby-gemset"
229
- - ".travis.yml"
230
244
  - ".yardopts"
231
245
  - CHANGELOG.md
232
246
  - CONTRIBUTING.md
233
- - Gemfile
234
247
  - LICENSE
235
- - MAINTENANCE.md
236
248
  - README.md
237
- - Rakefile
238
249
  - bin/howitzer
239
- - features/cli_help.feature
240
- - features/cli_new.feature
241
- - features/cli_unknown.feature
242
- - features/cli_update.feature
243
- - features/cli_version.feature
244
- - features/step_definitions/common_steps.rb
245
- - features/support/env.rb
246
- - features/support/transformers.rb
247
250
  - generators/base_generator.rb
248
251
  - generators/config/config_generator.rb
249
252
  - generators/config/templates/boot.rb
250
253
  - generators/config/templates/capybara.rb
251
254
  - generators/config/templates/custom.yml
252
255
  - generators/config/templates/default.yml
256
+ - generators/config/templates/drivers/appium.rb
257
+ - generators/config/templates/drivers/browserstack.rb
258
+ - generators/config/templates/drivers/crossbrowsertesting.rb
259
+ - generators/config/templates/drivers/headless_chrome.rb
260
+ - generators/config/templates/drivers/headless_firefox.rb
261
+ - generators/config/templates/drivers/sauce.rb
262
+ - generators/config/templates/drivers/selenium.rb
263
+ - generators/config/templates/drivers/selenium_grid.rb
264
+ - generators/config/templates/drivers/testingbot.rb
253
265
  - generators/cucumber/cucumber_generator.rb
254
266
  - generators/cucumber/templates/common_steps.rb
255
267
  - generators/cucumber/templates/cucumber.rake
@@ -262,12 +274,10 @@ files:
262
274
  - generators/emails/templates/example_email.rb
263
275
  - generators/prerequisites/prerequisites_generator.rb
264
276
  - generators/prerequisites/templates/base.rb
265
- - generators/prerequisites/templates/factory_girl.rb
277
+ - generators/prerequisites/templates/factory_bot.rb
266
278
  - generators/prerequisites/templates/user.rb
267
279
  - generators/prerequisites/templates/users.rb
268
280
  - generators/root/root_generator.rb
269
- - generators/root/templates/.gitignore
270
- - generators/root/templates/.rubocop.yml
271
281
  - generators/root/templates/Gemfile.erb
272
282
  - generators/root/templates/Rakefile
273
283
  - generators/rspec/rspec_generator.rb
@@ -276,7 +286,6 @@ files:
276
286
  - generators/rspec/templates/spec_helper.rb
277
287
  - generators/tasks/tasks_generator.rb
278
288
  - generators/tasks/templates/common.rake
279
- - generators/turnip/templates/.rspec
280
289
  - generators/turnip/templates/common_steps.rb
281
290
  - generators/turnip/templates/example.feature
282
291
  - generators/turnip/templates/spec_helper.rb
@@ -286,21 +295,31 @@ files:
286
295
  - generators/web/templates/example_page.rb
287
296
  - generators/web/templates/menu_section.rb
288
297
  - generators/web/web_generator.rb
289
- - howitzer.gemspec
290
298
  - lib/howitzer.rb
291
299
  - lib/howitzer/cache.rb
292
300
  - lib/howitzer/capybara_helpers.rb
293
301
  - lib/howitzer/email.rb
294
302
  - lib/howitzer/exceptions.rb
303
+ - lib/howitzer/gmail_api.rb
304
+ - lib/howitzer/gmail_api/client.rb
295
305
  - lib/howitzer/log.rb
296
306
  - lib/howitzer/mail_adapters.rb
297
307
  - lib/howitzer/mail_adapters/abstract.rb
298
- - lib/howitzer/mail_adapters/debugmail.rb
308
+ - lib/howitzer/mail_adapters/gmail.rb
299
309
  - lib/howitzer/mail_adapters/mailgun.rb
310
+ - lib/howitzer/mail_adapters/mailtrap.rb
300
311
  - lib/howitzer/mailgun_api.rb
301
312
  - lib/howitzer/mailgun_api/client.rb
302
313
  - lib/howitzer/mailgun_api/connector.rb
303
314
  - lib/howitzer/mailgun_api/response.rb
315
+ - lib/howitzer/mailtrap_api.rb
316
+ - lib/howitzer/mailtrap_api/client.rb
317
+ - lib/howitzer/meta.rb
318
+ - lib/howitzer/meta/actions.rb
319
+ - lib/howitzer/meta/element.rb
320
+ - lib/howitzer/meta/entry.rb
321
+ - lib/howitzer/meta/iframe.rb
322
+ - lib/howitzer/meta/section.rb
304
323
  - lib/howitzer/tasks/framework.rake
305
324
  - lib/howitzer/utils.rb
306
325
  - lib/howitzer/utils/string_extensions.rb
@@ -317,51 +336,15 @@ files:
317
336
  - lib/howitzer/web/page_validator.rb
318
337
  - lib/howitzer/web/section.rb
319
338
  - lib/howitzer/web/section_dsl.rb
320
- - spec/config/custom.yml
321
- - spec/spec_helper.rb
322
- - spec/support/generator_helper.rb
323
- - spec/support/logger_helper.rb
324
- - spec/support/mailgun_unit_client.rb
325
- - spec/support/shared_examples/capybara_context_holder.rb
326
- - spec/support/shared_examples/capybara_methods_proxy.rb
327
- - spec/support/shared_examples/dynamic_section_methods.rb
328
- - spec/support/shared_examples/element_dsl.rb
329
- - spec/unit/generators/base_generator_spec.rb
330
- - spec/unit/generators/config_generator_spec.rb
331
- - spec/unit/generators/cucumber_generator_spec.rb
332
- - spec/unit/generators/emails_generator_spec.rb
333
- - spec/unit/generators/prerequisites_generator_spec.rb
334
- - spec/unit/generators/root_generator_spec.rb
335
- - spec/unit/generators/rspec_generator_spec.rb
336
- - spec/unit/generators/tasks_generator_spec.rb
337
- - spec/unit/generators/turnip_generator_spec.rb
338
- - spec/unit/generators/web_generator_spec.rb
339
- - spec/unit/lib/cache_spec.rb
340
- - spec/unit/lib/capybara_helpers_spec.rb
341
- - spec/unit/lib/email_spec.rb
342
- - spec/unit/lib/howitzer_spec.rb
343
- - spec/unit/lib/init_spec.rb
344
- - spec/unit/lib/log_spec.rb
345
- - spec/unit/lib/mail_adapters/abstract_spec.rb
346
- - spec/unit/lib/mail_adapters/mailgun_spec.rb
347
- - spec/unit/lib/mailgun_api/client_spec.rb
348
- - spec/unit/lib/mailgun_api/connector_spec.rb
349
- - spec/unit/lib/mailgun_api/response_spec.rb
350
- - spec/unit/lib/utils/string_extensions_spec.rb
351
- - spec/unit/lib/web/base_section_spec.rb
352
- - spec/unit/lib/web/element_dsl_spec.rb
353
- - spec/unit/lib/web/iframe_dsl_spec.rb
354
- - spec/unit/lib/web/page_dsl_spec.rb
355
- - spec/unit/lib/web/page_spec.rb
356
- - spec/unit/lib/web/page_validator_spec.rb
357
- - spec/unit/lib/web/section_dsl_spec.rb
358
- - spec/unit/lib/web/section_spec.rb
359
- - spec/unit/version_spec.rb
360
- homepage: http://strongqa.github.io/howitzer/
339
+ homepage: https://howitzer-framework.io/
361
340
  licenses:
362
341
  - MIT
363
- metadata: {}
364
- post_install_message:
342
+ metadata:
343
+ bug_tracker_uri: https://github.com/strongqa/howitzer/issues
344
+ changelog_uri: https://github.com/strongqa/howitzer/blob/master/CHANGELOG.md
345
+ documentation_uri: https://www.rubydoc.info/gems/howitzer/2.3.0
346
+ source_code_uri: https://github.com/strongqa/howitzer
347
+ post_install_message:
365
348
  rdoc_options: []
366
349
  require_paths:
367
350
  - lib
@@ -369,64 +352,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
369
352
  requirements:
370
353
  - - ">="
371
354
  - !ruby/object:Gem::Version
372
- version: 2.2.2
355
+ version: 2.6.8
373
356
  required_rubygems_version: !ruby/object:Gem::Requirement
374
357
  requirements:
375
358
  - - ">="
376
359
  - !ruby/object:Gem::Version
377
360
  version: '0'
378
361
  requirements: []
379
- rubyforge_project:
380
- rubygems_version: 2.6.8
381
- signing_key:
362
+ rubygems_version: 3.2.22
363
+ signing_key:
382
364
  specification_version: 4
383
365
  summary: Ruby based framework for acceptance testing
384
- test_files:
385
- - features/cli_help.feature
386
- - features/cli_new.feature
387
- - features/cli_unknown.feature
388
- - features/cli_update.feature
389
- - features/cli_version.feature
390
- - features/step_definitions/common_steps.rb
391
- - features/support/env.rb
392
- - features/support/transformers.rb
393
- - spec/config/custom.yml
394
- - spec/spec_helper.rb
395
- - spec/support/generator_helper.rb
396
- - spec/support/logger_helper.rb
397
- - spec/support/mailgun_unit_client.rb
398
- - spec/support/shared_examples/capybara_context_holder.rb
399
- - spec/support/shared_examples/capybara_methods_proxy.rb
400
- - spec/support/shared_examples/dynamic_section_methods.rb
401
- - spec/support/shared_examples/element_dsl.rb
402
- - spec/unit/generators/base_generator_spec.rb
403
- - spec/unit/generators/config_generator_spec.rb
404
- - spec/unit/generators/cucumber_generator_spec.rb
405
- - spec/unit/generators/emails_generator_spec.rb
406
- - spec/unit/generators/prerequisites_generator_spec.rb
407
- - spec/unit/generators/root_generator_spec.rb
408
- - spec/unit/generators/rspec_generator_spec.rb
409
- - spec/unit/generators/tasks_generator_spec.rb
410
- - spec/unit/generators/turnip_generator_spec.rb
411
- - spec/unit/generators/web_generator_spec.rb
412
- - spec/unit/lib/cache_spec.rb
413
- - spec/unit/lib/capybara_helpers_spec.rb
414
- - spec/unit/lib/email_spec.rb
415
- - spec/unit/lib/howitzer_spec.rb
416
- - spec/unit/lib/init_spec.rb
417
- - spec/unit/lib/log_spec.rb
418
- - spec/unit/lib/mail_adapters/abstract_spec.rb
419
- - spec/unit/lib/mail_adapters/mailgun_spec.rb
420
- - spec/unit/lib/mailgun_api/client_spec.rb
421
- - spec/unit/lib/mailgun_api/connector_spec.rb
422
- - spec/unit/lib/mailgun_api/response_spec.rb
423
- - spec/unit/lib/utils/string_extensions_spec.rb
424
- - spec/unit/lib/web/base_section_spec.rb
425
- - spec/unit/lib/web/element_dsl_spec.rb
426
- - spec/unit/lib/web/iframe_dsl_spec.rb
427
- - spec/unit/lib/web/page_dsl_spec.rb
428
- - spec/unit/lib/web/page_spec.rb
429
- - spec/unit/lib/web/page_validator_spec.rb
430
- - spec/unit/lib/web/section_dsl_spec.rb
431
- - spec/unit/lib/web/section_spec.rb
432
- - spec/unit/version_spec.rb
366
+ test_files: []
data/.coveralls.yml DELETED
@@ -1 +0,0 @@
1
- service_name: travis-ci
data/.gitignore DELETED
@@ -1,14 +0,0 @@
1
- coverage
2
- .idea
3
- .rvmrc
4
- *.gem
5
- vendor/bundle/*
6
- spec/log/*
7
- Gemfile.lock
8
- doc
9
- .yardoc
10
- tmp/*
11
- .bundle
12
- **/.DS_Store
13
- .ruby-version
14
- .byebug_history
data/.rspec DELETED
@@ -1,3 +0,0 @@
1
- --color
2
- --require fuubar
3
- --format Fuubar
data/.rubocop.yml DELETED
@@ -1,44 +0,0 @@
1
- # See full list of defaults here: https://github.com/bbatsov/rubocop/blob/master/config/default.yml
2
- # To see all cops used see here: https://github.com/bbatsov/rubocop/blob/master/config/enabled.yml
3
-
4
- AllCops:
5
- TargetRubyVersion: 2.3
6
- DisplayCopNames: true
7
-
8
- LineLength:
9
- Max: 120
10
-
11
- Style/CaseIndentation:
12
- Enabled: false
13
-
14
- Style/EmptyElse:
15
- Enabled: false
16
-
17
- Lint/AmbiguousRegexpLiteral:
18
- Enabled: false
19
-
20
- Lint/AmbiguousBlockAssociation:
21
- Enabled: false
22
-
23
- Style/CaseEquality:
24
- Enabled: false
25
-
26
- MethodLength:
27
- Max: 30
28
-
29
- Style/TrivialAccessors:
30
- AllowDSLWriters: true
31
-
32
- Style/FrozenStringLiteralComment:
33
- Enabled: false
34
-
35
- Metrics/ModuleLength:
36
- Max: 150
37
-
38
- Metrics/BlockLength:
39
- Enabled: false
40
-
41
- Style/MixinGrouping:
42
- EnforcedStyle: separated
43
- Exclude:
44
- - '**/*_steps.rb'
data/.ruby-gemset DELETED
@@ -1 +0,0 @@
1
- howitzer
data/.travis.yml DELETED
@@ -1,7 +0,0 @@
1
- language: ruby
2
- before_install:
3
- - gem install bundler
4
- rvm:
5
- - 2.2.7
6
- - 2.3.4
7
- - 2.4.1
data/Gemfile DELETED
@@ -1,13 +0,0 @@
1
- source 'https://rubygems.org'
2
- # Specify your gem's dependencies in howitzer.gemspec
3
- group :test do
4
- gem 'coveralls', require: false
5
- gem 'repeater', require: false
6
- gem 'rest-client', require: false
7
- gem 'simplecov', require: false
8
- end
9
- gemspec
10
-
11
- group :development do
12
- gem 'rubocop'
13
- end