Test IndexedDB's openCursor. 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) trans = event.target.transaction PASS trans is non-null. objectStore = db.createObjectStore('test') objectStore.createIndex('testIndex', 'x') objectStore.add({x: 1}, 'myKey1') objectStore.add({x: 2}, 'myKey2') objectStore.add({x: 3}, 'myKey3') objectStore.add({x: 4}, 'myKey4') openCursor1 trans = db.transaction(['test'], 'readwrite') trans.objectStore('test').index('testIndex').openCursor(keyRange) event.target.result.delete() PASS event.target.result.key is counter++ event.target.result.continue() event.target.result.delete() PASS event.target.result.key is counter++ event.target.result.continue() event.target.result.delete() PASS event.target.result.key is counter++ event.target.result.continue() event.target.result.delete() PASS event.target.result.key is counter++ event.target.result.continue() PASS counter is 5 trans.objectStore('test').index('testIndex').openCursor(keyRange) PASS event.target.result is null trans = db.transaction(['test'], 'readwrite') objectStore = trans.objectStore('test') objectStore.add({x: 1}, 'myKey1') openCursor2 index = event.target.source.index('testIndex') index.openCursor(keyRange) PASS [object IDBCursorWithValue] is non-null. event.target.result.delete() index.get(1) PASS event.target.result is undefined PASS successfullyParsed is true TEST COMPLETE