howitzer 2.2.0 → 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 (124) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +16 -1
  3. data/LICENSE +1 -1
  4. data/README.md +16 -16
  5. data/generators/base_generator.rb +1 -1
  6. data/generators/config/config_generator.rb +1 -4
  7. data/generators/config/templates/boot.rb +1 -1
  8. data/generators/config/templates/capybara.rb +1 -3
  9. data/generators/config/templates/default.yml +5 -19
  10. data/generators/config/templates/drivers/browserstack.rb +1 -1
  11. data/generators/config/templates/drivers/crossbrowsertesting.rb +1 -1
  12. data/generators/config/templates/drivers/headless_chrome.rb +1 -1
  13. data/generators/config/templates/drivers/headless_firefox.rb +1 -1
  14. data/generators/config/templates/drivers/sauce.rb +1 -1
  15. data/generators/config/templates/drivers/selenium.rb +1 -1
  16. data/generators/config/templates/drivers/selenium_grid.rb +2 -2
  17. data/generators/config/templates/drivers/testingbot.rb +1 -1
  18. data/generators/cucumber/templates/env.rb +1 -1
  19. data/generators/cucumber/templates/hooks.rb +8 -2
  20. data/generators/cucumber/templates/transformers.rb +1 -1
  21. data/generators/prerequisites/templates/factory_bot.rb +1 -1
  22. data/generators/root/templates/Gemfile.erb +4 -10
  23. data/generators/rspec/templates/spec_helper.rb +4 -4
  24. data/generators/turnip/templates/spec_helper.rb +4 -4
  25. data/generators/web/templates/example_page.rb +1 -1
  26. data/lib/howitzer/cache.rb +1 -1
  27. data/lib/howitzer/capybara_helpers.rb +27 -7
  28. data/lib/howitzer/email.rb +2 -2
  29. data/lib/howitzer/exceptions.rb +21 -21
  30. data/lib/howitzer/gmail_api/client.rb +13 -4
  31. data/lib/howitzer/log.rb +6 -6
  32. data/lib/howitzer/mailgun_api/client.rb +3 -2
  33. data/lib/howitzer/mailgun_api/response.rb +1 -2
  34. data/lib/howitzer/mailtrap_api/client.rb +1 -1
  35. data/lib/howitzer/meta/actions.rb +13 -16
  36. data/lib/howitzer/meta/element.rb +12 -10
  37. data/lib/howitzer/utils/string_extensions.rb +6 -2
  38. data/lib/howitzer/version.rb +1 -1
  39. data/lib/howitzer/web/base_section.rb +1 -1
  40. data/lib/howitzer/web/capybara_methods_proxy.rb +11 -5
  41. data/lib/howitzer/web/element_dsl.rb +104 -45
  42. data/lib/howitzer/web/iframe_dsl.rb +2 -2
  43. data/lib/howitzer/web/page.rb +4 -14
  44. data/lib/howitzer/web/page_dsl.rb +15 -6
  45. data/lib/howitzer/web/page_validator.rb +25 -26
  46. data/lib/howitzer/web/section.rb +5 -2
  47. data/lib/howitzer/web/section_dsl.rb +64 -30
  48. data/lib/howitzer.rb +2 -2
  49. metadata +24 -161
  50. data/.coveralls.yml +0 -1
  51. data/.gitignore +0 -14
  52. data/.rspec +0 -3
  53. data/.rubocop.yml +0 -60
  54. data/.ruby-gemset +0 -1
  55. data/.travis.yml +0 -8
  56. data/Gemfile +0 -14
  57. data/ISSUE_TEMPLATE.md +0 -16
  58. data/MAINTENANCE.md +0 -32
  59. data/Rakefile +0 -38
  60. data/features/cli_help.feature +0 -31
  61. data/features/cli_new.feature +0 -393
  62. data/features/cli_unknown.feature +0 -17
  63. data/features/cli_update.feature +0 -223
  64. data/features/cli_version.feature +0 -14
  65. data/features/step_definitions/common_steps.rb +0 -34
  66. data/features/support/env.rb +0 -1
  67. data/generators/config/templates/drivers/poltergeist.rb +0 -11
  68. data/generators/config/templates/drivers/webkit.rb +0 -6
  69. data/generators/root/templates/.gitignore +0 -21
  70. data/generators/root/templates/.rubocop.yml.erb +0 -56
  71. data/generators/turnip/templates/.rspec +0 -1
  72. data/howitzer.gemspec +0 -39
  73. data/lib/howitzer/mail_adapters/debugmail.rb +0 -0
  74. data/spec/config/custom.yml +0 -9
  75. data/spec/spec_helper.rb +0 -73
  76. data/spec/support/generator_helper.rb +0 -21
  77. data/spec/support/logger_helper.rb +0 -13
  78. data/spec/support/shared_examples/capybara_context_holder.rb +0 -33
  79. data/spec/support/shared_examples/capybara_methods_proxy.rb +0 -94
  80. data/spec/support/shared_examples/dynamic_section_methods.rb +0 -35
  81. data/spec/support/shared_examples/element_dsl.rb +0 -242
  82. data/spec/support/shared_examples/meta_highlight_xpath.rb +0 -41
  83. data/spec/unit/generators/base_generator_spec.rb +0 -283
  84. data/spec/unit/generators/config_generator_spec.rb +0 -61
  85. data/spec/unit/generators/cucumber_generator_spec.rb +0 -62
  86. data/spec/unit/generators/emails_generator_spec.rb +0 -35
  87. data/spec/unit/generators/prerequisites_generator_spec.rb +0 -53
  88. data/spec/unit/generators/root_generator_spec.rb +0 -86
  89. data/spec/unit/generators/rspec_generator_spec.rb +0 -36
  90. data/spec/unit/generators/tasks_generator_spec.rb +0 -31
  91. data/spec/unit/generators/templates/cucumber_spec.rb +0 -97
  92. data/spec/unit/generators/templates/rspec_spec.rb +0 -88
  93. data/spec/unit/generators/templates/turnip_spec.rb +0 -98
  94. data/spec/unit/generators/turnip_generator_spec.rb +0 -52
  95. data/spec/unit/generators/web_generator_spec.rb +0 -52
  96. data/spec/unit/lib/cache_spec.rb +0 -85
  97. data/spec/unit/lib/capybara_helpers_spec.rb +0 -730
  98. data/spec/unit/lib/email_spec.rb +0 -186
  99. data/spec/unit/lib/gmail_api/client_spec.rb +0 -26
  100. data/spec/unit/lib/howitzer_spec.rb +0 -92
  101. data/spec/unit/lib/init_spec.rb +0 -2
  102. data/spec/unit/lib/log_spec.rb +0 -122
  103. data/spec/unit/lib/mail_adapters/abstract_spec.rb +0 -62
  104. data/spec/unit/lib/mail_adapters/gmail_spec.rb +0 -128
  105. data/spec/unit/lib/mail_adapters/mailgun_spec.rb +0 -158
  106. data/spec/unit/lib/mail_adapters/mailtrap_spec.rb +0 -130
  107. data/spec/unit/lib/mailgun_api/client_spec.rb +0 -80
  108. data/spec/unit/lib/mailgun_api/connector_spec.rb +0 -54
  109. data/spec/unit/lib/mailgun_api/response_spec.rb +0 -28
  110. data/spec/unit/lib/mailtrap_api/client_spec.rb +0 -67
  111. data/spec/unit/lib/meta/element_spec.rb +0 -59
  112. data/spec/unit/lib/meta/entry_spec.rb +0 -77
  113. data/spec/unit/lib/meta/iframe_spec.rb +0 -66
  114. data/spec/unit/lib/meta/section_spec.rb +0 -43
  115. data/spec/unit/lib/utils/string_extensions_spec.rb +0 -77
  116. data/spec/unit/lib/web/base_section_spec.rb +0 -43
  117. data/spec/unit/lib/web/element_dsl_spec.rb +0 -31
  118. data/spec/unit/lib/web/iframe_dsl_spec.rb +0 -203
  119. data/spec/unit/lib/web/page_dsl_spec.rb +0 -74
  120. data/spec/unit/lib/web/page_spec.rb +0 -385
  121. data/spec/unit/lib/web/page_validator_spec.rb +0 -276
  122. data/spec/unit/lib/web/section_dsl_spec.rb +0 -165
  123. data/spec/unit/lib/web/section_spec.rb +0 -70
  124. data/spec/unit/version_spec.rb +0 -8
