This test creates two object stores. It then opens two long running read-only transactions, one per object store. It then opens a read-write transaction to both object stores. The read-only transactions both need to finish before the read-write transaction starts.

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)
Upgrade needed: Old version - 0 New version - 1
versionchange transaction completed
Success opening database connection - Starting transactions
Starting write transaction
Read transaction complete - [object Event]
Read transaction complete - [object Event]
Write to OS1 successful
Write to OS2 successful
PASS successfullyParsed is true

TEST COMPLETE

