test_ua_parser.js (5060B)
1 /* Any copyright is dedicated to the Public Domain. 2 http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 "use strict"; 5 6 // Test for user agent parser. 7 8 const { 9 parseUserAgent, 10 } = require("resource://devtools/client/responsive/utils/ua.js"); 11 12 const TEST_DATA = [ 13 { 14 userAgent: 15 "Mozilla/5.0 (Android 4.4.3; Tablet; rv:41.0) Gecko/41.0 Firefox/41.0", 16 expectedBrowser: { name: "Firefox", version: "41" }, 17 expectedOS: { name: "Android", version: "4.4.3" }, 18 }, 19 { 20 userAgent: 21 "Mozilla/5.0 (Android 8.0.0; Mobile; rv:70.0) Gecko/70.0 Firefox/70.0", 22 expectedBrowser: { name: "Firefox", version: "70" }, 23 expectedOS: { name: "Android", version: "8" }, 24 }, 25 { 26 userAgent: 27 "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/70.1", 28 expectedBrowser: { name: "Firefox", version: "70.1" }, 29 expectedOS: { name: "Windows NT", version: "6.1" }, 30 }, 31 { 32 userAgent: 33 "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:61.0) Gecko/20100101 Firefox/70.0", 34 expectedBrowser: { name: "Firefox", version: "70" }, 35 expectedOS: { name: "Mac OSX", version: "10.13" }, 36 }, 37 { 38 userAgent: 39 "Mozilla/5.0 (X11; Linux i586; rv:31.0) Gecko/20100101 Firefox/70.0", 40 expectedBrowser: { name: "Firefox", version: "70" }, 41 expectedOS: { name: "Linux", version: null }, 42 }, 43 { 44 userAgent: 45 "Mozilla/5.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) FxiOS/13.2b11866 Mobile/16A366 Safari/605.1.15", 46 expectedBrowser: { name: "Firefox", version: "13.2b11866" }, 47 expectedOS: { name: "iOS", version: "12" }, 48 }, 49 { 50 userAgent: 51 "Mozilla/5.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/12.0 Mobile/15A372 Safari/604.1", 52 expectedBrowser: { name: "Safari", version: "12" }, 53 expectedOS: { name: "iOS", version: "12" }, 54 }, 55 { 56 userAgent: 57 "Mozilla/5.0 (iPad; CPU OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1", 58 expectedBrowser: { name: "Safari", version: "14.1" }, 59 expectedOS: { name: "iPadOS", version: "14.7.1" }, 60 }, 61 { 62 userAgent: 63 "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/601.7.8 (KHTML, like Gecko) Version/9.1.2 Safari/601.7.7", 64 expectedBrowser: { name: "Safari", version: "9.1" }, 65 expectedOS: { name: "Mac OSX", version: "10.11.6" }, 66 }, 67 { 68 userAgent: 69 "Mozilla/5.0 (Linux; Android 8.0.0; Nexus 6P Build/OPP3.170518.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Mobile Safari/537.36", 70 expectedBrowser: { name: "Chrome", version: "67" }, 71 expectedOS: { name: "Android", version: "8" }, 72 }, 73 { 74 userAgent: 75 "Mozilla/5.0 (Linux; Android 11; SAMSUNG SM-G973U) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/14.2 Chrome/87.0.4280.141 Mobile Safari/537.36", 76 expectedBrowser: { name: "Chrome", version: "87" }, 77 expectedOS: { name: "Android", version: "11" }, 78 }, 79 { 80 userAgent: 81 "Mozilla/5.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/69.0.3497.105 Mobile/15E148 Safari/605.1", 82 expectedBrowser: { name: "Chrome", version: "69" }, 83 expectedOS: { name: "iOS", version: "12" }, 84 }, 85 { 86 userAgent: 87 "Mozilla/5.0 (X11; CrOS x86_64 11895.118.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.159 Safari/537.36", 88 expectedBrowser: { name: "Chrome", version: "74" }, 89 expectedOS: { name: "Chrome OS", version: "11895.118" }, 90 }, 91 { 92 userAgent: 93 "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 950) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Mobile Safari/537.36 Edge/14.14263", 94 expectedBrowser: { name: "Edge", version: "14.14263" }, 95 expectedOS: { name: "Windows Phone", version: "10.0" }, 96 }, 97 { 98 userAgent: 99 "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36 OPR/43.0.2442.991", 100 expectedBrowser: { name: "Opera", version: "43" }, 101 expectedOS: { name: "Windows NT", version: "10.0" }, 102 }, 103 { 104 userAgent: 105 "Opera/9.80 (Linux armv7l) Presto/2.12.407 Version/12.51 , D50u-D1-UHD/V1.5.16-UHD (Vizio, D50u-D1, Wireless)", 106 expectedBrowser: { name: "Opera", version: "9.80" }, 107 expectedOS: { name: "Linux", version: null }, 108 }, 109 { 110 userAgent: 111 "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)", 112 expectedBrowser: { name: "IE", version: "6" }, 113 expectedOS: { name: "Windows NT", version: "5.1" }, 114 }, 115 { 116 userAgent: "1080p Full HD Television", 117 expectedBrowser: null, 118 expectedOS: null, 119 }, 120 ]; 121 122 add_task(async function () { 123 for (const { userAgent, expectedBrowser, expectedOS } of TEST_DATA) { 124 info(`Test for ${userAgent}`); 125 const { browser, os } = parseUserAgent(userAgent); 126 deepEqual(browser, expectedBrowser, "Parsed browser is correct"); 127 deepEqual(os, expectedOS, "Parsed OS is correct"); 128 } 129 });