@@ -6,7 +6,7 @@ module Howitzer
6
6
  module PageValidator
7
7
  @validations = {}
8
8
 
9
- def self.included(base) #:nodoc:
9
+ def self.included(base) # :nodoc:
10
10
  base.extend(ClassMethods)
11
11
  end
12
12
 
@@ -28,11 +28,12 @@ module Howitzer
28
28
  # This module holds page validation class methods
29
29
  module ClassMethods
30
30
  # Adds validation to validation list for current page
31
- # @param name [Symbol, String] a validation type. Possible values [:url, :element_presence, :title]
32
- # @param value [Symbol, String, Regexp]
31
+ # @param type [Symbol, String] a validation type. Possible values [:url, :element_presence, :title]
32
+ # @param pattern_or_element_name [Symbol, String, Regexp]
33
33
  # For :url and :title validation types must be <b>Regexp</b>
34
- # For :element_presence must be one of element names described for page
35
- # @param additional_value [Object, nil] any value required to pass for a labmda selector
34
+ # For :element_presence must be one of element names described for the page
35
+ # @param args [Array] any arguments required to pass for a lambda selector (:element_presence type only)
36
+ # @param options [Hash] keyword arguments required to pass for a lambda selector (:element_presence type only)
36
37
  # @raise [Howitzer::UnknownValidationError] if unknown validation type
