Ensure pending open waits for version change transaction to complete. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". dbname = "version-change-exclusive.html" indexedDB.deleteDatabase(dbname) indexedDB.open(dbname) calling open() - callback should wait until VERSION_CHANGE transaction is complete indexedDB.open(dbname) setVersion() callback starting work in VERSION_CHANGE transaction self.state = 'VERSION_CHANGE started' store = db.createObjectStore('test-store') Expecting exception from db.transaction('test-store', 'readonly') PASS Exception was thrown. PASS code is DOMException.INVALID_STATE_ERR PASS ename is 'InvalidStateError' Exception message: Failed to execute 'transaction' on 'IDBDatabase': A version change transaction is running. store.put(0, 0) in put's onsuccess store.put(1, 1) in put's onsuccess store.put(2, 2) in put's onsuccess store.put(3, 3) in put's onsuccess store.put(4, 4) in put's onsuccess store.put(5, 5) in put's onsuccess store.put(6, 6) in put's onsuccess store.put(7, 7) in put's onsuccess store.put(8, 8) in put's onsuccess store.put(9, 9) in put's onsuccess ending work in VERSION_CHANGE transaction self.state = 'VERSION_CHANGE finished' open() callback - this should appear after VERSION_CHANGE transaction ends PASS self.state is "VERSION_CHANGE finished" PASS successfullyParsed is true TEST COMPLETE