Skip to content

Instantly share code, notes, and snippets.

@wenshin
Created January 7, 2022 09:05
Show Gist options
  • Save wenshin/1e612979b42c1a3aa028c27222f00876 to your computer and use it in GitHub Desktop.
Save wenshin/1e612979b42c1a3aa028c27222f00876 to your computer and use it in GitHub Desktop.
import { parseUA } from './parseUA';
test('parseUA', () => {
expect(
parseUA(
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36'
)
).toEqual({
os: 'macOS',
osVersion: '10_15_7',
device: 'Macintosh',
deviceModel: 'Macintosh',
});
expect(
parseUA(
'Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
)
).toEqual({
os: 'iOS',
osVersion: '12_2',
device: 'iPhone',
deviceModel: 'iPhone',
});
expect(
parseUA(
'Mozilla/5.0 (iPad; CPU OS 13_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Mobile/15E148 Safari/604.1'
)
).toEqual({
os: 'iOS',
osVersion: '13_0',
device: 'iPad',
deviceModel: 'iPad',
});
expect(
parseUA(
'Mozilla/5.0 (Linux; Android 8.1.0; BBE100-2 Build/OPM1.171019.026) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36'
)
).toEqual({
os: 'Android',
osVersion: '8.1.0',
device: 'BBE100-2',
deviceModel: 'BBE100-2',
});
expect(
parseUA(
'Dalvik/2.1.0 (Linux; U; Android 8.1.0; motorola one power Build/OPT28.81-39)'
)
).toEqual({
os: 'Android',
osVersion: '8.1.0',
device: 'motorola',
deviceModel: 'motorola one power',
});
expect(
parseUA(
'Mozilla/5.0 (Linux; Android 8.1.0; SAMSUNG SM-N960F Build/M1AJQ) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/8.0 Chrome/63.0.3239.111 Mobile Safari/537.36'
)
).toEqual({
os: 'Android',
osVersion: '8.1.0',
device: 'SAMSUNG',
deviceModel: 'SAMSUNG SM-N960F',
});
expect(
parseUA(
'Mozilla/5.0 (Linux; Android 8.1.0; SM-N960F Build/M1AJQ) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/8.0 Chrome/63.0.3239.111 Mobile Safari/537.36'
)
).toEqual({
os: 'Android',
osVersion: '8.1.0',
device: 'SM-N960F',
deviceModel: 'SM-N960F',
});
expect(
parseUA(
'Mozilla/5.0 (Linux; Android 8.1.0; SM-T830 Build/M1AJQ; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/68.0.3440.91 Safari/537.36'
)
).toEqual({
os: 'Android',
osVersion: '8.1.0',
device: 'SM-T830',
deviceModel: 'SM-T830',
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment