This repository was archived by the owner on Jun 23, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 34
Expand file tree
/
Copy pathfirefox.js
More file actions
67 lines (53 loc) · 2.15 KB
/
Copy pathfirefox.js
File metadata and controls
67 lines (53 loc) · 2.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
const assert = require("assert");
const firefox = require("selenium-webdriver/firefox");
const fs = require("fs");
const webdriver = require("selenium-webdriver");
const { Command } = require("selenium-webdriver/lib/command");
const ExtensionHelper = require("./extension.js");
module.exports = class FirefoxHelper {
static async createDrivers(number) {
require("dotenv").config();
assert.ok(fs.existsSync(process.env.FIREFOX_PATH), "Firefox exists");
assert.ok(fs.existsSync(process.env.XPI_PATH), "The extension exists");
const options = new firefox.Options();
options.setPreference("xpinstall.signatures.required", false);
options.setPreference("extensions.install.requireBuiltInCerts", false);
options.setPreference("extensions.webapi.testing", true);
options.setPreference("extensions.legacy.enabled", true);
options.setPreference("extensions.experiments.enabled", true);
options.setBinary(process.env.FIREFOX_PATH);
if (process.env.HEADLESS) {
options.headless();
}
const ehs = [];
for (let i = 0; i < number; ++i) {
const driver = await new webdriver.Builder()
.forBrowser("firefox")
.setFirefoxOptions(options)
.build();
const command = new Command("install addon")
.setParameter("path", process.env.XPI_PATH)
.setParameter("temporary", true);
await driver.execute(command);
await driver.setContext("chrome");
const addonUUID = await driver.executeScript(
"var Cu = Components.utils;" +
"const {WebExtensionPolicy} = Cu.getGlobalForObject(Cu.import(" +
'"resource://gre/modules/Extension.jsm", this));' +
"const extensions = WebExtensionPolicy.getActiveExtensions();" +
"for (let extension of extensions) {" +
' if (extension.id === "secure-proxy@mozilla.com") {' +
" return extension.mozExtensionHostname;" +
" }" +
"}"
);
ehs.push(new ExtensionHelper(driver, addonUUID));
}
return ehs;
}
static async createDriver() {
const ehs = await this.createDrivers(1);
assert.equal(ehs.length, 1);
return ehs[0];
}
};