browser 4.0.0 → 4.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/.prettierignore +1 -0
- data/.rubocop.yml +3 -0
- data/CHANGELOG.md +13 -0
- data/README.md +0 -15
- data/bots.yml +10 -7
- data/browser.gemspec +2 -0
- data/lib/browser/base.rb +5 -0
- data/lib/browser/browser.rb +3 -1
- data/lib/browser/chrome.rb +2 -1
- data/lib/browser/edge.rb +2 -2
- data/lib/browser/samsung_browser.rb +21 -0
- data/lib/browser/version.rb +1 -1
- data/test/ua.yml +5 -1
- data/test/ua_bots.yml +4 -1
- data/test/unit/edge_test.rb +34 -2
- data/test/unit/micro_messenger_test.rb +21 -6
- data/test/unit/samsung_browser_test.rb +22 -0
- metadata +8 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e77d6a7b8f14ab25f374f72faeb65e922b04c505f1f5dda6f238e3bca45e47b2
|
4
|
+
data.tar.gz: fe6b730f514a0cb75050ea5f799c281c72e068b240712ce4c8981bc18031838a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5e760498efafda0f1900dd29e19d5af21912cfe904dfe3167e001138ac2ba1608e916be5f00066f86b2f471724e2234418891bf66b638b75ee67b074f1bdc251
|
7
|
+
data.tar.gz: a190f555bfb9857cd05277e7b3d73670a5642411b91dafc5a811d3fbef5d0987f4612fe205ffd3bc8c229d06965910dfa42fec4e787f4107521d4ac97d63c77e
|
data/.prettierignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
*.yml
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,19 @@
|
|
2
2
|
|
3
3
|
## Unreleased
|
4
4
|
|
5
|
+
Nothing
|
6
|
+
|
7
|
+
## 4.1.0
|
8
|
+
|
9
|
+
- Add Samsung browser.
|
10
|
+
- Add Google Image Proxy to the bot list.
|
11
|
+
- Add The Knowledge AI bot to the bot list.
|
12
|
+
- Add Go HttpClient to the bot list.
|
13
|
+
- Fix Microsoft Edge detection on Android and iOS.
|
14
|
+
- Fix MicroMessenger detection on Android
|
15
|
+
|
16
|
+
## 4.0.0
|
17
|
+
|
5
18
|
- Add Chrome Lighthouse to bot list.
|
6
19
|
- Add SeobilityBot to the bot list.
|
7
20
|
- Detect Mac-based platforms differently, depending on the version; "Mac OS X"
|
data/README.md
CHANGED
@@ -318,21 +318,6 @@ Rails.configuration.middleware.use Browser::Middleware do
|
|
318
318
|
end
|
319
319
|
```
|
320
320
|
|
321
|
-
### Migrating to v2
|
322
|
-
|
323
|
-
#### Troubleshooting
|
324
|
-
|
325
|
-
##### `TypeError: no implicit conversion of Hash into String`
|
326
|
-
|
327
|
-
The class constructor now has a different signature. Change the instantiation from `Browser.new(options)` to `Browser.new(ua, options)`, where:
|
328
|
-
|
329
|
-
- `ua`: must be a string representing the user agent.
|
330
|
-
- `options`: must be a hash (for now it only accepts the `accept_language` option).
|
331
|
-
|
332
|
-
##### `NoMethodError: undefined method 'user_agent'`
|
333
|
-
|
334
|
-
`.ua` can now be used to retrieve the full User Agent string.
|
335
|
-
|
336
321
|
## Development
|
337
322
|
|
338
323
|
### Versioning
|
data/bots.yml
CHANGED
@@ -88,14 +88,16 @@ gigabot: "Gigabot spider"
|
|
88
88
|
gimme60bot: "Gimme60 (gimme60.com)"
|
89
89
|
gimmeusabot: "Gimme60 (gimme60.com)"
|
90
90
|
go http package: "Go http library"
|
91
|
+
go-http-client: "Go http client"
|
91
92
|
google page speed insights: "Google Page Speed Insights"
|
92
|
-
google
|
93
|
-
google-site-verification: Google
|
94
|
-
google-structured-data-testing-tool: "Google
|
95
|
-
google-structureddatatestingtool: "Google
|
93
|
+
google web preview: "Google Instant Previews crawler"
|
94
|
+
google-site-verification: Google Site Verification
|
95
|
+
google-structured-data-testing-tool: "Google Structured Data Testing Tool"
|
96
|
+
google-structureddatatestingtool: "Google Structured Data Testing Tool"
|
96
97
|
google-xrawler: "Google Shopping"
|
97
98
|
googlebot: "Google Bot"
|
98
|
-
|
99
|
+
googleimageproxy: "Google Image Proxy"
|
100
|
+
googlestackdrivermonitoring-uptimechecks: "Google Stackdriver Monitoring - Uptime Checks"
|
99
101
|
grapeshotcrawler: "GrapeshotCrawler"
|
100
102
|
gravitybot: "Gravity Bot"
|
101
103
|
hatena::bookmark: "Hatena::Bookmark"
|
@@ -215,10 +217,10 @@ siege: "Joe Dog Siege"
|
|
215
217
|
sistrix: "SISTRIX"
|
216
218
|
sitecheck: "SiteCheck sitecrawl"
|
217
219
|
siteuptime: "Site monitoring services"
|
218
|
-
slack: "Slackbot-LinkExpanding"
|
219
|
-
slackbot: "Slackbot 1.0(+https://api.slack.com/robots)"
|
220
220
|
slack-imgproxy: "Slack-ImgProxy 0.19 (+https://api.slack.com/robots)"
|
221
221
|
slack-linkexpanding: "Slackbot-LinkExpanding 1.0 (+https://api.slack.com/robots)"
|
222
|
+
slack: "Slackbot-LinkExpanding"
|
223
|
+
slackbot: "Slackbot 1.0(+https://api.slack.com/robots)"
|
222
224
|
slurp: "Yahoo spider"
|
223
225
|
smtbot: "SimilarTech"
|
224
226
|
snapchat: "Snapchat"
|
@@ -234,6 +236,7 @@ swiftbot: "Swiftype Bot"
|
|
234
236
|
tangibleebot: "TangibleeBot"
|
235
237
|
teeraid: "TeeRaidBot"
|
236
238
|
test certificate info: "C http library?"
|
239
|
+
the knowledge ai: "Knowledge AI Bot"
|
237
240
|
tineye: "TinEye Bot"
|
238
241
|
traackr: "Traackr Bot"
|
239
242
|
trendictionbot: "Trendiction Search"
|
data/browser.gemspec
CHANGED
@@ -13,6 +13,8 @@ Gem::Specification.new do |s|
|
|
13
13
|
s.description = s.summary
|
14
14
|
s.license = "MIT"
|
15
15
|
|
16
|
+
s.metadata["changelog_uri"] = "https://github.com/fnando/browser/blob/master/CHANGELOG.md"
|
17
|
+
|
16
18
|
s.files = `git ls-files`.split("\n")
|
17
19
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
20
|
s.executables = `git ls-files -- exe/*`
|
data/lib/browser/base.rb
CHANGED
@@ -192,6 +192,11 @@ module Browser
|
|
192
192
|
ua =~ /DuckDuckGo/ && detect_version?(full_version, expected_version)
|
193
193
|
end
|
194
194
|
|
195
|
+
# Detect if browser is Samsung.
|
196
|
+
def samsung_browser?(expected_version = nil)
|
197
|
+
ua =~ /SamsungBrowser/ && detect_version?(full_version, expected_version)
|
198
|
+
end
|
199
|
+
|
195
200
|
def webkit_full_version
|
196
201
|
ua[%r{AppleWebKit/([\d.]+)}, 1] || "0.0"
|
197
202
|
end
|
data/lib/browser/browser.rb
CHANGED
@@ -31,6 +31,7 @@ require_relative "yandex"
|
|
31
31
|
require_relative "sputnik"
|
32
32
|
require_relative "snapchat"
|
33
33
|
require_relative "duck_duck_go"
|
34
|
+
require_relative "samsung_browser"
|
34
35
|
|
35
36
|
require_relative "bot"
|
36
37
|
require_relative "bot/empty_user_agent_matcher"
|
@@ -66,15 +67,16 @@ module Browser
|
|
66
67
|
Instagram, # must be placed before Chrome and Safari
|
67
68
|
Snapchat, # must be placed before Chrome and Safari
|
68
69
|
Weibo, # must be placed before Chrome and Safari
|
70
|
+
MicroMessenger, # must be placed before QQ
|
69
71
|
QQ, # must be placed before Chrome and Safari
|
70
72
|
Alipay, # must be placed before Chrome and Safari
|
71
73
|
Electron, # must be placed before Chrome and Safari
|
72
74
|
Yandex, # must be placed before Chrome and Safari
|
73
75
|
Sputnik, # must be placed before Chrome and Safari
|
74
76
|
DuckDuckGo, # must be placed before Chrome and Safari
|
77
|
+
SamsungBrowser, # must be placed before Chrome and Safari
|
75
78
|
Chrome,
|
76
79
|
Safari,
|
77
|
-
MicroMessenger,
|
78
80
|
Generic
|
79
81
|
]
|
80
82
|
end
|
data/lib/browser/chrome.rb
CHANGED
data/lib/browser/edge.rb
CHANGED
@@ -11,11 +11,11 @@ module Browser
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def full_version
|
14
|
-
ua[%r{(?:Edge|Edg)/([\d.]+)}, 1] || super
|
14
|
+
ua[%r{(?:Edge|Edg|EdgiOS|EdgA)/([\d.]+)}, 1] || super
|
15
15
|
end
|
16
16
|
|
17
17
|
def match?
|
18
|
-
ua =~ %r{((?:Edge|Edg)/[\d.]+|Trident/8)}
|
18
|
+
ua =~ %r{((?:Edge|Edg|EdgiOS|EdgA)/[\d.]+|Trident/8)}
|
19
19
|
end
|
20
20
|
|
21
21
|
def chrome_based?
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Browser
|
4
|
+
class SamsungBrowser < Chrome
|
5
|
+
def id
|
6
|
+
:samsung_browser
|
7
|
+
end
|
8
|
+
|
9
|
+
def name
|
10
|
+
"Samsung Browser"
|
11
|
+
end
|
12
|
+
|
13
|
+
def full_version
|
14
|
+
ua[%r{SamsungBrowser/([\d.]+)}, 1] || super
|
15
|
+
end
|
16
|
+
|
17
|
+
def match?
|
18
|
+
ua =~ /SamsungBrowser/
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/browser/version.rb
CHANGED
data/test/ua.yml
CHANGED
@@ -81,13 +81,16 @@ KINDLE_FIRE_HD_MOBILE: "Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; KFTT Build/
|
|
81
81
|
LUMIA800: "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; XBLWP7; ZuneWP7"
|
82
82
|
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"
|
83
83
|
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"
|
84
|
-
|
84
|
+
MICRO_MESSENGER_IOS: "Mozilla/5.0 (iPhone; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/7.0.10(0x17000a21) NetType/4G Language/zh_CN"
|
85
|
+
MICRO_MESSENGER_ANDROID: "Mozilla/5.0 (Linux; Android 7.1.2; Redmi 4X Build/N2G47H; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045131 Mobile Safari/537.36 MMWEBID/9286 MicroMessenger/7.0.13.1640(0x27000D37) Process/tools NetType/WIFI Language/zh_CN ABI/arm64 WeChat/arm64"
|
85
86
|
MIDP: MIDP-2.0
|
86
87
|
MOBILE_CHROME: "Mozilla/5.0 (iPhone; U; CPU iPhone OS 5_1_1 like Mac OS X; en) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/19.0.1084.60 Mobile/9B206 Safari/7534.48.3"
|
87
88
|
MS_EDGE: "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0"
|
88
89
|
MS_EDGE_CHROME: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.29 Safari/537.36 Edg/79.0.309.18"
|
89
90
|
MS_EDGE_COMPAT: "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; WOW64; Trident/8.0; .NET4.0C; .NET4.0E; Tablet PC 2.0; Microsoft Outlook 15.0.4433; ms-office; MSOffice 15)"
|
90
91
|
MS_EDGE_MOBILE: "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; DEVICE INFO) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Mobile Safari/537.36 Edge/12.0"
|
92
|
+
MS_EDGE_IOS: "Mozilla/5.0 (iPhone; CPU iPhone OS 12_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1.1 EdgiOS/44.5.0.10 Mobile/15E148 Safari/604.1"
|
93
|
+
MS_EDGE_ANDROID: "Mozilla/5.0 (Linux; Android 7.1.2; Redmi 4X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.0 Mobile Safari/537.36 EdgA/44.11.2.4122"
|
91
94
|
NEXUS7: "Mozilla/5.0 (Linux; Android 4.3; Nexus 7 Build/JWR66Y) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Safari/537.36"
|
92
95
|
NEXUS_TABLET: "Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19"
|
93
96
|
NINTENDO_SWITCH: "Mozilla/5.0 (Nintendo Switch; WifiWebAuthApplet) AppleWebKit/601.6 (KHTML, like Gecko) NF/4.0.0.7.9 NintendoBrowser/5.1.0.15785"
|
@@ -123,6 +126,7 @@ SAFARI: "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-us) AppleWebKit/53
|
|
123
126
|
SAFARI_IPAD_WEBAPP_MODE: "Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405"
|
124
127
|
SAFARI_IPHONE_WEBAPP_MODE: "Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.20 (KHTML, like Gecko) Mobile/7B298g"
|
125
128
|
SAMSUNG: "Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; SAMSUNG-SGH-I497 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30"
|
129
|
+
SAMSUNG_BROWSER: "Mozilla/5.0 (Linux; Android 10; SAMSUNG SM-N960U) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/11.1 Chrome/75.0.3770.143 Mobile Safari/537.36"
|
126
130
|
SAMSUNG_CHROME: "Mozilla/5.0 (Linux; Android 4.4.2; en-gb; SAMSUNG GT-I9195/I9195XXUCNEA Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Mobile Safari/537.36"
|
127
131
|
SMART_TV: "Mozilla/5.0 (SmartHub; SMART-TV; U; Linux/SmartTV) AppleWebKit/531.2+ (KHTML, like Gecko) WebBrowser/1.0 SmartTV Safari/531.2+"
|
128
132
|
SNAPCHAT: Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Snapchat/10.69.5.72 (iPhone10,3; iOS 13.2.2; gzip)
|
data/test/ua_bots.yml
CHANGED
@@ -4,9 +4,9 @@ ADS_TXT_CRAWLER: "AdsTxtCrawler/1.0"
|
|
4
4
|
ANDERSPINK: "Mozilla/5.0 (compatible; AndersPinkBot/1.0; +http://anderspink.com/bot.html)"
|
5
5
|
APIS_GOOGLE: "APIs-Google; (+https://developers.google.com/webmasters/APIs-Google.html)"
|
6
6
|
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)"
|
7
|
+
ARCHIVEBOT: "ArchiveTeam ArchiveBot/20190617.01 (wpull 2.0.3) and not Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36"
|
7
8
|
ASK: "Mozilla/2.0 (compatible; Ask Jeeves/Teoma; +http://sp.ask.com/docs/about/tech_crawling.html)"
|
8
9
|
AWS_ELB: ELB-HealthChecker/1.0
|
9
|
-
ARCHIVEBOT: "ArchiveTeam ArchiveBot/20190617.01 (wpull 2.0.3) and not Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36"
|
10
10
|
BAIDU: "Baiduspider+(+http://www.baidu.com/search/spider.htm)"
|
11
11
|
BARKROWLER: "Barkrowler/0.7 (+http://www.exensa.com/crawl)"
|
12
12
|
BINGBOT: "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
|
@@ -31,7 +31,9 @@ FYREBOT: "Fyrebot/1.0"
|
|
31
31
|
GARLIK: "GarlikCrawler/1.2 (http://garlik.com/, crawler@garlik.com)"
|
32
32
|
GERMCRAWLER: "GermCrawler"
|
33
33
|
GO_1.1_PACKAGE_HTTP: "Go 1.1 package http"
|
34
|
+
GO_HTTP_CLIENT: "Go-http-client"
|
34
35
|
GOOGLE_BOT: "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
|
36
|
+
GOOGLE_IMAGE_PROXY: "Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko Firefox/11.0 (via ggpht.com GoogleImageProxy)"
|
35
37
|
GOOGLE_PAGE_SPEED_INSIGHTS: "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.4 (KHTML, like Gecko; Google Page Speed Insights) Chrome/22.0.1229 Safari/537.4"
|
36
38
|
GOOGLE_SHOPPING: "google-xrawler"
|
37
39
|
GOOGLE_SITE_VERIFICATION: Mozilla/5.0 (compatible; Google-Site-Verification/1.0)
|
@@ -44,6 +46,7 @@ IMPLISENSEBOT: "ImplisenseBot 1.0"
|
|
44
46
|
JAUNT: "Jaunt/1.5"
|
45
47
|
JOBSEEKER: "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/538.1 (KHTML, like Gecko) JobBot/5.0 (compatible; +http://www.jobseeker.com.au/bot.html) Safari/538.1"
|
46
48
|
JOOBLE: "Mozilla/5.0 (compatible; Jooblebot/2.0; Windows NT 6.1; WOW64; +http://jooble.org/jooble-bot) Mobile"
|
49
|
+
KNOWLEDGE_AI: "The Knowledge AI"
|
47
50
|
LINKDEXBOT: "Mozilla/5.0 (compatible; linkdexbot/2.0; +http://www.linkdex.com/bots/)"
|
48
51
|
LINKEDIN: "LinkedInBot/1.0 (compatible; Mozilla/5.0; Jakarta Commons-HttpClient/3.1 +http://www.linkedin.com)"
|
49
52
|
LOAD_TIME_BOT: "Mozilla/5.0 (compatible; LoadTimeBot/0.9; +http://www.loadtime.net/bot.html)"
|
data/test/unit/edge_test.rb
CHANGED
@@ -65,8 +65,40 @@ class EdgeTest < ActionController::TestCase
|
|
65
65
|
refute browser.safari?
|
66
66
|
end
|
67
67
|
|
68
|
+
test "detects Microsoft Edge Mobile on iOS" do
|
69
|
+
browser = Browser.new(Browser["MS_EDGE_IOS"])
|
70
|
+
|
71
|
+
assert_equal :edge, browser.id
|
72
|
+
assert_equal "Microsoft Edge", browser.name
|
73
|
+
assert_equal "44.5.0.10", browser.full_version
|
74
|
+
assert_equal "44", browser.version
|
75
|
+
refute browser.platform.windows10?
|
76
|
+
refute browser.platform.windows_phone?
|
77
|
+
assert browser.platform.ios?
|
78
|
+
assert browser.edge?
|
79
|
+
refute browser.webkit?
|
80
|
+
refute browser.chrome?
|
81
|
+
refute browser.safari?
|
82
|
+
end
|
83
|
+
|
84
|
+
test "detects Microsoft Edge Mobile on Android" do
|
85
|
+
browser = Browser.new(Browser["MS_EDGE_ANDROID"])
|
86
|
+
|
87
|
+
assert_equal :edge, browser.id
|
88
|
+
assert_equal "Microsoft Edge", browser.name
|
89
|
+
assert_equal "44.11.2.4122", browser.full_version
|
90
|
+
assert_equal "44", browser.version
|
91
|
+
refute browser.platform.windows10?
|
92
|
+
refute browser.platform.windows_phone?
|
93
|
+
assert browser.platform.android?
|
94
|
+
assert browser.edge?
|
95
|
+
refute browser.webkit?
|
96
|
+
refute browser.chrome?
|
97
|
+
refute browser.safari?
|
98
|
+
end
|
99
|
+
|
68
100
|
test "detects version by range" do
|
69
|
-
browser = Browser.new(Browser["
|
70
|
-
assert browser.edge?(%w[>=
|
101
|
+
browser = Browser.new(Browser["MS_EDGE_IOS"])
|
102
|
+
assert browser.edge?(%w[>=43 <45])
|
71
103
|
end
|
72
104
|
end
|
@@ -3,18 +3,33 @@
|
|
3
3
|
require "test_helper"
|
4
4
|
|
5
5
|
class MicroMessengerTest < Minitest::Test
|
6
|
-
test "detects micro messenger
|
7
|
-
browser = Browser.new(Browser["
|
6
|
+
test "detects micro messenger 7.0.10 on iOS" do
|
7
|
+
browser = Browser.new(Browser["MICRO_MESSENGER_IOS"])
|
8
8
|
|
9
9
|
assert browser.micro_messenger?
|
10
10
|
assert browser.wechat?
|
11
|
-
assert_equal "
|
11
|
+
assert_equal "7.0.10", browser.full_version
|
12
12
|
assert_equal "MicroMessenger", browser.name
|
13
13
|
assert_equal :micro_messenger, browser.id
|
14
14
|
end
|
15
15
|
|
16
|
-
test "detects version by range" do
|
17
|
-
browser = Browser.new(Browser["
|
18
|
-
assert browser.wechat?(%w[>=
|
16
|
+
test "detects version by range on iOS" do
|
17
|
+
browser = Browser.new(Browser["MICRO_MESSENGER_IOS"])
|
18
|
+
assert browser.wechat?(%w[>=7 <8])
|
19
|
+
end
|
20
|
+
|
21
|
+
test "detects micro messenger 7.0.13.1640 on Android" do
|
22
|
+
browser = Browser.new(Browser["MICRO_MESSENGER_ANDROID"])
|
23
|
+
|
24
|
+
assert browser.micro_messenger?
|
25
|
+
assert browser.wechat?
|
26
|
+
assert_equal "7.0.13.1640", browser.full_version
|
27
|
+
assert_equal "MicroMessenger", browser.name
|
28
|
+
assert_equal :micro_messenger, browser.id
|
29
|
+
end
|
30
|
+
|
31
|
+
test "detects version by range on Android" do
|
32
|
+
browser = Browser.new(Browser["MICRO_MESSENGER_ANDROID"])
|
33
|
+
assert browser.wechat?(%w[>=7 <8])
|
19
34
|
end
|
20
35
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "test_helper"
|
4
|
+
|
5
|
+
class SamsungBrowserTest < Minitest::Test
|
6
|
+
test "detects samsung browser" do
|
7
|
+
browser = Browser.new(Browser["SAMSUNG_BROWSER"])
|
8
|
+
|
9
|
+
assert browser.webkit?
|
10
|
+
assert browser.samsung_browser?
|
11
|
+
assert_equal "11", browser.version
|
12
|
+
assert_equal :samsung_browser, browser.id
|
13
|
+
assert_equal "11.1", browser.full_version
|
14
|
+
assert_equal "Samsung Browser", browser.name
|
15
|
+
refute browser.chrome?
|
16
|
+
end
|
17
|
+
|
18
|
+
test "detects version by range" do
|
19
|
+
browser = Browser.new(Browser["SAMSUNG_BROWSER"])
|
20
|
+
assert browser.samsung_browser?(%w[>=11 <12])
|
21
|
+
end
|
22
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: browser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nando Vieira
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-05-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -173,6 +173,7 @@ extra_rdoc_files: []
|
|
173
173
|
files:
|
174
174
|
- ".github/ISSUE_TEMPLATE.md"
|
175
175
|
- ".gitignore"
|
176
|
+
- ".prettierignore"
|
176
177
|
- ".rubocop.yml"
|
177
178
|
- ".travis.yml"
|
178
179
|
- CHANGELOG.md
|
@@ -268,6 +269,7 @@ files:
|
|
268
269
|
- lib/browser/qq.rb
|
269
270
|
- lib/browser/rails.rb
|
270
271
|
- lib/browser/safari.rb
|
272
|
+
- lib/browser/samsung_browser.rb
|
271
273
|
- lib/browser/snapchat.rb
|
272
274
|
- lib/browser/sputnik.rb
|
273
275
|
- lib/browser/testing.rb
|
@@ -315,6 +317,7 @@ files:
|
|
315
317
|
- test/unit/proxy_test.rb
|
316
318
|
- test/unit/qq_test.rb
|
317
319
|
- test/unit/safari_test.rb
|
320
|
+
- test/unit/samsung_browser_test.rb
|
318
321
|
- test/unit/snapchat_test.rb
|
319
322
|
- test/unit/sputnik_test.rb
|
320
323
|
- test/unit/uc_browser_test.rb
|
@@ -325,7 +328,8 @@ files:
|
|
325
328
|
homepage: http://github.com/fnando/browser
|
326
329
|
licenses:
|
327
330
|
- MIT
|
328
|
-
metadata:
|
331
|
+
metadata:
|
332
|
+
changelog_uri: https://github.com/fnando/browser/blob/master/CHANGELOG.md
|
329
333
|
post_install_message:
|
330
334
|
rdoc_options: []
|
331
335
|
require_paths:
|
@@ -385,6 +389,7 @@ test_files:
|
|
385
389
|
- test/unit/proxy_test.rb
|
386
390
|
- test/unit/qq_test.rb
|
387
391
|
- test/unit/safari_test.rb
|
392
|
+
- test/unit/samsung_browser_test.rb
|
388
393
|
- test/unit/snapchat_test.rb
|
389
394
|
- test/unit/sputnik_test.rb
|
390
395
|
- test/unit/uc_browser_test.rb
|