Skip to content

Commit 79e4ffd

Browse files
committed
fix: fix incorrect regex for edge browser
1 parent 169cfbf commit 79e4ffd

File tree

2 files changed

+50
-2
lines changed

2 files changed

+50
-2
lines changed

lib/plugin.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,12 @@ function isMacOS (a) {
3838
return /Mac OS X/.test(a)
3939
}
4040

41-
// Following regular expressions are copied from bowser(https://github.com/lancedikson/bowser).
41+
// Following regular expressions are originated from bowser(https://github.com/lancedikson/bowser).
4242
// Copyright 2015, Dustin Diaz (the "Original Author")
4343
// https://github.com/lancedikson/bowser/blob/master/LICENSE
4444
const browsers = [
4545
{name: 'Samsung', test: /SamsungBrowser/i },
46-
{name: 'Edge', test: /edg([ea]|ios)/i },
46+
{name: 'Edge', test: /edg([ea]|ios|)\//i },
4747
{name: 'Firefox', test: /firefox|iceweasel|fxios/i },
4848
{name: 'Chrome', test: /chrome|crios|crmo/i },
4949
{name: 'Safari', test: /safari|applewebkit/i }

test/module.test.js

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,54 @@ describe('Device module', () => {
7070
})
7171
})
7272

73+
describe('detects a browser', () => {
74+
it('detects Chrome', () => {
75+
const userAgent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36';
76+
const result = extractDevices(ctx, userAgent)
77+
expect(result.isChrome).toEqual(true)
78+
expect(result.isFirefox).toEqual(false)
79+
expect(result.isEdge).toEqual(false)
80+
expect(result.isSafari).toEqual(false)
81+
expect(result.isSamsung).toEqual(false)
82+
})
83+
it('detects Firefox', () => {
84+
const userAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X x.y; rv:42.0) Gecko/20100101 Firefox/42.0';
85+
const result = extractDevices(ctx, userAgent)
86+
expect(result.isChrome).toEqual(false)
87+
expect(result.isFirefox).toEqual(true)
88+
expect(result.isEdge).toEqual(false)
89+
expect(result.isSafari).toEqual(false)
90+
expect(result.isSamsung).toEqual(false)
91+
})
92+
it('detects Edge', () => {
93+
const userAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36 Edg/81.0.416.72';
94+
const result = extractDevices(ctx, userAgent)
95+
expect(result.isChrome).toEqual(false)
96+
expect(result.isFirefox).toEqual(false)
97+
expect(result.isEdge).toEqual(true)
98+
expect(result.isSafari).toEqual(false)
99+
expect(result.isSamsung).toEqual(false)
100+
})
101+
it('detects Safari', () => {
102+
const userAgent = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.1 Mobile/15E148 Safari/604.1'
103+
const result = extractDevices(ctx, userAgent)
104+
expect(result.isChrome).toEqual(false)
105+
expect(result.isFirefox).toEqual(false)
106+
expect(result.isEdge).toEqual(false)
107+
expect(result.isSafari).toEqual(true)
108+
expect(result.isSamsung).toEqual(false)
109+
})
110+
it('detects Samsung', () => {
111+
const userAgent = 'Mozilla/5.0 (Linux; Android 10; SAMSUNG SM-A515F) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/12.1 Chrome/79.0.3945.136 Mobile Safari/537.36'
112+
const result = extractDevices(ctx, userAgent)
113+
expect(result.isChrome).toEqual(false)
114+
expect(result.isFirefox).toEqual(false)
115+
expect(result.isEdge).toEqual(false)
116+
expect(result.isSafari).toEqual(false)
117+
expect(result.isSamsung).toEqual(true)
118+
})
119+
})
120+
73121
describe('detects an-app browser', () => {
74122
it('Instagram', () => {
75123
const userAgent =

0 commit comments

Comments
 (0)