diff options
Diffstat (limited to 'node_modules/selenium-webdriver/test/testing')
-rw-r--r-- | node_modules/selenium-webdriver/test/testing/assert_test.js | 373 | ||||
-rw-r--r-- | node_modules/selenium-webdriver/test/testing/index_test.js | 224 |
2 files changed, 0 insertions, 597 deletions
diff --git a/node_modules/selenium-webdriver/test/testing/assert_test.js b/node_modules/selenium-webdriver/test/testing/assert_test.js deleted file mode 100644 index eaced8bf1..000000000 --- a/node_modules/selenium-webdriver/test/testing/assert_test.js +++ /dev/null @@ -1,373 +0,0 @@ -// 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'; - -const assert = require('../../testing/assert'); - -const AssertionError = require('assert').AssertionError; -const assertTrue = require('assert').ok; -const assertEqual = require('assert').equal; -const assertThrows = require('assert').throws; -const fail = require('assert').fail; - - -describe('assert', function() { - describe('atLeast', function() { - it('compares subject >= value', function() { - assert(1).atLeast(0); - assert(1).atLeast(1); - assertThrows(() => assert(1).atLeast(2)); - }); - - it('accepts failure message', function() { - assertThrows( - () => assert(1).atLeast(2, 'hi there!'), - (error) => error.message.indexOf('hi there') != -1); - }); - - it('fails if given a non-numeric subject', function() { - assertThrows(() => assert('a').atLeast(1)); - }); - - it('fails if given a non-numeric bound', function() { - assertThrows(() => assert(1).atLeast('a')); - }); - - it('waits for promised subject', function() { - return assert(Promise.resolve(123)).atLeast(100); - }); - - it('waits for promised subject (with failure)', function() { - return assert(Promise.resolve(100)) - .atLeast(123) - .then(() => fail('should have failed'), function(e) { - assertInstanceOf(AssertionError, e); - assertEqual('100 >= 123', e.message); - }); - }); - }); - - describe('atMost', function() { - it('compares subject <= value', function() { - assertThrows(() => assert(1).atMost(0)); - assert(1).atMost(1); - assert(1).atMost(2); - }); - - it('accepts failure message', function() { - assertThrows( - () => assert(1).atMost(0, 'hi there!'), - (error) => error.message.indexOf('hi there!') != -1); - }); - - it('fails if given a non-numeric subject', function() { - assertThrows(() => assert(1).atMost('a')); - }); - - it('fails if given a non-numeric bound', function() { - assertThrows(() => assert('a').atMost(1)); - }); - - it('waits for promised subject', function() { - return assert(Promise.resolve(100)).atMost(123); - }); - - it('waits for promised subject (with failure)', function() { - return assert(Promise.resolve(123)) - .atMost(100) - .then(() => fail('should have failed'), function(e) { - assertInstanceOf(AssertionError, e); - assertEqual('123 <= 100', e.message); - }); - }); - }); - - describe('greaterThan', function() { - it('compares subject > value', function() { - assertThrows(() => assert(1).greaterThan(1)); - assertThrows(() => assert(1).greaterThan(2)); - assert(2).greaterThan(1); - }); - - it('accepts failure message', function() { - assertThrows( - () => assert(0).greaterThan(1, 'hi there!'), - (error) => error.message.indexOf('hi there!') != -1); - }); - - it('fails if given a non-numeric subject', function() { - assertThrows(() => assert('a').atMost(1)); - }); - - it('fails if given a non-numeric bound', function() { - assertThrows(() => assert(1).atMost('a')); - }); - - it('waits for promised subject', function() { - return assert(Promise.resolve(123)).greaterThan(100); - }); - - it('waits for promised subject (with failure)', function() { - return assert(Promise.resolve(100)) - .greaterThan(123) - .then(() => fail('should have failed'), function(e) { - assertInstanceOf(AssertionError, e); - assertEqual('100 > 123', e.message); - }); - }); - }); - - describe('lessThan', function() { - it('compares subject < value', function() { - assertThrows(() => assert(1).lessThan(0)); - assertThrows(() => assert(1).lessThan(1)); - assert(1).lessThan(2); - }); - - it('accepts failure message', function() { - assertThrows( - () => assert(1).lessThan(0, 'hi there!'), - (error) => error.message.indexOf('hi there!') != -1); - }); - - it('fails if given a non-numeric subject', function() { - assertThrows(() => assert('a').lessThan(1)); - }); - - it('fails if given a non-numeric bound', function() { - assertThrows(() => assert(1).lessThan('a')); - }); - - it('waits for promised subject', function() { - return assert(Promise.resolve(100)).lessThan(123); - }); - - it('waits for promised subject (with failure)', function() { - return assert(Promise.resolve(123)) - .lessThan(100) - .then(() => fail('should have failed'), function(e) { - assertInstanceOf(AssertionError, e); - assertEqual('123 < 100', e.message); - }); - }); - }); - - describe('closeTo', function() { - it('accepts values within epislon of target', function() { - assert(123).closeTo(123, 0); - assert(123).closeTo(124, 1); - assert(125).closeTo(124, 1); - - assertThrows(() => assert(123).closeTo(125, .1)); - assertThrows(() => assert(1./3).closeTo(.8, .01)); - }); - - it('waits for promised values', function() { - let p = new Promise(resolve => setTimeout(() => resolve(123), 10)); - return assert(p).closeTo(124, 1); - }); - }); - - describe('instanceOf', function() { - it('works with direct instances', function() { - assert(Error('foo')).instanceOf(Error); - }); - - it('works with sub-types', function() { - assert(TypeError('foo')).instanceOf(Error); - }); - - it('parent types are not instances of sub-types', function() { - assertThrows(() => assert(Error('foo')).instanceOf(TypeError)); - }); - }); - - describe('isNull', function() { - it('normal case', function() { - assert(null).isNull(); - assertThrows(() => assert(1).isNull()); - }); - - it('handles promised values', function() { - let p = new Promise(function(f) { - setTimeout(() => f(null), 10); - }); - return assert(p).isNull(); - }); - - it('does not match on undefined', function() { - assertThrows(() => assert(void(0)).isNull()); - }) - }); - - describe('isUndefined', function() { - it('normal case', function() { - assert(void(0)).isUndefined(); - assertThrows(() => assert(1).isUndefined()); - }); - - it('handles promised values', function() { - let p = new Promise(function(f) { - setTimeout(() => f(void(0)), 10); - }); - return assert(p).isUndefined(); - }); - - it('does not match on null', function() { - assertThrows(() => assert(null).isUndefined()); - }) - }); - - describe('contains', function() { - it('works with strings', function() { - assert('abc').contains('a'); - assert('abc').contains('ab'); - assert('abc').contains('abc'); - assert('abc').contains('bc'); - assert('abc').contains('c'); - assertThrows(() => assert('abc').contains('d')); - }); - - it('works with arrays', function() { - assert([1, 2, 3]).contains(1); - assert([1, 2, 3]).contains(2); - assert([1, 2, 3]).contains(3); - assertThrows(() => assert([1, 2]).contains(3)); - }); - - it('works with maps', function() { - let m = new Map; - m.set(1, 2); - assert(m).contains(1); - assertThrows(() => assert(m).contains(2)); - }); - - it('works with sets', function() { - let s = new Set; - s.add(1); - assert(s).contains(1); - assertThrows(() => assert(s).contains(2)); - }); - - it('requires an array, string, map, or set subject', function() { - assertThrows(() => assert(123).contains('a')); - }); - }); - - describe('endsWith', function() { - it('works', function() { - assert('abc').endsWith('abc'); - assert('abc').endsWith('bc'); - assert('abc').endsWith('c'); - assertThrows(() => assert('abc').endsWith('d')); - }) - }); - - describe('startsWith', function() { - it('works', function() { - assert('abc').startsWith('abc'); - assert('abc').startsWith('ab'); - assert('abc').startsWith('a'); - assertThrows(() => assert('abc').startsWith('d')); - }) - }); - - describe('matches', function() { - it('requires a regex value', function() { - assertThrows(() => assert('abc').matches(1234)); - }); - - it('requires a string value', function() { - assertThrows(() => assert(1234).matches(/abc/)); - }); - - it('requires a string value (promise case)', function() { - return assert(Promise.resolve(1234)) - .matches(/abc/) - .then(fail, function(error) { - assertEqual( - 'Expected a string matching /abc/, got <1234> (number)', - error.message); - }); - }); - - it('applies regex', function() { - assert('abc').matches(/abc/); - assertThrows(() => assert('def').matches(/abc/)); - }); - }); - - describe('isTrue', function() { - it('only accepts booleans', function() { - assertThrows(() => assert(123).isTrue()); - }); - - it('accepts true values', function() { - assert(true).isTrue(); - assert(Boolean('abc')).isTrue(); - return assert(Promise.resolve(true)).isTrue(); - }); - - it('rejects false values', function() { - assertThrows(() => assert(false).isTrue()); - assertThrows(() => assert(Boolean(0)).isTrue()); - return assert(Promise.resolve(false)).isTrue() - .then(fail, function() {/*no-op, ok*/}); - }); - }); - - describe('isFalse', function() { - it('only accepts booleans', function() { - assertThrows(() => assert(123).isFalse()); - }) - - it('accepts false values', function() { - assert(false).isFalse(); - assert(Boolean('')).isFalse(); - return assert(Promise.resolve(false)).isFalse(); - }); - - it('rejects true values', function() { - assertThrows(() => assert(true).isFalse()); - assertThrows(() => assert(Boolean(1)).isFalse()); - return assert(Promise.resolve(true)).isFalse() - .then(fail, function() {/*no-op, ok*/}); - }); - }); - - describe('isEqualTo', function() { - it('is strict equality', function() { - assert('abc').isEqualTo('abc'); - assert('abc').equals('abc'); - assert('abc').equalTo('abc'); - assertThrows(() => assert('1').isEqualTo(1)); - }); - }); - - describe('notEqualTo', function() { - it('tests strict equality', function() { - assert('1').notEqualTo(1); - assert(1).notEqualTo('1'); - assertThrows(() => assert('abc').notEqualTo('abc')); - }); - }); - - function assertInstanceOf(ctor, value) { - assertTrue(value instanceof ctor); - } -}); diff --git a/node_modules/selenium-webdriver/test/testing/index_test.js b/node_modules/selenium-webdriver/test/testing/index_test.js deleted file mode 100644 index edc841bbe..000000000 --- a/node_modules/selenium-webdriver/test/testing/index_test.js +++ /dev/null @@ -1,224 +0,0 @@ -// 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'; - -const assert = require('assert'); -const promise = require('../..').promise; -const {enablePromiseManager} = require('../../lib/test/promise'); - - -var test = require('../../testing'); - -describe('Mocha Integration', function() { - - describe('beforeEach properly binds "this"', function() { - beforeEach(function() { this.x = 1; }); - test.beforeEach(function() { this.x = 2; }); - it('', function() { assert.equal(this.x, 2); }); - }); - - describe('afterEach properly binds "this"', function() { - it('', function() { this.x = 1; }); - test.afterEach(function() { this.x = 2; }); - afterEach(function() { assert.equal(this.x, 2); }); - }); - - describe('it properly binds "this"', function() { - beforeEach(function() { this.x = 1; }); - test.it('', function() { this.x = 2; }); - afterEach(function() { assert.equal(this.x, 2); }); - }); - - enablePromiseManager(function() { - describe('timeout handling', function() { - describe('it does not reset the control flow on a non-timeout', function() { - var flowReset = false; - - beforeEach(function() { - flowReset = false; - test.controlFlow().once(promise.ControlFlow.EventType.RESET, onreset); - }); - - test.it('', function() { - this.timeout(100); - return promise.delayed(50); - }); - - afterEach(function() { - assert.ok(!flowReset); - test.controlFlow().removeListener( - promise.ControlFlow.EventType.RESET, onreset); - }); - - function onreset() { - flowReset = true; - } - }); - - describe('it resets the control flow after a timeout' ,function() { - var timeoutErr, flowReset; - - beforeEach(function() { - flowReset = false; - test.controlFlow().once(promise.ControlFlow.EventType.RESET, onreset); - }); - - test.it('', function() { - var callback = this.runnable().callback; - var test = this; - this.runnable().callback = function(err) { - timeoutErr = err; - // Reset our timeout to 0 so Mocha does not fail the test. - test.timeout(0); - // When we invoke the real callback, do not pass along the error so - // Mocha does not fail the test. - return callback.call(this); - }; - - test.timeout(50); - return promise.defer().promise; - }); - - afterEach(function() { - return Promise.resolve().then(function() { - test.controlFlow().removeListener( - promise.ControlFlow.EventType.RESET, onreset); - assert.ok(flowReset, 'control flow was not reset after a timeout'); - }); - }); - - function onreset() { - flowReset = true; - } - }); - }); - - describe('async "done" support', function() { - this.timeout(2*1000); - - var waited = false; - var DELAY = 100; // ms enough to notice - - // Each test asynchronously sets waited to true, so clear/check waited - // before/after: - beforeEach(function() { - waited = false; - }); - - afterEach(function() { - assert.strictEqual(waited, true); - }); - - // --- First, vanilla mocha "it" should support the "done" callback correctly. - - // This 'it' should block until 'done' is invoked - it('vanilla delayed', function(done) { - setTimeout(function delayedVanillaTimeout() { - waited = true; - done(); - }, DELAY); - }); - - // --- Now with the webdriver wrappers for 'it' should support the "done" callback: - - test.it('delayed', function(done) { - assert(done); - assert.strictEqual(typeof done, 'function'); - setTimeout(function delayedTimeoutCallback() { - waited = true; - done(); - }, DELAY); - }); - - // --- And test that the webdriver wrapper for 'it' works with a returned promise, too: - - test.it('delayed by promise', function() { - var defer = promise.defer(); - setTimeout(function delayedPromiseCallback() { - waited = true; - defer.fulfill('ignored'); - }); - return defer.promise; - }); - }); - - describe('ControlFlow and "done" work together', function() { - var flow, order; - before(function() { - order = []; - flow = test.controlFlow(); - flow.execute(function() { order.push(1); }); - }); - - test.it('control flow updates and async done', function(done) { - flow.execute(function() { order.push(2); }); - flow.execute(function() { order.push(3); }).then(function() { - order.push(4); - }); - done(); - }); - - after(function() { - assert.deepEqual([1, 2, 3, 4], order); - }); - }); - }); - - describe('generator support', function() { - let arr; - - beforeEach(() => arr = []); - afterEach(() => assert.deepEqual(arr, [0, 1, 2, 3])); - - test.it('sync generator', function* () { - arr.push(yield arr.length); - arr.push(yield arr.length); - arr.push(yield arr.length); - arr.push(yield arr.length); - }); - - test.it('async generator', function* () { - arr.push(yield Promise.resolve(arr.length)); - arr.push(yield Promise.resolve(arr.length)); - arr.push(yield Promise.resolve(arr.length)); - arr.push(yield Promise.resolve(arr.length)); - }); - - test.it('generator returns promise', function*() { - arr.push(yield Promise.resolve(arr.length)); - arr.push(yield Promise.resolve(arr.length)); - arr.push(yield Promise.resolve(arr.length)); - setTimeout(_ => arr.push(arr.length), 10); - return new Promise((resolve) => setTimeout(_ => resolve(), 25)); - }); - - describe('generator runs with proper "this" context', () => { - before(function() { this.values = [0, 1, 2, 3]; }); - test.it('', function*() { - arr = this.values; - }); - }); - - it('generator function must not take a callback', function() { - arr = [0, 1, 2, 3]; // For teardown hook. - assert.throws(_ => { - test.it('', function*(done){}); - }, TypeError); - }); - }); -}); |