howitzer 2.0.3 → 2.1.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.
- checksums.yaml +4 -4
- data/.rubocop.yml +8 -2
- data/.travis.yml +3 -3
- data/CHANGELOG.md +27 -11
- data/Gemfile +1 -0
- data/ISSUE_TEMPLATE.md +16 -0
- data/README.md +2 -1
- data/Rakefile +18 -2
- data/bin/howitzer +7 -6
- data/features/cli_help.feature +1 -1
- data/features/cli_new.feature +51 -11
- data/features/cli_update.feature +44 -4
- data/features/cli_version.feature +1 -1
- data/features/step_definitions/common_steps.rb +5 -0
- data/generators/base_generator.rb +30 -16
- data/generators/config/config_generator.rb +13 -3
- data/generators/config/templates/boot.rb +1 -1
- data/generators/config/templates/capybara.rb +2 -128
- data/generators/config/templates/default.yml +20 -3
- data/generators/config/templates/drivers/browserstack.rb +19 -0
- data/generators/config/templates/drivers/crossbrowsertesting.rb +25 -0
- data/generators/config/templates/drivers/headless_chrome.rb +16 -0
- data/generators/config/templates/drivers/phantomjs.rb +20 -0
- data/generators/config/templates/drivers/poltergeist.rb +11 -0
- data/generators/config/templates/drivers/sauce.rb +21 -0
- data/generators/config/templates/drivers/selenium.rb +24 -0
- data/generators/config/templates/drivers/selenium_grid.rb +27 -0
- data/generators/config/templates/drivers/testingbot.rb +20 -0
- data/generators/config/templates/drivers/webkit.rb +6 -0
- data/generators/cucumber/cucumber_generator.rb +2 -2
- data/generators/cucumber/templates/cucumber.rake +0 -8
- data/generators/cucumber/templates/env.rb +1 -1
- data/generators/cucumber/templates/transformers.rb +11 -25
- data/generators/emails/emails_generator.rb +2 -2
- data/generators/emails/templates/example_email.rb +1 -1
- data/generators/prerequisites/prerequisites_generator.rb +3 -3
- data/generators/prerequisites/templates/base.rb +1 -1
- data/generators/prerequisites/templates/{factory_girl.rb → factory_bot.rb} +6 -6
- data/generators/prerequisites/templates/users.rb +1 -1
- data/generators/root/root_generator.rb +2 -2
- data/generators/root/templates/.rubocop.yml +2 -2
- data/generators/root/templates/Gemfile.erb +14 -18
- data/generators/rspec/rspec_generator.rb +2 -2
- data/generators/rspec/templates/spec_helper.rb +1 -1
- data/generators/tasks/tasks_generator.rb +2 -2
- data/generators/turnip/templates/spec_helper.rb +1 -1
- data/generators/turnip/turnip_generator.rb +2 -2
- data/generators/web/web_generator.rb +2 -2
- data/howitzer.gemspec +3 -1
- data/lib/howitzer/capybara_helpers.rb +25 -8
- data/lib/howitzer/gmail_api.rb +7 -0
- data/lib/howitzer/gmail_api/client.rb +22 -0
- data/lib/howitzer/mail_adapters/gmail.rb +93 -0
- data/lib/howitzer/mail_adapters/mailgun.rb +2 -2
- data/lib/howitzer/mail_adapters/mailtrap.rb +105 -0
- data/lib/howitzer/mailtrap_api.rb +7 -0
- data/lib/howitzer/mailtrap_api/client.rb +52 -0
- data/lib/howitzer/version.rb +1 -1
- data/lib/howitzer/web/page.rb +13 -1
- data/lib/howitzer/web/page_dsl.rb +1 -1
- data/spec/config/custom.yml +1 -1
- data/spec/spec_helper.rb +1 -0
- data/spec/unit/generators/base_generator_spec.rb +23 -12
- data/spec/unit/generators/config_generator_spec.rb +27 -6
- data/spec/unit/generators/cucumber_generator_spec.rb +8 -8
- data/spec/unit/generators/emails_generator_spec.rb +2 -2
- data/spec/unit/generators/prerequisites_generator_spec.rb +7 -7
- data/spec/unit/generators/root_generator_spec.rb +25 -22
- data/spec/unit/generators/rspec_generator_spec.rb +4 -4
- data/spec/unit/generators/tasks_generator_spec.rb +2 -2
- data/spec/unit/generators/turnip_generator_spec.rb +7 -7
- data/spec/unit/generators/web_generator_spec.rb +3 -3
- data/spec/unit/lib/capybara_helpers_spec.rb +2 -1
- data/spec/unit/lib/gmail_api/client_spec.rb +26 -0
- data/spec/unit/lib/mail_adapters/gmail_spec.rb +128 -0
- data/spec/unit/lib/mail_adapters/mailgun_spec.rb +13 -18
- data/spec/unit/lib/mail_adapters/mailtrap_spec.rb +130 -0
- data/spec/unit/lib/mailgun_api/client_spec.rb +31 -9
- data/spec/unit/lib/mailtrap_api/client_spec.rb +67 -0
- data/spec/unit/lib/web/page_spec.rb +30 -1
- metadata +63 -8
- data/features/support/transformers.rb +0 -3
- data/spec/support/mailgun_unit_client.rb +0 -68
data/howitzer.gemspec
CHANGED
@@ -20,14 +20,16 @@ Gem::Specification.new do |gem|
|
|
20
20
|
|
21
21
|
gem.add_runtime_dependency 'activesupport', '~>5.0'
|
22
22
|
gem.add_runtime_dependency 'capybara', ['>= 2.1', '< 3.0']
|
23
|
+
gem.add_runtime_dependency 'colorize'
|
23
24
|
gem.add_runtime_dependency 'gli'
|
25
|
+
gem.add_runtime_dependency 'gmail'
|
24
26
|
gem.add_runtime_dependency 'launchy'
|
25
27
|
gem.add_runtime_dependency 'log4r', '~>1.1.10'
|
26
28
|
gem.add_runtime_dependency 'nokogiri', '~> 1.6' if gem.platform.to_s =~ /mswin|mingw/
|
27
29
|
gem.add_runtime_dependency 'rake'
|
28
30
|
gem.add_runtime_dependency 'rspec', '~>3.2'
|
29
31
|
gem.add_runtime_dependency 'rspec-wait'
|
30
|
-
gem.add_runtime_dependency 'selenium-webdriver', '< 4.0'
|
32
|
+
gem.add_runtime_dependency 'selenium-webdriver', ['>= 3.4.1', '< 4.0']
|
31
33
|
gem.add_runtime_dependency 'sexy_settings'
|
32
34
|
|
33
35
|
gem.add_development_dependency('aruba')
|
@@ -5,12 +5,28 @@ module Howitzer
|
|
5
5
|
# This module holds capybara helpers methods
|
6
6
|
module CapybaraHelpers
|
7
7
|
CHECK_YOUR_SETTINGS_MSG = 'Please check your settings'.freeze #:nodoc:
|
8
|
+
HOWITZER_KNOWN_BROWSERS = [ #:nodoc:
|
9
|
+
CLOUD_BROWSERS = [
|
10
|
+
SAUCE = :sauce,
|
11
|
+
TESTINGBOT = :testingbot,
|
12
|
+
BROWSERSTACK = :browserstack,
|
13
|
+
CROSSBROWSERTESTING = :crossbrowsertesting
|
14
|
+
].freeze,
|
15
|
+
LOCAL_BROWSERS = [
|
16
|
+
HEADLESS_CHROME = :headless_chrome,
|
17
|
+
PHANTOMJS = :phantomjs,
|
18
|
+
POLTERGEIST = :poltergeist,
|
19
|
+
SELENIUM = :selenium,
|
20
|
+
SELENIUM_GRID = :selenium_grid,
|
21
|
+
WEBKIT = :webkit
|
22
|
+
].freeze
|
23
|
+
].freeze
|
8
24
|
|
9
25
|
# @return [Boolean] true if current driver related with SauceLab,
|
10
26
|
# Testingbot or Browserstack cloud service
|
11
27
|
|
12
28
|
def cloud_driver?
|
13
|
-
|
29
|
+
CLOUD_BROWSERS.include?(Howitzer.driver.to_sym)
|
14
30
|
end
|
15
31
|
|
16
32
|
# @return [Boolean] whether or not current browser is
|
@@ -35,7 +51,7 @@ module Howitzer
|
|
35
51
|
# @raise [SelBrowserNotSpecifiedError] if selenium driver and missing browser name
|
36
52
|
|
37
53
|
def chrome_browser?
|
38
|
-
browser?
|
54
|
+
browser?(:chrome) || Howitzer.driver == HEADLESS_CHROME.to_s
|
39
55
|
end
|
40
56
|
|
41
57
|
# @return [Boolean] whether or not current browser is Safari.
|
@@ -64,7 +80,7 @@ module Howitzer
|
|
64
80
|
|
65
81
|
def update_cloud_job_status(json_data = {})
|
66
82
|
case Howitzer.driver.to_sym
|
67
|
-
when
|
83
|
+
when SAUCE then update_sauce_job_status(json_data)
|
68
84
|
else
|
69
85
|
'[NOT IMPLEMENTED]'
|
70
86
|
end
|
@@ -102,7 +118,8 @@ module Howitzer
|
|
102
118
|
|
103
119
|
def cloud_driver(app, caps, url)
|
104
120
|
http_client = ::Selenium::WebDriver::Remote::Http::Default.new
|
105
|
-
http_client.
|
121
|
+
http_client.read_timeout = Howitzer.cloud_http_idle_timeout
|
122
|
+
http_client.open_timeout = Howitzer.cloud_http_idle_timeout
|
106
123
|
|
107
124
|
options = {
|
108
125
|
url: url,
|
@@ -121,7 +138,7 @@ module Howitzer
|
|
121
138
|
|
122
139
|
def cloud_resource_path(kind)
|
123
140
|
case Howitzer.driver.to_sym
|
124
|
-
when
|
141
|
+
when SAUCE then sauce_resource_path(kind)
|
125
142
|
else
|
126
143
|
'[NOT IMPLEMENTED]'
|
127
144
|
end
|
@@ -136,7 +153,7 @@ module Howitzer
|
|
136
153
|
|
137
154
|
def cloud_browser?(*browser_aliases)
|
138
155
|
unless Howitzer.cloud_browser_name.nil?
|
139
|
-
return browser_aliases.include?(Howitzer.cloud_browser_name.to_s.to_sym)
|
156
|
+
return browser_aliases.include?(Howitzer.cloud_browser_name.to_s.downcase.to_sym)
|
140
157
|
end
|
141
158
|
raise Howitzer::CloudBrowserNotSpecifiedError, CHECK_YOUR_SETTINGS_MSG
|
142
159
|
end
|
@@ -149,11 +166,11 @@ module Howitzer
|
|
149
166
|
end
|
150
167
|
|
151
168
|
def selenium_driver?
|
152
|
-
Howitzer.driver.to_sym ==
|
169
|
+
Howitzer.driver.to_sym == SELENIUM
|
153
170
|
end
|
154
171
|
|
155
172
|
def selenium_grid_driver?
|
156
|
-
Howitzer.driver.to_sym ==
|
173
|
+
Howitzer.driver.to_sym == SELENIUM_GRID
|
157
174
|
end
|
158
175
|
|
159
176
|
def prefix_name
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'gmail'
|
2
|
+
|
3
|
+
module Howitzer
|
4
|
+
module GmailApi
|
5
|
+
# A GmailApi::Client object is used to communicate with the Gmail API.
|
6
|
+
class Client
|
7
|
+
def initialize
|
8
|
+
@client = Gmail.connect(Howitzer.gmail_login, Howitzer.gmail_password)
|
9
|
+
end
|
10
|
+
|
11
|
+
# Finds message according to given parameters
|
12
|
+
#
|
13
|
+
# @param recipient [String] this is recipient mail address for message filtering
|
14
|
+
# @param subject [String] this is subject of the message to filter particular message
|
15
|
+
# @return [Gmail::Message] gmail message object
|
16
|
+
|
17
|
+
def find_message(recipient, subject)
|
18
|
+
@client.inbox.emails(to: recipient, subject: subject).last
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
require 'howitzer/exceptions'
|
2
|
+
require 'howitzer/mail_adapters/abstract'
|
3
|
+
require 'howitzer/gmail_api/client'
|
4
|
+
|
5
|
+
module Howitzer
|
6
|
+
module MailAdapters
|
7
|
+
# This class represents Gmail mail adapter
|
8
|
+
class Gmail < Abstract
|
9
|
+
# Finds an email in storage
|
10
|
+
# @param recipient [String] an email
|
11
|
+
# @param subject [String]
|
12
|
+
# @param wait [Integer] how much time is required to wait an email
|
13
|
+
# @raise [EmailNotFoundError] if blank message
|
14
|
+
|
15
|
+
def self.find(recipient, subject, wait:)
|
16
|
+
message = {}
|
17
|
+
retryable(find_retry_params(wait)) { message = get_message(recipient, subject) }
|
18
|
+
return new(message) if message.present?
|
19
|
+
raise Howitzer::EmailNotFoundError,
|
20
|
+
"Message with subject '#{subject}' for recipient '#{recipient}' was not found."
|
21
|
+
end
|
22
|
+
|
23
|
+
# @return [String] plain text body of the email message
|
24
|
+
|
25
|
+
def plain_text_body
|
26
|
+
message.body.to_s
|
27
|
+
end
|
28
|
+
|
29
|
+
# @return [String] html body of the email message
|
30
|
+
|
31
|
+
def html_body
|
32
|
+
message.html_part.to_s
|
33
|
+
end
|
34
|
+
|
35
|
+
# @return [String] stripped text
|
36
|
+
|
37
|
+
def text
|
38
|
+
message.text_part.to_s
|
39
|
+
end
|
40
|
+
|
41
|
+
# @return [String] an email address specified in `From` field
|
42
|
+
|
43
|
+
def mail_from
|
44
|
+
"#{message.from[0]['mailbox']}@#{message.from[0]['host']}"
|
45
|
+
end
|
46
|
+
|
47
|
+
# @return [Array] recipient emails
|
48
|
+
|
49
|
+
def recipients
|
50
|
+
message.to.inject([]) { |ar, to| ar << "#{to['mailbox']}@#{to['host']}" }
|
51
|
+
end
|
52
|
+
|
53
|
+
# @return [String] when email was received
|
54
|
+
|
55
|
+
def received_time
|
56
|
+
Time.parse(message.date).strftime('%F %T')
|
57
|
+
end
|
58
|
+
|
59
|
+
# @return [Array] attachments
|
60
|
+
|
61
|
+
def mime_part
|
62
|
+
message.attachments
|
63
|
+
end
|
64
|
+
|
65
|
+
# @raise [NoAttachmentsError] if no attachments present
|
66
|
+
# @return [Array] attachments
|
67
|
+
|
68
|
+
def mime_part!
|
69
|
+
files = mime_part
|
70
|
+
return files if files.present?
|
71
|
+
raise Howitzer::NoAttachmentsError, 'No attachments were found.'
|
72
|
+
end
|
73
|
+
|
74
|
+
def self.get_message(recipient, subject)
|
75
|
+
message = Howitzer::GmailApi::Client.new.find_message(recipient, subject)
|
76
|
+
raise Howitzer::EmailNotFoundError if message.blank?
|
77
|
+
message
|
78
|
+
end
|
79
|
+
private_class_method :get_message
|
80
|
+
|
81
|
+
def self.find_retry_params(wait)
|
82
|
+
{
|
83
|
+
timeout: wait,
|
84
|
+
sleep: Howitzer.mail_sleep_time,
|
85
|
+
silent: true,
|
86
|
+
logger: Howitzer::Log,
|
87
|
+
on: Howitzer::EmailNotFoundError
|
88
|
+
}
|
89
|
+
end
|
90
|
+
private_class_method :find_retry_params
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
@@ -75,7 +75,7 @@ module Howitzer
|
|
75
75
|
def mime_part!
|
76
76
|
files = mime_part
|
77
77
|
return files if files.present?
|
78
|
-
raise Howitzer::NoAttachmentsError, 'No attachments
|
78
|
+
raise Howitzer::NoAttachmentsError, 'No attachments were found.'
|
79
79
|
end
|
80
80
|
|
81
81
|
def self.events
|
@@ -95,7 +95,7 @@ module Howitzer
|
|
95
95
|
def self.find_retry_params(wait)
|
96
96
|
{
|
97
97
|
timeout: wait || Howitzer.try(:mailgun_idle_timeout),
|
98
|
-
sleep: Howitzer.mailgun_sleep_time,
|
98
|
+
sleep: Howitzer.mail_sleep_time || Howitzer.mailgun_sleep_time,
|
99
99
|
silent: true,
|
100
100
|
logger: Howitzer::Log,
|
101
101
|
on: Howitzer::EmailNotFoundError
|
@@ -0,0 +1,105 @@
|
|
1
|
+
require 'howitzer/exceptions'
|
2
|
+
require 'howitzer/mail_adapters/abstract'
|
3
|
+
require 'howitzer/mailtrap_api/client'
|
4
|
+
|
5
|
+
module Howitzer
|
6
|
+
module MailAdapters
|
7
|
+
# This class represents mailtrap mail adapter
|
8
|
+
class Mailtrap < Abstract
|
9
|
+
# Finds an email in storage
|
10
|
+
# @param recipient [String] an email
|
11
|
+
# @param subject [String]
|
12
|
+
# @param wait [Integer] how much time is required to wait an email
|
13
|
+
# @raise [EmailNotFoundError] if blank message
|
14
|
+
|
15
|
+
def self.find(recipient, subject, wait:)
|
16
|
+
message = {}
|
17
|
+
retryable(find_retry_params(wait)) { message = retrieve_message(recipient, subject) }
|
18
|
+
return new(message) if message.present?
|
19
|
+
raise Howitzer::EmailNotFoundError,
|
20
|
+
"Message with subject '#{subject}' for recipient '#{recipient}' was not found."
|
21
|
+
end
|
22
|
+
|
23
|
+
# @return [String] plain text body of the email message
|
24
|
+
|
25
|
+
def plain_text_body
|
26
|
+
message['text_body']
|
27
|
+
end
|
28
|
+
|
29
|
+
# @return [String] html body of the email message
|
30
|
+
|
31
|
+
def html_body
|
32
|
+
message['html_body']
|
33
|
+
end
|
34
|
+
|
35
|
+
# @return [String] stripped text
|
36
|
+
|
37
|
+
def text
|
38
|
+
message['text_body']
|
39
|
+
end
|
40
|
+
|
41
|
+
# @return [String] an email address specified in `From` field
|
42
|
+
|
43
|
+
def mail_from
|
44
|
+
message['from_email']
|
45
|
+
end
|
46
|
+
|
47
|
+
# @return [String] recipient emails separated with `, `
|
48
|
+
|
49
|
+
def recipients
|
50
|
+
message['to_email'].split ', '
|
51
|
+
end
|
52
|
+
|
53
|
+
# @return [String] when email was received
|
54
|
+
|
55
|
+
def received_time
|
56
|
+
Time.parse(message['created_at']).to_s
|
57
|
+
end
|
58
|
+
|
59
|
+
# @return [String] a real sender email address
|
60
|
+
|
61
|
+
def sender_email
|
62
|
+
message['from_email']
|
63
|
+
end
|
64
|
+
|
65
|
+
# @return [Array] attachments
|
66
|
+
|
67
|
+
def mime_part
|
68
|
+
retrieve_attachments(message)
|
69
|
+
end
|
70
|
+
|
71
|
+
# @raise [NoAttachmentsError] if no attachments present
|
72
|
+
# @return [Array] attachments
|
73
|
+
|
74
|
+
def mime_part!
|
75
|
+
files = mime_part
|
76
|
+
return files if files.present?
|
77
|
+
raise Howitzer::NoAttachmentsError, 'No attachments were found.'
|
78
|
+
end
|
79
|
+
|
80
|
+
def self.find_retry_params(wait)
|
81
|
+
{
|
82
|
+
timeout: wait,
|
83
|
+
sleep: Howitzer.mail_sleep_time,
|
84
|
+
silent: true,
|
85
|
+
logger: Howitzer::Log,
|
86
|
+
on: Howitzer::EmailNotFoundError
|
87
|
+
}
|
88
|
+
end
|
89
|
+
private_class_method :find_retry_params
|
90
|
+
|
91
|
+
def self.retrieve_message(recipient, subject)
|
92
|
+
message = Howitzer::MailtrapApi::Client.new.find_message(recipient, subject)
|
93
|
+
raise Howitzer::EmailNotFoundError, 'Message not received yet, retry...' unless message
|
94
|
+
message
|
95
|
+
end
|
96
|
+
private_class_method :retrieve_message
|
97
|
+
|
98
|
+
private
|
99
|
+
|
100
|
+
def retrieve_attachments(message)
|
101
|
+
Howitzer::MailtrapApi::Client.new.find_attachments(message)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'rest-client'
|
3
|
+
|
4
|
+
module Howitzer
|
5
|
+
module MailtrapApi
|
6
|
+
# A Mailtrap::Client object is used to communicate with the Mailtrap API.
|
7
|
+
class Client
|
8
|
+
BASE_URL = "https://mailtrap.io/api/v1/inboxes/#{Howitzer.mailtrap_inbox_id}".freeze #:nodoc:
|
9
|
+
|
10
|
+
def initialize
|
11
|
+
@api_token = Howitzer.mailtrap_api_token
|
12
|
+
end
|
13
|
+
|
14
|
+
# Finds message according to given parameters
|
15
|
+
#
|
16
|
+
# @param recipient [String] this is recipient mail address for message filtering
|
17
|
+
# @param subject [String] this is subject of the message to filter particular message
|
18
|
+
# @return [Hash] json message parsed to ruby hash
|
19
|
+
|
20
|
+
def find_message(recipient, subject)
|
21
|
+
recipient = recipient.gsub('+', '%2B')
|
22
|
+
messages = filter_by_subject(messages(recipient), subject)
|
23
|
+
latest_message(messages)
|
24
|
+
end
|
25
|
+
|
26
|
+
# Finds attachments for message
|
27
|
+
#
|
28
|
+
# @param message [Hash] which attachments should be extracted
|
29
|
+
# @return [Array] returns array of attachments
|
30
|
+
|
31
|
+
def find_attachments(message)
|
32
|
+
JSON.parse(RestClient.get("#{BASE_URL}/messages/#{message['id']}/attachments", 'Api-Token' => @api_token))
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
def messages(recipient)
|
38
|
+
JSON.parse(RestClient.get("#{BASE_URL}/messages?search=#{recipient}", 'Api-Token' => @api_token))
|
39
|
+
end
|
40
|
+
|
41
|
+
def latest_message(messages)
|
42
|
+
messages[0]
|
43
|
+
end
|
44
|
+
|
45
|
+
def filter_by_subject(messages, subject)
|
46
|
+
result_messages = []
|
47
|
+
messages.each { |msg| result_messages << msg if msg['subject'] == subject }
|
48
|
+
result_messages
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
data/lib/howitzer/version.rb
CHANGED
data/lib/howitzer/web/page.rb
CHANGED
@@ -39,6 +39,7 @@ module Howitzer
|
|
39
39
|
|
40
40
|
def self.open(validate: true, url_processor: nil, **params)
|
41
41
|
url = expanded_url(params, url_processor)
|
42
|
+
modify_user_agent if Howitzer.user_agent.present?
|
42
43
|
Howitzer::Log.info "Open #{name} page by '#{url}' url"
|
43
44
|
retryable(tries: 2, logger: Howitzer::Log, trace: true, on: Exception) do |retries|
|
44
45
|
Howitzer::Log.info 'Retry...' unless retries.zero?
|
@@ -147,13 +148,24 @@ module Howitzer
|
|
147
148
|
"Current page matches more that one page class (#{page_list.join(', ')}).\n" \
|
148
149
|
"\tCurrent url: #{current_url}\n\tCurrent title: #{instance.title}"
|
149
150
|
end
|
151
|
+
|
152
|
+
def modify_user_agent
|
153
|
+
driver = Capybara.current_session.driver
|
154
|
+
case Howitzer.driver.to_sym
|
155
|
+
when CapybaraHelpers::POLTERGEIST
|
156
|
+
driver.add_headers('User-Agent' => Howitzer.user_agent)
|
157
|
+
when CapybaraHelpers::WEBKIT
|
158
|
+
driver.header('User-Agent', Howitzer.user_agent)
|
159
|
+
end
|
160
|
+
end
|
150
161
|
end
|
151
162
|
|
152
163
|
site Howitzer.app_uri.site
|
153
164
|
|
154
165
|
def initialize
|
155
166
|
check_validations_are_defined!
|
156
|
-
current_window.maximize if Howitzer.maximized_window &&
|
167
|
+
current_window.maximize if Howitzer.maximized_window &&
|
168
|
+
!%w[chrome headless_chrome].include?(Capybara.current_driver)
|
157
169
|
end
|
158
170
|
|
159
171
|
# Reloads current page in a browser
|