37
38
  # @raise [Howitzer::UndefinedElementError] if :element_presence validations refers to undefined element name
38
39
  # @example
@@ -45,12 +46,23 @@ module Howitzer
45
46
  # end
46
47
  # @example
47
48
  # class HomePage < Howitzer::Web::Page
48
- # validate :element_presence, :menu_item, 'Logout'
49
- # element :menu_item, :xpath, ->(name) { ".//a[.='#{name}']" }
49
+ # validate :element_presence, :menu_item, lambda_args(text: 'Logout')
50
+ # element :menu_item, :xpath, ->(text:) { ".//a[.='#{text}']" }
50
51
  # end
51
52
 
52
- def validate(name, value, additional_value = nil)
53
- validate_by_type(name, value, additional_value)
53
+ def validate(type, pattern_or_element_name, *args, **options)
54
+ case type.to_s.to_sym
55
+ when :url, :title
56
+ if args.present? || options.present?
57
+ raise ArgumentError, "Additional arguments and options are not supported by '#{type}' the validator"
58
+ end
59
+
60
+ send("validate_by_#{type}", pattern_or_element_name)
61
+ when :element_presence
62
+ validate_by_element_presence(pattern_or_element_name, *args, **options)
63
+ else
64
+ raise Howitzer::UnknownValidationError, "unknown '#{type}' validation type"
65
+ end
54
66
  end
55
67
 
56
68
  # Check whether current page is opened or no
@@ -80,17 +92,17 @@ module Howitzer
80
92
 
81
93
  private
82
94
 
83
- def validate_element(element_name, value = nil)
95
+ def validate_by_element_presence(element_name, *args, **options)
84
96
  validations[:element_presence] =
85
97
  lambda do |web_page, sync|
86
98
  if element_name.present? && !private_method_defined?("#{element_name}_element")
87
99
  raise(Howitzer::UndefinedElementError, ':element_presence validation refers to ' \
88
- "undefined '#{element_name}' element on '#{name}' page.")
100
+ "undefined '#{element_name}' element on '#{name}' page.")
89
101
  end
90
102
  if sync
91
- web_page.instance.public_send(*["has_#{element_name}_element?", value].compact)
103
+ web_page.instance.public_send("has_#{element_name}_element?", *args, **options)
92
104
  else
93
- !web_page.instance.public_send(*["has_no_#{element_name}_element?", value].compact)
105
+ !web_page.instance.public_send("has_no_#{element_name}_element?", *args, **options)
94
106
  end
95
107
  end
96
108
  end
@@ -104,19 +116,6 @@ module Howitzer
104
116
  validations[:title] =
105
117
  ->(web_page, sync) { sync ? web_page.instance.has_title?(pattern) : pattern === web_page.instance.title }
106
118
  end
107
-
108
- def validate_by_type(type, value, additional_value)
109
- case type.to_s.to_sym
110
- when :url
111
- validate_by_url(value)
112
- when :element_presence
113
- validate_element(value, additional_value)
114
- when :title
115
- validate_by_title(value)
116
- else
117
- raise Howitzer::UnknownValidationError, "unknown '#{type}' validation type"
118
- end
119
- end
120
119
  end
