Test IndexedDB's openCursor. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". webkitIndexedDB.open('cursor-index-delete') db = event.target.result db.setVersion('new version') setVersionSuccess(): trans = event.target.result PASS trans !== null is true Deleted all object stores. 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'], webkitIDBTransaction.READ_WRITE) 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'], webkitIDBTransaction.READ_WRITE) 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) event.preventDefault() PASS successfullyParsed is true TEST COMPLETE