Test event propogation on IDBTransaction. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". webkitIndexedDB.open('name') PASS 'onsuccess' in result is true PASS 'onerror' in result is true PASS 'readyState' in result is true An event should fire shortly... db = event.result db.setVersion('new version') PASS 'onsuccess' in result is true PASS 'onerror' in result is true PASS 'readyState' in result is true An event should fire shortly... trans = event.result PASS trans !== null is true trans.oncomplete = startTest Deleted all object stores. store = db.createObjectStore('storeName', null) store.add({x: 'value', y: 'zzz'}, 'key') Verifing abort trans = db.transaction([], webkitIDBTransaction.READ_WRITE) trans.onabort = abortFiredCallback trans.oncomplete = unexpectedAbortCallback db.addEventListener('abort', dbAbortCaptureCallback, true) db.addEventListener('abort', dbAbortBubbleCallback, false) db.addEventListener('complete', unexpectedCompleteCallback, true) db.addEventListener('complete', unexpectedCompleteCallback, false) store = trans.objectStore('storeName') store.add({x: 'value', y: 'zzz'}, 'key') In IDBDatabase abort capture PASS dbCaptureFired is false PASS abortFired is false PASS dbBubbleFired1 is false In abort handler PASS dbCaptureFired is true PASS abortFired is false PASS dbBubbleFired1 is false In IDBDatabase error bubble PASS dbCaptureFired is true PASS abortFired is true PASS dbBubbleFired1 is false Verifing success. trans = db.transaction([], webkitIDBTransaction.READ_WRITE) trans.oncomplete = completeFiredCallback trans.onabort = unexpectedAbortCallback db.removeEventListener('abort', dbAbortCaptureCallback, true) db.removeEventListener('abort', dbAbortBubbleCallback, false) db.removeEventListener('complete', unexpectedCompleteCallback, true) db.removeEventListener('complete', unexpectedCompleteCallback, false) db.addEventListener('complete', dbCompleteCaptureCallback, true) db.addEventListener('complete', dbCompleteBubbleCallback, false) db.addEventListener('abort', unexpectedAbortCallback, true) db.addEventListener('abort', unexpectedAbortCallback, false) store = trans.objectStore('storeName') store.add({x: 'value', y: 'zzz'}, 'key2') In IDBDatabase complete capture PASS dbCaptureFired is false PASS completeFired is false PASS dbBubbleFired2 is false In IDBRequest handler PASS dbCaptureFired is true PASS completeFired is false PASS dbBubbleFired2 is false PASS successfullyParsed is true TEST COMPLETE