diff options
author | Pierre Ossman <ossman@cendio.se> | 2022-10-13 08:56:47 +0200 |
---|---|---|
committer | Pierre Ossman <ossman@cendio.se> | 2022-12-27 12:50:57 +0100 |
commit | 88a36370a983c86026fdd0a8ac47ce820034c6a0 (patch) | |
tree | 52c514fef92ed9ea5c1ef41343951bfef092e576 /tests | |
parent | 28c9670427ee987e14975fe75159e4bc5d7ee869 (diff) | |
download | novnc-88a36370a983c86026fdd0a8ac47ce820034c6a0.tar.gz |
Add unit tests for browser detection
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test.browser.js | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/tests/test.browser.js b/tests/test.browser.js new file mode 100644 index 0000000..ae446cc --- /dev/null +++ b/tests/test.browser.js @@ -0,0 +1,55 @@ +/* eslint-disable no-console */ +const expect = chai.expect; + +import { isSafari, isFirefox } from '../core/util/browser.js'; + +describe('Browser detection', function () { + let origNavigator; + beforeEach(function () { + // window.navigator is a protected read-only property in many + // environments, so we need to redefine it whilst running these + // tests. + origNavigator = Object.getOwnPropertyDescriptor(window, "navigator"); + + Object.defineProperty(window, "navigator", {value: {}}); + }); + + afterEach(function () { + Object.defineProperty(window, "navigator", origNavigator); + }); + + it('should handle Chrome', function () { + navigator.userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36"; + + expect(isSafari()).to.be.false; + expect(isFirefox()).to.be.false; + }); + + it('should handle Chromium', function () { + navigator.userAgent = "Mozilla/5.0 (X11; Linux armv7l) AppleWebKit/537.36 (KHTML, like Gecko) Raspbian Chromium/74.0.3729.157 Chrome/74.0.3729.157 Safari/537.36"; + + expect(isSafari()).to.be.false; + expect(isFirefox()).to.be.false; + }); + + it('should handle Firefox', function () { + navigator.userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0"; + + expect(isSafari()).to.be.false; + expect(isFirefox()).to.be.true; + }); + + it('should handle Edge', function () { + navigator.userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 Edg/106.0.1370.34"; + + expect(isSafari()).to.be.false; + expect(isFirefox()).to.be.false; + }); + + it('should handle Opera', function () { + navigator.userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 OPR/91.0.4516.20"; + + expect(isSafari()).to.be.false; + expect(isFirefox()).to.be.false; + }); +}); |