browser 2.3.0 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (122) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +3 -8
  3. data/CHANGELOG.md +9 -0
  4. data/README.md +12 -1
  5. data/Rakefile +1 -1
  6. data/bot_exceptions.yml +2 -0
  7. data/bots.yml +6 -2
  8. data/lib/browser.rb +1 -0
  9. data/lib/browser/accept_language.rb +5 -1
  10. data/lib/browser/action_controller.rb +1 -0
  11. data/lib/browser/aliases.rb +32 -0
  12. data/lib/browser/alipay.rb +1 -0
  13. data/lib/browser/base.rb +37 -31
  14. data/lib/browser/blackberry.rb +1 -0
  15. data/lib/browser/bot.rb +1 -0
  16. data/lib/browser/browser.rb +1 -0
  17. data/lib/browser/chrome.rb +1 -0
  18. data/lib/browser/detect_version.rb +1 -0
  19. data/lib/browser/device.rb +2 -1
  20. data/lib/browser/device/base.rb +1 -0
  21. data/lib/browser/device/blackberry_playbook.rb +1 -0
  22. data/lib/browser/device/ipad.rb +1 -0
  23. data/lib/browser/device/iphone.rb +1 -0
  24. data/lib/browser/device/ipod_touch.rb +1 -0
  25. data/lib/browser/device/kindle.rb +1 -0
  26. data/lib/browser/device/kindle_fire.rb +1 -0
  27. data/lib/browser/device/playstation3.rb +1 -0
  28. data/lib/browser/device/playstation4.rb +1 -0
  29. data/lib/browser/device/psp.rb +1 -0
  30. data/lib/browser/device/psvita.rb +1 -0
  31. data/lib/browser/device/surface.rb +1 -0
  32. data/lib/browser/device/tv.rb +1 -0
  33. data/lib/browser/device/unknown.rb +1 -0
  34. data/lib/browser/device/wii.rb +1 -0
  35. data/lib/browser/device/wiiu.rb +1 -0
  36. data/lib/browser/device/xbox_360.rb +1 -0
  37. data/lib/browser/device/xbox_one.rb +1 -0
  38. data/lib/browser/edge.rb +1 -0
  39. data/lib/browser/firefox.rb +1 -0
  40. data/lib/browser/generic.rb +1 -0
  41. data/lib/browser/internet_explorer.rb +1 -0
  42. data/lib/browser/meta.rb +1 -0
  43. data/lib/browser/meta/base.rb +1 -0
  44. data/lib/browser/meta/device.rb +1 -0
  45. data/lib/browser/meta/generic_browser.rb +1 -0
  46. data/lib/browser/meta/id.rb +1 -0
  47. data/lib/browser/meta/ie.rb +1 -0
  48. data/lib/browser/meta/ios.rb +1 -0
  49. data/lib/browser/meta/mobile.rb +1 -0
  50. data/lib/browser/meta/modern.rb +1 -0
  51. data/lib/browser/meta/platform.rb +1 -0
  52. data/lib/browser/meta/proxy.rb +1 -0
  53. data/lib/browser/meta/safari.rb +1 -0
  54. data/lib/browser/meta/tablet.rb +1 -0
  55. data/lib/browser/meta/webkit.rb +1 -0
  56. data/lib/browser/micro_messenger.rb +1 -0
  57. data/lib/browser/middleware.rb +1 -0
  58. data/lib/browser/middleware/context.rb +1 -0
  59. data/lib/browser/middleware/context/additions.rb +1 -0
  60. data/lib/browser/middleware/context/url_methods.rb +1 -0
  61. data/lib/browser/nokia.rb +1 -0
  62. data/lib/browser/opera.rb +1 -0
  63. data/lib/browser/phantom_js.rb +1 -0
  64. data/lib/browser/platform.rb +5 -4
  65. data/lib/browser/platform/adobe_air.rb +1 -0
  66. data/lib/browser/platform/android.rb +1 -0
  67. data/lib/browser/platform/base.rb +1 -0
  68. data/lib/browser/platform/blackberry.rb +1 -0
  69. data/lib/browser/platform/chrome_os.rb +1 -0
  70. data/lib/browser/platform/firefox_os.rb +1 -0
  71. data/lib/browser/platform/ios.rb +1 -0
  72. data/lib/browser/platform/linux.rb +1 -0
  73. data/lib/browser/platform/mac.rb +1 -0
  74. data/lib/browser/platform/other.rb +1 -0
  75. data/lib/browser/platform/windows.rb +1 -0
  76. data/lib/browser/platform/windows_mobile.rb +1 -0
  77. data/lib/browser/platform/windows_phone.rb +1 -0
  78. data/lib/browser/qq.rb +1 -0
  79. data/lib/browser/rails.rb +1 -0
  80. data/lib/browser/safari.rb +1 -0
  81. data/lib/browser/testing.rb +1 -0
  82. data/lib/browser/uc_browser.rb +1 -0
  83. data/lib/browser/version.rb +2 -1
  84. data/lib/browser/weibo.rb +1 -0
  85. data/test/browser_test.rb +5 -1
  86. data/test/middleware_test.rb +1 -0
  87. data/test/rails_test.rb +1 -0
  88. data/test/sample_app.rb +2 -1
  89. data/test/test_helper.rb +3 -2
  90. data/test/ua.yml +1 -0
  91. data/test/ua_bots.yml +4 -0
  92. data/test/unit/accept_language_test.rb +38 -1
  93. data/test/unit/adobe_air_test.rb +1 -0
  94. data/test/unit/aliases_test.rb +42 -0
  95. data/test/unit/alipay_test.rb +6 -0
  96. data/test/unit/android_test.rb +1 -0
  97. data/test/unit/blackberry_test.rb +1 -0
  98. data/test/unit/bots_test.rb +11 -0
  99. data/test/unit/chrome_test.rb +11 -0
  100. data/test/unit/console_test.rb +1 -0
  101. data/test/unit/device_test.rb +8 -0
  102. data/test/unit/edge_test.rb +60 -0
  103. data/test/unit/firefox_test.rb +6 -0
  104. data/test/unit/generic_test.rb +1 -0
  105. data/test/unit/{ie_test.rb → internet_explorer_test.rb} +1 -50
  106. data/test/unit/ios_app_test.rb +1 -0
  107. data/test/unit/ios_test.rb +1 -0
  108. data/test/unit/kindle_test.rb +1 -0
  109. data/test/unit/meta_test.rb +1 -0
  110. data/test/unit/micro_messenger_test.rb +6 -0
  111. data/test/unit/nokia_test.rb +6 -0
  112. data/test/unit/opera_test.rb +11 -0
  113. data/test/unit/platform_test.rb +3 -0
  114. data/test/unit/proxy_test.rb +1 -0
  115. data/test/unit/qq_test.rb +1 -0
  116. data/test/unit/safari_test.rb +6 -0
  117. data/test/unit/uc_browser_test.rb +6 -0
  118. data/test/unit/weibo_test.rb +7 -1
  119. data/test/unit/windows_phone_test.rb +1 -0
  120. data/test/unit/windows_test.rb +1 -0
  121. metadata +10 -6
  122. data/gemfiles/rails3.gemfile +0 -4
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require "test_helper"
3
4
  require "browser/rails"
