@@ -220,45 +220,220 @@ describe('Map UA-CH headers', () => {
220220 } ) ;
221221} ) ;
222222
223- describe ( 'Browser naming adjustments ' , ( ) => {
223+ describe ( 'UA-CH Headers tests ' , ( ) => {
224224 [
225225 {
226- ua_ch : '"Google Chrome";v="111", "Not(A:Brand";v="8", "Chromium";v="111"' ,
226+ headers : {
227+ 'sec-ch-ua' : '"Avast Secure Browser";v="131", "Chromium";v="131", "Not_A Brand";v="24"'
228+ } ,
227229 expect : {
228- before : 'Google Chrome' ,
229- after : 'Chrome'
230+ browser : {
231+ name : 'Avast Secure Browser' ,
232+ version : '131' ,
233+ major : '131' ,
234+ type : undefined
235+ }
230236 }
231237 } ,
232238 {
233- ua_ch : '"Not_A Brand";v="8", "Chromium";v="120", "Microsoft Edge";v="120"' ,
239+ headers : {
240+ 'sec-ch-ua' : '"Not A(Brand";v="8", "Chromium";v="132", "Brave";v="132"'
241+ } ,
234242 expect : {
235- before : "Microsoft Edge" ,
236- after : "Edge"
243+ browser : {
244+ name : 'Brave' ,
245+ version : '132' ,
246+ major : '132' ,
247+ type : undefined
248+ }
237249 }
238250 } ,
239251 {
240- ua_ch : '"Android WebView";v="123", "Not:A-Brand";v="8", "Chromium";v="123"' ,
252+ headers : {
253+ 'sec-ch-ua' : '"Google Chrome";v="111", "Not(A:Brand";v="8", "Chromium";v="111"'
254+ } ,
241255 expect : {
242- before : "Android WebView" ,
243- after : "Chrome WebView"
256+ browser : {
257+ name : 'Chrome' ,
258+ version : '111' ,
259+ major : '111' ,
260+ type : undefined
261+ }
244262 }
245263 } ,
246264 {
247- ua_ch : '"Chromium";v="124", "HeadlessChrome";v="124", "Not-A.Brand";v="99"' ,
265+ headers : {
266+ 'sec-ch-ua' : '"Chromium";v="124", "HeadlessChrome";v="124", "Not-A.Brand";v="99"'
267+ } ,
248268 expect : {
249- before : "HeadlessChrome" ,
250- after : "Chrome Headless"
269+ browser : {
270+ name : 'Chrome Headless' ,
271+ version : '124' ,
272+ major : '124' ,
273+ type : undefined
274+ }
275+ }
276+ } ,
277+ {
278+ headers : {
279+ 'sec-ch-ua' : '"Android WebView";v="123", "Not:A-Brand";v="8", "Chromium";v="123"'
280+ } ,
281+ expect : {
282+ browser : {
283+ name : 'Chrome WebView' ,
284+ version : '123' ,
285+ major : '123' ,
286+ type : undefined
287+ }
288+ }
289+ } ,
290+ {
291+ headers : {
292+ 'sec-ch-ua' : '"DuckDuckGo";v="131", "Chromium";v="131", "Not_A Brand";v="24"'
293+ } ,
294+ expect : {
295+ browser : {
296+ name : 'DuckDuckGo' ,
297+ version : '131' ,
298+ major : '131' ,
299+ type : undefined
300+ }
301+ }
302+ } ,
303+ {
304+ headers : {
305+ 'sec-ch-ua' : '"Not_A Brand";v="8", "Chromium";v="120", "Microsoft Edge";v="120"'
306+ } ,
307+ expect : {
308+ browser : {
309+ name : 'Edge' ,
310+ version : '120' ,
311+ major : '120' ,
312+ type : undefined
313+ }
314+ }
315+ } ,
316+ {
317+ headers : {
318+ 'sec-ch-ua' : '"Not.A/Brand";v="8", "Chromium";v="114", "HuaweiBrowser";v="114"'
319+ } ,
320+ expect : {
321+ browser : {
322+ name : 'Huawei Browser' ,
323+ version : '114' ,
324+ major : '114' ,
325+ type : undefined
326+ }
327+ }
328+ } ,
329+ {
330+ headers : {
331+ 'sec-ch-ua' : '"Miui Browser";v="123", "Not:A-Brand";v="8", "Chromium";v="123"'
332+ } ,
333+ expect : {
334+ browser : {
335+ name : 'MIUI Browser' ,
336+ version : '123' ,
337+ major : '123' ,
338+ type : undefined
339+ }
340+ }
341+ } ,
342+ {
343+ headers : {
344+ 'sec-ch-ua' : '"Chromium";v="130", "Oculus Browser";v="36", "Not?A_Brand";v="99"'
345+ } ,
346+ expect : {
347+ browser : {
348+ name : 'Oculus Browser' ,
349+ version : '36' ,
350+ major : '36' ,
351+ type : undefined
352+ }
353+ }
354+ } ,
355+ {
356+ headers : {
357+ 'sec-ch-ua' : '"Opera";v="116", "Chromium";v="131", "Not_A Brand";v="24"'
358+ } ,
359+ expect : {
360+ browser : {
361+ name : 'Opera' ,
362+ version : '116' ,
363+ major : '116' ,
364+ type : undefined
365+ }
366+ }
367+ } ,
368+ {
369+ headers : {
370+ 'sec-ch-ua' : '"Chromium";v="128", "Not;A=Brand";v="24", "Opera GX";v="114"'
371+ } ,
372+ expect : {
373+ browser : {
374+ name : 'Opera GX' ,
375+ version : '114' ,
376+ major : '114' ,
377+ type : undefined
378+ }
379+ }
380+ } ,
381+ {
382+ headers : {
383+ 'sec-ch-ua' : '"OperaMobile";v="86", ";Not A Brand";v="99", "Opera";v="115", "Chromium";v="130"'
384+ } ,
385+ expect : {
386+ browser : {
387+ name : 'Opera Mobi' ,
388+ version : '86' ,
389+ major : '86' ,
390+ type : undefined
391+ }
392+ }
393+ } ,
394+ {
395+ headers : {
396+ 'sec-ch-ua' : '"Chromium";v="132", "OperaMobile";v="87", "Opera";v="117", " Not A;Brand";v="99"'
397+ } ,
398+ expect : {
399+ browser : {
400+ name : 'Opera Mobi' ,
401+ version : '87' ,
402+ major : '87' ,
403+ type : undefined
404+ }
405+ }
406+ } ,
407+ {
408+ headers : {
409+ 'sec-ch-ua' : '"Chromium";v="125", "Not.A/Brand";v="24", "Samsung Internet";v="27.0"'
410+ } ,
411+ expect : {
412+ browser : {
413+ name : 'Samsung Internet' ,
414+ version : '27.0' ,
415+ major : '27' ,
416+ type : undefined
417+ }
418+ }
419+ } ,
420+ {
421+ headers : {
422+ 'sec-ch-ua' : '"Chromium";v="130", "YaBrowser";v="24.12", "Not?A_Brand";v="99", "Yowser";v="2.5"'
423+ } ,
424+ expect : {
425+ browser : {
426+ name : 'Yandex' ,
427+ version : '24.12' ,
428+ major : '24' ,
429+ type : undefined
430+ }
251431 }
252432 } ,
253433 ]
254434 . forEach ( test => {
255- it ( `"${ test . expect . before } " => "${ test . expect . after } "` , ( ) => {
256- const headers = {
257- 'sec-ch-ua' : test . ua_ch ,
258- } ;
259- const { browser } = UAParser ( headers ) . withClientHints ( ) ;
260- assert . strictEqual ( browser . name , test . expect . after ) ;
261- } ) ;
435+ const { browser } = UAParser ( test . headers ) . withClientHints ( ) ;
436+ assert . deepEqual ( browser , test . expect . browser ) ;
262437 } ) ;
263438} ) ;
264439
0 commit comments