Test calling db.open in upgradeneeded. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". dbname = "intversion-open-in-upgradeneeded.html" indexedDB.deleteDatabase(dbname) request = indexedDB.open(dbname, 1) request.onupgradeneeded = upgradeNeeded1 request.onsuccess = openSuccess1 upgradeNeeded1(): db = event.target.result PASS event.newVersion is 1 transaction = event.target.transaction db.createObjectStore('os') db.onversionchange = onVersionChange request = indexedDB.open(dbname, 3) request.onupgradeneeded = upgradeNeeded2 request.onsuccess = openSuccess2 transactionOnComplete(): sawTransactionComplete = true openSuccess1(): PASS sawTransactionComplete is true db = event.target.result PASS db.version is 1 Start a transaction to ensure the connection is still open. transaction = db.transaction('os', 'readonly') onVersionChange(): db.close() upgradeNeeded2(): db = event.target.result PASS event.newVersion is 3 openSuccess2(): db = event.target.result PASS db.version is 3 PASS successfullyParsed is true TEST COMPLETE