121
120
  end
122
121
  end
@@ -17,17 +17,20 @@ module Howitzer
17
17
  # DSL method which specifies section container selector represented by HTML element.
18
18
  # Any elements described in sections will start in this HTML element.
19
19
  # @param args [Array] original Capybara arguments. For details, see `Capybara::Node::Finders#all.
20
+ # @param options [Array] original Capybara options. For details, see `Capybara::Node::Finders#all.
20
21
  # @raise [ArgumentError] if no arguments were passed
21
22
  # @example
22
23
  # class MenuSection < Howitzer::Web::Section
23
- # me :xpath, ".//*[@id='panel']"
24
+ # me :xpath, ".//*[@id='panel']",
24
25
  # end
25
26
  # @!visibility public
26
27
 
27
- def me(*args)
28
+ def me(*args, **options)
28
29
  raise ArgumentError, 'Finder arguments are missing' if args.blank?
29
30
 
30
31
  @default_finder_args = args
32
+ @default_finder_options = options
33
+ self
31
34
  end
32
35
  end
33
36
  end
@@ -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,30 +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?
52
+ return @args if @args.present?
53
53
 
54
- section_class.default_finder_args || raise(ArgumentError, 'Missing finder arguments')
55
- end
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 || {})
56
67
  end
57
68
  end
58
69
 
@@ -75,6 +86,9 @@ module Howitzer
75
86
  # @param args [Array] original Capybara arguments. For details, see `Capybara::Node::Finders#all.
76
87
  # (In most cases should be ommited for named sections because the section selector is specified
77
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)
78
92
  # @param block [Proc] this block can contain nested sections and elements
79
93
  # @example Named section
80
94
  # class MenuSection < Howitzer::Web::Section
@@ -110,37 +124,57 @@ module Howitzer
110
124
  # HomePage.on { info_panel_section.edit_info(title: 'Test Title') }
111
125
  # @!visibility public
112
126
 
113
- def section(name, *args, &block)
114
- scope = SectionScope.new(name, *args, &block)
115
- define_section_method(scope.section_class, name, scope.finder_args)
116
- define_sections_method(scope.section_class, name, scope.finder_args)
117
- define_has_section_method(name, scope.finder_args)
118
- 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)
119
133
  end
120
134
 
121
135
  private
122
136
 
123
- def define_section_method(klass, name, args)
124
- define_method("#{name}_section") do
125
- 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
126
145
  end
127
146
  end
128
147
 
129
- def define_sections_method(klass, name, args)
130
- define_method("#{name}_sections") do
131
- 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
132
156
  end
133
157
  end
134
158
 
135
- def define_has_section_method(name, args)
136
- define_method("has_#{name}_section?") do
137
- 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
138
167
  end
139
168
  end
140
169
 
141
- def define_has_no_section_method(name, args)
142
- define_method("has_no_#{name}_section?") do
143
- 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
144
178
  end
145
179
  end
146
180
  end
data/lib/howitzer.rb CHANGED
@@ -64,8 +64,8 @@ module Howitzer
64
64
  # end
65
65
  # end
66
66
 
67
- def using_session(name)
68
- Capybara.using_session(name) { yield }
67
+ def using_session(name, &block)
68
+ Capybara.using_session(name, &block)
69
69
  end
70
70
 
71
71
  attr_accessor :current_rake_task
metadata CHANGED
@@ -1,29 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: howitzer
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
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: 2019-11-18 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
+ - - ">="
25
28
  - !ruby/object:Gem::Version
26
- version: '5.0'
29
+ version: '5'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '7'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: capybara
29
35
  requirement: !ruby/object:Gem::Requirement
@@ -66,20 +72,6 @@ dependencies:
66
72
  - - ">="
67
73
  - !ruby/object:Gem::Version
68
74
  version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: gmail
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :runtime
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
75
  - !ruby/object:Gem::Dependency
84
76
  name: launchy
85
77
  requirement: !ruby/object:Gem::Requirement
@@ -249,29 +241,12 @@ executables:
249
241
  extensions: []
250
242
  extra_rdoc_files: []
251
243
  files:
