This tests creating an index on an object store that already has records, and those records would violate the unique constraint of the index. (The index creation should fail).

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)
Initial upgrade needed: Old version - 0 New version - 1
Error getting cursor count
Error opening or iterating cursor
Initial upgrade versionchange transaction aborted (expected because index creation failed, and that should've caused transaction abort)
PASS successfullyParsed is true

TEST COMPLETE

