diff options
author | Ruben Rodriguez <ruben@gnu.org> | 2018-10-03 22:23:57 +0000 |
---|---|---|
committer | Ruben Rodriguez <ruben@gnu.org> | 2018-10-03 22:23:57 +0000 |
commit | dcba303f8d172f6748225d2e00f28a44ac13c453 (patch) | |
tree | d03607192a35e21a65fe1972f57bc273c53a25bb /common/Test.js | |
parent | 5461a48cbeac01d5f8bc31a10d11ff72a295c7d9 (diff) | |
parent | 12bfe0f9fdad5bfea680d897c81319684ee82180 (diff) |
Merge #25 `Adding automated test suite`
Diffstat (limited to 'common/Test.js')
-rw-r--r-- | common/Test.js | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/common/Test.js b/common/Test.js new file mode 100644 index 0000000..e272d1e --- /dev/null +++ b/common/Test.js @@ -0,0 +1,55 @@ +/** +* GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. +* +* Copyright (C) 2018 Giorgio Maone <giorgio@maone.net> +* +* This file is part of GNU LibreJS. +* +* GNU LibreJS is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* GNU LibreJS is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with GNU LibreJS. If not, see <http://www.gnu.org/licenses/>. +*/ + +"use strict"; +var Test = (() => { + const RUNNER_URL = browser.extension.getURL("/test/SpecRunner.html"); + return { + /* + returns RUNNER_URL if it's a test-enabled build or an about:debugging + temporary extension session, null otherwise + */ + async getURL() { + let url = RUNNER_URL; + try { + await fetch(url); + } catch (e) { + url = null; + } + this.getURL = () => url; + return url; + }, + + async getTab(activate = false) { + let url = await this.getURL(); + let tab = url ? (await browser.tabs.query({url}))[0] || + (await browser.tabs.create({url})) + : null; + if (tab && activate) { + await browser.tabs.update(tab.id, {active: true}); + } + return tab; + } + }; +})(); +if (typeof module === "object") { + module.exports = Test; +} |