252
- - ".coveralls.yml"
253
- - ".gitignore"
254
- - ".rspec"
255
- - ".rubocop.yml"
256
- - ".ruby-gemset"
257
- - ".travis.yml"
258
244
  - ".yardopts"
259
245
  - CHANGELOG.md
260
246
  - CONTRIBUTING.md
261
- - Gemfile
262
- - ISSUE_TEMPLATE.md
263
247
  - LICENSE
264
- - MAINTENANCE.md
265
248
  - README.md
266
- - Rakefile
267
249
  - bin/howitzer
268
- - features/cli_help.feature
269
- - features/cli_new.feature
270
- - features/cli_unknown.feature
271
- - features/cli_update.feature
272
- - features/cli_version.feature
273
- - features/step_definitions/common_steps.rb
274
- - features/support/env.rb
275
250
  - generators/base_generator.rb
276
251
  - generators/config/config_generator.rb
277
252
  - generators/config/templates/boot.rb
@@ -283,12 +258,10 @@ files:
283
258
  - generators/config/templates/drivers/crossbrowsertesting.rb
284
259
  - generators/config/templates/drivers/headless_chrome.rb
285
260
  - generators/config/templates/drivers/headless_firefox.rb
286
- - generators/config/templates/drivers/poltergeist.rb
287
261
  - generators/config/templates/drivers/sauce.rb
288
262
  - generators/config/templates/drivers/selenium.rb
289
263
  - generators/config/templates/drivers/selenium_grid.rb
290
264
  - generators/config/templates/drivers/testingbot.rb
291
- - generators/config/templates/drivers/webkit.rb
292
265
  - generators/cucumber/cucumber_generator.rb
293
266
  - generators/cucumber/templates/common_steps.rb
294
267
  - generators/cucumber/templates/cucumber.rake
@@ -305,8 +278,6 @@ files:
305
278
  - generators/prerequisites/templates/user.rb
306
279
  - generators/prerequisites/templates/users.rb
307
280
  - generators/root/root_generator.rb
308
- - generators/root/templates/.gitignore
309
- - generators/root/templates/.rubocop.yml.erb
310
281
  - generators/root/templates/Gemfile.erb
311
282
  - generators/root/templates/Rakefile
312
283
  - generators/rspec/rspec_generator.rb
@@ -315,7 +286,6 @@ files:
315
286
  - generators/rspec/templates/spec_helper.rb
316
287
  - generators/tasks/tasks_generator.rb
317
288
  - generators/tasks/templates/common.rake
318
- - generators/turnip/templates/.rspec
319
289
  - generators/turnip/templates/common_steps.rb
320
290
  - generators/turnip/templates/example.feature
321
291
  - generators/turnip/templates/spec_helper.rb
@@ -325,7 +295,6 @@ files:
325
295
  - generators/web/templates/example_page.rb
326
296
  - generators/web/templates/menu_section.rb
327
297
  - generators/web/web_generator.rb
328
- - howitzer.gemspec
329
298
  - lib/howitzer.rb
330
299
  - lib/howitzer/cache.rb
331
300
  - lib/howitzer/capybara_helpers.rb
@@ -336,7 +305,6 @@ files:
336
305
  - lib/howitzer/log.rb
337
306
  - lib/howitzer/mail_adapters.rb
338
307
  - lib/howitzer/mail_adapters/abstract.rb
339
- - lib/howitzer/mail_adapters/debugmail.rb
340
308
  - lib/howitzer/mail_adapters/gmail.rb
341
309
  - lib/howitzer/mail_adapters/mailgun.rb
342
310
  - lib/howitzer/mail_adapters/mailtrap.rb
@@ -368,62 +336,15 @@ files:
368
336
  - lib/howitzer/web/page_validator.rb
369
337
  - lib/howitzer/web/section.rb
370
338
  - lib/howitzer/web/section_dsl.rb
