diff --git a/tests/tests.js b/tests/tests.js
index 61aab6b..6479e41 100644
--- a/tests/tests.js
+++ b/tests/tests.js
@@ -19,31 +19,25 @@
  *
 */
 
-exports = {
-    defineAutoTests:function () {
-      describe("Console", function () {
-        it("console.spec.1 should exist", function() {
-            expect(window.console).toBeDefined();
-        });
+exports.defineAutoTests = function () {
+  describe("Console", function () {
+    it("console.spec.1 should exist", function() {
+        expect(window.console).toBeDefined();
+    });
+    
+    it("console.spec.2 has required methods log|warn|error", function(){
+        expect(window.console.log).toBeDefined();
+        expect(typeof window.console.log).toBe('function');
         
-        it("console.spec.2 has required methods",function(){
-            expect(window.console.log).toBeDefined();
-            expect(typeof window.console.log).toBe('function');
-            
-            expect(window.console.warn).toBeDefined();
-            expect(typeof window.console.warn).toBe('function');
-            
-            expect(window.console.error).toBeDefined();
-            expect(typeof window.console.error).toBe('function');
-            
-            expect(window.console.info).toBeDefined();
-            expect(typeof window.console.info).toBe('function');
-        });
+        expect(window.console.warn).toBeDefined();
+        expect(typeof window.console.warn).toBe('function');
         
-      });
-    },
-
-    defineManualTests:function (contentEl, createActionButton) {
-      
-    }
+        expect(window.console.error).toBeDefined();
+        expect(typeof window.console.error).toBe('function');                   
+        
+    });
+    
+  });
 };
+
+exports.defineManualTests = function (contentEl, createActionButton) {};
