diff --git a/conda/js/package-lock.json b/conda/js/package-lock.json
index 660710ce44b23482ce3b39cbc032af4a221b00ed..33f182026dfbf9b0b187a3345b7bb16922d4ac34 100644
--- a/conda/js/package-lock.json
+++ b/conda/js/package-lock.json
@@ -2524,14 +2524,12 @@
                                                 "balanced-match": {
                                                         "version": "1.0.0",
                                                         "bundled": true,
-                                                        "dev": true,
-                                                        "optional": true
+                                                        "dev": true
                                                 },
                                                 "brace-expansion": {
                                                         "version": "1.1.11",
                                                         "bundled": true,
                                                         "dev": true,
-                                                        "optional": true,
                                                         "requires": {
                                                                 "balanced-match": "^1.0.0",
                                                                 "concat-map": "0.0.1"
@@ -2546,20 +2544,17 @@
                                                 "code-point-at": {
                                                         "version": "1.1.0",
                                                         "bundled": true,
-                                                        "dev": true,
-                                                        "optional": true
+                                                        "dev": true
                                                 },
                                                 "concat-map": {
                                                         "version": "0.0.1",
                                                         "bundled": true,
-                                                        "dev": true,
-                                                        "optional": true
+                                                        "dev": true
                                                 },
                                                 "console-control-strings": {
                                                         "version": "1.1.0",
                                                         "bundled": true,
-                                                        "dev": true,
-                                                        "optional": true
+                                                        "dev": true
                                                 },
                                                 "core-util-is": {
                                                         "version": "1.0.2",
@@ -2676,8 +2671,7 @@
                                                 "inherits": {
                                                         "version": "2.0.3",
                                                         "bundled": true,
-                                                        "dev": true,
-                                                        "optional": true
+                                                        "dev": true
                                                 },
                                                 "ini": {
                                                         "version": "1.3.5",
@@ -2689,7 +2683,6 @@
                                                         "version": "1.0.0",
                                                         "bundled": true,
                                                         "dev": true,
-                                                        "optional": true,
                                                         "requires": {
                                                                 "number-is-nan": "^1.0.0"
                                                         }
@@ -2704,7 +2697,6 @@
                                                         "version": "3.0.4",
                                                         "bundled": true,
                                                         "dev": true,
-                                                        "optional": true,
                                                         "requires": {
                                                                 "brace-expansion": "^1.1.7"
                                                         }
@@ -2816,8 +2808,7 @@
                                                 "number-is-nan": {
                                                         "version": "1.0.1",
                                                         "bundled": true,
-                                                        "dev": true,
-                                                        "optional": true
+                                                        "dev": true
                                                 },
                                                 "object-assign": {
                                                         "version": "4.1.1",
@@ -2950,7 +2941,6 @@
                                                         "version": "1.0.2",
                                                         "bundled": true,
                                                         "dev": true,
-                                                        "optional": true,
                                                         "requires": {
                                                                 "code-point-at": "^1.0.0",
                                                                 "is-fullwidth-code-point": "^1.0.0",
@@ -6873,6 +6863,12 @@
                         "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==",
                         "dev": true
                 },
+                "immediate": {
+                        "version": "3.0.6",
+                        "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
+                        "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=",
+                        "dev": true
+                },
                 "import-cwd": {
                         "version": "2.1.0",
                         "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz",
@@ -7791,6 +7787,59 @@
                                 "array-includes": "^3.0.3"
                         }
                 },
+                "jszip": {
+                        "version": "3.1.5",
+                        "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.1.5.tgz",
+                        "integrity": "sha512-5W8NUaFRFRqTOL7ZDDrx5qWHJyBXy6velVudIzQUSoqAAYqzSh2Z7/m0Rf1QbmQJccegD0r+YZxBjzqoBiEeJQ==",
+                        "dev": true,
+                        "requires": {
+                                "core-js": "~2.3.0",
+                                "es6-promise": "~3.0.2",
+                                "lie": "~3.1.0",
+                                "pako": "~1.0.2",
+                                "readable-stream": "~2.0.6"
+                        },
+                        "dependencies": {
+                                "core-js": {
+                                        "version": "2.3.0",
+                                        "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.3.0.tgz",
+                                        "integrity": "sha1-+rg/uwstjchfpjbEudNMdUIMbWU=",
+                                        "dev": true
+                                },
+                                "es6-promise": {
+                                        "version": "3.0.2",
+                                        "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz",
+                                        "integrity": "sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y=",
+                                        "dev": true
+                                },
+                                "isarray": {
+                                        "version": "1.0.0",
+                                        "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+                                        "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+                                        "dev": true
+                                },
+                                "readable-stream": {
+                                        "version": "2.0.6",
+                                        "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
+                                        "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
+                                        "dev": true,
+                                        "requires": {
+                                                "core-util-is": "~1.0.0",
+                                                "inherits": "~2.0.1",
+                                                "isarray": "~1.0.0",
+                                                "process-nextick-args": "~1.0.6",
+                                                "string_decoder": "~0.10.x",
+                                                "util-deprecate": "~1.0.1"
+                                        }
+                                },
+                                "string_decoder": {
+                                        "version": "0.10.31",
+                                        "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+                                        "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+                                        "dev": true
+                                }
+                        }
+                },
                 "just-extend": {
                         "version": "1.1.27",
                         "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-1.1.27.tgz",
@@ -8088,6 +8137,15 @@
                         "integrity": "sha1-9ebgatdLeU+1tbZpiL9yjvHe2+g=",
                         "dev": true
                 },
+                "lie": {
+                        "version": "3.1.1",
+                        "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz",
+                        "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=",
+                        "dev": true,
+                        "requires": {
+                                "immediate": "~3.0.5"
+                        }
+                },
                 "load-json-file": {
                         "version": "1.1.0",
                         "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
@@ -12383,6 +12441,12 @@
                         "integrity": "sha512-1HwIYD/8UlOtFS3QO3w7ey+SdSDFE4HRNLZoZRYVQefrOY3l17epswImeB1ijgJFQJodIaHcwkp3r/myBjFVbg==",
                         "dev": true
                 },
+                "sax": {
+                        "version": "1.2.4",
+                        "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+                        "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
+                        "dev": true
+                },
                 "schema-utils": {
                         "version": "0.4.5",
                         "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz",
@@ -12407,6 +12471,29 @@
                         "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=",
                         "dev": true
                 },
+                "selenium-webdriver": {
+                        "version": "4.0.0-alpha.1",
+                        "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.0.0-alpha.1.tgz",
+                        "integrity": "sha512-z88rdjHAv3jmTZ7KSGUkTvo4rGzcDGMq0oXWHNIDK96Gs31JKVdu9+FMtT4KBrVoibg8dUicJDok6GnqqttO5Q==",
+                        "dev": true,
+                        "requires": {
+                                "jszip": "^3.1.3",
+                                "rimraf": "^2.5.4",
+                                "tmp": "0.0.30",
+                                "xml2js": "^0.4.17"
+                        },
+                        "dependencies": {
+                                "tmp": {
+                                        "version": "0.0.30",
+                                        "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz",
+                                        "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=",
+                                        "dev": true,
+                                        "requires": {
+                                                "os-tmpdir": "~1.0.1"
+                                        }
+                                }
+                        }
+                },
                 "selfsigned": {
                         "version": "1.10.3",
                         "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.3.tgz",
@@ -16109,6 +16196,22 @@
                         "integrity": "sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=",
                         "dev": true
                 },
+                "xml2js": {
+                        "version": "0.4.19",
+                        "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz",
+                        "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==",
+                        "dev": true,
+                        "requires": {
+                                "sax": ">=0.6.0",
+                                "xmlbuilder": "~9.0.1"
+                        }
+                },
+                "xmlbuilder": {
+                        "version": "9.0.7",
+                        "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
+                        "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=",
+                        "dev": true
+                },
                 "xmlhttprequest-ssl": {
                         "version": "1.5.5",
                         "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz",
diff --git a/conda/js/package.json b/conda/js/package.json
index 01ee1093209379241d06247f948cc992021f8ee6..a402f619623530678c7436c01162998cfacf54ea 100644
--- a/conda/js/package.json
+++ b/conda/js/package.json
@@ -66,6 +66,7 @@
                 "react-test-renderer": "^16.4.1",
                 "redux-devtools": "^3.4.1",
                 "rimraf": "^2.6.2",
+                "selenium-webdriver": "^4.0.0-alpha.1",
                 "sinon": "^6.1.4",
                 "style-loader": "^0.21.0",
                 "stylelint": "^9.3.0",
diff --git a/conda/js/test/selenium_test.js b/conda/js/test/selenium_test.js
new file mode 100644
index 0000000000000000000000000000000000000000..31a49d7b3e404f6d7812bc72e843ca4e6dd60a9b
--- /dev/null
+++ b/conda/js/test/selenium_test.js
@@ -0,0 +1,17 @@
+const {Builder, By, Key, until} = require('selenium-webdriver');
+const firefox = require('selenium-webdriver/firefox');
+
+const options = new firefox.Options();
+options.addArguments('-headless');
+
+(async function example() {
+	let driver = await new Builder().forBrowser('firefox').setFirefoxOptions(options).build();
+	try {
+		await driver.get('http://www.google.com/ncr');
+		await driver.findElement(By.name('q')).sendKeys('webdriver', Key.RETURN);
+		await driver.wait(until.titleIs('webdriver - Google Search'), 10000);
+		console.log('it worked!');
+	} finally {
+		await driver.quit();
+	}
+})();