371
- - spec/config/custom.yml
372
- - spec/spec_helper.rb
373
- - spec/support/generator_helper.rb
374
- - spec/support/logger_helper.rb
375
- - spec/support/shared_examples/capybara_context_holder.rb
376
- - spec/support/shared_examples/capybara_methods_proxy.rb
377
- - spec/support/shared_examples/dynamic_section_methods.rb
378
- - spec/support/shared_examples/element_dsl.rb
379
- - spec/support/shared_examples/meta_highlight_xpath.rb
380
- - spec/unit/generators/base_generator_spec.rb
381
- - spec/unit/generators/config_generator_spec.rb
382
- - spec/unit/generators/cucumber_generator_spec.rb
383
- - spec/unit/generators/emails_generator_spec.rb
384
- - spec/unit/generators/prerequisites_generator_spec.rb
385
- - spec/unit/generators/root_generator_spec.rb
386
- - spec/unit/generators/rspec_generator_spec.rb
387
- - spec/unit/generators/tasks_generator_spec.rb
388
- - spec/unit/generators/templates/cucumber_spec.rb
389
- - spec/unit/generators/templates/rspec_spec.rb
390
- - spec/unit/generators/templates/turnip_spec.rb
391
- - spec/unit/generators/turnip_generator_spec.rb
392
- - spec/unit/generators/web_generator_spec.rb
393
- - spec/unit/lib/cache_spec.rb
394
- - spec/unit/lib/capybara_helpers_spec.rb
395
- - spec/unit/lib/email_spec.rb
396
- - spec/unit/lib/gmail_api/client_spec.rb
397
- - spec/unit/lib/howitzer_spec.rb
398
- - spec/unit/lib/init_spec.rb
399
- - spec/unit/lib/log_spec.rb
400
- - spec/unit/lib/mail_adapters/abstract_spec.rb
401
- - spec/unit/lib/mail_adapters/gmail_spec.rb
402
- - spec/unit/lib/mail_adapters/mailgun_spec.rb
403
- - spec/unit/lib/mail_adapters/mailtrap_spec.rb
404
- - spec/unit/lib/mailgun_api/client_spec.rb
405
- - spec/unit/lib/mailgun_api/connector_spec.rb
406
- - spec/unit/lib/mailgun_api/response_spec.rb
407
- - spec/unit/lib/mailtrap_api/client_spec.rb
408
- - spec/unit/lib/meta/element_spec.rb
409
- - spec/unit/lib/meta/entry_spec.rb
410
- - spec/unit/lib/meta/iframe_spec.rb
411
- - spec/unit/lib/meta/section_spec.rb
412
- - spec/unit/lib/utils/string_extensions_spec.rb
413
- - spec/unit/lib/web/base_section_spec.rb
414
- - spec/unit/lib/web/element_dsl_spec.rb
415
- - spec/unit/lib/web/iframe_dsl_spec.rb
416
- - spec/unit/lib/web/page_dsl_spec.rb
417
- - spec/unit/lib/web/page_spec.rb
418
- - spec/unit/lib/web/page_validator_spec.rb
419
- - spec/unit/lib/web/section_dsl_spec.rb
420
- - spec/unit/lib/web/section_spec.rb
421
- - spec/unit/version_spec.rb
422
- homepage: http://strongqa.github.io/howitzer/
339
+ homepage: https://howitzer-framework.io/
423
340
  licenses:
424
341
  - MIT
425
- metadata: {}
426
- 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:
427
348
  rdoc_options: []
428
349
  require_paths:
429
350
  - lib
@@ -431,73 +352,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
431
352
  requirements:
432
353
  - - ">="
433
354
  - !ruby/object:Gem::Version
434
- version: '2.3'
355
+ version: 2.6.8
435
356
  required_rubygems_version: !ruby/object:Gem::Requirement
436
357
  requirements:
437
358
  - - ">="
438
359
  - !ruby/object:Gem::Version
439
360
  version: '0'
440
361
  requirements: []
441
- rubygems_version: 3.0.2
442
- signing_key:
362
+ rubygems_version: 3.2.22
363
+ signing_key:
443
364
  specification_version: 4
444
365
  summary: Ruby based framework for acceptance testing