4
5
  require "sample_app"
@@ -1,10 +1,11 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require "rails"
3
4
  require "browser"
4
5
 
5
6
  class PagesController < ActionController::Base
6
7
  def home
7
- render text: "#{browser.name}:#{browser.accept_language.first.full}"
8
+ render html: "#{browser.name}:#{browser.accept_language.first.full}"
8
9
  end
9
10
  end
10
11
 
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
- require "codeclimate-test-reporter"
3
- CodeClimate::TestReporter.start
2
+
3
+ require "simplecov"
4
+ SimpleCov.start
4
5
 
5
6
  ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", __FILE__)
6
7
  require "bundler/setup"
@@ -46,6 +46,7 @@ IE9: 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)'
46
46
  IE9_CHROME_FRAME: 'Mozilla/5.0 (Windows NT 6.1; WOW64; chromeframe/26.0.1410.43) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.43 Safari/537.31'
47
47
  IE9_COMPAT: 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/5.0)'
48
48
  IE_WITHOUT_TRIDENT: Mozilla/4.0 (compatible; MSIE8.0; Windows NT 6.0) .NET CLR 2.0.50727)
49
+ IOS3: 'Mozilla/5.0 (iPad; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B314 Safari/531.21.10'
49
50
  IOS4: 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7'
50
51
  IOS5: 'Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3'
51
52
  IOS6: 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25'
@@ -1,4 +1,5 @@
1
1
  ADLXBOT: 'Mozilla/5.0 (compatible; adidxbot/2.0; +http://www.bing.com/bingbot.htm)'
2
+ APIS_GOOGLE: 'APIs-Google; (+https://developers.google.com/webmasters/APIs-Google.html)'
2
3
  APPLE_BOT: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/600.2.5 (KHTML, like Gecko) Version/8.0.2 Safari/600.2.5 (Applebot/0.1)'
