| Index: test/browsers/edge.js |
| diff --git a/test/browsers/edge.js b/test/browsers/edge.js |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..b7d5a2fd7bc9b0a34fe0a15ed78e9b29835b1c01 |
| --- /dev/null |
| +++ b/test/browsers/edge.js |
| @@ -0,0 +1,113 @@ |
| +/* |
| + * This file is part of Adblock Plus <https://adblockplus.org/>, |
| + * Copyright (C) 2006-present eyeo GmbH |
| + * |
| + * Adblock Plus is free software: you can redistribute it and/or modify |
| + * it under the terms of the GNU General Public License version 3 as |
| + * published by the Free Software Foundation. |
| + * |
| + * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
| + */ |
| + |
| +"use strict"; |
| + |
| +const webdriver = require("selenium-webdriver"); |
| +const edge = require("selenium-webdriver/edge"); |
| +const path = require("path"); |
| +const os = require("os"); |
| +const fs = require("fs"); |
| +const {exec} = require("child_process"); |
| + |
| +function getSideloadLocation(buildDir) |
| +{ |
| + return path.join( |
| + os.homedir(), |
| + "AppData", "Local", "Packages", "Microsoft.MicrosoftEdge_8wekyb3d8bbwe", |
|
Sebastian Noack
2018/12/06 03:47:31
Will this work universally? Microsoft.MicrosoftEdg
|
| + "LocalState", |
| + buildDir |
| + ); |
| +} |
| + |
| +function removeExtensionDir(extPath) |
| +{ |
| + return new Promise((resolve, reject) => |
| + { |
| + exec( |
| + `powershell Remove-Item ${extPath} -Recurse`, |
| + error => |
| + { |
| + if (error) |
| + reject(error); |
| + else resolve(); |
| + } |
| + ); |
| + }); |
| +} |
| + |
| +function copyExtensionDir(extDir, buildDir) |
| +{ |
| + return new Promise((resolve, reject) => |
| + { |
| + exec( |
| + `powershell Copy-Item ${buildDir} -Destination ${extDir} -Recurse`, |
|
Sebastian Noack
2018/12/06 03:47:31
Calling into powershell to recursively copy a dire
|
| + error => |
| + { |
| + if (error) |
| + { |
| + reject(error); |
| + } |
| + else resolve(extDir); |
| + }); |
| + }); |
| +} |
| + |
| +exports.sideloadExtension = function(buildDir) |
| +{ |
| + let extDir = getSideloadLocation(buildDir); |
| + |
| + return new Promise((resolve, reject) => |
| + fs.exists(extDir, exists => |
|
Sebastian Noack
2018/12/06 03:47:31
Could you use util.promisify() here?
|
| + { |
| + if (exists) |
| + return removeExtensionDir(extDir) |
| + .then(() => copyExtensionDir(extDir, buildDir)) |
| + .then(resolve); |
| + |
| + return copyExtensionDir(extDir, buildDir) |
| + .then(resolve); |
| + })); |
| +}; |
| + |
| +exports.platform = "edge"; |
| + |
| +exports.getDriver = function(extensionPath) |
| +{ |
| + let service = new edge.ServiceBuilder() |
| + .build(); |
|
Sebastian Noack
2018/12/06 03:47:31
Nit: It seems wrapping this line isn't necessary.
|
| + |
| + // For compatibility reasons between Windows 10 build 1083 and 1089 |
| + // we use both extensionPaths and ms:extensionPaths, respectively |
| + let capabilities = new webdriver.Capabilities({ |
| + "browserName": "MicrosoftEdge", |
| + "ms:extensionPaths": [extensionPath], |
| + "extensionPaths": [extensionPath] |
| + }); |
| + |
| + let driver = edge.Driver.createSession(capabilities, service); |
|
Sebastian Noack
2018/12/06 03:47:31
Nit: Just return the driver without creating tempo
|
| + |
| + return driver; |
| +}; |
| + |
|
Sebastian Noack
2018/12/06 03:47:31
Nit: Redundant blank lines at end of file.
|
| + |
| + |
| + |
| + |
| + |
| + |
| + |