diff --git a/javascript/angular/exercices/karma/app/app.js b/javascript/angular/exercices/karma/app/app.js
new file mode 100644
index 0000000..48acae9
--- /dev/null
+++ b/javascript/angular/exercices/karma/app/app.js
@@ -0,0 +1,12 @@
+var myApp = angular.module('myApp', []);
+
+myApp.controller('ExoCtrl', ['$scope', function($scope) {
+
+ $scope.val1 = 1;
+ $scope.val2 = 2;
+
+ $scope.add = function() {
+ $scope.result = $scope.val1 + $scope.val2;
+ };
+
+}]);
diff --git a/javascript/angular/exercices/karma/karma.conf.js b/javascript/angular/exercices/karma/karma.conf.js
new file mode 100644
index 0000000..eb78d2e
--- /dev/null
+++ b/javascript/angular/exercices/karma/karma.conf.js
@@ -0,0 +1,68 @@
+// Karma configuration
+// Generated on Fri Apr 10 2015 00:15:38 GMT+0200 (CEST)
+
+module.exports = function(config) {
+ config.set({
+
+ // base path that will be used to resolve all patterns (eg. files, exclude)
+ basePath: '',
+
+
+ // frameworks to use
+ // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
+ frameworks: ['jasmine'],
+
+
+ // list of files / patterns to load in the browser
+ files: [
+ '../node_modules/angular/angular.js',
+ 'node_modules/angular-mocks/angular-mocks.js',
+ 'app/app.js',
+ 'test/**/*Spec.js'
+ ],
+
+
+ // list of files to exclude
+ exclude: [
+ ],
+
+
+ // preprocess matching files before serving them to the browser
+ // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
+ preprocessors: {
+ },
+
+
+ // test results reporter to use
+ // possible values: 'dots', 'progress'
+ // available reporters: https://npmjs.org/browse/keyword/karma-reporter
+ reporters: ['progress'],
+
+
+ // web server port
+ port: 9876,
+
+
+ // enable / disable colors in the output (reporters and logs)
+ colors: true,
+
+
+ // level of logging
+ // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
+ logLevel: config.LOG_INFO,
+
+
+ // enable / disable watching file and executing tests whenever any file changes
+ autoWatch: true,
+
+
+ // start these browsers
+ // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
+ browsers: ['Firefox'],
+
+
+ // Continuous Integration mode
+ // if true, Karma captures browsers, runs the tests and exits
+ singleRun: false
+ });
+};
diff --git a/javascript/angular/exercices/karma/package.json b/javascript/angular/exercices/karma/package.json
new file mode 100644
index 0000000..ffe4c06
--- /dev/null
+++ b/javascript/angular/exercices/karma/package.json
@@ -0,0 +1,21 @@
+{
+ "name": "karma-exercice",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "author": "",
+ "license": "ISC",
+ "dependencies": {
+ "angular-mocks": "^1.3.15",
+ "karma": "^0.12.31"
+ },
+ "devDependencies": {
+ "jasmine-core": "^2.2.0",
+ "karma-chrome-launcher": "^0.1.7",
+ "karma-firefox-launcher": "^0.1.4",
+ "karma-jasmine": "^0.3.5"
+ }
+}
diff --git a/javascript/angular/exercices/karma/test/ExoControllerSpec.js b/javascript/angular/exercices/karma/test/ExoControllerSpec.js
new file mode 100644
index 0000000..e911bb6
--- /dev/null
+++ b/javascript/angular/exercices/karma/test/ExoControllerSpec.js
@@ -0,0 +1,29 @@
+describe('ExoController', function() {
+
+ beforeEach(module('myApp'));
+
+ var $controller;
+
+ beforeEach(inject(function(_$controller_){
+ $controller = _$controller_;
+ }));
+
+ describe('$scope.add', function() {
+
+ it('Il additionne les valeurs $scope.val1 et $scope.val2 et stocke le résultat dans $scope.result', function() {
+
+ var $scope = {};
+ var controller = $controller('ExoCtrl', {$scope: $scope});
+ $scope.val1 = 2;
+ $scope.val2 = 4;
+
+ $scope.add();
+
+ expect($scope.result).toEqual(6);
+
+
+ });
+
+ });
+
+});
diff --git a/javascript/angular/exercices/protractor/app/app.js b/javascript/angular/exercices/protractor/app/app.js
new file mode 100644
index 0000000..48acae9
--- /dev/null
+++ b/javascript/angular/exercices/protractor/app/app.js
@@ -0,0 +1,12 @@
+var myApp = angular.module('myApp', []);
+
+myApp.controller('ExoCtrl', ['$scope', function($scope) {
+
+ $scope.val1 = 1;
+ $scope.val2 = 2;
+
+ $scope.add = function() {
+ $scope.result = $scope.val1 + $scope.val2;
+ };
+
+}]);
diff --git a/javascript/angular/exercices/todos/.solution/index.html b/javascript/angular/exercices/todos/.solution/index.html
index 04e01f2..5ad1309 100644
--- a/javascript/angular/exercices/todos/.solution/index.html
+++ b/javascript/angular/exercices/todos/.solution/index.html
@@ -37,7 +37,7 @@
-
+