3
4
  ASK: 'Mozilla/2.0 (compatible; Ask Jeeves/Teoma; +http://sp.ask.com/docs/about/tech_crawling.html)'
4
5
  AWS_ELB: ELB-HealthChecker/1.0
@@ -27,11 +28,14 @@ MSNBOT: 'msnbot/2.0b (+http://search.msn.com/msnbot.htm)'
27
28
  MSNBOT_MEDIA: 'msnbot-media/1.1 (+http://search.msn.com/msnbot.htm)'
28
29
  NETCRAFT2: Netcraft SSL Server Survey - contact info@netcraft.com
29
30
  NETCRAFT: Mozilla/5.0 (compatible; NetcraftSurveyAgent/1.0; +info@netcraft.com)
31
+ NEWRELICPINGER: NewRelicPinger/1.0 (12345)
30
32
  PRIVACYAWAREBOT: 'Mozilla/5.0 (compatible; PrivacyAwareBot/1.1; +http://www.privacyaware.org)'
33
+ PROXIMIC: 'Mozilla/5.0 (compatible; proximic; +http://www.proximic.com/info/spider.php)'
31
34
  QUERYSEEKER: 'QuerySeekerSpider ( http://queryseeker.com/bot.html )'
32
35
  SCRAPY: 'Scrapy/0.18.4 (+http://scrapy.org)'
33
36
  SEOKICKS: 'Mozilla/5.0 (compatible; SEOkicks-Robot; +http://www.seokicks.de/robot.html)'
34
37
  SISTRIX: 'Mozilla/5.0 (compatible; SISTRIX Crawler; http://crawler.sistrix.net/)'
38
+ SOCIALRANKIO: SocialRankIOBot; http://socialrank.io/about
35
39
  SQUIDER: 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36 Squider/0.01'
36
40
  STRIPE: 'Stripe/1.0 (+https://stripe.com/docs/webhooks)'
37
41
  TINEYE: 'TinEye-bot/0.51 (see http://www.tineye.com/crawler.html)'
@@ -1,10 +1,18 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require "test_helper"
3
4
 
4
5
  class AcceptLanguageTest < Minitest::Test
5
6
  def assert_language(item, expect = {})
6
7
  assert_equal expect[:code], item.code, "failed code comparison"
7
- assert_equal expect[:region], item.region, "failed region comparison"
8
+
9
+ if expect[:region]
10
+ assert_equal expect[:region], item.region, "failed region comparison"
11
+ else
12
+ assert_nil item.region,
13
+ "region should be nil; got #{item.region.inspect} instead"
14
+ end
15
+
8
16
  assert_equal expect[:quality], item.quality, "failed quality comparison"
9
17
  end
10
18
 
@@ -26,6 +34,35 @@ class AcceptLanguageTest < Minitest::Test
26
34
  assert_nil language.name
27
35
  end
28
36
 
37
+ test "returns code" do
38
+ language = Browser::AcceptLanguage.new("en-GB")
39
+ assert_equal "en", language.code
40
+ end
41
+
42
+ test "returns formatted code" do
43
+ %w[EN-GB En-GB eN-GB].each do |locale|
44
+ language = Browser::AcceptLanguage.new(locale)
45
+ assert_equal "en", language.code
46
+ end
47
+ end
48
+
49
+ test "returns region" do
50
+ language = Browser::AcceptLanguage.new("en-GB")
51
+ assert_equal "GB", language.region
52
+ end
53
+
54
+ test "returns formatted region" do
55
+ %w[en-gb en-Gb en-gB].each do |locale|
56
+ language = Browser::AcceptLanguage.new(locale)
57
+ assert_equal "GB", language.region
58
+ end
59
+ end
60
+
61
+ test "returns nil for language without region" do
62
+ language = Browser::AcceptLanguage.new("en")
63
+ assert_nil language.region
64
+ end
65
+
29
66
  test "parses language with quality" do
30
67
  language = Browser::AcceptLanguage.new("en-GB;q=0.8")
31
68
  assert_language language, code: "en", region: "GB", quality: 0.8
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require "test_helper"
3
4
 
