Test IndexedDB's IDBIndex.count(). On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB; indexedDB.deleteDatabase(dbname) indexedDB.open(dbname) store = db.createObjectStore('storeName', null) store.createIndex('indexName', '') PASS store.indexNames.contains('indexName') is true adding 0 ... 99 verifying count without range trans = db.transaction('storeName', 'readonly') PASS trans is non-null. store = trans.objectStore('storeName') PASS store is non-null. index = store.index('indexName') PASS index is non-null. request = index.count() PASS typeof request.result is "number" PASS request.result is 100 verifying count with range trans = db.transaction('storeName', 'readonly') PASS trans is non-null. store = trans.objectStore('storeName') PASS store is non-null. index = trans.objectStore('storeName').index('indexName') PASS index is non-null. test = {"lower":0,"lowerOpen":false,"upper":99,"upperOpen":false,"expected":100} request = index.count(IDBKeyRange.bound(test.lower, test.upper, test.lowerOpen, test.upperOpen)) PASS typeof request.result is "number" PASS request.result is 100 test = {"lower":0,"lowerOpen":true,"upper":99,"upperOpen":false,"expected":99} request = index.count(IDBKeyRange.bound(test.lower, test.upper, test.lowerOpen, test.upperOpen)) PASS typeof request.result is "number" PASS request.result is 99 test = {"lower":0,"lowerOpen":false,"upper":99,"upperOpen":true,"expected":99} request = index.count(IDBKeyRange.bound(test.lower, test.upper, test.lowerOpen, test.upperOpen)) PASS typeof request.result is "number" PASS request.result is 99 test = {"lower":0,"lowerOpen":true,"upper":99,"upperOpen":true,"expected":98} request = index.count(IDBKeyRange.bound(test.lower, test.upper, test.lowerOpen, test.upperOpen)) PASS typeof request.result is "number" PASS request.result is 98 test = {"lower":0,"lowerOpen":false,"upper":100,"upperOpen":false,"expected":100} request = index.count(IDBKeyRange.bound(test.lower, test.upper, test.lowerOpen, test.upperOpen)) PASS typeof request.result is "number" PASS request.result is 100 test = {"lower":0,"lowerOpen":false,"upper":100,"upperOpen":false,"expected":100} request = index.count(IDBKeyRange.bound(test.lower, test.upper, test.lowerOpen, test.upperOpen)) PASS typeof request.result is "number" PASS request.result is 100 test = {"lower":10,"lowerOpen":false,"upper":100,"upperOpen":false,"expected":90} request = index.count(IDBKeyRange.bound(test.lower, test.upper, test.lowerOpen, test.upperOpen)) PASS typeof request.result is "number" PASS request.result is 90 test = {"lower":0,"lowerOpen":false,"upper":0,"upperOpen":false,"expected":1} request = index.count(IDBKeyRange.bound(test.lower, test.upper, test.lowerOpen, test.upperOpen)) PASS typeof request.result is "number" PASS request.result is 1 test = {"lower":500,"lowerOpen":false,"upper":500,"upperOpen":false,"expected":0} request = index.count(IDBKeyRange.bound(test.lower, test.upper, test.lowerOpen, test.upperOpen)) PASS typeof request.result is "number" PASS request.result is 0 verifying count with key trans = db.transaction('storeName', 'readonly') PASS trans is non-null. store = trans.objectStore('storeName') PASS store is non-null. index = trans.objectStore('storeName').index('indexName') PASS index is non-null. Expecting exception from index.count(NaN) PASS Exception was thrown. PASS code is 0 PASS ename is 'DataError' Exception message: Failed to execute 'count' on 'IDBIndex': The parameter is not a valid key. Expecting exception from index.count({}) PASS Exception was thrown. PASS code is 0 PASS ename is 'DataError' Exception message: Failed to execute 'count' on 'IDBIndex': The parameter is not a valid key. Expecting exception from index.count(/regex/) PASS Exception was thrown. PASS code is 0 PASS ename is 'DataError' Exception message: Failed to execute 'count' on 'IDBIndex': The parameter is not a valid key. test = {"key":0,"expected":1} request = index.count(test.key) PASS typeof request.result is "number" PASS request.result is 1 test = {"key":100,"expected":0} request = index.count(test.key) PASS typeof request.result is "number" PASS request.result is 0 test = {"key":null,"expected":100} request = index.count(test.key) PASS typeof request.result is "number" PASS request.result is 100 PASS successfullyParsed is true TEST COMPLETE