From 1a784cd489cb951a7f7b0c79bd06b38ec7b01400 Mon Sep 17 00:00:00 2001 From: Hector Virgen Date: Mon, 27 Apr 2015 22:32:36 -0700 Subject: [PATCH] Adds Karma to TravisCI - Updates travis to run karma - Adds some actual tests Sample build success: https://travis-ci.org/djvirgen/kubernetes/jobs/61567253 Note: My branch is currently up to date with master but all the Go stuff is failing in Travis. Not sure why Go is failing, but the Karma stuff is running OK. I've also verified that when a Jasmine test fails, Travis will fail the build (see [this build](https://travis-ci.org/djvirgen/kubernetes/jobs/61567666) here). --- .gitignore | 3 + .travis.yml | 4 ++ .../dashboard/test/controllers/header.spec.js | 67 +++++++++++++++++++ www/master/karma.conf.js | 9 ++- www/master/package.json | 1 + 5 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 www/master/components/dashboard/test/controllers/header.spec.js diff --git a/.gitignore b/.gitignore index 43253f23283..d0a15316df7 100644 --- a/.gitignore +++ b/.gitignore @@ -53,3 +53,6 @@ network_closure.sh # Web UI www/master/node_modules/ + +# Karma output +www/test_out diff --git a/.travis.yml b/.travis.yml index b344953a872..aa76bc042d3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,8 +21,12 @@ install: - GOPATH=$PWD/Godeps/_workspace:$GOPATH go install ./... - PATH=$HOME/gopath/bin:./third_party/etcd:$PATH ./hack/verify-gendocs.sh +before_script: + - npm install karma karma-junit-reporter karma-phantomjs-launcher karma-jasmine + script: - KUBE_RACE="-race" KUBE_COVER="y" KUBE_GOVERALLS_BIN="$HOME/gopath/bin/goveralls" KUBE_TIMEOUT='-timeout 300s' KUBE_COVERPROCS=8 KUBE_TEST_API_VERSIONS=$KUBE_TEST_API_VERSIONS ./hack/test-go.sh -- -p=2 + - node_modules/karma/bin/karma start www/master/karma.conf.js --single-run --browsers PhantomJS - PATH=$HOME/gopath/bin:./third_party/etcd:$PATH ./hack/test-cmd.sh - PATH=$HOME/gopath/bin:./third_party/etcd:$PATH KUBE_TEST_API_VERSIONS=$KUBE_TEST_API_VERSIONS KUBE_INTEGRATION_TEST_MAX_CONCURRENCY=4 LOG_LEVEL=4 ./hack/test-integration.sh diff --git a/www/master/components/dashboard/test/controllers/header.spec.js b/www/master/components/dashboard/test/controllers/header.spec.js new file mode 100644 index 00000000000..de3905a35ec --- /dev/null +++ b/www/master/components/dashboard/test/controllers/header.spec.js @@ -0,0 +1,67 @@ +'use strict'; + +describe('header controller', function() { + beforeEach(module('kubernetesApp.components.dashboard')); + + beforeEach(inject(function($rootScope, $location, $controller) { + this.rootScope = $rootScope; + this.scope = $rootScope.$new(); + + this.location = $location; + spyOn(this.location, 'path'); + + this.controller = $controller; + this.ctrl = this.controller('HeaderCtrl', { + $scope: this.scope + }); + this.scope.$apply(); + })); + + describe('subPages', function() { + it('is defined', function() { + expect(this.scope.subPages).not.toBeUndefined(); + }); + + it('is an array', function() { + expect(Array.isArray(this.scope.subPages)).toBeTruthy(); + }); + + it('is not empty', function() { + expect(this.scope.subPages.length).toBeGreaterThan(0); + }); + + describe('each subPage', function() { + it('has a category', function() { + this.scope.subPages.forEach(function(subPage) { + expect(subPage.category).toBeTruthy(); + }); + }); + + it('has a name', function() { + this.scope.subPages.forEach(function(subPage) { + expect(subPage.name).toBeTruthy(); + }); + }); + + it('has a value', function() { + this.scope.subPages.forEach(function(subPage) { + expect(subPage.value).toBeTruthy(); + }); + }); + }); + }); + + describe('Pages', function() { + it('does not change location on first detected change', function() { + expect(this.location.path).not.toHaveBeenCalled(); + }); + + it('changes location on second detected change', function() { + var _this = this; + this.scope.$apply(function() { + _this.scope.Pages = 'test_Pages'; + }); + expect(this.location.path).toHaveBeenCalledWith('test_Pages'); + }); + }); +}); diff --git a/www/master/karma.conf.js b/www/master/karma.conf.js index 726a67ea063..af63c141d5f 100644 --- a/www/master/karma.conf.js +++ b/www/master/karma.conf.js @@ -27,7 +27,14 @@ module.exports = function(config) { browsers: ['Chrome'], - plugins: ['karma-chrome-launcher', 'karma-firefox-launcher', 'karma-jasmine', 'karma-junit-reporter'], + plugins: [ + 'karma-chrome-launcher', + 'karma-firefox-launcher', + 'karma-jasmine', + 'karma-junit-reporter', + 'karma-story-reporter', + 'karma-phantomjs-launcher' + ], junitReporter: {outputFile: 'test_out/unit.xml', suite: 'unit'} diff --git a/www/master/package.json b/www/master/package.json index 4466e9c9ed7..d38b054526e 100644 --- a/www/master/package.json +++ b/www/master/package.json @@ -39,6 +39,7 @@ "karma-cli": "0.0.4", "karma-jasmine": "^0.1.5", "karma-junit-reporter": "^0.2.2", + "karma-story-reporter": "^0.3.1", "protractor": "^1.1.1", "shelljs": "^0.2.6", "through2": "^0.6.3",