aboutsummaryrefslogtreecommitdiff
path: root/node_modules/selenium-webdriver/safari.js
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2017-04-20 03:09:25 +0200
committerFlorian Dold <florian.dold@gmail.com>2017-04-24 16:14:29 +0200
commit82f2b76e25a4a67e01ec67e5ebe39d14ad771ea8 (patch)
tree965f6eb89b84d65a62b49008fd972c004832ccd1 /node_modules/selenium-webdriver/safari.js
parente6e0cbc387c2a77b48e4065c229daa65bf1aa0fa (diff)
Reorganize module loading.
We now use webpack instead of SystemJS, effectively bundling modules into one file (plus commons chunks) for every entry point. This results in a much smaller extension size (almost half). Furthermore we use yarn/npm even for extension run-time dependencies. This relieves us from manually vendoring and building dependencies. It's also easier to understand for new developers familiar with node.
Diffstat (limited to 'node_modules/selenium-webdriver/safari.js')
-rw-r--r--node_modules/selenium-webdriver/safari.js51
1 files changed, 45 insertions, 6 deletions
diff --git a/node_modules/selenium-webdriver/safari.js b/node_modules/selenium-webdriver/safari.js
index 97d512bc7..5a57387c1 100644
--- a/node_modules/selenium-webdriver/safari.js
+++ b/node_modules/selenium-webdriver/safari.js
@@ -68,7 +68,7 @@ class ServiceBuilder extends remote.DriverService.Builder {
const OPTIONS_CAPABILITY_KEY = 'safari.options';
-
+const TECHNOLOGY_PREVIEW_OPTIONS_KEY = 'technologyPreview';
/**
* Configuration options specific to the {@link Driver SafariDriver}.
@@ -89,16 +89,17 @@ class Options {
* Extracts the SafariDriver specific options from the given capabilities
* object.
* @param {!Capabilities} capabilities The capabilities object.
- * @return {!Options} The ChromeDriver options.
+ * @return {!Options} The SafariDriver options.
*/
static fromCapabilities(capabilities) {
var options = new Options();
-
var o = capabilities.get(OPTIONS_CAPABILITY_KEY);
+
if (o instanceof Options) {
options = o;
} else if (o) {
options.setCleanSession(o.cleanSession);
+ options.setTechnologyPreview(o[TECHNOLOGY_PREVIEW_OPTIONS_KEY]);
}
if (capabilities.has(Capability.PROXY)) {
@@ -149,6 +150,22 @@ class Options {
}
/**
+ * Instruct the SafariDriver to use the Safari Technology Preview if true.
+ * Otherwise, use the release version of Safari. Defaults to using the release version of Safari.
+ *
+ * @param {boolean} useTechnologyPreview
+ * @return {!Options} A self reference.
+ */
+ setTechnologyPreview(useTechnologyPreview) {
+ if (!this.options_) {
+ this.options_ = {};
+ }
+
+ this.options_[TECHNOLOGY_PREVIEW_OPTIONS_KEY] = !!useTechnologyPreview;
+ return this;
+ }
+
+ /**
* Converts this options instance to a {@link Capabilities} object.
* @param {Capabilities=} opt_capabilities The capabilities to
* merge these options into, if any.
@@ -179,6 +196,23 @@ class Options {
}
}
+/**
+ * @param {(Options|Object<string, *>)=} o The options object
+ * @return {boolean}
+ */
+function useTechnologyPreview(o) {
+ if (o instanceof Options) {
+ return !!(o.options_ && o.options_[TECHNOLOGY_PREVIEW_OPTIONS_KEY]);
+ }
+
+ if (o && typeof o === 'object') {
+ return !!o[TECHNOLOGY_PREVIEW_OPTIONS_KEY];
+ }
+
+ return false;
+}
+
+const SAFARIDRIVER_TECHNOLOGY_PREVIEW_EXE = '/Applications/Safari Technology Preview.app/Contents/MacOS/safaridriver';
/**
* A WebDriver client for Safari. This class should never be instantiated
@@ -200,14 +234,19 @@ class Driver extends webdriver.WebDriver {
* @return {!Driver} A new driver instance.
*/
static createSession(opt_config, opt_flow) {
- let caps;
+ let caps, exe;
+
if (opt_config instanceof Options) {
caps = opt_config.toCapabilities();
} else {
- caps = opt_config || Capabilities.safari()
+ caps = opt_config || Capabilities.safari();
+ }
+
+ if (useTechnologyPreview(caps.get(OPTIONS_CAPABILITY_KEY))) {
+ exe = SAFARIDRIVER_TECHNOLOGY_PREVIEW_EXE;
}
- let service = new ServiceBuilder().build();
+ let service = new ServiceBuilder(exe).build();
let executor = new http.Executor(
service.start().then(url => new http.HttpClient(url)));