1
+ /**
2
+ * @license
3
+ * Copyright 2020 Google LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ import { expect } from 'chai' ;
19
+ import { getBrowserName , BrowserName } from "./browser" ;
20
+
21
+ describe ( 'getBrowserName' , ( ) => {
22
+ it ( 'should recognize Opera' , ( ) => {
23
+ const userAgent = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36 OPR/36.0.2130.74' ;
24
+ expect ( getBrowserName ( userAgent ) ) . to . eq ( BrowserName . OPERA ) ;
25
+ } ) ;
26
+
27
+ it ( 'should recognize IE' , ( ) => {
28
+ const userAgent = 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)' ;
29
+ expect ( getBrowserName ( userAgent ) ) . to . eq ( BrowserName . IE ) ;
30
+ } ) ;
31
+
32
+ it ( 'should recognize Edge' , ( ) => {
33
+ const userAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240' ;
34
+ expect ( getBrowserName ( userAgent ) ) . to . eq ( BrowserName . EDGE ) ;
35
+ } ) ;
36
+
37
+ it ( 'should recognize Firefox' , ( ) => {
38
+ const userAgent = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:46.0) Gecko/20100101 Firefox/46.0' ;
39
+ expect ( getBrowserName ( userAgent ) ) . to . eq ( BrowserName . FIREFOX ) ;
40
+ } ) ;
41
+
42
+ it ( 'should recognize Silk' , ( ) => {
43
+ const userAgent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Silk/44.1.54 like Chrome/44.0.2403.63 Safari/537.36' ;
44
+ expect ( getBrowserName ( userAgent ) ) . to . eq ( BrowserName . SILK ) ;
45
+ } ) ;
46
+
47
+ it ( 'should recognize Safari' , ( ) => {
48
+ const userAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11-4) AppleWebKit/601.5.17 (KHTML, like Gecko) Version/9.1 Safari/601.5.17' ;
49
+ expect ( getBrowserName ( userAgent ) ) . to . eq ( BrowserName . SAFARI ) ;
50
+ } ) ;
51
+
52
+ it ( 'should recognize Chrome' , ( ) => {
53
+ const userAgent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36' ;
54
+ expect ( getBrowserName ( userAgent ) ) . to . eq ( BrowserName . CHROME ) ;
55
+ } ) ;
56
+
57
+ it ( 'should recognize Android' , ( ) => {
58
+ const userAgent = 'Mozilla/5.0 (Linux; U; Android 4.0.3; ko-kr; LG-L160L Build/IML74K) AppleWebkit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' ;
59
+ expect ( getBrowserName ( userAgent ) ) . to . eq ( BrowserName . ANDROID ) ;
60
+ } ) ;
61
+
62
+ it ( 'should recognize Blackberry' , ( ) => {
63
+ const userAgent = 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9900; en) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.346 Mobile Safari/534.11+' ;
64
+ expect ( getBrowserName ( userAgent ) ) . to . eq ( BrowserName . BLACKBERRY ) ;
65
+ } ) ;
66
+
67
+ it ( 'should recognize IE Mobile' , ( ) => {
68
+ const userAgent = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0;Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920)' ;
69
+ expect ( getBrowserName ( userAgent ) ) . to . eq ( BrowserName . IEMOBILE ) ;
70
+ } ) ;
71
+
72
+ it ( 'should recognize WebOS' , ( ) => {
73
+ const userAgent = 'Mozilla/5.0 (webOS/1.3; U; en-US) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/1.0 Safari/525.27.1 Desktop/1.0' ;
74
+ expect ( getBrowserName ( userAgent ) ) . to . eq ( BrowserName . WEBOS ) ;
75
+ } ) ;
76
+
77
+ it ( 'should recognize an unlisted browser' , ( ) => {
78
+ const userAgent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Awesome/2.0.012' ;
79
+ expect ( getBrowserName ( userAgent ) ) . to . eq ( 'Awesome' ) ;
80
+ } ) ;
81
+
82
+ it ( 'should default to Other' , ( ) => {
83
+ const userAgent = 'Mozilla/5.0 (iPhone; CPU iPhone OS 8_2 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12D508 [FBAN/FBIOS;FBAV/27.0.0.10.12;FBBV/8291884;FBDV/iPhone7,1;FBMD/iPhone;FBSN/iPhone OS;FBSV/8.2;FBSS/3; FBCR/vodafoneIE;FBID/phone;FBLC/en_US;FBOP/5]' ;
84
+ expect ( getBrowserName ( userAgent ) ) . to . eq ( BrowserName . OTHER ) ;
85
+ } ) ;
86
+ } ) ;
0 commit comments