4
5
  class AdobeAirTest < Minitest::Test
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "test_helper"
4
+ require "browser/aliases"
5
+
6
+ class AliasesTest < Minitest::Test
7
+ class BrowserMock
8
+ include Browser::Aliases
9
+
10
+ def platform
11
+ @platform ||= Object.new
12
+ end
13
+
14
+ def device
15
+ @device ||= Object.new
16
+ end
17
+ end
18
+
19
+ Browser::Aliases::PLATFORM_ALIASES.each do |method_name|
20
+ test "adds #{method_name.inspect} as a platform alias" do
21
+ browser = BrowserMock.new
22
+
23
+ browser.platform.define_singleton_method(method_name) do
24
+ :called
25
+ end
26
+
27
+ assert_equal :called, browser.public_send(method_name)
28
+ end
29
+ end
30
+
31
+ Browser::Aliases::DEVICE_ALIASES.each do |method_name|
32
+ test "adds #{method_name.inspect} as a device alias" do
33
+ browser = BrowserMock.new
34
+
35
+ browser.device.define_singleton_method(method_name) do
36
+ :called
37
+ end
38
+
39
+ assert_equal :called, browser.public_send(method_name)
40
+ end
41
+ end
42
+ end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require "test_helper"
3
4
 
4
5
  class AlipayTest < Minitest::Test
@@ -19,4 +20,9 @@ class AlipayTest < Minitest::Test
19
20
  assert_equal "Alipay", browser.name
20
21
  assert_equal "9.0.1.073001", browser.full_version
21
22
  end
23
+
24
+ test "detects version by range" do
25
+ browser = Browser.new(Browser["ALIPAY_IOS"])
26
+ assert browser.alipay?(%w[>=2 <3])
27
+ end
22
28
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require "test_helper"
3
4
 
4
5
  class AndroidTest < Minitest::Test
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require "test_helper"
3
4
 
4
5
  class BlackberryTest < Minitest::Test
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require "test_helper"
3
4
 
4
5
  class BotsTest < Minitest::Test
@@ -87,4 +88,14 @@ class BotsTest < Minitest::Test
87
88
  assert browser.platform.android?
88
89
  refute browser.bot?
89
90
  end
91
+
92
+ test "extends list in runtime" do
93
+ browser = Browser.new("Faraday/0.9.2")
94
+ refute browser.bot?
95
+
96
+ Browser::Bot.bots["faraday"] = "Faraday"
97
+ assert browser.bot?
98
+
99
+ Browser::Bot.bots.delete("faraday")
100
+ end
90
101
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require "test_helper"
3
4
 
4
5
  class ChromeTest < Minitest::Test
@@ -55,6 +56,11 @@ class ChromeTest < Minitest::Test
55
56
  assert_equal "41", browser.version
56
57
  end
57
58
 
59
+ test "detects yandex version by range" do
60
+ browser = Browser.new(Browser["YANDEX_BROWSER"])
61
+ assert browser.yandex?(%w[>=41 <42])
62
+ end
63
+
58
64
  test "detects chrome frame" do
59
65
  browser = Browser.new(Browser["IE9_CHROME_FRAME"])
60
66
 
@@ -64,4 +70,9 @@ class ChromeTest < Minitest::Test
64
70
  assert_equal "26.0.1410.43", browser.full_version
65
71
  assert_equal "26", browser.version
66
72
  end
73
+
74
+ test "detects version by range" do
75
+ browser = Browser.new(Browser["CHROME"])
76
+ assert browser.chrome?(%w[>=5 <6])
77
+ end
67
78
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require "test_helper"
3
4
 
4
5
  class ConsoleTest < Minitest::Test
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require "test_helper"
3
4
 
4
5
  class DeviceTest < Minitest::Test
@@ -36,6 +37,13 @@ class DeviceTest < Minitest::Test
36
37
  assert_equal "iPad", device.name
37
38
  end
38
39
 
40
+ test "detect old ipad" do
41
+ device = Browser::Device.new(Browser["IOS3"])
42
+ assert device.ipad?
43
+ assert_equal :ipad, device.id
44
+ assert_equal "iPad", device.name
45
+ end
46
+
39
47
  test "detect ipod" do
40
48
  device = Browser::Device.new(Browser["IPOD"])
