browser.js 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. describe('BrowserService', function() {
  2. function testUserAgent(agent) {
  3. let $service;
  4. module('3ema.services');
  5. module(function($provide) {
  6. $provide.value('$window', {
  7. navigator: { userAgent: agent }
  8. });
  9. });
  10. inject(function(BrowserService) {
  11. $service = BrowserService;
  12. });
  13. return $service;
  14. }
  15. it('firefox', () => {
  16. const ua = 'Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0';
  17. const service = testUserAgent(ua);
  18. const browser = service.getBrowser();
  19. expect(browser.chrome).toBe(false);
  20. expect(browser.firefox).toBe(true);
  21. expect(browser.fxios).toBe(false);
  22. expect(browser.ie).toBe(false);
  23. expect(browser.edge).toBe(false);
  24. expect(browser.opera).toBe(false);
  25. expect(browser.safari).toBe(false);
  26. expect(browser.name).toEqual('firefox');
  27. expect(browser.version).toEqual(59);
  28. expect(browser.mobile).toBe(false);
  29. expect(browser.textInfo).toEqual('Firefox 59');
  30. });
  31. it('fxiosMobile', () => {
  32. const ua = 'Mozilla/5.0 (iPad; CPU OS 10_0_1 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) FxiOS/8.3b5826 Mobile/14A403 Safari/602.1.50';
  33. const service = testUserAgent(ua);
  34. const browser = service.getBrowser();
  35. expect(browser.chrome).toBe(false);
  36. expect(browser.firefox).toBe(false);
  37. expect(browser.fxios).toBe(true);
  38. expect(browser.ie).toBe(false);
  39. expect(browser.edge).toBe(false);
  40. expect(browser.opera).toBe(false);
  41. expect(browser.safari).toBe(false);
  42. expect(browser.name).toEqual('fxios');
  43. expect(browser.version).toEqual(8);
  44. expect(browser.mobile).toBe(true);
  45. expect(browser.textInfo).toEqual('Firefox (iOS) 8 [Mobile]');
  46. });
  47. it('chrome', () => {
  48. const ua = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36';
  49. const service = testUserAgent(ua);
  50. const browser = service.getBrowser();
  51. expect(browser.chrome).toBe(true);
  52. expect(browser.firefox).toBe(false);
  53. expect(browser.ie).toBe(false);
  54. expect(browser.edge).toBe(false);
  55. expect(browser.opera).toBe(false);
  56. expect(browser.safari).toBe(false);
  57. expect(browser.name).toEqual('chrome');
  58. expect(browser.version).toEqual(65);
  59. expect(browser.mobile).toBe(false);
  60. expect(browser.textInfo).toEqual('Chrome 65');
  61. });
  62. it('ie9', () => {
  63. const ua = 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 7.1; Trident/5.0)';
  64. const service = testUserAgent(ua);
  65. const browser = service.getBrowser();
  66. expect(browser.chrome).toBe(false);
  67. expect(browser.firefox).toBe(false);
  68. expect(browser.fxios).toBe(false);
  69. expect(browser.ie).toBe(true);
  70. expect(browser.edge).toBe(false);
  71. expect(browser.opera).toBe(false);
  72. expect(browser.safari).toBe(false);
  73. expect(browser.name).toEqual('ie');
  74. expect(browser.version).toEqual(9);
  75. expect(browser.mobile).toBe(false);
  76. expect(browser.textInfo).toEqual('Internet Explorer 9');
  77. });
  78. it('ie11', () => {
  79. const ua = 'Mozilla/5.0 (compatible, MSIE 11, Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko';
  80. const service = testUserAgent(ua);
  81. const browser = service.getBrowser();
  82. expect(browser.chrome).toBe(false);
  83. expect(browser.firefox).toBe(false);
  84. expect(browser.fxios).toBe(false);
  85. expect(browser.ie).toBe(true);
  86. expect(browser.edge).toBe(false);
  87. expect(browser.opera).toBe(false);
  88. expect(browser.safari).toBe(false);
  89. expect(browser.name).toEqual('ie');
  90. expect(browser.version).toEqual(11);
  91. expect(browser.mobile).toBe(false);
  92. expect(browser.textInfo).toEqual('Internet Explorer 11');
  93. });
  94. it('edge12', () => {
  95. const ua = '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.246';
  96. const service = testUserAgent(ua);
  97. const browser = service.getBrowser();
  98. expect(browser.chrome).toBe(false);
  99. expect(browser.firefox).toBe(false);
  100. expect(browser.fxios).toBe(false);
  101. expect(browser.ie).toBe(false);
  102. expect(browser.edge).toBe(true);
  103. expect(browser.opera).toBe(false);
  104. expect(browser.safari).toBe(false);
  105. expect(browser.name).toEqual('edge');
  106. expect(browser.version).toEqual(12);
  107. expect(browser.mobile).toBe(false);
  108. expect(browser.textInfo).toEqual('Edge 12');
  109. });
  110. it('opera', () => {
  111. const ua = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36 OPR/51.0.2830.55';
  112. const service = testUserAgent(ua);
  113. const browser = service.getBrowser();
  114. expect(browser.chrome).toBe(false);
  115. expect(browser.firefox).toBe(false);
  116. expect(browser.fxios).toBe(false);
  117. expect(browser.ie).toBe(false);
  118. expect(browser.edge).toBe(false);
  119. expect(browser.opera).toBe(true);
  120. expect(browser.safari).toBe(false);
  121. expect(browser.name).toEqual('opera');
  122. expect(browser.version).toEqual(51);
  123. expect(browser.mobile).toBe(false);
  124. expect(browser.textInfo).toEqual('Opera 51');
  125. });
  126. it('safari7', () => {
  127. const ua = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/7046A194A';
  128. const service = testUserAgent(ua);
  129. const browser = service.getBrowser();
  130. expect(browser.chrome).toBe(false);
  131. expect(browser.firefox).toBe(false);
  132. expect(browser.fxios).toBe(false);
  133. expect(browser.ie).toBe(false);
  134. expect(browser.edge).toBe(false);
  135. expect(browser.opera).toBe(false);
  136. expect(browser.safari).toBe(true);
  137. expect(browser.name).toEqual('safari');
  138. expect(browser.version).toEqual(7);
  139. expect(browser.mobile).toBe(false);
  140. expect(browser.textInfo).toEqual('Safari 7');
  141. });
  142. it('safari11', () => {
  143. const ua = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/604.5.6 (KHTML, like Gecko) Version/11.0.3 Safari/604.5.6';
  144. const service = testUserAgent(ua);
  145. const browser = service.getBrowser();
  146. expect(browser.chrome).toBe(false);
  147. expect(browser.firefox).toBe(false);
  148. expect(browser.fxios).toBe(false);
  149. expect(browser.ie).toBe(false);
  150. expect(browser.edge).toBe(false);
  151. expect(browser.opera).toBe(false);
  152. expect(browser.safari).toBe(true);
  153. expect(browser.name).toEqual('safari');
  154. expect(browser.version).toEqual(11);
  155. expect(browser.mobile).toBe(false);
  156. expect(browser.textInfo).toEqual('Safari 11');
  157. });
  158. it('safari10Mobile', () => {
  159. const ua = 'Mozilla/5.0 (iPad; CPU OS 10_0_1 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) Version/10.0 Mobile/14A403 Safari/602.1';
  160. const service = testUserAgent(ua);
  161. const browser = service.getBrowser();
  162. expect(browser.chrome).toBe(false);
  163. expect(browser.firefox).toBe(false);
  164. expect(browser.fxios).toBe(false);
  165. expect(browser.ie).toBe(false);
  166. expect(browser.edge).toBe(false);
  167. expect(browser.opera).toBe(false);
  168. expect(browser.safari).toBe(true);
  169. expect(browser.name).toEqual('safari');
  170. expect(browser.version).toEqual(10);
  171. expect(browser.mobile).toBe(true);
  172. expect(browser.textInfo).toEqual('Safari 10 [Mobile]');
  173. });
  174. });