Browser.spec.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387
  1. import {
  2. isChrome,
  3. isEdge,
  4. isIE,
  5. isMobileBrowser,
  6. isMSBrowser,
  7. isSafari,
  8. setBrowserMeta,
  9. } from 'handsontable/helpers/browser';
  10. describe('Browser helper', () => {
  11. describe('isMobileBrowser', () => {
  12. it('should recognize mobile device properly', () => {
  13. setBrowserMeta({
  14. userAgent: 'Mozilla/5.0 (iPhone; CPU iPhone OS 8_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12B411 Safari/600.1.4'
  15. });
  16. expect(isMobileBrowser()).toBeTruthy();
  17. setBrowserMeta({
  18. userAgent: 'Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_2 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D257 Safari/9537.53'
  19. });
  20. expect(isMobileBrowser()).toBeTruthy();
  21. setBrowserMeta({
  22. userAgent: 'Mozilla/5.0 (iPad; CPU OS 8_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12B410 Safari/600.1.4'
  23. });
  24. expect(isMobileBrowser()).toBeTruthy();
  25. setBrowserMeta({
  26. userAgent: 'Mozilla/5.0 (iPad; CPU OS 8_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12B410 Safari/600.1.4'
  27. });
  28. expect(isMobileBrowser()).toBeTruthy();
  29. setBrowserMeta({
  30. userAgent: 'Mozilla/5.0 (iPhone; CPU iPhone OS 8_1_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12B435 Safari/600.1.4'
  31. });
  32. expect(isMobileBrowser()).toBeTruthy();
  33. setBrowserMeta({
  34. 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'
  35. });
  36. expect(isMobileBrowser()).toBeTruthy();
  37. setBrowserMeta({
  38. userAgent: 'Mozilla/5.0 (Linux; U; Android 4.0.3; de-ch; HTC Sensation Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30'
  39. });
  40. expect(isMobileBrowser()).toBeTruthy();
  41. setBrowserMeta({
  42. userAgent: 'Mozilla/5.0 (Linux; U; Android 2.3.5; en-us; HTC Vision Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1'
  43. });
  44. expect(isMobileBrowser()).toBeTruthy();
  45. setBrowserMeta({
  46. userAgent: 'Mozilla/5.0 (Linux; U; Android 2.3.3; zh-tw; HTC_Pyramid Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari'
  47. });
  48. expect(isMobileBrowser()).toBeTruthy();
  49. setBrowserMeta({
  50. userAgent: 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0)'
  51. });
  52. expect(isMobileBrowser()).toBeTruthy();
  53. setBrowserMeta({
  54. userAgent: 'HTC_Touch_3G Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11)'
  55. });
  56. expect(isMobileBrowser()).toBeTruthy();
  57. setBrowserMeta({
  58. userAgent: 'Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; Nokia;N70)'
  59. });
  60. expect(isMobileBrowser()).toBeTruthy();
  61. });
  62. it('should recognize desktop device properly', () => {
  63. setBrowserMeta({
  64. userAgent: 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36'
  65. });
  66. expect(isMobileBrowser()).toBeFalsy();
  67. setBrowserMeta({
  68. userAgent: 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0'
  69. });
  70. expect(isMobileBrowser()).toBeFalsy();
  71. setBrowserMeta({
  72. userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10) AppleWebKit/600.1.25 (KHTML, like Gecko) Version/8.0 Safari/600.1.25'
  73. });
  74. expect(isMobileBrowser()).toBeFalsy();
  75. setBrowserMeta({
  76. userAgent: 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36'
  77. });
  78. expect(isMobileBrowser()).toBeFalsy();
  79. setBrowserMeta({
  80. userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/600.1.25 (KHTML, like Gecko) Version/8.0 Safari/600.1.25'
  81. });
  82. expect(isMobileBrowser()).toBeFalsy();
  83. setBrowserMeta({
  84. userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36'
  85. });
  86. expect(isMobileBrowser()).toBeFalsy();
  87. setBrowserMeta({
  88. userAgent: 'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko'
  89. });
  90. expect(isMobileBrowser()).toBeFalsy();
  91. setBrowserMeta({
  92. userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/600.1.17 (KHTML, like Gecko) Version/7.1 Safari/537.85.10'
  93. });
  94. expect(isMobileBrowser()).toBeFalsy();
  95. setBrowserMeta({
  96. userAgent: 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:33.0) Gecko/20100101 Firefox/33.0'
  97. });
  98. expect(isMobileBrowser()).toBeFalsy();
  99. setBrowserMeta({
  100. userAgent: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36'
  101. });
  102. expect(isMobileBrowser()).toBeFalsy();
  103. });
  104. });
  105. describe('isIE', () => {
  106. it('should recognize browser properly', () => {
  107. setBrowserMeta({
  108. userAgent: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36'
  109. });
  110. expect(isIE()).toBeFalsy();
  111. setBrowserMeta({
  112. userAgent: 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:33.0) Gecko/20100101 Firefox/33.0'
  113. });
  114. expect(isIE()).toBeFalsy();
  115. setBrowserMeta({
  116. userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/600.1.17 (KHTML, like Gecko) Version/7.1 Safari/537.85.10'
  117. });
  118. expect(isIE()).toBeFalsy();
  119. setBrowserMeta({
  120. userAgent: 'Mozilla/5.0 (iPad; CPU OS 8_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12B410 Safari/600.1.4'
  121. });
  122. expect(isIE()).toBeFalsy();
  123. setBrowserMeta({
  124. userAgent: 'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko'
  125. });
  126. expect(isIE()).toBeTruthy();
  127. setBrowserMeta({
  128. userAgent: 'Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; Nokia;N70)'
  129. });
  130. expect(isIE()).toBeTruthy();
  131. });
  132. });
  133. describe('isEdge', () => {
  134. it('should recognize browser properly', () => {
  135. setBrowserMeta({
  136. userAgent: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36'
  137. });
  138. expect(isEdge()).toBeFalsy();
  139. setBrowserMeta({
  140. userAgent: 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:33.0) Gecko/20100101 Firefox/33.0'
  141. });
  142. expect(isEdge()).toBeFalsy();
  143. setBrowserMeta({
  144. userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/600.1.17 (KHTML, like Gecko) Version/7.1 Safari/537.85.10'
  145. });
  146. expect(isEdge()).toBeFalsy();
  147. setBrowserMeta({
  148. userAgent: 'Mozilla/5.0 (iPad; CPU OS 8_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12B410 Safari/600.1.4'
  149. });
  150. expect(isEdge()).toBeFalsy();
  151. setBrowserMeta({
  152. userAgent: 'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko'
  153. });
  154. expect(isEdge()).toBeFalsy();
  155. setBrowserMeta({
  156. userAgent: 'Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; Nokia;N70)'
  157. });
  158. expect(isEdge()).toBeFalsy();
  159. setBrowserMeta({
  160. userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393'
  161. });
  162. expect(isEdge()).toBeTruthy();
  163. });
  164. });
  165. describe('isMSBrowser', () => {
  166. it('should recognize browser properly', () => {
  167. setBrowserMeta({
  168. userAgent: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36'
  169. });
  170. expect(isMSBrowser()).toBeFalsy();
  171. setBrowserMeta({
  172. userAgent: 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:33.0) Gecko/20100101 Firefox/33.0'
  173. });
  174. expect(isMSBrowser()).toBeFalsy();
  175. setBrowserMeta({
  176. userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/600.1.17 (KHTML, like Gecko) Version/7.1 Safari/537.85.10'
  177. });
  178. expect(isMSBrowser()).toBeFalsy();
  179. setBrowserMeta({
  180. userAgent: 'Mozilla/5.0 (iPad; CPU OS 8_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12B410 Safari/600.1.4'
  181. });
  182. expect(isMSBrowser()).toBeFalsy();
  183. setBrowserMeta({
  184. userAgent: 'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko'
  185. });
  186. expect(isMSBrowser()).toBeTruthy();
  187. setBrowserMeta({
  188. userAgent: 'Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; Nokia;N70)'
  189. });
  190. expect(isMSBrowser()).toBeTruthy();
  191. setBrowserMeta({
  192. userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393'
  193. });
  194. expect(isMSBrowser()).toBeTruthy();
  195. });
  196. });
  197. describe('isSafari', () => {
  198. it('should recognize browser properly', () => {
  199. setBrowserMeta({
  200. userAgent: 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:33.0) Gecko/20100101 Firefox/33.0',
  201. vendor: 'Apple Computer',
  202. });
  203. expect(isSafari()).toBeFalsy();
  204. setBrowserMeta({
  205. userAgent: 'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko',
  206. vendor: 'Apple Computer',
  207. });
  208. expect(isSafari()).toBeFalsy();
  209. setBrowserMeta({
  210. userAgent: 'Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; Nokia;N70)',
  211. vendor: 'Apple Computer',
  212. });
  213. expect(isSafari()).toBeFalsy();
  214. setBrowserMeta({
  215. userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393',
  216. vendor: 'Microsoft Computer',
  217. });
  218. expect(isSafari()).toBeFalsy();
  219. setBrowserMeta({
  220. userAgent: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36',
  221. vendor: 'Apple Computer',
  222. });
  223. expect(isSafari()).toBeTruthy();
  224. setBrowserMeta({
  225. userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/600.1.17 (KHTML, like Gecko) Version/7.1 Safari/537.85.10',
  226. vendor: 'Apple Computer',
  227. });
  228. expect(isSafari()).toBeTruthy();
  229. setBrowserMeta({
  230. userAgent: 'Mozilla/5.0 (iPad; CPU OS 8_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12B410 Safari/600.1.4',
  231. vendor: 'Apple Computer',
  232. });
  233. expect(isSafari()).toBeTruthy();
  234. });
  235. });
  236. describe('isChrome', () => {
  237. it('should recognize browser properly', () => {
  238. setBrowserMeta({
  239. userAgent: 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:33.0) Gecko/20100101 Firefox/33.0',
  240. vendor: 'Apple Computer',
  241. });
  242. expect(isChrome()).toBeFalsy();
  243. setBrowserMeta({
  244. userAgent: 'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko',
  245. vendor: 'Apple Computer',
  246. });
  247. expect(isChrome()).toBeFalsy();
  248. setBrowserMeta({
  249. userAgent: 'Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; Nokia;N70)',
  250. vendor: 'Apple Computer',
  251. });
  252. expect(isChrome()).toBeFalsy();
  253. setBrowserMeta({
  254. userAgent: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36',
  255. vendor: 'Apple Computer',
  256. });
  257. expect(isChrome()).toBeFalsy();
  258. setBrowserMeta({
  259. userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/600.1.17 (KHTML, like Gecko) Version/7.1 Safari/537.85.10',
  260. vendor: 'Apple Computer',
  261. });
  262. expect(isChrome()).toBeFalsy();
  263. setBrowserMeta({
  264. userAgent: 'Mozilla/5.0 (iPad; CPU OS 8_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12B410 Safari/600.1.4',
  265. vendor: 'Apple Computer',
  266. });
  267. expect(isChrome()).toBeFalsy();
  268. setBrowserMeta({
  269. userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393',
  270. vendor: 'Google Inc.',
  271. });
  272. expect(isChrome()).toBeTruthy();
  273. });
  274. });
  275. });