mirror of
https://github.com/faisalman/ua-parser-js.git
synced 2025-09-27 16:08:47 +03:00
222 lines
5.5 KiB
JavaScript
222 lines
5.5 KiB
JavaScript
const assert = require('assert');
|
|
const { UAParser } = require('../../src/main/ua-parser');
|
|
|
|
describe('Browser naming adjustments', () => {
|
|
|
|
it('Google Chrome => Chrome', () => {
|
|
const headers = {
|
|
'sec-ch-ua' : '"Google Chrome";v="111", "Not(A:Brand";v="8", "Chromium";v="111"',
|
|
};
|
|
const { browser } = UAParser(headers).withClientHints();
|
|
assert.strictEqual(browser.name, 'Chrome');
|
|
});
|
|
|
|
it('Microsoft Edge => Edge', () => {
|
|
const headers = {
|
|
'sec-ch-ua' : '"Not_A Brand";v="8", "Chromium";v="120", "Microsoft Edge";v="120"',
|
|
};
|
|
const { browser } = UAParser(headers).withClientHints();
|
|
assert.strictEqual(browser.name, 'Edge');
|
|
});
|
|
|
|
it('Android WebView => Chrome WebView', () => {
|
|
const headers = {
|
|
'sec-ch-ua' : '"Android WebView";v="123", "Not:A-Brand";v="8", "Chromium";v="123"',
|
|
};
|
|
const { browser } = UAParser(headers).withClientHints();
|
|
assert.strictEqual(browser.name, 'Chrome WebView');
|
|
});
|
|
|
|
it('HeadlessChrome => Chrome Headless', () => {
|
|
const headers = {
|
|
'sec-ch-ua' : '"Chromium";v="124", "HeadlessChrome";v="124", "Not-A.Brand";v="99"',
|
|
};
|
|
const { browser } = UAParser(headers).withClientHints();
|
|
assert.strictEqual(browser.name, 'Chrome Headless');
|
|
});
|
|
});
|
|
|
|
describe('Identify vendor & type of device from given model name', () => {
|
|
|
|
[
|
|
{
|
|
model: '220733SG',
|
|
expect: {
|
|
vendor : 'Xiaomi',
|
|
type : 'mobile'
|
|
}
|
|
},
|
|
{
|
|
model: '5087Z',
|
|
expect: {
|
|
vendor : 'TCL',
|
|
type : 'mobile'
|
|
}
|
|
},
|
|
{
|
|
model: '9137W',
|
|
expect: {
|
|
vendor : 'TCL',
|
|
type : 'tablet'
|
|
}
|
|
},
|
|
{
|
|
model: 'BE2015',
|
|
expect: {
|
|
vendor : 'OnePlus',
|
|
type : 'mobile'
|
|
}
|
|
},
|
|
{
|
|
model: 'CPH2389',
|
|
expect: {
|
|
vendor : 'OPPO',
|
|
type : 'mobile'
|
|
}
|
|
},
|
|
{
|
|
model: 'Infinix X669C',
|
|
expect: {
|
|
vendor : 'Infinix',
|
|
type : 'mobile'
|
|
}
|
|
},
|
|
{
|
|
model: 'itel L6502',
|
|
expect: {
|
|
vendor : 'itel',
|
|
type : 'mobile'
|
|
}
|
|
},
|
|
{
|
|
model: 'Lenovo TB-X606F',
|
|
expect: {
|
|
vendor : 'Lenovo',
|
|
type : 'tablet'
|
|
}
|
|
},
|
|
{
|
|
model: 'LM-Q720',
|
|
expect: {
|
|
vendor : 'LG',
|
|
type : 'mobile'
|
|
}
|
|
},
|
|
{
|
|
model: 'M2003J15SC',
|
|
expect: {
|
|
vendor : 'Xiaomi',
|
|
type : 'mobile'
|
|
}
|
|
},
|
|
{
|
|
model: 'MAR-LX1A',
|
|
expect: {
|
|
vendor : 'Huawei',
|
|
type : 'mobile'
|
|
}
|
|
},
|
|
{
|
|
model: 'moto g(20)',
|
|
expect: {
|
|
vendor : 'Motorola',
|
|
type : 'mobile'
|
|
}
|
|
},
|
|
{
|
|
model: 'Nokia C210',
|
|
expect: {
|
|
vendor : 'Nokia',
|
|
type : 'mobile'
|
|
}
|
|
},
|
|
{
|
|
model: 'Pixel 8',
|
|
expect: {
|
|
vendor : 'Google',
|
|
type : 'mobile'
|
|
}
|
|
},
|
|
{
|
|
model: 'Redmi Note 9S',
|
|
expect: {
|
|
vendor : 'Xiaomi',
|
|
type : 'mobile'
|
|
}
|
|
},
|
|
{
|
|
model: 'RMX3830',
|
|
expect: {
|
|
vendor : 'Realme',
|
|
type : 'mobile'
|
|
}
|
|
},
|
|
{
|
|
model: 'SM-S536DL',
|
|
expect: {
|
|
vendor : 'Samsung',
|
|
type : 'mobile'
|
|
}
|
|
},
|
|
{
|
|
model: 'SM-S546VL',
|
|
expect: {
|
|
vendor : 'Samsung',
|
|
type : 'mobile'
|
|
}
|
|
},
|
|
{
|
|
model: 'SM-T875',
|
|
expect: {
|
|
vendor : 'Samsung',
|
|
type : 'tablet'
|
|
}
|
|
},
|
|
{
|
|
model: 'STK-L21',
|
|
expect: {
|
|
vendor : 'Huawei',
|
|
type : 'mobile'
|
|
}
|
|
},
|
|
{
|
|
model: 'T430W',
|
|
expect: {
|
|
vendor : 'TCL',
|
|
type : 'mobile'
|
|
}
|
|
},
|
|
{
|
|
model: 'TECNO KI5k',
|
|
expect: {
|
|
vendor : 'TECNO',
|
|
type : 'mobile'
|
|
}
|
|
},
|
|
{
|
|
model: 'vivo 1820',
|
|
expect: {
|
|
vendor : 'Vivo',
|
|
type : 'mobile'
|
|
}
|
|
},
|
|
{
|
|
model: 'Xbox',
|
|
expect: {
|
|
vendor : 'Microsoft',
|
|
type : 'console'
|
|
}
|
|
}
|
|
]
|
|
.forEach((test) => {
|
|
it(`Solve "${test.model}"`, () => {
|
|
const headers = {
|
|
'sec-ch-ua-model' : test.model,
|
|
};
|
|
const { device } = UAParser(headers).withClientHints();
|
|
assert.strictEqual(device.model, test.model);
|
|
assert.strictEqual(device.vendor, test.expect.vendor);
|
|
assert.strictEqual(device.type, test.expect.type);
|
|
});
|
|
});
|
|
}); |