41
49
  assert device.ipod_touch?
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "test_helper"
4
+
5
+ class EdgeTest < ActionController::TestCase
6
+ test "detects Microsoft Edge" do
7
+ browser = Browser.new(Browser["MS_EDGE"])
8
+
9
+ assert_equal :edge, browser.id
10
+ assert_equal "Microsoft Edge", browser.name
11
+ assert_equal "12.0", browser.full_version
12
+ assert_equal "12", browser.version
13
+ assert browser.platform.windows10?
14
+ assert browser.edge?
15
+ assert browser.modern?
16
+ refute browser.webkit?
17
+ refute browser.chrome?
18
+ refute browser.safari?
19
+ refute browser.device.mobile?
20
+ end
21
+
22
+ test "detects Microsoft Edge in compatibility view" do
23
+ browser = Browser.new(Browser["MS_EDGE_COMPAT"])
24
+
25
+ assert_equal :edge, browser.id
26
+ assert_equal "Microsoft Edge", browser.name
27
+ assert_equal "12.0", browser.full_version
28
+ assert_equal "12", browser.version
29
+ assert_equal "7.0", browser.msie_full_version
30
+ assert_equal "7", browser.msie_version
31
+ assert browser.edge?
32
+ assert browser.compatibility_view?
33
+ refute browser.modern?
34
+ refute browser.webkit?
35
+ refute browser.chrome?
36
+ refute browser.safari?
37
+ refute browser.device.mobile?
38
+ end
39
+
40
+ test "detects Microsoft Edge Mobile" do
41
+ browser = Browser.new(Browser["MS_EDGE_MOBILE"])
42
+
43
+ assert_equal :edge, browser.id
44
+ assert_equal "Microsoft Edge", browser.name
45
+ assert_equal "12.0", browser.full_version
46
+ assert_equal "12", browser.version
47
+ refute browser.platform.windows10?
48
+ assert browser.platform.windows_phone?
49
+ assert browser.edge?
50
+ assert browser.modern?
51
+ refute browser.webkit?
52
+ refute browser.chrome?
53
+ refute browser.safari?
54
+ end
55
+
56
+ test "detects version by range" do
57
+ browser = Browser.new(Browser["MS_EDGE"])
58
+ assert browser.edge?(%w[>=12 <13])
59
+ end
60
+ end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require "test_helper"
3
4
 
4
5
  class FirefoxTest < Minitest::Test
@@ -44,4 +45,9 @@ class FirefoxTest < Minitest::Test
44
45
  assert_equal "14.0", browser.full_version
45
46
  assert_equal "14", browser.version
46
47
  end
48
+
49
+ test "detects version by range" do
50
+ browser = Browser.new(Browser["FIREFOX"])
51
+ assert browser.firefox?(%w[>=3 <4])
52
+ end
47
53
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require "test_helper"
3
4
 
4
5
  class GenericTest < Minitest::Test
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require "test_helper"
3
4
 
4
5
  class IeTest < Minitest::Test
@@ -153,56 +154,6 @@ class IeTest < Minitest::Test
153
154
  assert_equal "11", browser.version
154
155
  end
155
156
 
156
- test "detects Microsoft Edge" do
157
- browser = Browser.new(Browser["MS_EDGE"])
158
-
159
- assert_equal :edge, browser.id
160
- assert_equal "Microsoft Edge", browser.name
161
- assert_equal "12.0", browser.full_version
162
- assert_equal "12", browser.version
163
- assert browser.platform.windows10?
164
- assert browser.edge?
165
- assert browser.modern?
166
- refute browser.webkit?
167
- refute browser.chrome?
168
- refute browser.safari?
169
- refute browser.device.mobile?
170
- end
171
-
172
- test "detects Microsoft Edge in compatibility view" do
173
- browser = Browser.new(Browser["MS_EDGE_COMPAT"])
174
-
175
- assert_equal :edge, browser.id
176
- assert_equal "Microsoft Edge", browser.name
177
- assert_equal "12.0", browser.full_version
178
- assert_equal "12", browser.version
179
- assert_equal "7.0", browser.msie_full_version
180
- assert_equal "7", browser.msie_version
181
- assert browser.edge?
182
- assert browser.compatibility_view?
183
- refute browser.modern?
184
- refute browser.webkit?
185
- refute browser.chrome?
186
- refute browser.safari?
187
- refute browser.device.mobile?
188
- end
189
-
190
- test "detects Microsoft Edge Mobile" do
191
- browser = Browser.new(Browser["MS_EDGE_MOBILE"])
192
-
193
- assert_equal :edge, browser.id
194
- assert_equal "Microsoft Edge", browser.name
195
- assert_equal "12.0", browser.full_version
196
- assert_equal "12", browser.version
197
- refute browser.platform.windows10?
198
- assert browser.platform.windows_phone?
199
- assert browser.edge?
200
- assert browser.modern?
201
- refute browser.webkit?
202
- refute browser.chrome?
203
- refute browser.safari?
204
- end
205
-
206
157
  test "detects IE without Trident" do
207
158
  browser = Browser.new(Browser["IE_WITHOUT_TRIDENT"])
208
159
 
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require "test_helper"
3
4
 
4
5
  class IosAppTest < Minitest::Test
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require "test_helper"
3
4
 
4
5
  class IosTest < Minitest::Test
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require "test_helper"
3
4
 
4
5
  class KindleTest < Minitest::Test
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require "test_helper"
3
4
 
4
5
  class MetaTest < Minitest::Test