diff --git a/test/test.argscheck.js b/test/test.argscheck.js
index 6d057c7..09db660 100644
--- a/test/test.argscheck.js
+++ b/test/test.argscheck.js
@@ -73,7 +73,7 @@
         var testFunc = createTestFunc(true);
         expect(function () { testFunc(null, null, null, null, null, new Date()); }).toThrow('Wrong type for parameter "func" of testFunc: Expected Function, but got Date.');
     });
-    it('should not throw when checking is disabled', function () {
+    it('Test#011 : should not throw when checking is disabled', function () {
         var testFunc = createTestFunc(false);
         argscheck.enableChecks = false;
         testFunc();
diff --git a/test/test.base64.js b/test/test.base64.js
index 317fe26..1f33460 100644
--- a/test/test.base64.js
+++ b/test/test.base64.js
@@ -22,7 +22,7 @@
 describe('base64', function () {
     var base64 = require('cordova/base64');
 
-    it('can base64 encode strings correctly', function () {
+    it('Test#001 : can base64 encode strings correctly', function () {
         var arrayBuffer = new ArrayBuffer(6);
         var view = new Uint8Array(arrayBuffer);
         for (var i = 0; i < view.length; i++) {
@@ -36,7 +36,7 @@
         expect(base64.fromArrayBuffer(arrayBuffer)).toBe('AAECAwQF');
     });
 
-    it('can base64 encode a binary string in an ArrayBuffer', function () {
+    it('Test#002 : can base64 encode a binary string in an ArrayBuffer', function () {
         var arrayBuffer = new ArrayBuffer(256);
         var view = new Uint8Array(arrayBuffer);
         /* eslint-disable no-undef */
@@ -49,7 +49,7 @@
         expect(base64.fromArrayBuffer(arrayBuffer)).toBe(base64string);
     });
 
-    it('can base64 encode an text string in an ArrayBuffer', function () {
+    it('Test#003 : can base64 encode an text string in an ArrayBuffer', function () {
         var orig = 'Some Awesome Test This Is!';
         var base64string = typeof btoa !== 'undefined' ? btoa(orig) : Buffer.from('Some Awesome Test This Is!', 'binary').toString('base64');
         var arrayBuffer = new ArrayBuffer(orig.length);
@@ -62,7 +62,7 @@
         expect(base64.fromArrayBuffer(arrayBuffer)).toBe(base64string);
     });
 
-    it('can decode a base64-encoded text string into an ArrayBuffer', function () {
+    it('Test#004 : can decode a base64-encoded text string into an ArrayBuffer', function () {
         var orig = 'Some Awesome Test This Is!';
         var base64string = typeof btoa !== 'undefined' ? btoa(orig) : Buffer.from(orig, 'binary').toString('base64');
         /* eslint-enable no-undef */
diff --git a/test/test.channel.js b/test/test.channel.js
index 09290d8..49de5ee 100644
--- a/test/test.channel.js
+++ b/test/test.channel.js
@@ -336,7 +336,7 @@
         });
     });
     describe('onHasSubscribersChange', function () {
-        it('should be called only when the first subscriber is added and last subscriber is removed.', function () {
+        it('Test#027 : should be called only when the first subscriber is added and last subscriber is removed.', function () {
             var handler = jasmine.createSpy().andCallFake(function () {
                 if (callCount(handler) === 1) {
                     expect(this.numHandlers).toEqual(1);
diff --git a/test/test.utils.js b/test/test.utils.js
index 1b5e751..68c7ec0 100644
--- a/test/test.utils.js
+++ b/test/test.utils.js
@@ -38,7 +38,7 @@
     });
 
     describe('utils.arrayRemove', function () {
-        it('should return true when removed.', function () {
+        it('Test#005 : should return true when removed.', function () {
             var a = [1, 2, 3];
             expect(utils.arrayRemove(a, 2)).toBe(true);
             expect(a).toEqual([1, 3]);
