browser 5.3.1 → 6.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/{FUNDING.yml → .github/FUNDING.yml} +2 -1
- data/.github/workflows/{tests.yml → ruby-tests.yml} +17 -17
- data/.rubocop.yml +3 -23
- data/CHANGELOG.md +6 -0
- data/LICENSE.md +20 -0
- data/README.md +10 -3
- data/browser.gemspec +4 -5
- data/gemfiles/{rails6_0.gemfile → 7_0.gemfile} +1 -1
- data/gemfiles/{rails6_1.gemfile → 7_1.gemfile} +1 -1
- data/lib/browser/accept_language.rb +1 -1
- data/lib/browser/base.rb +34 -29
- data/lib/browser/browser.rb +4 -3
- data/lib/browser/chrome.rb +4 -0
- data/lib/browser/device.rb +9 -9
- data/lib/browser/edge.rb +1 -1
- data/lib/browser/meta/base.rb +1 -1
- data/lib/browser/platform.rb +1 -1
- data/lib/browser/testing.rb +3 -3
- data/lib/browser/version.rb +1 -1
- data/lib/browser.rb +1 -1
- data/search_engines.yml +1 -0
- data/test/browser_test.rb +3 -3
- data/test/rails_test.rb +1 -1
- data/test/test_helper.rb +4 -2
- data/test/ua.yml +5 -0
- data/test/unit/accept_language_test.rb +1 -1
- data/test/unit/android_app_test.rb +3 -3
- data/test/unit/android_test.rb +17 -17
- data/test/unit/blackberry_test.rb +1 -1
- data/test/unit/bots_test.rb +15 -4
- data/test/unit/chrome_test.rb +1 -0
- data/test/unit/device_test.rb +25 -25
- data/test/unit/edge_test.rb +6 -0
- data/test/unit/electron_test.rb +1 -1
- data/test/unit/facebook_test.rb +3 -3
- data/test/unit/generic_test.rb +3 -3
- data/test/unit/instagram_test.rb +2 -2
- data/test/unit/internet_explorer_test.rb +18 -18
- data/test/unit/ios_app_test.rb +3 -3
- data/test/unit/ios_test.rb +12 -12
- data/test/unit/kindle_test.rb +15 -0
- data/test/unit/meta_test.rb +13 -13
- data/test/unit/platform_test.rb +33 -25
- data/test/unit/proxy_test.rb +2 -2
- data/test/unit/safari_test.rb +14 -9
- data/test/unit/snapchat_test.rb +3 -3
- data/test/unit/uc_browser_test.rb +1 -1
- data/test/unit/windows_test.rb +11 -11
- metadata +12 -77
data/test/test_helper.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "simplecov"
|
4
|
-
SimpleCov.start
|
4
|
+
SimpleCov.start do
|
5
|
+
add_filter %r{/test/}
|
6
|
+
end
|
5
7
|
|
6
8
|
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__)
|
7
9
|
require "bundler/setup"
|
@@ -14,7 +16,7 @@ require "yaml"
|
|
14
16
|
module Minitest
|
15
17
|
class Test
|
16
18
|
setup do
|
17
|
-
Browser::Bot.instance_variable_set(
|
19
|
+
Browser::Bot.instance_variable_set(:@detect_empty_ua, false)
|
18
20
|
end
|
19
21
|
|
20
22
|
def assert_deprecated(message, file, line, &block)
|
data/test/ua.yml
CHANGED
@@ -83,6 +83,11 @@ KINDLE: "Mozilla/5.0 (Linux; U; en-US) AppleWebKit/528.5+ (KHTML, like Gecko, Sa
|
|
83
83
|
KINDLE_FIRE: "Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Kindle Fire Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"
|
84
84
|
KINDLE_FIRE_HD: "Mozilla/5.0 (Linux; U; en-us; KFTT Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.4 Safari/535.19 Silk-Accelerated=true"
|
85
85
|
KINDLE_FIRE_HD_MOBILE: "Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; KFTT Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.4 Mobile Safari/535.19 Silk-Accelerated=true"
|
86
|
+
KINDLE_SILK_TABLET: Mozilla/5.0 (Linux; Android 4.4.3; KFTHWI Build/KTU84M) AppleWebKit/537.36 (KHTML, like Gecko) Silk/44.1.54 like Chrome/44.0.2403.63 Safari/537.36
|
87
|
+
KINDLE_SILK_DESKTOP: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Silk/44.1.54 like Chrome/44.0.2403.63 Safari/537.36
|
88
|
+
KINDLE_SILK_MOBILE: Mozilla/5.0 (Linux; U; Android 4.4.3; KFTHWI Build/KTU84M) AppleWebKit/537.36 (KHTML, like Gecko) Silk/44.1.54 like Chrome/44.0.2403.63 Mobile Safari/537.36
|
89
|
+
KINDLE_SILK_TABLET_1ST_GEN: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/1.0.13.81_10003810) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Silk-Accelerated=true
|
90
|
+
KINDLE_SILK_MOBILE_1ST_GEN: Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Silk/1.0.13.81_10003810) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 Silk-Accelerated=true
|
86
91
|
LUMIA800: "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; XBLWP7; ZuneWP7"
|
87
92
|
MAC_OS: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Safari/605.1.15"
|
88
93
|
MAC_OSX: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/601.3.9 (KHTML, like Gecko) Version/9.0.2 Safari/601.3.9"
|
@@ -161,6 +161,6 @@ class AcceptLanguageTest < Minitest::Test
|
|
161
161
|
test "sets default quality value for invalid strings" do
|
162
162
|
result = Browser::AcceptLanguage.parse(";q=0.0.0.0")
|
163
163
|
|
164
|
-
assert_equal 0.1, result[0].quality
|
164
|
+
assert_equal 0.1, result[0].quality # rubocop:disable Minitest/AssertInDelta
|
165
165
|
end
|
166
166
|
end
|
@@ -5,15 +5,15 @@ require "test_helper"
|
|
5
5
|
class AndroidAppTest < Minitest::Test
|
6
6
|
let(:browser) { Browser.new(Browser["ANDROID_WEBVIEW"]) }
|
7
7
|
|
8
|
-
test "
|
8
|
+
test "detects as android" do
|
9
9
|
assert browser.platform.android?
|
10
10
|
end
|
11
11
|
|
12
|
-
test "
|
12
|
+
test "detects as webview" do
|
13
13
|
assert browser.platform.android_webview?
|
14
14
|
end
|
15
15
|
|
16
|
-
test "
|
16
|
+
test "does not detect non-webviews as webview" do
|
17
17
|
%w[
|
18
18
|
ANDROID_CUPCAKE
|
19
19
|
ANDROID_DONUT
|
data/test/unit/android_test.rb
CHANGED
@@ -3,102 +3,102 @@
|
|
3
3
|
require "test_helper"
|
4
4
|
|
5
5
|
class AndroidTest < Minitest::Test
|
6
|
-
test "
|
6
|
+
test "detects android cupcake (1.5)" do
|
7
7
|
browser = Browser.new(Browser["ANDROID_CUPCAKE"])
|
8
8
|
assert browser.platform.android?
|
9
9
|
assert browser.platform.android?(1.5)
|
10
10
|
end
|
11
11
|
|
12
|
-
test "
|
12
|
+
test "detects android donut (1.6)" do
|
13
13
|
browser = Browser.new(Browser["ANDROID_DONUT"])
|
14
14
|
assert browser.platform.android?
|
15
15
|
assert browser.platform.android?(1.6)
|
16
16
|
end
|
17
17
|
|
18
|
-
test "
|
18
|
+
test "detects android eclair (2.1)" do
|
19
19
|
browser = Browser.new(Browser["ANDROID_ECLAIR_21"])
|
20
20
|
assert browser.platform.android?
|
21
21
|
assert browser.platform.android?(2.1)
|
22
22
|
end
|
23
23
|
|
24
|
-
test "
|
24
|
+
test "detects android froyo (2.2)" do
|
25
25
|
browser = Browser.new(Browser["ANDROID_FROYO"])
|
26
26
|
assert browser.platform.android?
|
27
27
|
assert browser.platform.android?(2.2)
|
28
28
|
end
|
29
29
|
|
30
|
-
test "
|
30
|
+
test "detects android gingerbread (2.3)" do
|
31
31
|
browser = Browser.new(Browser["ANDROID_GINGERBREAD"])
|
32
32
|
assert browser.platform.android?
|
33
33
|
assert browser.platform.android?("~> 2.3.0")
|
34
34
|
end
|
35
35
|
|
36
|
-
test "
|
36
|
+
test "detects android honeycomb (3.0)" do
|
37
37
|
browser = Browser.new(Browser["ANDROID_HONEYCOMB_30"])
|
38
38
|
assert browser.platform.android?
|
39
39
|
assert browser.platform.android?("~> 3.0")
|
40
40
|
end
|
41
41
|
|
42
|
-
test "
|
42
|
+
test "detects android ice cream sandwich (4.0)" do
|
43
43
|
browser = Browser.new(Browser["ANDROID_ICECREAM"])
|
44
44
|
assert browser.platform.android?
|
45
45
|
assert browser.platform.android?("~> 4.0")
|
46
46
|
end
|
47
47
|
|
48
|
-
test "
|
48
|
+
test "detects android jellybean (4.1)" do
|
49
49
|
browser = Browser.new(Browser["ANDROID_JELLYBEAN_41"])
|
50
50
|
assert browser.platform.android?
|
51
51
|
assert browser.platform.android?("~> 4.1")
|
52
52
|
end
|
53
53
|
|
54
|
-
test "
|
54
|
+
test "detects android jellybean (4.2)" do
|
55
55
|
browser = Browser.new(Browser["ANDROID_JELLYBEAN_42"])
|
56
56
|
assert browser.platform.android?
|
57
57
|
assert browser.platform.android?(4.2)
|
58
58
|
end
|
59
59
|
|
60
|
-
test "
|
60
|
+
test "detects android jellybean (4.3)" do
|
61
61
|
browser = Browser.new(Browser["ANDROID_JELLYBEAN_43"])
|
62
62
|
assert browser.platform.android?
|
63
63
|
assert browser.platform.android?(4.3)
|
64
64
|
end
|
65
65
|
|
66
|
-
test "
|
66
|
+
test "detects android kitkat (4.4)" do
|
67
67
|
browser = Browser.new(Browser["ANDROID_KITKAT"])
|
68
68
|
assert browser.platform.android?
|
69
69
|
assert browser.platform.android?(4.4)
|
70
70
|
end
|
71
71
|
|
72
|
-
test "
|
72
|
+
test "detects android lollipop (5.0)" do
|
73
73
|
browser = Browser.new(Browser["ANDROID_LOLLIPOP_50"])
|
74
74
|
assert browser.platform.android?
|
75
75
|
assert browser.platform.android?(5.0)
|
76
76
|
end
|
77
77
|
|
78
|
-
test "
|
78
|
+
test "detects android lollipop (5.1)" do
|
79
79
|
browser = Browser.new(Browser["ANDROID_LOLLIPOP_51"])
|
80
80
|
assert browser.platform.android?
|
81
81
|
assert browser.platform.android?(5.1)
|
82
82
|
end
|
83
83
|
|
84
|
-
test "
|
84
|
+
test "detects android oreo (8.0)" do
|
85
85
|
browser = Browser.new(Browser["ANDROID_OREO"])
|
86
86
|
assert browser.platform.android?
|
87
87
|
assert browser.platform.android?(8.0)
|
88
88
|
end
|
89
89
|
|
90
|
-
test "
|
90
|
+
test "detects android tv" do
|
91
91
|
browser = Browser.new(Browser["ANDROID_TV"])
|
92
92
|
assert browser.platform.android?
|
93
93
|
assert browser.device.tv?
|
94
94
|
end
|
95
95
|
|
96
|
-
test "
|
96
|
+
test "detects nexus player" do
|
97
97
|
browser = Browser.new(Browser["ANDROID_NEXUS_PLAYER"])
|
98
98
|
assert browser.platform.android?
|
99
99
|
end
|
100
100
|
|
101
|
-
test "
|
101
|
+
test "detects firefox for android without android version" do
|
102
102
|
browser = Browser.new(Browser["FIREFOX_ANDROID"])
|
103
103
|
|
104
104
|
assert browser.platform.android?
|
@@ -72,7 +72,7 @@ class BlackberryTest < Minitest::Test
|
|
72
72
|
assert_equal "7", browser.version
|
73
73
|
end
|
74
74
|
|
75
|
-
test "
|
75
|
+
test "does not detect as two different versions" do
|
76
76
|
browser = Browser.new(Browser["BLACKBERRY10"])
|
77
77
|
assert browser.platform.blackberry?("~> 10.0")
|
78
78
|
refute browser.platform.blackberry?("~> 7.0")
|
data/test/unit/bots_test.rb
CHANGED
@@ -4,13 +4,13 @@ require "test_helper"
|
|
4
4
|
|
5
5
|
class BotsTest < Minitest::Test
|
6
6
|
Browser.bot_user_agents.each do |key, ua|
|
7
|
-
test "
|
7
|
+
test "detects #{key} as bot" do
|
8
8
|
browser = Browser.new(ua)
|
9
9
|
assert browser.bot?
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
|
-
test "
|
13
|
+
test "does not detect as bot" do
|
14
14
|
browser = Browser.new(Browser["CHROME"])
|
15
15
|
refute browser.bot?
|
16
16
|
end
|
@@ -55,7 +55,7 @@ class BotsTest < Minitest::Test
|
|
55
55
|
refute browser.safari?
|
56
56
|
end
|
57
57
|
|
58
|
-
test "custom android user agent (#144)" do
|
58
|
+
test "handles custom android user agent (#144)" do
|
59
59
|
browser = Browser.new(Browser["CUSTOM_APP"])
|
60
60
|
|
61
61
|
assert browser.platform.android?
|
@@ -86,7 +86,7 @@ class BotsTest < Minitest::Test
|
|
86
86
|
end
|
87
87
|
|
88
88
|
test "adds custom bot matcher" do
|
89
|
-
Browser::Bot.matchers << ->(ua, _) { ua.
|
89
|
+
Browser::Bot.matchers << ->(ua, _) { ua.include?("some-script") }
|
90
90
|
browser = Browser.new("some-script")
|
91
91
|
|
92
92
|
assert browser.bot?
|
@@ -108,4 +108,15 @@ class BotsTest < Minitest::Test
|
|
108
108
|
assert_equal Browser::Bot::KeywordMatcher, browser.bot.why?
|
109
109
|
end
|
110
110
|
end
|
111
|
+
|
112
|
+
test "extends lists" do
|
113
|
+
Browser::Bot.bots["another-bot"] = "Another bot"
|
114
|
+
Browser::Bot.bot_exceptions.push("exclude-this-bot")
|
115
|
+
Browser::Bot.search_engines["new-search-engine"] = "New search engine"
|
116
|
+
|
117
|
+
assert_equal "Another bot", Browser::Bot.bots["another-bot"]
|
118
|
+
assert_includes Browser::Bot.bot_exceptions, "exclude-this-bot"
|
119
|
+
assert_equal "New search engine",
|
120
|
+
Browser::Bot.search_engines["new-search-engine"]
|
121
|
+
end
|
111
122
|
end
|
data/test/unit/chrome_test.rb
CHANGED
data/test/unit/device_test.rb
CHANGED
@@ -13,7 +13,7 @@ class DeviceTest < Minitest::Test
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
-
test "
|
16
|
+
test "extends matchers" do
|
17
17
|
Browser::Device.matchers.unshift(CustomDevice)
|
18
18
|
device = Browser::Device.new("Custom")
|
19
19
|
assert_equal :custom, device.id
|
@@ -23,28 +23,28 @@ class DeviceTest < Minitest::Test
|
|
23
23
|
assert_equal :unknown_device, device.id
|
24
24
|
end
|
25
25
|
|
26
|
-
test "
|
26
|
+
test "detects generic device" do
|
27
27
|
device = Browser::Device.new("")
|
28
28
|
|
29
29
|
assert device.unknown?
|
30
30
|
assert_equal :unknown_device, device.id
|
31
31
|
end
|
32
32
|
|
33
|
-
test "
|
33
|
+
test "detects ipad" do
|
34
34
|
device = Browser::Device.new(Browser["IOS9"])
|
35
35
|
assert device.ipad?
|
36
36
|
assert_equal :ipad, device.id
|
37
37
|
assert_equal "iPad", device.name
|
38
38
|
end
|
39
39
|
|
40
|
-
test "
|
40
|
+
test "detects old ipad" do
|
41
41
|
device = Browser::Device.new(Browser["IOS3"])
|
42
42
|
assert device.ipad?
|
43
43
|
assert_equal :ipad, device.id
|
44
44
|
assert_equal "iPad", device.name
|
45
45
|
end
|
46
46
|
|
47
|
-
test "
|
47
|
+
test "detects ipod" do
|
48
48
|
device = Browser::Device.new(Browser["IPOD"])
|
49
49
|
assert device.ipod_touch?
|
50
50
|
assert device.ipod?
|
@@ -52,14 +52,14 @@ class DeviceTest < Minitest::Test
|
|
52
52
|
assert_equal "iPod Touch", device.name
|
53
53
|
end
|
54
54
|
|
55
|
-
test "
|
55
|
+
test "detects iphone" do
|
56
56
|
device = Browser::Device.new(Browser["IOS8"])
|
57
57
|
assert device.iphone?
|
58
58
|
assert_equal :iphone, device.id
|
59
59
|
assert_equal "iPhone", device.name
|
60
60
|
end
|
61
61
|
|
62
|
-
test "
|
62
|
+
test "detects ps3" do
|
63
63
|
device = Browser::Device.new(Browser["PLAYSTATION3"])
|
64
64
|
assert device.ps3?
|
65
65
|
assert device.playstation3?
|
@@ -68,7 +68,7 @@ class DeviceTest < Minitest::Test
|
|
68
68
|
assert_equal "PlayStation 3", device.name
|
69
69
|
end
|
70
70
|
|
71
|
-
test "
|
71
|
+
test "detects ps4" do
|
72
72
|
device = Browser::Device.new(Browser["PLAYSTATION4"])
|
73
73
|
assert device.ps4?
|
74
74
|
assert device.playstation4?
|
@@ -99,14 +99,14 @@ class DeviceTest < Minitest::Test
|
|
99
99
|
assert_equal "Xbox One", device.name
|
100
100
|
end
|
101
101
|
|
102
|
-
test "
|
102
|
+
test "detects psp" do
|
103
103
|
device = Browser::Device.new(Browser["PSP"])
|
104
104
|
assert device.psp?
|
105
105
|
assert_equal :psp, device.id
|
106
106
|
assert_equal "PlayStation Portable", device.name
|
107
107
|
end
|
108
108
|
|
109
|
-
test "
|
109
|
+
test "detects psvita" do
|
110
110
|
device = Browser::Device.new(Browser["PSP_VITA"])
|
111
111
|
assert device.playstation_vita?
|
112
112
|
assert device.vita?
|
@@ -114,7 +114,7 @@ class DeviceTest < Minitest::Test
|
|
114
114
|
assert_equal "PlayStation Vita", device.name
|
115
115
|
end
|
116
116
|
|
117
|
-
test "
|
117
|
+
test "detects kindle" do
|
118
118
|
device = Browser::Device.new(Browser["KINDLE"])
|
119
119
|
assert device.kindle?
|
120
120
|
assert_equal :kindle, device.id
|
@@ -127,7 +127,7 @@ class DeviceTest < Minitest::Test
|
|
127
127
|
KINDLE_FIRE_HD
|
128
128
|
KINDLE_FIRE_HD_MOBILE
|
129
129
|
].each do |key|
|
130
|
-
test "
|
130
|
+
test "detects #{key} as kindle fire" do
|
131
131
|
device = Browser::Device.new(Browser[key])
|
132
132
|
|
133
133
|
assert device.kindle?
|
@@ -137,7 +137,7 @@ class DeviceTest < Minitest::Test
|
|
137
137
|
end
|
138
138
|
end
|
139
139
|
|
140
|
-
test "
|
140
|
+
test "detects wii" do
|
141
141
|
device = Browser::Device.new(Browser["NINTENDO_WII"])
|
142
142
|
assert device.nintendo_wii?
|
143
143
|
assert device.console?
|
@@ -147,7 +147,7 @@ class DeviceTest < Minitest::Test
|
|
147
147
|
assert_equal "Nintendo Wii", device.name
|
148
148
|
end
|
149
149
|
|
150
|
-
test "
|
150
|
+
test "detects wiiu" do
|
151
151
|
device = Browser::Device.new(Browser["NINTENDO_WIIU"])
|
152
152
|
assert device.nintendo_wiiu?
|
153
153
|
assert device.wiiu?
|
@@ -157,7 +157,7 @@ class DeviceTest < Minitest::Test
|
|
157
157
|
assert_equal "Nintendo WiiU", device.name
|
158
158
|
end
|
159
159
|
|
160
|
-
test "
|
160
|
+
test "detects switch" do
|
161
161
|
device = Browser::Device.new(Browser["NINTENDO_SWITCH"])
|
162
162
|
assert device.nintendo_switch?
|
163
163
|
assert device.switch?
|
@@ -167,7 +167,7 @@ class DeviceTest < Minitest::Test
|
|
167
167
|
assert_equal "Nintendo Switch", device.name
|
168
168
|
end
|
169
169
|
|
170
|
-
test "
|
170
|
+
test "detects blackberry playbook" do
|
171
171
|
device = Browser::Device.new(Browser["PLAYBOOK"])
|
172
172
|
assert device.playbook?
|
173
173
|
assert device.blackberry_playbook?
|
@@ -175,21 +175,21 @@ class DeviceTest < Minitest::Test
|
|
175
175
|
assert_equal "BlackBerry Playbook", device.name
|
176
176
|
end
|
177
177
|
|
178
|
-
test "
|
178
|
+
test "detects surface" do
|
179
179
|
device = Browser::Device.new(Browser["SURFACE"])
|
180
180
|
assert device.surface?
|
181
181
|
assert_equal :surface, device.id
|
182
182
|
assert_equal "Microsoft Surface", device.name
|
183
183
|
end
|
184
184
|
|
185
|
-
test "
|
185
|
+
test "detects tv" do
|
186
186
|
device = Browser::Device.new(Browser["SMART_TV"])
|
187
187
|
assert device.tv?
|
188
188
|
assert_equal :tv, device.id
|
189
189
|
assert_equal "TV", device.name
|
190
190
|
end
|
191
191
|
|
192
|
-
test "
|
192
|
+
test "detects unknown device" do
|
193
193
|
device = Browser::Device.new("")
|
194
194
|
|
195
195
|
assert device.unknown?
|
@@ -214,7 +214,7 @@ class DeviceTest < Minitest::Test
|
|
214
214
|
OPERA_MOBI
|
215
215
|
KINDLE_FIRE_HD_MOBILE
|
216
216
|
].each do |key|
|
217
|
-
test "
|
217
|
+
test "detects #{key} as mobile" do
|
218
218
|
device = Browser::Device.new(Browser[key])
|
219
219
|
assert device.mobile?
|
220
220
|
refute device.tablet?
|
@@ -232,7 +232,7 @@ class DeviceTest < Minitest::Test
|
|
232
232
|
FIREFOX_TABLET
|
233
233
|
NEXUS7
|
234
234
|
].each do |key|
|
235
|
-
test "
|
235
|
+
test "detects #{key} as tablet" do
|
236
236
|
device = Browser::Device.new(Browser[key])
|
237
237
|
assert device.tablet?
|
238
238
|
refute device.mobile?
|
@@ -253,13 +253,13 @@ class DeviceTest < Minitest::Test
|
|
253
253
|
"CUSTOM_APP" => "HTC Ruby",
|
254
254
|
"NOOK" => "NOOK BNTV250A"
|
255
255
|
}.each do |key, name|
|
256
|
-
test "
|
256
|
+
test "detects device name of #{key} as #{name}" do
|
257
257
|
device = Browser::Device.new(Browser[key])
|
258
258
|
assert_equal name, device.name
|
259
259
|
end
|
260
260
|
end
|
261
261
|
|
262
|
-
test "
|
262
|
+
test "detects samsung devices" do
|
263
263
|
device = Browser::Device.new(Browser["SAMSUNG_SM-G975F"])
|
264
264
|
|
265
265
|
assert device.samsung?
|
@@ -267,7 +267,7 @@ class DeviceTest < Minitest::Test
|
|
267
267
|
assert_equal "Samsung Galaxy S10+", device.name
|
268
268
|
end
|
269
269
|
|
270
|
-
test "
|
270
|
+
test "detects generic samsung devices" do
|
271
271
|
device = Browser::Device.new(Browser["SAMSUNG_SM-FAKE"])
|
272
272
|
|
273
273
|
assert device.samsung?
|
@@ -280,7 +280,7 @@ class DeviceTest < Minitest::Test
|
|
280
280
|
"SAMSUNG_SM-G960F" => "Samsung Galaxy S9",
|
281
281
|
"SAMSUNG_SM-F700F" => "Samsung Galaxy Z Flip"
|
282
282
|
}.each do |key, name|
|
283
|
-
test "
|
283
|
+
test "detects device name of #{key} as #{name}" do
|
284
284
|
device = Browser::Device.new(Browser[key])
|
285
285
|
assert_equal name, device.name
|
286
286
|
end
|
data/test/unit/edge_test.rb
CHANGED
@@ -16,6 +16,7 @@ class EdgeTest < ActionController::TestCase
|
|
16
16
|
refute browser.chrome?
|
17
17
|
refute browser.safari?
|
18
18
|
refute browser.device.mobile?
|
19
|
+
refute browser.chromium_based?
|
19
20
|
end
|
20
21
|
|
21
22
|
test "detects Microsoft Edge in compatibility view" do
|
@@ -33,6 +34,7 @@ class EdgeTest < ActionController::TestCase
|
|
33
34
|
refute browser.chrome?
|
34
35
|
refute browser.safari?
|
35
36
|
refute browser.device.mobile?
|
37
|
+
refute browser.chromium_based?
|
36
38
|
end
|
37
39
|
|
38
40
|
test "detects Microsoft Edge Mobile" do
|
@@ -48,6 +50,7 @@ class EdgeTest < ActionController::TestCase
|
|
48
50
|
refute browser.webkit?
|
49
51
|
refute browser.chrome?
|
50
52
|
refute browser.safari?
|
53
|
+
refute browser.chromium_based?
|
51
54
|
end
|
52
55
|
|
53
56
|
test "detects Microsoft Edge based on Chrome" do
|
@@ -58,6 +61,7 @@ class EdgeTest < ActionController::TestCase
|
|
58
61
|
assert_equal "79.0.309.18", browser.full_version
|
59
62
|
assert_equal "79", browser.version
|
60
63
|
assert browser.platform.mac?
|
64
|
+
assert browser.chromium_based?
|
61
65
|
refute browser.platform.windows?
|
62
66
|
assert browser.edge?
|
63
67
|
assert browser.webkit?
|
@@ -79,6 +83,7 @@ class EdgeTest < ActionController::TestCase
|
|
79
83
|
refute browser.webkit?
|
80
84
|
refute browser.chrome?
|
81
85
|
refute browser.safari?
|
86
|
+
refute browser.chromium_based?
|
82
87
|
end
|
83
88
|
|
84
89
|
test "detects Microsoft Edge Mobile on Android" do
|
@@ -95,6 +100,7 @@ class EdgeTest < ActionController::TestCase
|
|
95
100
|
refute browser.webkit?
|
96
101
|
refute browser.chrome?
|
97
102
|
refute browser.safari?
|
103
|
+
refute browser.chromium_based?
|
98
104
|
end
|
99
105
|
|
100
106
|
test "detects version by range" do
|
data/test/unit/electron_test.rb
CHANGED
data/test/unit/facebook_test.rb
CHANGED
@@ -8,7 +8,7 @@ class FacebookTest < Minitest::Test
|
|
8
8
|
|
9
9
|
assert_equal "Facebook", browser.name
|
10
10
|
assert browser.facebook?
|
11
|
-
|
11
|
+
assert_equal :facebook, browser.id
|
12
12
|
assert_equal "135.0.0.45.90", browser.full_version
|
13
13
|
assert_equal "135", browser.version
|
14
14
|
end
|
@@ -18,7 +18,7 @@ class FacebookTest < Minitest::Test
|
|
18
18
|
|
19
19
|
assert_equal "Facebook", browser.name
|
20
20
|
assert browser.facebook?
|
21
|
-
|
21
|
+
assert_equal :facebook, browser.id
|
22
22
|
assert_equal "AppleWebKit/605.1.15", browser.full_version
|
23
23
|
assert_equal "AppleWebKit/605", browser.version
|
24
24
|
end
|
@@ -28,7 +28,7 @@ class FacebookTest < Minitest::Test
|
|
28
28
|
|
29
29
|
assert_equal "Facebook", browser.name
|
30
30
|
assert browser.facebook?
|
31
|
-
|
31
|
+
assert_equal :facebook, browser.id
|
32
32
|
assert_equal "214.0.0.43.83", browser.full_version
|
33
33
|
assert_equal "214", browser.version
|
34
34
|
end
|
data/test/unit/generic_test.rb
CHANGED
@@ -3,20 +3,20 @@
|
|
3
3
|
require "test_helper"
|
4
4
|
|
5
5
|
class GenericTest < Minitest::Test
|
6
|
-
test "
|
6
|
+
test "returns default msie version" do
|
7
7
|
browser = Browser.new("")
|
8
8
|
|
9
9
|
assert_equal "0.0", browser.msie_full_version
|
10
10
|
assert_equal "0", browser.msie_version
|
11
11
|
end
|
12
12
|
|
13
|
-
test "
|
13
|
+
test "returns default compatibility view" do
|
14
14
|
browser = Browser.new("")
|
15
15
|
|
16
16
|
refute browser.compatibility_view?
|
17
17
|
end
|
18
18
|
|
19
|
-
test "
|
19
|
+
test "returns default safari web app mode" do
|
20
20
|
browser = Browser.new("")
|
21
21
|
|
22
22
|
refute browser.safari_webapp_mode?
|
data/test/unit/instagram_test.rb
CHANGED
@@ -8,7 +8,7 @@ class InstagramTest < Minitest::Test
|
|
8
8
|
|
9
9
|
assert_equal "Instagram", browser.name
|
10
10
|
assert browser.instagram?
|
11
|
-
|
11
|
+
assert_equal :instagram, browser.id
|
12
12
|
assert_equal "41.0.0.14.90", browser.full_version
|
13
13
|
assert_equal "41", browser.version
|
14
14
|
end
|
@@ -18,7 +18,7 @@ class InstagramTest < Minitest::Test
|
|
18
18
|
|
19
19
|
assert_equal "Instagram", browser.name
|
20
20
|
assert browser.instagram?
|
21
|
-
|
21
|
+
assert_equal :instagram, browser.id
|
22
22
|
assert_equal "182257141", browser.full_version
|
23
23
|
assert_equal "182257141", browser.version
|
24
24
|
end
|
@@ -261,43 +261,43 @@ class IeTest < Minitest::Test
|
|
261
261
|
browser = Browser.new(Browser["IE6"])
|
262
262
|
meta = browser.meta
|
263
263
|
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
264
|
+
assert_includes meta, "ie"
|
265
|
+
assert_includes meta, "ie6"
|
266
|
+
assert_includes meta, "oldie"
|
267
|
+
assert_includes meta, "lt-ie8"
|
268
|
+
assert_includes meta, "lt-ie9"
|
269
|
+
assert_includes meta, "windows"
|
270
270
|
end
|
271
271
|
|
272
272
|
test "returns string representation for ie7" do
|
273
273
|
browser = Browser.new(Browser["IE7"])
|
274
274
|
meta = browser.meta
|
275
275
|
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
276
|
+
assert_includes meta, "ie"
|
277
|
+
assert_includes meta, "ie7"
|
278
|
+
assert_includes meta, "oldie"
|
279
|
+
assert_includes meta, "lt-ie8"
|
280
|
+
assert_includes meta, "lt-ie9"
|
281
|
+
assert_includes meta, "windows"
|
282
282
|
end
|
283
283
|
|
284
284
|
test "returns string representation for ie8" do
|
285
285
|
browser = Browser.new(Browser["IE8"])
|
286
286
|
meta = browser.meta
|
287
287
|
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
288
|
+
assert_includes meta, "ie"
|
289
|
+
assert_includes meta, "ie8"
|
290
|
+
assert_includes meta, "lt-ie9"
|
291
|
+
assert_includes meta, "windows"
|
292
292
|
end
|
293
293
|
|
294
|
-
test "
|
294
|
+
test "does not detect as two different versions" do
|
295
295
|
browser = Browser.new(Browser["IE8"])
|
296
296
|
assert browser.ie?(8)
|
297
297
|
refute browser.ie?(7)
|
298
298
|
end
|
299
299
|
|
300
|
-
test "more complex versioning check" do
|
300
|
+
test "handles more complex versioning check" do
|
301
301
|
browser = Browser.new(Browser["IE8"])
|
302
302
|
assert browser.ie?(["> 7", "< 9"])
|
303
303
|
end
|
data/test/unit/ios_app_test.rb
CHANGED
@@ -5,15 +5,15 @@ require "test_helper"
|
|
5
5
|
class IosAppTest < Minitest::Test
|
6
6
|
let(:browser) { Browser.new(Browser["IOS_WEBVIEW"]) }
|
7
7
|
|
8
|
-
test "
|
8
|
+
test "detects as ios" do
|
9
9
|
assert browser.platform.ios?
|
10
10
|
end
|
11
11
|
|
12
|
-
test "
|
12
|
+
test "does not detect as safari" do
|
13
13
|
refute browser.safari?
|
14
14
|
end
|
15
15
|
|
16
|
-
test "
|
16
|
+
test "detects as webview" do
|
17
17
|
assert browser.platform.ios_webview?
|
18
18
|
end
|
19
19
|
end
|