aboutsummaryrefslogtreecommitdiff
path: root/node_modules/selenium-webdriver/test/remote_test.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/selenium-webdriver/test/remote_test.js')
-rw-r--r--node_modules/selenium-webdriver/test/remote_test.js117
1 files changed, 117 insertions, 0 deletions
diff --git a/node_modules/selenium-webdriver/test/remote_test.js b/node_modules/selenium-webdriver/test/remote_test.js
new file mode 100644
index 000000000..5edc448bb
--- /dev/null
+++ b/node_modules/selenium-webdriver/test/remote_test.js
@@ -0,0 +1,117 @@
+// Licensed to the Software Freedom Conservancy (SFC) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The SFC licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+'use strict';
+
+var assert = require('assert'),
+ fs = require('fs'),
+ path = require('path');
+
+var promise = require('../').promise,
+ io = require('../io'),
+ cmd = require('../lib/command'),
+ remote = require('../remote');
+
+describe('DriverService', function() {
+ describe('start()', function() {
+ var service;
+
+ beforeEach(function() {
+ service = new remote.DriverService(process.execPath, {
+ port: 1234,
+ args: ['-e', 'process.exit(1)']
+ });
+ });
+
+ afterEach(function() {
+ return service.kill();
+ });
+
+ it('fails if child-process dies', function(done) {
+ this.timeout(1000);
+ service.start(500)
+ .then(expectFailure.bind(null, done), verifyFailure.bind(null, done));
+ });
+
+ it('failures propagate through control flow if child-process dies',
+ function(done) {
+ this.timeout(1000);
+
+ promise.controlFlow().execute(function() {
+ promise.controlFlow().execute(function() {
+ return service.start(500);
+ });
+ })
+ .then(expectFailure.bind(null, done), verifyFailure.bind(null, done));
+ });
+
+ function verifyFailure(done, e) {
+ try {
+ assert.ok(!(e instanceof promise.CancellationError));
+ assert.equal('Server terminated early with status 1', e.message);
+ done();
+ } catch (ex) {
+ done(ex);
+ }
+ }
+
+ function expectFailure(done) {
+ done(Error('expected to fail'));
+ }
+ });
+});
+
+describe('FileDetector', function() {
+ class ExplodingDriver {
+ schedule() {
+ throw Error('unexpected call');
+ }
+ }
+
+ it('returns the original path if the file does not exist', function() {
+ return io.tmpDir(dir => {
+ let theFile = path.join(dir, 'not-there');
+ return (new remote.FileDetector)
+ .handleFile(new ExplodingDriver, theFile)
+ .then(f => assert.equal(f, theFile));
+ });
+ });
+
+ it('returns the original path if it is a directory', function() {
+ return io.tmpDir(dir => {
+ return (new remote.FileDetector)
+ .handleFile(new ExplodingDriver, dir)
+ .then(f => assert.equal(f, dir));
+ });
+ });
+
+ it('attempts to upload valid files', function() {
+ return io.tmpFile(theFile => {
+ return (new remote.FileDetector)
+ .handleFile(
+ new (class FakeDriver {
+ schedule(command) {
+ assert.equal(command.getName(), cmd.Name.UPLOAD_FILE);
+ assert.equal(typeof command.getParameters()['file'], 'string');
+ return Promise.resolve('success!');
+ }
+ }),
+ theFile)
+ .then(f => assert.equal(f, 'success!'));
+ });
+ });
+});