howitzer 2.0.3 → 2.3.0

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