Index: test/firefox.js |
=================================================================== |
--- a/test/firefox.js |
+++ b/test/firefox.js |
@@ -15,11 +15,14 @@ |
* along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
*/ |
+/* eslint-env mocha */ |
+ |
"use strict"; |
const FIREFOX_VERSION = "57.0"; |
const path = require("path"); |
+const assert = require("assert"); |
const webdriver = require("selenium-webdriver"); |
const {By, until} = webdriver; |
const firefox = require("selenium-webdriver/firefox"); |
@@ -27,62 +30,56 @@ |
const {ensureFirefox} = require("../adblockpluscore/test/runners/" + |
"firefox_download"); |
-function reportElements(test, driver, success) |
-{ |
- return driver.findElements( |
- By.css(`#qunit-tests ${success ? ".pass" : ".fail"} .test-name`) |
- ).then(elements => Promise.all(elements.map(elem => |
- elem.getAttribute("innerHTML").then(data => test.ok(success, data)) |
- ))); |
-} |
- |
-exports.runFirefox = function(test) |
+describe("Firefox", function() |
{ |
- // https://stackoverflow.com/a/45045036 |
- function installWebExt(driver, extension) |
+ this.timeout(0); |
+ |
+ let driver; |
+ let origin; |
+ |
+ before(() => |
+ ensureFirefox(FIREFOX_VERSION).then(firefoxPath => |
+ { |
+ let binary = new firefox.Binary(firefoxPath); |
+ binary.addArguments("-headless"); |
+ |
+ driver = new webdriver.Builder() |
+ .forBrowser("firefox") |
+ .setFirefoxOptions(new firefox.Options().setBinary(binary)) |
+ .build(); |
+ |
+ let devenv = "./devenv.gecko"; |
+ let cmd = new Command("moz-install-web-ext") |
+ .setParameter("path", path.resolve(devenv)) |
+ .setParameter("temporary", true); |
+ |
+ driver.getExecutor().defineCommand( |
+ cmd.getName(), "POST", |
+ "/session/:sessionId/moz/addon/install" |
+ ); |
+ driver.schedule(cmd, `installWebExt(${devenv})`); |
+ |
+ return driver.wait(() => |
+ driver.getAllWindowHandles().then(handles => handles[1]) |
+ ).then(handle => |
+ driver.switchTo().window(handle) |
+ ).then(() => |
+ driver.executeScript("return location.origin;") |
+ ).then(result => { origin = result; }); |
+ }) |
+ ); |
+ |
+ function reportElements(success) |
{ |
- let cmd = new Command("moz-install-web-ext") |
- .setParameter("path", path.resolve(extension)) |
- .setParameter("temporary", true); |
- |
- driver.getExecutor() |
- .defineCommand(cmd.getName(), "POST", |
- "/session/:sessionId/moz/addon/install"); |
- |
- return driver.schedule(cmd, `installWebExt(${extension})`); |
+ return driver.findElements( |
+ By.css(`#qunit-tests ${success ? ".pass" : ".fail"} .test-name`) |
+ ).then(elements => Promise.all(elements.map(elem => |
+ elem.getAttribute("textContent").then(data => assert.ok(success, data)) |
Sebastian Noack
2018/08/26 19:02:00
While changing this code anyway, I now, also use t
tlucas
2018/08/26 21:13:50
Acknowledged.
|
+ ))); |
} |
- ensureFirefox(FIREFOX_VERSION).then(firefoxPath => |
- { |
- let binary = new firefox.Binary(firefoxPath); |
- |
- binary.addArguments("-headless"); |
- |
- let options = new firefox.Options() |
- .setBinary(binary); |
- |
- let driver = new webdriver.Builder() |
- .forBrowser("firefox") |
- .setFirefoxOptions(options) |
- .build(); |
- |
- installWebExt(driver, "./devenv.gecko"); |
- |
- driver.wait(() => |
- // Wait for the firstrun-page to be loaded |
- driver.getAllWindowHandles().then(handles => |
- { |
- if (handles.length > 1) |
- { |
- driver.switchTo().window(handles[1]); |
- return true; |
- } |
- return false; |
- }) |
- ).then(() => |
- // Navigate to the qunit index |
- driver.executeScript("location.href = \"qunit/index.html\";") |
- ).then(() => |
+ it("qunit", () => |
+ driver.navigate().to(origin + "/qunit/index.html").then(() => |
// Wait for qunit-results to be present |
driver.wait(until.elementLocated(By.id("qunit-testresult"))) |
).then(() => |
@@ -92,11 +89,10 @@ |
.getAttribute("innerHTML").then(data => |
data.includes("Tests completed"))) |
).then(() => Promise.all([ |
- reportElements(test, driver, true), |
- reportElements(test, driver, false) |
- ])).then( |
- () => driver.quit().then(() => test.done()), |
- err => driver.quit().then(() => { throw err; }) |
- ); |
- }); |
-}; |
+ reportElements(true), |
+ reportElements(false) |
+ ])) |
+ ); |
+ |
+ after(() => driver.quit()); |
+}); |