445
- test_files:
446
- - features/cli_help.feature
447
- - features/cli_new.feature
448
- - features/cli_unknown.feature
449
- - features/cli_update.feature
450
- - features/cli_version.feature
451
- - features/step_definitions/common_steps.rb
452
- - features/support/env.rb
453
- - spec/config/custom.yml
454
- - spec/spec_helper.rb
455
- - spec/support/generator_helper.rb
456
- - spec/support/logger_helper.rb
457
- - spec/support/shared_examples/capybara_context_holder.rb
458
- - spec/support/shared_examples/capybara_methods_proxy.rb
459
- - spec/support/shared_examples/dynamic_section_methods.rb
460
- - spec/support/shared_examples/element_dsl.rb
461
- - spec/support/shared_examples/meta_highlight_xpath.rb
462
- - spec/unit/generators/base_generator_spec.rb
463
- - spec/unit/generators/config_generator_spec.rb
464
- - spec/unit/generators/cucumber_generator_spec.rb
465
- - spec/unit/generators/emails_generator_spec.rb
466
- - spec/unit/generators/prerequisites_generator_spec.rb
467
- - spec/unit/generators/root_generator_spec.rb
468
- - spec/unit/generators/rspec_generator_spec.rb
469
- - spec/unit/generators/tasks_generator_spec.rb
470
- - spec/unit/generators/templates/cucumber_spec.rb
471
- - spec/unit/generators/templates/rspec_spec.rb
472
- - spec/unit/generators/templates/turnip_spec.rb
473
- - spec/unit/generators/turnip_generator_spec.rb
474
- - spec/unit/generators/web_generator_spec.rb
475
- - spec/unit/lib/cache_spec.rb
476
- - spec/unit/lib/capybara_helpers_spec.rb
477
- - spec/unit/lib/email_spec.rb
478
- - spec/unit/lib/gmail_api/client_spec.rb
479
- - spec/unit/lib/howitzer_spec.rb
480
- - spec/unit/lib/init_spec.rb
481
- - spec/unit/lib/log_spec.rb
482
- - spec/unit/lib/mail_adapters/abstract_spec.rb
483
- - spec/unit/lib/mail_adapters/gmail_spec.rb
484
- - spec/unit/lib/mail_adapters/mailgun_spec.rb
485
- - spec/unit/lib/mail_adapters/mailtrap_spec.rb
486
- - spec/unit/lib/mailgun_api/client_spec.rb
487
- - spec/unit/lib/mailgun_api/connector_spec.rb
488
- - spec/unit/lib/mailgun_api/response_spec.rb
489
- - spec/unit/lib/mailtrap_api/client_spec.rb
490
- - spec/unit/lib/meta/element_spec.rb
491
- - spec/unit/lib/meta/entry_spec.rb
492
- - spec/unit/lib/meta/iframe_spec.rb
493
- - spec/unit/lib/meta/section_spec.rb
494
- - spec/unit/lib/utils/string_extensions_spec.rb
495
- - spec/unit/lib/web/base_section_spec.rb
496
- - spec/unit/lib/web/element_dsl_spec.rb
497
- - spec/unit/lib/web/iframe_dsl_spec.rb
498
- - spec/unit/lib/web/page_dsl_spec.rb
499
- - spec/unit/lib/web/page_spec.rb
500
- - spec/unit/lib/web/page_validator_spec.rb
501
- - spec/unit/lib/web/section_dsl_spec.rb
502
- - spec/unit/lib/web/section_spec.rb
503
- - 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,60 +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
- Layout/CaseIndentation:
9
- Enabled: false
10
-
11
- Lint/AmbiguousBlockAssociation:
12
- Enabled: false
13
-
14
- Lint/AmbiguousRegexpLiteral:
15
- Enabled: false
16
-
17
- Metrics/BlockLength:
18
- Enabled: false
19
-
20
- Metrics/LineLength:
21
- Max: 120
22
-
23
- Metrics/MethodLength:
24
- Max: 30
25
-
26
- Metrics/ModuleLength:
27
- Max: 150
28
-
29
- Style/CaseEquality:
30
- Enabled: false
31
-
32
- Style/EmptyElse:
33
- Enabled: false
34
-
35
- Style/EvalWithLocation:
36
- Enabled: false
37
-
38
- Style/FormatStringToken:
39
- Enabled: false
40
-
41
- Style/FrozenStringLiteralComment:
42
- Enabled: false
43
-
44
- Style/MixinGrouping:
45
- EnforcedStyle: separated
46
- Exclude:
47
- - '**/*_steps.rb'
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
data/.ruby-gemset DELETED
@@ -1 +0,0 @@
1
- howitzer
data/.travis.yml DELETED
@@ -1,8 +0,0 @@
1
- language: ruby
2
- before_install:
3
- - gem install bundler
4
- rvm:
5
- - 2.3.8
6
- - 2.4.9
7
- - 2.5.7
8
- - 2.6.5