gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-wallet-core] 02/02: idb-bridge: update tests for ava 4.x


From: gnunet
Subject: [taler-wallet-core] 02/02: idb-bridge: update tests for ava 4.x
Date: Thu, 10 Feb 2022 19:53:49 +0100

This is an automated email from the git hooks/post-receive script.

dold pushed a commit to branch master
in repository wallet-core.

commit 5ff3b44550d4f5ab9a20d85dbf4387d455ebb862
Author: Florian Dold <florian@dold.me>
AuthorDate: Thu Feb 10 19:52:45 2022 +0100

    idb-bridge: update tests for ava 4.x
---
 packages/idb-bridge/package.json                   |  11 +-
 packages/idb-bridge/src/MemoryBackend.test.ts      |  36 +-
 packages/idb-bridge/src/MemoryBackend.ts           |  20 +-
 packages/idb-bridge/src/backend-interface.ts       |   4 +-
 packages/idb-bridge/src/bridge-idb.ts              |  33 +-
 .../abort-in-initial-upgradeneeded.test.ts         |   2 +-
 .../idb-wpt-ported/close-in-upgradeneeded.test.ts  |  76 +-
 .../src/idb-wpt-ported/cursor-overloads.test.ts    | 211 +++---
 .../event-dispatch-active-flag.test.ts             |   5 +-
 .../idb-wpt-ported/idbcursor-advance-index.test.ts |   6 +-
 .../idbcursor-continue-index.test.ts               | 694 +++++++++---------
 .../idbcursor-continue-objectstore.test.ts         | 439 ++++++------
 .../idbcursor-delete-exception-order.test.ts       |   2 +-
 .../idb-wpt-ported/idbcursor-delete-index.test.ts  | 354 +++++-----
 .../idbcursor-delete-objectstore.test.ts           | 330 ++++-----
 .../src/idb-wpt-ported/idbcursor-reused.test.ts    |   2 +-
 .../idb-wpt-ported/idbcursor-update-index.test.ts  | 594 ++++++++--------
 .../src/idb-wpt-ported/idbfactory-cmp.test.ts      |   2 +-
 .../src/idb-wpt-ported/idbfactory-open.test.ts     |   6 +-
 .../src/idb-wpt-ported/idbindex-get.test.ts        |   6 +-
 .../src/idb-wpt-ported/idbindex-openCursor.test.ts | 125 ++--
 .../idbobjectstore-add-put-exception-order.test.ts |   5 +-
 .../src/idb-wpt-ported/idbobjectstore-add.test.ts  |   6 +-
 .../src/idb-wpt-ported/idbobjectstore-get.test.ts  | 275 ++++----
 .../src/idb-wpt-ported/idbobjectstore-put.test.ts  | 776 +++++++++++----------
 .../idbobjectstore-rename-store.test.ts            |   2 +-
 .../idbtransaction-oncomplete.test.ts              |   2 +-
 .../idb-bridge/src/idb-wpt-ported/keypath.test.ts  |   2 +-
 .../request-bubble-and-capture.test.ts             |   5 +-
 .../transaction-requestqueue.test.ts               |   6 +-
 .../idb-bridge/src/idb-wpt-ported/value.test.ts    |  72 +-
 .../idb-bridge/src/idb-wpt-ported/wptsupport.ts    |  11 +-
 packages/idb-bridge/src/util/FakeEvent.ts          |   4 +-
 packages/idb-bridge/src/util/FakeEventTarget.ts    |   4 +-
 packages/idb-bridge/src/util/canInjectKey.test.ts  |   2 +-
 packages/idb-bridge/src/util/canInjectKey.ts       |   2 +-
 packages/idb-bridge/src/util/cmp.ts                |   4 +-
 packages/idb-bridge/src/util/extractKey.ts         |   4 +-
 packages/idb-bridge/src/util/fakeDOMStringList.ts  |   1 -
 packages/idb-bridge/src/util/getIndexKeys.test.ts  |  10 +-
 packages/idb-bridge/src/util/getIndexKeys.ts       |   6 +-
 .../idb-bridge/src/util/makeStoreKeyValue.test.ts  |   2 +-
 packages/idb-bridge/src/util/makeStoreKeyValue.ts  |  10 +-
 .../idb-bridge/src/util/structuredClone.test.ts    |   2 +-
 packages/idb-bridge/src/util/validateKeyPath.ts    |   2 +-
 packages/idb-bridge/src/util/valueToKey.ts         |   4 +-
 pnpm-lock.yaml                                     |  29 +-
 47 files changed, 2183 insertions(+), 2023 deletions(-)

diff --git a/packages/idb-bridge/package.json b/packages/idb-bridge/package.json
index 87add525..b26ce20e 100644
--- a/packages/idb-bridge/package.json
+++ b/packages/idb-bridge/package.json
@@ -4,6 +4,7 @@
   "description": "IndexedDB implementation that uses SQLite3 as storage",
   "main": "./dist/idb-bridge.js",
   "module": "./lib/index.js",
+  "type": "module",
   "types": "./lib/index.d.ts",
   "author": "Florian Dold",
   "license": "AGPL-3.0-or-later",
@@ -19,13 +20,13 @@
     "@rollup/plugin-commonjs": "^21.0.1",
     "@rollup/plugin-json": "^4.1.0",
     "@rollup/plugin-node-resolve": "^13.1.3",
-    "@types/node": "^17.0.8",
-    "ava": "^3.15.0",
+    "@types/node": "^17.0.17",
+    "ava": "^4.0.1",
     "esm": "^3.2.25",
-    "prettier": "^2.2.1",
+    "prettier": "^2.5.1",
     "rimraf": "^3.0.2",
-    "rollup": "^2.63.0",
-    "typescript": "^4.5.4"
+    "rollup": "^2.67.2",
+    "typescript": "^4.5.5"
   },
   "dependencies": {
     "tslib": "^2.3.1"
diff --git a/packages/idb-bridge/src/MemoryBackend.test.ts 
b/packages/idb-bridge/src/MemoryBackend.test.ts
index 3c5e13df..b36143aa 100644
--- a/packages/idb-bridge/src/MemoryBackend.test.ts
+++ b/packages/idb-bridge/src/MemoryBackend.test.ts
@@ -22,14 +22,14 @@ import {
   BridgeIDBKeyRange,
   BridgeIDBRequest,
   BridgeIDBTransaction,
-} from "./bridge-idb";
+} from "./bridge-idb.js";
 import {
   IDBCursorDirection,
   IDBCursorWithValue,
   IDBKeyRange,
   IDBValidKey,
 } from "./idbtypes.js";
-import { MemoryBackend } from "./MemoryBackend";
+import { MemoryBackend } from "./MemoryBackend.js";
 
 function promiseFromRequest(request: BridgeIDBRequest): Promise<any> {
   return new Promise((resolve, reject) => {
@@ -150,7 +150,7 @@ test("Spec: Example 1 Part 3", async (t) => {
 
   await promiseFromRequest(request3);
 
-  let cursor: BridgeIDBCursorWithValue;
+  let cursor: BridgeIDBCursorWithValue | null;
   cursor = request3.result as BridgeIDBCursorWithValue;
   t.is(cursor.value.author, "Fred");
   t.is(cursor.value.isbn, 123456);
@@ -172,6 +172,9 @@ test("Spec: Example 1 Part 3", async (t) => {
   await promiseFromRequest(request4);
 
   cursor = request4.result;
+  if (!cursor) {
+    throw new Error();
+  }
   t.is(cursor.value.isbn, 123456);
 
   cursor.continue();
@@ -179,6 +182,9 @@ test("Spec: Example 1 Part 3", async (t) => {
   await promiseFromRequest(request4);
 
   cursor = request4.result;
+  if (!cursor) {
+    throw new Error();
+  }
   t.is(cursor.value.isbn, 234567);
 
   cursor.continue();
@@ -186,6 +192,9 @@ test("Spec: Example 1 Part 3", async (t) => {
   await promiseFromRequest(request4);
 
   cursor = request4.result;
+  if (!cursor) {
+    throw new Error();
+  }
   t.is(cursor.value.isbn, 345678);
 
   cursor.continue();
@@ -203,16 +212,25 @@ test("Spec: Example 1 Part 3", async (t) => {
 
   await promiseFromRequest(request5);
   cursor = request5.result;
+  if (!cursor) {
+    throw new Error();
+  }
   t.is(cursor.value.author, "Barney");
   cursor.continue();
 
   await promiseFromRequest(request5);
   cursor = request5.result;
+  if (!cursor) {
+    throw new Error();
+  }
   t.is(cursor.value.author, "Fred");
   cursor.continue();
 
   await promiseFromRequest(request5);
   cursor = request5.result;
+  if (!cursor) {
+    throw new Error();
+  }
   t.is(cursor.value.author, "Fred");
   cursor.continue();
 
@@ -224,11 +242,17 @@ test("Spec: Example 1 Part 3", async (t) => {
 
   await promiseFromRequest(request6);
   cursor = request6.result;
+  if (!cursor) {
+    throw new Error();
+  }
   t.is(cursor.value.author, "Barney");
   cursor.continue();
 
   await promiseFromRequest(request6);
   cursor = request6.result;
+  if (!cursor) {
+    throw new Error();
+  }
   t.is(cursor.value.author, "Fred");
   t.is(cursor.value.isbn, 123456);
   cursor.continue();
@@ -240,12 +264,18 @@ test("Spec: Example 1 Part 3", async (t) => {
   const request7 = index5.openCursor(null, "prevunique");
   await promiseFromRequest(request7);
   cursor = request7.result;
+  if (!cursor) {
+    throw new Error();
+  }
   t.is(cursor.value.author, "Fred");
   t.is(cursor.value.isbn, 123456);
   cursor.continue();
 
   await promiseFromRequest(request7);
   cursor = request7.result;
+  if (!cursor) {
+    throw new Error();
+  }
   t.is(cursor.value.author, "Barney");
   cursor.continue();
 
diff --git a/packages/idb-bridge/src/MemoryBackend.ts 
b/packages/idb-bridge/src/MemoryBackend.ts
index b37dd376..3919cdf9 100644
--- a/packages/idb-bridge/src/MemoryBackend.ts
+++ b/packages/idb-bridge/src/MemoryBackend.ts
@@ -26,20 +26,20 @@ import {
   ResultLevel,
   StoreLevel,
   RecordStoreResponse,
-} from "./backend-interface";
+} from "./backend-interface.js";
 import {
   structuredClone,
   structuredEncapsulate,
   structuredRevive,
-} from "./util/structuredClone";
-import { ConstraintError, DataError } from "./util/errors";
-import BTree, { ISortedMapF, ISortedSetF } from "./tree/b+tree";
-import { compareKeys } from "./util/cmp";
-import { StoreKeyResult, makeStoreKeyValue } from "./util/makeStoreKeyValue";
-import { getIndexKeys } from "./util/getIndexKeys";
-import { openPromise } from "./util/openPromise";
-import { IDBKeyRange, IDBTransactionMode, IDBValidKey } from "./idbtypes";
-import { BridgeIDBKeyRange } from "./bridge-idb";
+} from "./util/structuredClone.js";
+import { ConstraintError, DataError } from "./util/errors.js";
+import BTree, { ISortedMapF, ISortedSetF } from "./tree/b+tree.js";
+import { compareKeys } from "./util/cmp.js";
+import { StoreKeyResult, makeStoreKeyValue } from 
"./util/makeStoreKeyValue.js";
+import { getIndexKeys } from "./util/getIndexKeys.js";
+import { openPromise } from "./util/openPromise.js";
+import { IDBKeyRange, IDBTransactionMode, IDBValidKey } from "./idbtypes.js";
+import { BridgeIDBKeyRange } from "./bridge-idb.js";
 
 type Key = IDBValidKey;
 type Value = unknown;
diff --git a/packages/idb-bridge/src/backend-interface.ts 
b/packages/idb-bridge/src/backend-interface.ts
index 1b9883d2..a2151554 100644
--- a/packages/idb-bridge/src/backend-interface.ts
+++ b/packages/idb-bridge/src/backend-interface.ts
@@ -14,12 +14,12 @@
  permissions and limitations under the License.
  */
 
-import { BridgeIDBDatabaseInfo, BridgeIDBKeyRange } from "./bridge-idb";
+import { BridgeIDBDatabaseInfo, BridgeIDBKeyRange } from "./bridge-idb.js";
 import {
   IDBCursorDirection,
   IDBTransactionMode,
   IDBValidKey,
-} from "./idbtypes";
+} from "./idbtypes.js";
 
 /** @public */
 export interface ObjectStoreProperties {
diff --git a/packages/idb-bridge/src/bridge-idb.ts 
b/packages/idb-bridge/src/bridge-idb.ts
index 8264b43e..35cedb1d 100644
--- a/packages/idb-bridge/src/bridge-idb.ts
+++ b/packages/idb-bridge/src/bridge-idb.ts
@@ -24,7 +24,7 @@ import {
   ResultLevel,
   Schema,
   StoreLevel,
-} from "./backend-interface";
+} from "./backend-interface.js";
 import {
   DOMException,
   DOMStringList,
@@ -41,10 +41,10 @@ import {
   IDBTransaction,
   IDBTransactionMode,
   IDBValidKey,
-} from "./idbtypes";
-import { canInjectKey } from "./util/canInjectKey";
-import { compareKeys } from "./util/cmp";
-import { enforceRange } from "./util/enforceRange";
+} from "./idbtypes.js";
+import { canInjectKey } from "./util/canInjectKey.js";
+import { compareKeys } from "./util/cmp.js";
+import { enforceRange } from "./util/enforceRange.js";
 import {
   AbortError,
   ConstraintError,
@@ -56,20 +56,19 @@ import {
   ReadOnlyError,
   TransactionInactiveError,
   VersionError,
-} from "./util/errors";
-import { FakeDOMStringList, fakeDOMStringList } from 
"./util/fakeDOMStringList";
-import FakeEvent from "./util/FakeEvent";
-import FakeEventTarget from "./util/FakeEventTarget";
-import { makeStoreKeyValue } from "./util/makeStoreKeyValue";
-import { normalizeKeyPath } from "./util/normalizeKeyPath";
-import { openPromise } from "./util/openPromise";
-import queueTask from "./util/queueTask";
+} from "./util/errors.js";
+import { FakeDOMStringList, fakeDOMStringList } from 
"./util/fakeDOMStringList.js";
+import FakeEvent from "./util/FakeEvent.js";
+import FakeEventTarget from "./util/FakeEventTarget.js";
+import { makeStoreKeyValue } from "./util/makeStoreKeyValue.js";
+import { normalizeKeyPath } from "./util/normalizeKeyPath.js";
+import { openPromise } from "./util/openPromise.js";
+import queueTask from "./util/queueTask.js";
 import {
   checkStructuredCloneOrThrow,
-  structuredClone,
-} from "./util/structuredClone";
-import { validateKeyPath } from "./util/validateKeyPath";
-import { valueToKey } from "./util/valueToKey";
+} from "./util/structuredClone.js";
+import { validateKeyPath } from "./util/validateKeyPath.js";
+import { valueToKey } from "./util/valueToKey.js";
 
 /** @public */
 export type CursorSource = BridgeIDBIndex | BridgeIDBObjectStore;
diff --git 
a/packages/idb-bridge/src/idb-wpt-ported/abort-in-initial-upgradeneeded.test.ts 
b/packages/idb-bridge/src/idb-wpt-ported/abort-in-initial-upgradeneeded.test.ts
index 3b65a903..bbbcf9b9 100644
--- 
a/packages/idb-bridge/src/idb-wpt-ported/abort-in-initial-upgradeneeded.test.ts
+++ 
b/packages/idb-bridge/src/idb-wpt-ported/abort-in-initial-upgradeneeded.test.ts
@@ -1,5 +1,5 @@
 import test from "ava";
-import { createdb } from "./wptsupport";
+import { createdb } from "./wptsupport.js";
 
 test("WPT test abort-in-initial-upgradeneeded.htm", async (t) => {
   await new Promise<void>((resolve, reject) => {
diff --git 
a/packages/idb-bridge/src/idb-wpt-ported/close-in-upgradeneeded.test.ts 
b/packages/idb-bridge/src/idb-wpt-ported/close-in-upgradeneeded.test.ts
index 96abe391..723a0abb 100644
--- a/packages/idb-bridge/src/idb-wpt-ported/close-in-upgradeneeded.test.ts
+++ b/packages/idb-bridge/src/idb-wpt-ported/close-in-upgradeneeded.test.ts
@@ -1,44 +1,44 @@
 import test from "ava";
-import { BridgeIDBCursor } from "..";
-import { BridgeIDBCursorWithValue } from "../bridge-idb";
-import { createdb } from "./wptsupport";
+import { createdb } from "./wptsupport.js";
 
 // When db.close is called in upgradeneeded, the db is cleaned up on refresh
-test.cb("WPT test close-in-upgradeneeded.htm", (t) => {
-  var db: any;
-  var open_rq = createdb(t);
-  var sawTransactionComplete = false;
-
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-    t.deepEqual(db.version, 1);
-
-    db.createObjectStore("os");
-    db.close();
+test("WPT test close-in-upgradeneeded.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any;
+    var open_rq = createdb(t);
+    var sawTransactionComplete = false;
+
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+      t.deepEqual(db.version, 1);
+
+      db.createObjectStore("os");
+      db.close();
+
+      e.target.transaction.oncomplete = function () {
+        sawTransactionComplete = true;
+      };
+    };
 
-    e.target.transaction.oncomplete = function () {
-      sawTransactionComplete = true;
+    open_rq.onerror = function (e: any) {
+      t.true(sawTransactionComplete, "saw transaction.complete");
+
+      t.deepEqual(e.target.error.name, "AbortError");
+      t.deepEqual(e.result, undefined);
+
+      t.true(!!db);
+      t.deepEqual(db.version, 1);
+      t.deepEqual(db.objectStoreNames.length, 1);
+      t.throws(
+        () => {
+          db.transaction("os");
+        },
+        {
+          name: "InvalidStateError",
+        },
+      );
+
+      resolve();
     };
-  };
-
-  open_rq.onerror = function (e: any) {
-    t.true(sawTransactionComplete, "saw transaction.complete");
-
-    t.deepEqual(e.target.error.name, "AbortError");
-    t.deepEqual(e.result, undefined);
-
-    t.true(!!db);
-    t.deepEqual(db.version, 1);
-    t.deepEqual(db.objectStoreNames.length, 1);
-    t.throws(
-      () => {
-        db.transaction("os");
-      },
-      {
-        name: "InvalidStateError",
-      },
-    );
-
-    t.end();
-  };
+  });
 });
diff --git a/packages/idb-bridge/src/idb-wpt-ported/cursor-overloads.test.ts 
b/packages/idb-bridge/src/idb-wpt-ported/cursor-overloads.test.ts
index c4bce874..db2cdbca 100644
--- a/packages/idb-bridge/src/idb-wpt-ported/cursor-overloads.test.ts
+++ b/packages/idb-bridge/src/idb-wpt-ported/cursor-overloads.test.ts
@@ -1,117 +1,130 @@
 import test from "ava";
-import { BridgeIDBCursor, BridgeIDBKeyRange } from "..";
-import { BridgeIDBCursorWithValue } from "../bridge-idb";
-import { IDBRequest } from "../idbtypes";
-import { createdb } from "./wptsupport";
+import { BridgeIDBKeyRange } from "../bridge-idb.js";
+import { IDBRequest } from "../idbtypes.js";
+import { createdb } from "./wptsupport.js";
 
 const IDBKeyRange = BridgeIDBKeyRange;
 
 // Validate the overloads of IDBObjectStore.openCursor(),
 // IDBIndex.openCursor() and IDBIndex.openKeyCursor()
-test.cb("WPT test cursor-overloads.htm", (t) => {
-  var db: any, store: any, index: any;
+test("WPT test cursor-overloads.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any, store: any, index: any;
 
-  var request = createdb(t);
-  request.onupgradeneeded = function (e: any) {
-    db = request.result;
-    store = db.createObjectStore("store");
-    index = store.createIndex("index", "value");
-    store.put({ value: 0 }, 0);
-    const trans = request.transaction!;
-    trans.oncomplete = verifyOverloads;
-  };
+    var request = createdb(t);
+    request.onupgradeneeded = function (e: any) {
+      db = request.result;
+      store = db.createObjectStore("store");
+      index = store.createIndex("index", "value");
+      store.put({ value: 0 }, 0);
+      const trans = request.transaction!;
+      trans.oncomplete = verifyOverloads;
+    };
 
-  async function verifyOverloads() {
-    const trans = db.transaction("store");
-    store = trans.objectStore("store");
-    index = store.index("index");
+    async function verifyOverloads() {
+      const trans = db.transaction("store");
+      store = trans.objectStore("store");
+      index = store.index("index");
 
-    await checkCursorDirection(store.openCursor(), "next");
-    await checkCursorDirection(store.openCursor(0), "next");
-    await checkCursorDirection(store.openCursor(0, "next"), "next");
-    await checkCursorDirection(store.openCursor(0, "nextunique"), 
"nextunique");
-    await checkCursorDirection(store.openCursor(0, "prev"), "prev");
-    await checkCursorDirection(store.openCursor(0, "prevunique"), 
"prevunique");
+      await checkCursorDirection(store.openCursor(), "next");
+      await checkCursorDirection(store.openCursor(0), "next");
+      await checkCursorDirection(store.openCursor(0, "next"), "next");
+      await checkCursorDirection(
+        store.openCursor(0, "nextunique"),
+        "nextunique",
+      );
+      await checkCursorDirection(store.openCursor(0, "prev"), "prev");
+      await checkCursorDirection(
+        store.openCursor(0, "prevunique"),
+        "prevunique",
+      );
 
-    await checkCursorDirection(store.openCursor(IDBKeyRange.only(0)), "next");
-    await checkCursorDirection(
-      store.openCursor(BridgeIDBKeyRange.only(0), "next"),
-      "next",
-    );
-    await checkCursorDirection(
-      store.openCursor(IDBKeyRange.only(0), "nextunique"),
-      "nextunique",
-    );
-    await checkCursorDirection(
-      store.openCursor(IDBKeyRange.only(0), "prev"),
-      "prev",
-    );
-    await checkCursorDirection(
-      store.openCursor(IDBKeyRange.only(0), "prevunique"),
-      "prevunique",
-    );
+      await checkCursorDirection(store.openCursor(IDBKeyRange.only(0)), 
"next");
+      await checkCursorDirection(
+        store.openCursor(BridgeIDBKeyRange.only(0), "next"),
+        "next",
+      );
+      await checkCursorDirection(
+        store.openCursor(IDBKeyRange.only(0), "nextunique"),
+        "nextunique",
+      );
+      await checkCursorDirection(
+        store.openCursor(IDBKeyRange.only(0), "prev"),
+        "prev",
+      );
+      await checkCursorDirection(
+        store.openCursor(IDBKeyRange.only(0), "prevunique"),
+        "prevunique",
+      );
 
-    await checkCursorDirection(index.openCursor(), "next");
-    await checkCursorDirection(index.openCursor(0), "next");
-    await checkCursorDirection(index.openCursor(0, "next"), "next");
-    await checkCursorDirection(index.openCursor(0, "nextunique"), 
"nextunique");
-    await checkCursorDirection(index.openCursor(0, "prev"), "prev");
-    await checkCursorDirection(index.openCursor(0, "prevunique"), 
"prevunique");
+      await checkCursorDirection(index.openCursor(), "next");
+      await checkCursorDirection(index.openCursor(0), "next");
+      await checkCursorDirection(index.openCursor(0, "next"), "next");
+      await checkCursorDirection(
+        index.openCursor(0, "nextunique"),
+        "nextunique",
+      );
+      await checkCursorDirection(index.openCursor(0, "prev"), "prev");
+      await checkCursorDirection(
+        index.openCursor(0, "prevunique"),
+        "prevunique",
+      );
 
-    await checkCursorDirection(index.openCursor(IDBKeyRange.only(0)), "next");
-    await checkCursorDirection(
-      index.openCursor(IDBKeyRange.only(0), "next"),
-      "next",
-    );
-    await checkCursorDirection(
-      index.openCursor(IDBKeyRange.only(0), "nextunique"),
-      "nextunique",
-    );
-    await checkCursorDirection(
-      index.openCursor(IDBKeyRange.only(0), "prev"),
-      "prev",
-    );
-    await checkCursorDirection(
-      index.openCursor(IDBKeyRange.only(0), "prevunique"),
-      "prevunique",
-    );
+      await checkCursorDirection(index.openCursor(IDBKeyRange.only(0)), 
"next");
+      await checkCursorDirection(
+        index.openCursor(IDBKeyRange.only(0), "next"),
+        "next",
+      );
+      await checkCursorDirection(
+        index.openCursor(IDBKeyRange.only(0), "nextunique"),
+        "nextunique",
+      );
+      await checkCursorDirection(
+        index.openCursor(IDBKeyRange.only(0), "prev"),
+        "prev",
+      );
+      await checkCursorDirection(
+        index.openCursor(IDBKeyRange.only(0), "prevunique"),
+        "prevunique",
+      );
 
-    await checkCursorDirection(index.openKeyCursor(), "next");
-    await checkCursorDirection(index.openKeyCursor(0), "next");
-    await checkCursorDirection(index.openKeyCursor(0, "next"), "next");
-    await checkCursorDirection(
-      index.openKeyCursor(0, "nextunique"),
-      "nextunique",
-    );
-    await checkCursorDirection(index.openKeyCursor(0, "prev"), "prev");
-    await checkCursorDirection(
-      index.openKeyCursor(0, "prevunique"),
-      "prevunique",
-    );
+      await checkCursorDirection(index.openKeyCursor(), "next");
+      await checkCursorDirection(index.openKeyCursor(0), "next");
+      await checkCursorDirection(index.openKeyCursor(0, "next"), "next");
+      await checkCursorDirection(
+        index.openKeyCursor(0, "nextunique"),
+        "nextunique",
+      );
+      await checkCursorDirection(index.openKeyCursor(0, "prev"), "prev");
+      await checkCursorDirection(
+        index.openKeyCursor(0, "prevunique"),
+        "prevunique",
+      );
 
-    await checkCursorDirection(
-      index.openKeyCursor(IDBKeyRange.only(0)),
-      "next",
-    );
-    await checkCursorDirection(
-      index.openKeyCursor(IDBKeyRange.only(0), "next"),
-      "next",
-    );
-    await checkCursorDirection(
-      index.openKeyCursor(IDBKeyRange.only(0), "nextunique"),
-      "nextunique",
-    );
-    await checkCursorDirection(
-      index.openKeyCursor(IDBKeyRange.only(0), "prev"),
-      "prev",
-    );
-    await checkCursorDirection(
-      index.openKeyCursor(IDBKeyRange.only(0), "prevunique"),
-      "prevunique",
-    );
+      await checkCursorDirection(
+        index.openKeyCursor(IDBKeyRange.only(0)),
+        "next",
+      );
+      await checkCursorDirection(
+        index.openKeyCursor(IDBKeyRange.only(0), "next"),
+        "next",
+      );
+      await checkCursorDirection(
+        index.openKeyCursor(IDBKeyRange.only(0), "nextunique"),
+        "nextunique",
+      );
+      await checkCursorDirection(
+        index.openKeyCursor(IDBKeyRange.only(0), "prev"),
+        "prev",
+      );
+      await checkCursorDirection(
+        index.openKeyCursor(IDBKeyRange.only(0), "prevunique"),
+        "prevunique",
+      );
 
-    t.end();
-  }
+      resolve();
+    }
+  });
 
   function checkCursorDirection(
     request: IDBRequest,
diff --git 
a/packages/idb-bridge/src/idb-wpt-ported/event-dispatch-active-flag.test.ts 
b/packages/idb-bridge/src/idb-wpt-ported/event-dispatch-active-flag.test.ts
index b8151f46..acc2a757 100644
--- a/packages/idb-bridge/src/idb-wpt-ported/event-dispatch-active-flag.test.ts
+++ b/packages/idb-bridge/src/idb-wpt-ported/event-dispatch-active-flag.test.ts
@@ -1,11 +1,10 @@
 import test from "ava";
-import { BridgeIDBRequest } from "..";
+import { BridgeIDBRequest } from "../bridge-idb.js";
 import {
-  createdb,
   indexeddb_test,
   is_transaction_active,
   keep_alive,
-} from "./wptsupport";
+} from "./wptsupport.js";
 
 test("WPT test abort-in-initial-upgradeneeded.htm (subtest 1)", async (t) => {
   // Transactions are active during success handlers
diff --git 
a/packages/idb-bridge/src/idb-wpt-ported/idbcursor-advance-index.test.ts 
b/packages/idb-bridge/src/idb-wpt-ported/idbcursor-advance-index.test.ts
index fac04799..108e7c91 100644
--- a/packages/idb-bridge/src/idb-wpt-ported/idbcursor-advance-index.test.ts
+++ b/packages/idb-bridge/src/idb-wpt-ported/idbcursor-advance-index.test.ts
@@ -1,8 +1,6 @@
 import test from "ava";
-import { BridgeIDBCursor } from "..";
-import { BridgeIDBRequest } from "../bridge-idb";
-import { InvalidStateError } from "../util/errors";
-import { createdb } from "./wptsupport";
+import { BridgeIDBCursor,BridgeIDBRequest } from "../bridge-idb.js";
+import { createdb } from "./wptsupport.js";
 
 test("WPT test idbcursor_advance_index.htm", async (t) => {
   await new Promise<void>((resolve, reject) => {
diff --git 
a/packages/idb-bridge/src/idb-wpt-ported/idbcursor-continue-index.test.ts 
b/packages/idb-bridge/src/idb-wpt-ported/idbcursor-continue-index.test.ts
index 9b96a2e9..f8b3a0f0 100644
--- a/packages/idb-bridge/src/idb-wpt-ported/idbcursor-continue-index.test.ts
+++ b/packages/idb-bridge/src/idb-wpt-ported/idbcursor-continue-index.test.ts
@@ -1,385 +1,401 @@
 import test from "ava";
-import { BridgeIDBCursor } from "..";
-import { BridgeIDBCursorWithValue } from "../bridge-idb";
-import { createdb } from "./wptsupport";
-
-test.cb("WPT test idbcursor_continue_index.htm", (t) => {
-  var db: any;
-  let count = 0;
-  const records = [
-    { pKey: "primaryKey_0", iKey: "indexKey_0" },
-    { pKey: "primaryKey_1", iKey: "indexKey_1" },
-    { pKey: "primaryKey_1-2", iKey: "indexKey_1" },
-  ];
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-    var objStore = db.createObjectStore("test", { keyPath: "pKey" });
-
-    objStore.createIndex("index", "iKey");
-
-    for (var i = 0; i < records.length; i++) objStore.add(records[i]);
-  };
-
-  open_rq.onsuccess = function (e: any) {
-    var cursor_rq = db
-      .transaction("test")
-      .objectStore("test")
-      .index("index")
-      .openCursor();
-
-    cursor_rq.onsuccess = function (e: any) {
-      var cursor = e.target.result;
-      if (!cursor) {
-        t.deepEqual(count, records.length, "cursor run count");
-        t.end();
-        return;
-      }
+import { BridgeIDBCursor, BridgeIDBCursorWithValue } from "../bridge-idb.js";
+import { createdb } from "./wptsupport.js";
+
+test("WPT test idbcursor_continue_index.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any;
+    let count = 0;
+    const records = [
+      { pKey: "primaryKey_0", iKey: "indexKey_0" },
+      { pKey: "primaryKey_1", iKey: "indexKey_1" },
+      { pKey: "primaryKey_1-2", iKey: "indexKey_1" },
+    ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+      var objStore = db.createObjectStore("test", { keyPath: "pKey" });
 
-      var record = cursor.value;
-      t.deepEqual(record.pKey, records[count].pKey, "primary key");
-      t.deepEqual(record.iKey, records[count].iKey, "index key");
+      objStore.createIndex("index", "iKey");
 
-      cursor.continue();
-      count++;
+      for (var i = 0; i < records.length; i++) objStore.add(records[i]);
     };
-  };
-});
 
-// IDBCursor.continue() - index - attempt to pass a key parameter that is not 
a valid key
-test.cb("WPT idbcursor-continue-index2.htm", (t) => {
-  var db: any;
-  let records = [
-    { pKey: "primaryKey_0", iKey: "indexKey_0" },
-    { pKey: "primaryKey_1", iKey: "indexKey_1" },
-  ];
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-    var objStore = db.createObjectStore("test", { keyPath: "pKey" });
-
-    objStore.createIndex("index", "iKey");
-
-    for (var i = 0; i < records.length; i++) objStore.add(records[i]);
-  };
-
-  open_rq.onsuccess = function (e: any) {
-    var cursor_rq = db
-      .transaction("test")
-      .objectStore("test")
-      .index("index")
-      .openCursor();
-
-    cursor_rq.onsuccess = function (e: any) {
-      var cursor = e.target.result;
-
-      t.throws(
-        () => {
-          cursor.continue({ foo: "bar" });
-        },
-        { name: "DataError" },
-      );
-
-      t.true(cursor instanceof BridgeIDBCursorWithValue, "cursor");
-
-      t.end();
+    open_rq.onsuccess = function (e: any) {
+      var cursor_rq = db
+        .transaction("test")
+        .objectStore("test")
+        .index("index")
+        .openCursor();
+
+      cursor_rq.onsuccess = function (e: any) {
+        var cursor = e.target.result;
+        if (!cursor) {
+          t.deepEqual(count, records.length, "cursor run count");
+          resolve();
+          return;
+        }
+
+        var record = cursor.value;
+        t.deepEqual(record.pKey, records[count].pKey, "primary key");
+        t.deepEqual(record.iKey, records[count].iKey, "index key");
+
+        cursor.continue();
+        count++;
+      };
     };
-  };
+  });
 });
 
-// IDBCursor.continue() - index - attempt to iterate to the previous
-// record when the direction is set for the next record
-test.cb("WPT idbcursor-continue-index3.htm", (t) => {
-  var db: any;
-  const records = [
-    { pKey: "primaryKey_0", iKey: "indexKey_0" },
-    { pKey: "primaryKey_1", iKey: "indexKey_1" },
-  ];
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-    var objStore = db.createObjectStore("test", { keyPath: "pKey" });
-
-    objStore.createIndex("index", "iKey");
-
-    for (var i = 0; i < records.length; i++) objStore.add(records[i]);
-  };
-
-  open_rq.onsuccess = function (e: any) {
-    var count = 0;
-    var cursor_rq = db
-      .transaction("test")
-      .objectStore("test")
-      .index("index")
-      .openCursor(undefined, "next"); // XXX: Fx has issue with "undefined"
-
-    cursor_rq.onsuccess = function (e: any) {
-      var cursor = e.target.result;
-      if (!cursor) {
-        t.deepEqual(count, 2, "ran number of times");
-        t.end();
-        return;
-      }
+// IDBCursor.continue() - index - attempt to pass a key parameter that is not 
a valid key
+test("WPT idbcursor-continue-index2.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any;
+    let records = [
+      { pKey: "primaryKey_0", iKey: "indexKey_0" },
+      { pKey: "primaryKey_1", iKey: "indexKey_1" },
+    ];
 
-      // First time checks key equal, second time checks key less than
-      t.throws(
-        () => {
-          cursor.continue(records[0].iKey);
-        },
-        { name: "DataError" },
-      );
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+      var objStore = db.createObjectStore("test", { keyPath: "pKey" });
 
-      cursor.continue();
+      objStore.createIndex("index", "iKey");
 
-      count++;
+      for (var i = 0; i < records.length; i++) objStore.add(records[i]);
     };
-  };
-});
 
-// IDBCursor.continue() - index - attempt to iterate to the next
-// record when the direction is set for the previous record
-test.cb("WPT idbcursor-continue-index4.htm", (t) => {
-  var db: any;
-  const records = [
-    { pKey: "primaryKey_0", iKey: "indexKey_0" },
-    { pKey: "primaryKey_1", iKey: "indexKey_1" },
-    { pKey: "primaryKey_2", iKey: "indexKey_2" },
-  ];
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-    var objStore = db.createObjectStore("test", { keyPath: "pKey" });
-
-    objStore.createIndex("index", "iKey");
-
-    for (var i = 0; i < records.length; i++) objStore.add(records[i]);
-  };
-
-  open_rq.onsuccess = function (e: any) {
-    var count = 0,
-      cursor_rq = db
+    open_rq.onsuccess = function (e: any) {
+      var cursor_rq = db
         .transaction("test")
         .objectStore("test")
         .index("index")
-        .openCursor(undefined, "prev"); // XXX Fx issues w undefined
-
-    cursor_rq.onsuccess = function (e: any) {
-      var cursor = e.target.result,
-        record = cursor.value;
-
-      switch (count) {
-        case 0:
-          t.deepEqual(record.pKey, records[2].pKey, "first pKey");
-          t.deepEqual(record.iKey, records[2].iKey, "first iKey");
-          cursor.continue();
-          break;
-
-        case 1:
-          t.deepEqual(record.pKey, records[1].pKey, "second pKey");
-          t.deepEqual(record.iKey, records[1].iKey, "second iKey");
-          t.throws(
-            () => {
-              cursor.continue("indexKey_2");
-            },
-            { name: "DataError" },
-          );
-          t.end();
-          break;
-
-        default:
-          t.fail("Unexpected count value: " + count);
-      }
+        .openCursor();
+
+      cursor_rq.onsuccess = function (e: any) {
+        var cursor = e.target.result;
+
+        t.throws(
+          () => {
+            cursor.continue({ foo: "bar" });
+          },
+          { name: "DataError" },
+        );
+
+        t.true(cursor instanceof BridgeIDBCursorWithValue, "cursor");
 
-      count++;
+        resolve();
+      };
     };
-  };
+  });
 });
 
-// IDBCursor.continue() - index - iterate using 'prevunique'
-test.cb("WPT idbcursor-continue-index5.htm", (t) => {
-  var db: any;
-  const records = [
-    { pKey: "primaryKey_0", iKey: "indexKey_0" },
-    { pKey: "primaryKey_1", iKey: "indexKey_1" },
-    { pKey: "primaryKey_1-2", iKey: "indexKey_1" },
-    { pKey: "primaryKey_2", iKey: "indexKey_2" },
-  ];
-  const expected = [
-    { pKey: "primaryKey_2", iKey: "indexKey_2" },
-    { pKey: "primaryKey_1", iKey: "indexKey_1" },
-    { pKey: "primaryKey_0", iKey: "indexKey_0" },
-  ];
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-    var objStore = db.createObjectStore("test", { keyPath: "pKey" });
-
-    objStore.createIndex("index", "iKey");
-
-    for (var i = 0; i < records.length; i++) objStore.add(records[i]);
-  };
-
-  open_rq.onsuccess = function (e: any) {
-    var count = 0,
-      cursor_rq = db
-        .transaction("test")
-        .objectStore("test")
-        .index("index")
-        .openCursor(undefined, "prevunique");
+// IDBCursor.continue() - index - attempt to iterate to the previous
+// record when the direction is set for the next record
+test("WPT idbcursor-continue-index3.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any;
+    const records = [
+      { pKey: "primaryKey_0", iKey: "indexKey_0" },
+      { pKey: "primaryKey_1", iKey: "indexKey_1" },
+    ];
 
-    cursor_rq.onsuccess = function (e: any) {
-      if (!e.target.result) {
-        t.deepEqual(count, expected.length, "count");
-        t.end();
-        return;
-      }
-      const cursor = e.target.result;
-      const record = cursor.value;
-      t.deepEqual(record.pKey, expected[count].pKey, "pKey #" + count);
-      t.deepEqual(record.iKey, expected[count].iKey, "iKey #" + count);
-
-      t.deepEqual(cursor.key, expected[count].iKey, "cursor.key #" + count);
-      t.deepEqual(
-        cursor.primaryKey,
-        expected[count].pKey,
-        "cursor.primaryKey #" + count,
-      );
-
-      count++;
-      cursor.continue(expected[count] ? expected[count].iKey : undefined);
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+      var objStore = db.createObjectStore("test", { keyPath: "pKey" });
+
+      objStore.createIndex("index", "iKey");
+
+      for (var i = 0; i < records.length; i++) objStore.add(records[i]);
     };
-  };
-});
 
-// IDBCursor.continue() - index - iterate using nextunique
-test.cb("WPT idbcursor-continue-index6.htm", (t) => {
-  var db: any;
-  const records = [
-    { pKey: "primaryKey_0", iKey: "indexKey_0" },
-    { pKey: "primaryKey_1", iKey: "indexKey_1" },
-    { pKey: "primaryKey_1-2", iKey: "indexKey_1" },
-    { pKey: "primaryKey_2", iKey: "indexKey_2" },
-  ];
-  const expected = [
-    { pKey: "primaryKey_0", iKey: "indexKey_0" },
-    { pKey: "primaryKey_1", iKey: "indexKey_1" },
-    { pKey: "primaryKey_2", iKey: "indexKey_2" },
-  ];
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-    var objStore = db.createObjectStore("test", { keyPath: "pKey" });
-
-    objStore.createIndex("index", "iKey");
-
-    for (var i = 0; i < records.length; i++) objStore.add(records[i]);
-  };
-
-  open_rq.onsuccess = function (e: any) {
-    var count = 0,
-      cursor_rq = db
+    open_rq.onsuccess = function (e: any) {
+      var count = 0;
+      var cursor_rq = db
         .transaction("test")
         .objectStore("test")
         .index("index")
-        .openCursor(undefined, "nextunique");
+        .openCursor(undefined, "next"); // XXX: Fx has issue with "undefined"
+
+      cursor_rq.onsuccess = function (e: any) {
+        var cursor = e.target.result;
+        if (!cursor) {
+          t.deepEqual(count, 2, "ran number of times");
+          resolve();
+          return;
+        }
+
+        // First time checks key equal, second time checks key less than
+        t.throws(
+          () => {
+            cursor.continue(records[0].iKey);
+          },
+          { name: "DataError" },
+        );
+
+        cursor.continue();
+
+        count++;
+      };
+    };
+  });
+});
 
-    cursor_rq.onsuccess = function (e: any) {
-      if (!e.target.result) {
-        t.deepEqual(count, expected.length, "count");
-        t.end();
-        return;
-      }
-      var cursor = e.target.result,
-        record = cursor.value;
+// IDBCursor.continue() - index - attempt to iterate to the next
+// record when the direction is set for the previous record
+test("WPT idbcursor-continue-index4.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any;
+    const records = [
+      { pKey: "primaryKey_0", iKey: "indexKey_0" },
+      { pKey: "primaryKey_1", iKey: "indexKey_1" },
+      { pKey: "primaryKey_2", iKey: "indexKey_2" },
+    ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+      var objStore = db.createObjectStore("test", { keyPath: "pKey" });
 
-      t.deepEqual(record.pKey, expected[count].pKey, "pKey #" + count);
-      t.deepEqual(record.iKey, expected[count].iKey, "iKey #" + count);
+      objStore.createIndex("index", "iKey");
 
-      t.deepEqual(cursor.key, expected[count].iKey, "cursor.key #" + count);
-      t.deepEqual(
-        cursor.primaryKey,
-        expected[count].pKey,
-        "cursor.primaryKey #" + count,
-      );
+      for (var i = 0; i < records.length; i++) objStore.add(records[i]);
+    };
 
-      count++;
-      cursor.continue(expected[count] ? expected[count].iKey : undefined);
+    open_rq.onsuccess = function (e: any) {
+      var count = 0,
+        cursor_rq = db
+          .transaction("test")
+          .objectStore("test")
+          .index("index")
+          .openCursor(undefined, "prev"); // XXX Fx issues w undefined
+
+      cursor_rq.onsuccess = function (e: any) {
+        var cursor = e.target.result,
+          record = cursor.value;
+
+        switch (count) {
+          case 0:
+            t.deepEqual(record.pKey, records[2].pKey, "first pKey");
+            t.deepEqual(record.iKey, records[2].iKey, "first iKey");
+            cursor.continue();
+            break;
+
+          case 1:
+            t.deepEqual(record.pKey, records[1].pKey, "second pKey");
+            t.deepEqual(record.iKey, records[1].iKey, "second iKey");
+            t.throws(
+              () => {
+                cursor.continue("indexKey_2");
+              },
+              { name: "DataError" },
+            );
+            resolve();
+            break;
+
+          default:
+            t.fail("Unexpected count value: " + count);
+        }
+
+        count++;
+      };
     };
-  };
+  });
 });
 
-// IDBCursor.continue() - index - throw TransactionInactiveError
-test.cb("WPT idbcursor-continue-index7.htm", (t) => {
-  var db: any,
-    records = [
+// IDBCursor.continue() - index - iterate using 'prevunique'
+test("WPT idbcursor-continue-index5.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any;
+    const records = [
       { pKey: "primaryKey_0", iKey: "indexKey_0" },
       { pKey: "primaryKey_1", iKey: "indexKey_1" },
+      { pKey: "primaryKey_1-2", iKey: "indexKey_1" },
+      { pKey: "primaryKey_2", iKey: "indexKey_2" },
+    ];
+    const expected = [
+      { pKey: "primaryKey_2", iKey: "indexKey_2" },
+      { pKey: "primaryKey_1", iKey: "indexKey_1" },
+      { pKey: "primaryKey_0", iKey: "indexKey_0" },
     ];
 
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (event: any) {
-    db = event.target.result;
-    var objStore = db.createObjectStore("store", { keyPath: "pKey" });
-    objStore.createIndex("index", "iKey");
-    for (var i = 0; i < records.length; i++) {
-      objStore.add(records[i]);
-    }
-    var rq = objStore.index("index").openCursor();
-    rq.onsuccess = function (event: any) {
-      var cursor = event.target.result;
-      t.true(cursor instanceof BridgeIDBCursor);
-
-      event.target.transaction.abort();
-      t.throws(
-        () => {
-          cursor.continue();
-        },
-        { name: "TransactionInactiveError" },
-        "Calling continue() should throws an exception 
TransactionInactiveError when the transaction is not active.",
-      );
-      t.end();
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+      var objStore = db.createObjectStore("test", { keyPath: "pKey" });
+
+      objStore.createIndex("index", "iKey");
+
+      for (var i = 0; i < records.length; i++) objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = function (e: any) {
+      var count = 0,
+        cursor_rq = db
+          .transaction("test")
+          .objectStore("test")
+          .index("index")
+          .openCursor(undefined, "prevunique");
+
+      cursor_rq.onsuccess = function (e: any) {
+        if (!e.target.result) {
+          t.deepEqual(count, expected.length, "count");
+          resolve();
+          return;
+        }
+        const cursor = e.target.result;
+        const record = cursor.value;
+        t.deepEqual(record.pKey, expected[count].pKey, "pKey #" + count);
+        t.deepEqual(record.iKey, expected[count].iKey, "iKey #" + count);
+
+        t.deepEqual(cursor.key, expected[count].iKey, "cursor.key #" + count);
+        t.deepEqual(
+          cursor.primaryKey,
+          expected[count].pKey,
+          "cursor.primaryKey #" + count,
+        );
+
+        count++;
+        cursor.continue(expected[count] ? expected[count].iKey : undefined);
+      };
     };
-  };
+  });
 });
 
-// IDBCursor.continue() - index - throw InvalidStateError caused by object 
store been deleted
-test.cb("WPT idbcursor-continue-index8.htm", (t) => {
-  var db: any,
-    records = [
+// IDBCursor.continue() - index - iterate using nextunique
+test("WPT idbcursor-continue-index6.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any;
+    const records = [
+      { pKey: "primaryKey_0", iKey: "indexKey_0" },
+      { pKey: "primaryKey_1", iKey: "indexKey_1" },
+      { pKey: "primaryKey_1-2", iKey: "indexKey_1" },
+      { pKey: "primaryKey_2", iKey: "indexKey_2" },
+    ];
+    const expected = [
       { pKey: "primaryKey_0", iKey: "indexKey_0" },
       { pKey: "primaryKey_1", iKey: "indexKey_1" },
+      { pKey: "primaryKey_2", iKey: "indexKey_2" },
     ];
 
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (event: any) {
-    db = event.target.result;
-    var objStore = db.createObjectStore("store", { keyPath: "pKey" });
-    objStore.createIndex("index", "iKey");
-    for (var i = 0; i < records.length; i++) {
-      objStore.add(records[i]);
-    }
-    var rq = objStore.index("index").openCursor();
-    rq.onsuccess = function (event: any) {
-      var cursor = event.target.result;
-      t.true(cursor instanceof BridgeIDBCursor);
-
-      db.deleteObjectStore("store");
-
-      t.throws(
-        () => {
-          cursor.continue();
-        },
-        { name: "InvalidStateError" },
-        "If the cursor's source or effective object store has been deleted, 
the implementation MUST throw a DOMException of type InvalidStateError",
-      );
-
-      t.end();
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+      var objStore = db.createObjectStore("test", { keyPath: "pKey" });
+
+      objStore.createIndex("index", "iKey");
+
+      for (var i = 0; i < records.length; i++) objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = function (e: any) {
+      var count = 0,
+        cursor_rq = db
+          .transaction("test")
+          .objectStore("test")
+          .index("index")
+          .openCursor(undefined, "nextunique");
+
+      cursor_rq.onsuccess = function (e: any) {
+        if (!e.target.result) {
+          t.deepEqual(count, expected.length, "count");
+          resolve();
+          return;
+        }
+        var cursor = e.target.result,
+          record = cursor.value;
+
+        t.deepEqual(record.pKey, expected[count].pKey, "pKey #" + count);
+        t.deepEqual(record.iKey, expected[count].iKey, "iKey #" + count);
+
+        t.deepEqual(cursor.key, expected[count].iKey, "cursor.key #" + count);
+        t.deepEqual(
+          cursor.primaryKey,
+          expected[count].pKey,
+          "cursor.primaryKey #" + count,
+        );
+
+        count++;
+        cursor.continue(expected[count] ? expected[count].iKey : undefined);
+      };
+    };
+  });
+});
+
+// IDBCursor.continue() - index - throw TransactionInactiveError
+test("WPT idbcursor-continue-index7.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any,
+      records = [
+        { pKey: "primaryKey_0", iKey: "indexKey_0" },
+        { pKey: "primaryKey_1", iKey: "indexKey_1" },
+      ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (event: any) {
+      db = event.target.result;
+      var objStore = db.createObjectStore("store", { keyPath: "pKey" });
+      objStore.createIndex("index", "iKey");
+      for (var i = 0; i < records.length; i++) {
+        objStore.add(records[i]);
+      }
+      var rq = objStore.index("index").openCursor();
+      rq.onsuccess = function (event: any) {
+        var cursor = event.target.result;
+        t.true(cursor instanceof BridgeIDBCursor);
+
+        event.target.transaction.abort();
+        t.throws(
+          () => {
+            cursor.continue();
+          },
+          { name: "TransactionInactiveError" },
+          "Calling continue() should throws an exception 
TransactionInactiveError when the transaction is not active.",
+        );
+        resolve();
+        return;
+      };
+    };
+  });
+});
+
+// IDBCursor.continue() - index - throw InvalidStateError caused by object 
store been deleted
+test("WPT idbcursor-continue-index8.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any,
+      records = [
+        { pKey: "primaryKey_0", iKey: "indexKey_0" },
+        { pKey: "primaryKey_1", iKey: "indexKey_1" },
+      ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (event: any) {
+      db = event.target.result;
+      var objStore = db.createObjectStore("store", { keyPath: "pKey" });
+      objStore.createIndex("index", "iKey");
+      for (var i = 0; i < records.length; i++) {
+        objStore.add(records[i]);
+      }
+      var rq = objStore.index("index").openCursor();
+      rq.onsuccess = function (event: any) {
+        var cursor = event.target.result;
+        t.true(cursor instanceof BridgeIDBCursor);
+
+        db.deleteObjectStore("store");
+
+        t.throws(
+          () => {
+            cursor.continue();
+          },
+          { name: "InvalidStateError" },
+          "If the cursor's source or effective object store has been deleted, 
the implementation MUST throw a DOMException of type InvalidStateError",
+        );
+
+        resolve();
+      };
     };
-  };
+  });
 });
diff --git 
a/packages/idb-bridge/src/idb-wpt-ported/idbcursor-continue-objectstore.test.ts 
b/packages/idb-bridge/src/idb-wpt-ported/idbcursor-continue-objectstore.test.ts
index 4843b13a..e3169195 100644
--- 
a/packages/idb-bridge/src/idb-wpt-ported/idbcursor-continue-objectstore.test.ts
+++ 
b/packages/idb-bridge/src/idb-wpt-ported/idbcursor-continue-objectstore.test.ts
@@ -1,243 +1,264 @@
 import test from "ava";
-import { BridgeIDBCursor } from "..";
-import { BridgeIDBCursorWithValue } from "../bridge-idb";
-import { IDBDatabase } from "../idbtypes";
-import { createdb } from "./wptsupport";
+import { BridgeIDBCursor } from "../bridge-idb.js";
+import { IDBDatabase } from "../idbtypes.js";
+import { createdb } from "./wptsupport.js";
 
 // IDBCursor.continue() - object store - iterate to the next record
-test.cb("WPT test idbcursor_continue_objectstore.htm", (t) => {
-  var db: any;
-  let count = 0;
-  const records = [{ pKey: "primaryKey_0" }, { pKey: "primaryKey_1" }];
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-    var objStore = db.createObjectStore("test", {
-      autoIncrement: true,
-      keyPath: "pKey",
-    });
-
-    for (var i = 0; i < records.length; i++) objStore.add(records[i]);
-  };
-
-  open_rq.onsuccess = function (e: any) {
-    var store = db.transaction("test").objectStore("test");
-
-    var cursor_rq = store.openCursor();
-    cursor_rq.onsuccess = function (e: any) {
-      var cursor = e.target.result;
-      if (!cursor) {
-        t.deepEqual(count, records.length, "cursor run count");
-        t.end();
-      }
-
-      var record = cursor.value;
-      t.deepEqual(record.pKey, records[count].pKey, "primary key");
-
-      cursor.continue();
-      count++;
+test("WPT test idbcursor_continue_objectstore.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any;
+    let count = 0;
+    const records = [{ pKey: "primaryKey_0" }, { pKey: "primaryKey_1" }];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+      var objStore = db.createObjectStore("test", {
+        autoIncrement: true,
+        keyPath: "pKey",
+      });
+
+      for (var i = 0; i < records.length; i++) objStore.add(records[i]);
     };
-  };
+
+    open_rq.onsuccess = function (e: any) {
+      var store = db.transaction("test").objectStore("test");
+
+      var cursor_rq = store.openCursor();
+      cursor_rq.onsuccess = function (e: any) {
+        var cursor = e.target.result;
+        if (!cursor) {
+          t.deepEqual(count, records.length, "cursor run count");
+          resolve();
+          return;
+        }
+
+        var record = cursor.value;
+        t.deepEqual(record.pKey, records[count].pKey, "primary key");
+
+        cursor.continue();
+        count++;
+      };
+    };
+  });
 });
 
 // IDBCursor.continue() - index - attempt to pass a
 // key parameter that is not a valid key
-test.cb("WPT test idbcursor_continue_objectstore2.htm", (t) => {
-  var db: any;
-  const records = [{ pKey: "primaryKey_0" }, { pKey: "primaryKey_1" }];
+test("WPT test idbcursor_continue_objectstore2.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any;
+    const records = [{ pKey: "primaryKey_0" }, { pKey: "primaryKey_1" }];
 
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-    var objStore = db.createObjectStore("test", { keyPath: "pKey" });
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+      var objStore = db.createObjectStore("test", { keyPath: "pKey" });
 
-    for (var i = 0; i < records.length; i++) objStore.add(records[i]);
-  };
+      for (var i = 0; i < records.length; i++) objStore.add(records[i]);
+    };
 
-  open_rq.onsuccess = function (e: any) {
-    var cursor_rq = db.transaction("test").objectStore("test").openCursor();
+    open_rq.onsuccess = function (e: any) {
+      var cursor_rq = db.transaction("test").objectStore("test").openCursor();
 
-    cursor_rq.onsuccess = function (e: any) {
-      var cursor = e.target.result;
+      cursor_rq.onsuccess = function (e: any) {
+        var cursor = e.target.result;
 
-      t.true(cursor instanceof BridgeIDBCursor, "cursor exists");
-      t.throws(
-        () => {
-          cursor.continue({ foo: "42" });
-        },
-        { name: "DataError" },
-      );
+        t.true(cursor instanceof BridgeIDBCursor, "cursor exists");
+        t.throws(
+          () => {
+            cursor.continue({ foo: "42" });
+          },
+          { name: "DataError" },
+        );
 
-      t.end();
+        resolve();
+      };
     };
-  };
+  });
 });
 
 // IDBCursor.continue() - object store - attempt to iterate to the
 // previous record when the direction is set for the next record
-test.cb("WPT test idbcursor_continue_objectstore3.htm", (t) => {
-  var db: IDBDatabase;
-  const records = [{ pKey: "primaryKey_0" }, { pKey: "primaryKey_1" }];
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-    var objStore = db.createObjectStore("test", { keyPath: "pKey" });
-
-    for (var i = 0; i < records.length; i++) objStore.add(records[i]);
-  };
-
-  open_rq.onsuccess = function (e: any) {
-    var cursor_rq = db
-      .transaction("test")
-      .objectStore("test")
-      .openCursor(undefined, "next");
-
-    cursor_rq.onsuccess = function (e: any) {
-      var cursor = e.target.result;
-
-      t.true(cursor instanceof BridgeIDBCursor, "cursor exist");
-      t.throws(
-        () => {
-          cursor.continue(records[0].pKey);
-        },
-        {
-          name: "DataError",
-        },
-      );
-
-      t.end();
+test("WPT test idbcursor_continue_objectstore3.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: IDBDatabase;
+    const records = [{ pKey: "primaryKey_0" }, { pKey: "primaryKey_1" }];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+      var objStore = db.createObjectStore("test", { keyPath: "pKey" });
+
+      for (var i = 0; i < records.length; i++) objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = function (e: any) {
+      var cursor_rq = db
+        .transaction("test")
+        .objectStore("test")
+        .openCursor(undefined, "next");
+
+      cursor_rq.onsuccess = function (e: any) {
+        var cursor = e.target.result;
+
+        t.true(cursor instanceof BridgeIDBCursor, "cursor exist");
+        t.throws(
+          () => {
+            cursor.continue(records[0].pKey);
+          },
+          {
+            name: "DataError",
+          },
+        );
+
+        resolve();
+      };
     };
-  };
+  });
 });
 
 // IDBCursor.continue() - object store - attempt to iterate to the
 // next record when the direction is set for the previous record
-test.cb("WPT test idbcursor_continue_objectstore4.htm", (t) => {
-  var db: any;
-  const records = [
-    { pKey: "primaryKey_0" },
-    { pKey: "primaryKey_1" },
-    { pKey: "primaryKey_2" },
-  ];
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-    var objStore = db.createObjectStore("test", { keyPath: "pKey" });
-
-    for (var i = 0; i < records.length; i++) objStore.add(records[i]);
-  };
-
-  open_rq.onsuccess = function (e: any) {
-    var count = 0,
-      cursor_rq = db
-        .transaction("test")
-        .objectStore("test")
-        .openCursor(null, "prev");
-
-    cursor_rq.onsuccess = function (e: any) {
-      var cursor = e.target.result;
-
-      t.true(cursor != null, "cursor exist");
-
-      switch (count) {
-        case 0:
-          t.deepEqual(cursor.value.pKey, records[2].pKey, "first cursor pkey");
-          cursor.continue(records[1].pKey);
-          break;
-
-        case 1:
-          t.deepEqual(cursor.value.pKey, records[1].pKey, "second cursor 
pkey");
-          t.throws(
-            () => {
-              console.log("**** continuing cursor");
-              cursor.continue(records[2].pKey);
-              console.log("**** this should not happen");
-            },
-            {
-              name: "DataError",
-            },
-          );
-          t.end();
-          break;
-
-        default:
-          t.fail("Unexpected count value: " + count);
-      }
-
-      count++;
+test("WPT test idbcursor_continue_objectstore4.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any;
+    const records = [
+      { pKey: "primaryKey_0" },
+      { pKey: "primaryKey_1" },
+      { pKey: "primaryKey_2" },
+    ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+      var objStore = db.createObjectStore("test", { keyPath: "pKey" });
+
+      for (var i = 0; i < records.length; i++) objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = function (e: any) {
+      var count = 0,
+        cursor_rq = db
+          .transaction("test")
+          .objectStore("test")
+          .openCursor(null, "prev");
+
+      cursor_rq.onsuccess = function (e: any) {
+        var cursor = e.target.result;
+
+        t.true(cursor != null, "cursor exist");
+
+        switch (count) {
+          case 0:
+            t.deepEqual(
+              cursor.value.pKey,
+              records[2].pKey,
+              "first cursor pkey",
+            );
+            cursor.continue(records[1].pKey);
+            break;
+
+          case 1:
+            t.deepEqual(
+              cursor.value.pKey,
+              records[1].pKey,
+              "second cursor pkey",
+            );
+            t.throws(
+              () => {
+                console.log("**** continuing cursor");
+                cursor.continue(records[2].pKey);
+                console.log("**** this should not happen");
+              },
+              {
+                name: "DataError",
+              },
+            );
+            resolve();
+            return;
+
+          default:
+            t.fail("Unexpected count value: " + count);
+        }
+
+        count++;
+      };
     };
-  };
+  });
 });
 
 // IDBCursor.continue() - object store - throw TransactionInactiveError
-test.cb("WPT test idbcursor_continue_objectstore5.htm", (t) => {
-  var db: any;
-  const records = [{ pKey: "primaryKey_0" }, { pKey: "primaryKey_1" }];
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-    var objStore = db.createObjectStore("test", { keyPath: "pKey" });
-
-    for (var i = 0; i < records.length; i++) objStore.add(records[i]);
-  };
-
-  open_rq.onsuccess = function (e: any) {
-    var cursor_rq = db.transaction("test").objectStore("test").openCursor();
-
-    cursor_rq.onsuccess = function (e: any) {
-      var cursor = e.target.result;
-      t.true(cursor instanceof BridgeIDBCursor, "cursor exists");
-
-      e.target.transaction.abort();
-      t.throws(
-        () => {
-          cursor.continue();
-        },
-        {
-          name: "TransactionInactiveError",
-        },
-        "Calling continue() should throw an exception TransactionInactiveError 
when the transaction is not active.",
-      );
-
-      t.end();
+test("WPT test idbcursor_continue_objectstore5.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any;
+    const records = [{ pKey: "primaryKey_0" }, { pKey: "primaryKey_1" }];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+      var objStore = db.createObjectStore("test", { keyPath: "pKey" });
+
+      for (var i = 0; i < records.length; i++) objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = function (e: any) {
+      var cursor_rq = db.transaction("test").objectStore("test").openCursor();
+
+      cursor_rq.onsuccess = function (e: any) {
+        var cursor = e.target.result;
+        t.true(cursor instanceof BridgeIDBCursor, "cursor exists");
+
+        e.target.transaction.abort();
+        t.throws(
+          () => {
+            cursor.continue();
+          },
+          {
+            name: "TransactionInactiveError",
+          },
+          "Calling continue() should throw an exception 
TransactionInactiveError when the transaction is not active.",
+        );
+
+        resolve();
+        return;
+      };
     };
-  };
+  });
 });
 
 // IDBCursor.continue() - object store - throw InvalidStateError caused by 
object store been deleted
-test.cb("WPT test idbcursor_continue_objectstore6.htm", (t) => {
-  var db: any;
-  const records = [{ pKey: "primaryKey_0" }, { pKey: "primaryKey_1" }];
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-    var objStore = db.createObjectStore("test", { keyPath: "pKey" });
-
-    for (var i = 0; i < records.length; i++) objStore.add(records[i]);
-
-    var cursor_rq = objStore.openCursor();
-
-    cursor_rq.onsuccess = function (e: any) {
-      var cursor = e.target.result;
-      t.true(cursor instanceof BridgeIDBCursor, "cursor exists");
-
-      db.deleteObjectStore("test");
-      t.throws(
-        () => {
-          cursor.continue();
-        },
-        {
-          name: "InvalidStateError",
-        },
-        "If the cursor's source or effective object store has been deleted, 
the implementation MUST throw a DOMException of type InvalidStateError",
-      );
-
-      t.end();
+test("WPT test idbcursor_continue_objectstore6.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any;
+    const records = [{ pKey: "primaryKey_0" }, { pKey: "primaryKey_1" }];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+      var objStore = db.createObjectStore("test", { keyPath: "pKey" });
+
+      for (var i = 0; i < records.length; i++) objStore.add(records[i]);
+
+      var cursor_rq = objStore.openCursor();
+
+      cursor_rq.onsuccess = function (e: any) {
+        var cursor = e.target.result;
+        t.true(cursor instanceof BridgeIDBCursor, "cursor exists");
+
+        db.deleteObjectStore("test");
+        t.throws(
+          () => {
+            cursor.continue();
+          },
+          {
+            name: "InvalidStateError",
+          },
+          "If the cursor's source or effective object store has been deleted, 
the implementation MUST throw a DOMException of type InvalidStateError",
+        );
+
+        resolve();
+      };
     };
-  };
+  });
 });
diff --git 
a/packages/idb-bridge/src/idb-wpt-ported/idbcursor-delete-exception-order.test.ts
 
b/packages/idb-bridge/src/idb-wpt-ported/idbcursor-delete-exception-order.test.ts
index 604061ac..f771d19a 100644
--- 
a/packages/idb-bridge/src/idb-wpt-ported/idbcursor-delete-exception-order.test.ts
+++ 
b/packages/idb-bridge/src/idb-wpt-ported/idbcursor-delete-exception-order.test.ts
@@ -1,5 +1,5 @@
 import test from "ava";
-import { createdb, indexeddb_test } from "./wptsupport";
+import { indexeddb_test } from "./wptsupport.js";
 
 test("WPT idbcursor-delete-exception-order.htm", async (t) => {
   // 'IDBCursor.delete exception order: TransactionInactiveError vs. 
ReadOnlyError'
diff --git 
a/packages/idb-bridge/src/idb-wpt-ported/idbcursor-delete-index.test.ts 
b/packages/idb-bridge/src/idb-wpt-ported/idbcursor-delete-index.test.ts
index 0b28a4d4..0232cf24 100644
--- a/packages/idb-bridge/src/idb-wpt-ported/idbcursor-delete-index.test.ts
+++ b/packages/idb-bridge/src/idb-wpt-ported/idbcursor-delete-index.test.ts
@@ -1,204 +1,214 @@
 import test from "ava";
-import { BridgeIDBCursor } from "..";
-import { IDBCursor } from "../idbtypes";
-import { createdb, indexeddb_test } from "./wptsupport";
+import { BridgeIDBCursor } from "../bridge-idb.js";
+import { IDBCursor } from "../idbtypes.js";
+import { createdb } from "./wptsupport.js";
 
 // IDBCursor.delete() - index - remove a record from the object store
-test.cb("WPT idbcursor-delete-index.htm", (t) => {
-  var db: any;
-  let count = 0,
-    records = [
-      { pKey: "primaryKey_0", iKey: "indexKey_0" },
-      { pKey: "primaryKey_1", iKey: "indexKey_1" },
-    ];
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-
-    var objStore = db.createObjectStore("test", { keyPath: "pKey" });
-    objStore.createIndex("index", "iKey");
-
-    for (var i = 0; i < records.length; i++) objStore.add(records[i]);
-  };
+test("WPT idbcursor-delete-index.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any;
+    let count = 0,
+      records = [
+        { pKey: "primaryKey_0", iKey: "indexKey_0" },
+        { pKey: "primaryKey_1", iKey: "indexKey_1" },
+      ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+
+      var objStore = db.createObjectStore("test", { keyPath: "pKey" });
+      objStore.createIndex("index", "iKey");
+
+      for (var i = 0; i < records.length; i++) objStore.add(records[i]);
+    };
 
-  open_rq.onsuccess = CursorDeleteRecord;
+    open_rq.onsuccess = CursorDeleteRecord;
 
-  function CursorDeleteRecord(e: any) {
-    var txn = db.transaction("test", "readwrite"),
-      cursor_rq = txn.objectStore("test").index("index").openCursor();
+    function CursorDeleteRecord(e: any) {
+      var txn = db.transaction("test", "readwrite"),
+        cursor_rq = txn.objectStore("test").index("index").openCursor();
 
-    cursor_rq.onsuccess = function (e: any) {
-      var cursor = e.target.result;
+      cursor_rq.onsuccess = function (e: any) {
+        var cursor = e.target.result;
 
-      t.true(cursor instanceof BridgeIDBCursor, "cursor exist");
-      cursor.delete();
-    };
+        t.true(cursor instanceof BridgeIDBCursor, "cursor exist");
+        cursor.delete();
+      };
 
-    txn.oncomplete = VerifyRecordWasDeleted;
-  }
+      txn.oncomplete = VerifyRecordWasDeleted;
+    }
 
-  function VerifyRecordWasDeleted(e: any) {
-    var cursor_rq = db.transaction("test").objectStore("test").openCursor();
+    function VerifyRecordWasDeleted(e: any) {
+      var cursor_rq = db.transaction("test").objectStore("test").openCursor();
 
-    cursor_rq.onsuccess = function (e: any) {
-      var cursor = e.target.result;
+      cursor_rq.onsuccess = function (e: any) {
+        var cursor = e.target.result;
 
-      if (!cursor) {
-        t.deepEqual(count, 1, "count");
-        t.end();
-        return;
-      }
+        if (!cursor) {
+          t.deepEqual(count, 1, "count");
+          resolve();
+          return;
+        }
 
-      t.deepEqual(cursor.value.pKey, records[1].pKey);
-      t.deepEqual(cursor.value.iKey, records[1].iKey);
-      cursor.continue();
-      count++;
-    };
-  }
+        t.deepEqual(cursor.value.pKey, records[1].pKey);
+        t.deepEqual(cursor.value.iKey, records[1].iKey);
+        cursor.continue();
+        count++;
+      };
+    }
+  });
 });
 
 // IDBCursor.delete() - object store - attempt to remove a record in a 
read-only transaction
-test.cb("WPT idbcursor-delete-index2.htm", (t) => {
-  var db: any,
-    records = [
-      { pKey: "primaryKey_0", iKey: "indexKey_0" },
-      { pKey: "primaryKey_1", iKey: "indexKey_1" },
-    ];
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-
-    var objStore = db.createObjectStore("test", { keyPath: "pKey" });
-
-    for (var i = 0; i < records.length; i++) objStore.add(records[i]);
-  };
-
-  open_rq.onsuccess = function (e: any) {
-    var cursor_rq = db.transaction("test").objectStore("test").openCursor();
-
-    cursor_rq.onsuccess = function (e: any) {
-      var cursor = e.target.result;
-
-      t.true(cursor != null, "cursor exist");
-      t.throws(
-        () => {
-          cursor.delete();
-        },
-        {
-          name: "ReadOnlyError",
-        },
-      );
-      t.end();
-    };
-  };
-});
+test("WPT idbcursor-delete-index2.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any,
+      records = [
+        { pKey: "primaryKey_0", iKey: "indexKey_0" },
+        { pKey: "primaryKey_1", iKey: "indexKey_1" },
+      ];
 
-// IDBCursor.delete() - index - attempt to remove a record in an inactive 
transaction
-test.cb("WPT idbcursor-delete-index3.htm", (t) => {
-  var db: any,
-    records = [
-      { pKey: "primaryKey_0", iKey: "indexKey_0" },
-      { pKey: "primaryKey_1", iKey: "indexKey_1" },
-    ];
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
 
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-    var objStore = db.createObjectStore("test", { keyPath: "pKey" });
-    var index = objStore.createIndex("index", "iKey");
+      var objStore = db.createObjectStore("test", { keyPath: "pKey" });
 
-    for (var i = 0; i < records.length; i++) objStore.add(records[i]);
-
-    var cursor_rq = index.openCursor();
-
-    let myCursor: IDBCursor | undefined;
+      for (var i = 0; i < records.length; i++) objStore.add(records[i]);
+    };
 
-    cursor_rq.onsuccess = function (e: any) {
-      var cursor = e.target.result;
-      t.true(cursor instanceof BridgeIDBCursor, "cursor exist");
-      myCursor = cursor;
+    open_rq.onsuccess = function (e: any) {
+      var cursor_rq = db.transaction("test").objectStore("test").openCursor();
+
+      cursor_rq.onsuccess = function (e: any) {
+        var cursor = e.target.result;
+
+        t.true(cursor != null, "cursor exist");
+        t.throws(
+          () => {
+            cursor.delete();
+          },
+          {
+            name: "ReadOnlyError",
+          },
+        );
+        resolve();
+      };
     };
+  });
+});
 
-    e.target.transaction.oncomplete = function (e: any) {
-      t.throws(
-        () => {
-          myCursor!.delete();
-        },
-        { name: "TransactionInactiveError" },
-      );
-      t.end();
+// IDBCursor.delete() - index - attempt to remove a record in an inactive 
transaction
+test("WPT idbcursor-delete-index3.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any,
+      records = [
+        { pKey: "primaryKey_0", iKey: "indexKey_0" },
+        { pKey: "primaryKey_1", iKey: "indexKey_1" },
+      ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+      var objStore = db.createObjectStore("test", { keyPath: "pKey" });
+      var index = objStore.createIndex("index", "iKey");
+
+      for (var i = 0; i < records.length; i++) objStore.add(records[i]);
+
+      var cursor_rq = index.openCursor();
+
+      let myCursor: IDBCursor | undefined;
+
+      cursor_rq.onsuccess = function (e: any) {
+        var cursor = e.target.result;
+        t.true(cursor instanceof BridgeIDBCursor, "cursor exist");
+        myCursor = cursor;
+      };
+
+      e.target.transaction.oncomplete = function (e: any) {
+        t.throws(
+          () => {
+            myCursor!.delete();
+          },
+          { name: "TransactionInactiveError" },
+        );
+        resolve();
+      };
     };
-  };
+  });
 });
 
 // IDBCursor.delete() - index - throw InvalidStateError caused by object store 
been deleted
-test.cb("WPT idbcursor-delete-index4.htm", (t) => {
-  var db: any,
-    records = [
-      { pKey: "primaryKey_0", iKey: "indexKey_0" },
-      { pKey: "primaryKey_1", iKey: "indexKey_1" },
-    ];
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (event: any) {
-    db = event.target.result;
-    var objStore = db.createObjectStore("store", { keyPath: "pKey" });
-    objStore.createIndex("index", "iKey");
-    for (var i = 0; i < records.length; i++) {
-      objStore.add(records[i]);
-    }
-    var rq = objStore.index("index").openCursor();
-    rq.onsuccess = function (event: any) {
-      var cursor = event.target.result;
-      t.true(cursor instanceof BridgeIDBCursor, "cursor exist");
-
-      db.deleteObjectStore("store");
-      t.throws(
-        function () {
-          cursor.delete();
-        },
-        { name: "InvalidStateError" },
-        "If the cursor's source or effective object store has been deleted, 
the implementation MUST throw a DOMException of type InvalidStateError",
-      );
-
-      t.end();
+test("WPT idbcursor-delete-index4.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any,
+      records = [
+        { pKey: "primaryKey_0", iKey: "indexKey_0" },
+        { pKey: "primaryKey_1", iKey: "indexKey_1" },
+      ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (event: any) {
+      db = event.target.result;
+      var objStore = db.createObjectStore("store", { keyPath: "pKey" });
+      objStore.createIndex("index", "iKey");
+      for (var i = 0; i < records.length; i++) {
+        objStore.add(records[i]);
+      }
+      var rq = objStore.index("index").openCursor();
+      rq.onsuccess = function (event: any) {
+        var cursor = event.target.result;
+        t.true(cursor instanceof BridgeIDBCursor, "cursor exist");
+
+        db.deleteObjectStore("store");
+        t.throws(
+          function () {
+            cursor.delete();
+          },
+          { name: "InvalidStateError" },
+          "If the cursor's source or effective object store has been deleted, 
the implementation MUST throw a DOMException of type InvalidStateError",
+        );
+
+        resolve();
+      };
     };
-  };
+  });
 });
 
 // IDBCursor.delete() - index - throw InvalidStateError when the cursor is 
being iterated
-test.cb("WPT idbcursor-delete-index5.htm", (t) => {
-  var db: any,
-    records = [
-      { pKey: "primaryKey_0", iKey: "indexKey_0" },
-      { pKey: "primaryKey_1", iKey: "indexKey_1" },
-    ];
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (event: any) {
-    db = event.target.result;
-    var objStore = db.createObjectStore("store", { keyPath: "pKey" });
-    objStore.createIndex("index", "iKey");
-    for (var i = 0; i < records.length; i++) {
-      objStore.add(records[i]);
-    }
-
-    var rq = objStore.index("index").openCursor();
-    rq.onsuccess = function (event: any) {
-      var cursor = event.target.result;
-      t.true(cursor instanceof BridgeIDBCursor, "cursor exist");
-
-      cursor.continue();
-      t.throws(
-        function () {
-          cursor.delete();
-        },
-        { name: "InvalidStateError" },
-      );
+test("WPT idbcursor-delete-index5.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any,
+      records = [
+        { pKey: "primaryKey_0", iKey: "indexKey_0" },
+        { pKey: "primaryKey_1", iKey: "indexKey_1" },
+      ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (event: any) {
+      db = event.target.result;
+      var objStore = db.createObjectStore("store", { keyPath: "pKey" });
+      objStore.createIndex("index", "iKey");
+      for (var i = 0; i < records.length; i++) {
+        objStore.add(records[i]);
+      }
 
-      t.end();
+      var rq = objStore.index("index").openCursor();
+      rq.onsuccess = function (event: any) {
+        var cursor = event.target.result;
+        t.true(cursor instanceof BridgeIDBCursor, "cursor exist");
+
+        cursor.continue();
+        t.throws(
+          function () {
+            cursor.delete();
+          },
+          { name: "InvalidStateError" },
+        );
+
+        resolve();
+      };
     };
-  };
+  });
 });
diff --git 
a/packages/idb-bridge/src/idb-wpt-ported/idbcursor-delete-objectstore.test.ts 
b/packages/idb-bridge/src/idb-wpt-ported/idbcursor-delete-objectstore.test.ts
index 7afe1e48..9410ca79 100644
--- 
a/packages/idb-bridge/src/idb-wpt-ported/idbcursor-delete-objectstore.test.ts
+++ 
b/packages/idb-bridge/src/idb-wpt-ported/idbcursor-delete-objectstore.test.ts
@@ -1,194 +1,204 @@
 import test from "ava";
-import { BridgeIDBCursor } from "..";
-import { IDBCursor } from "../idbtypes";
-import { createdb, indexeddb_test } from "./wptsupport";
+import { BridgeIDBCursor } from "../bridge-idb.js";
+import { createdb } from "./wptsupport.js";
 
 // IDBCursor.delete() - object store - remove a record from the object store
-test.cb("WPT idbcursor-delete-objectstore.htm", (t) => {
-  var db: any,
-    count = 0,
-    records = [{ pKey: "primaryKey_0" }, { pKey: "primaryKey_1" }];
+test("WPT idbcursor-delete-objectstore.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any,
+      count = 0,
+      records = [{ pKey: "primaryKey_0" }, { pKey: "primaryKey_1" }];
 
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
 
-    var objStore = db.createObjectStore("test", { keyPath: "pKey" });
+      var objStore = db.createObjectStore("test", { keyPath: "pKey" });
 
-    for (var i = 0; i < records.length; i++) objStore.add(records[i]);
-  };
+      for (var i = 0; i < records.length; i++) objStore.add(records[i]);
+    };
 
-  open_rq.onsuccess = CursorDeleteRecord;
+    open_rq.onsuccess = CursorDeleteRecord;
 
-  function CursorDeleteRecord(e: any) {
-    var txn = db.transaction("test", "readwrite"),
-      cursor_rq = txn.objectStore("test").openCursor();
+    function CursorDeleteRecord(e: any) {
+      var txn = db.transaction("test", "readwrite"),
+        cursor_rq = txn.objectStore("test").openCursor();
 
-    cursor_rq.onsuccess = function (e: any) {
-      var cursor = e.target.result;
+      cursor_rq.onsuccess = function (e: any) {
+        var cursor = e.target.result;
 
-      t.true(cursor != null, "cursor exist");
-      cursor.delete();
-    };
+        t.true(cursor != null, "cursor exist");
+        cursor.delete();
+      };
 
-    txn.oncomplete = VerifyRecordWasDeleted;
-  }
+      txn.oncomplete = VerifyRecordWasDeleted;
+    }
 
-  function VerifyRecordWasDeleted(e: any) {
-    var cursor_rq = db.transaction("test").objectStore("test").openCursor();
+    function VerifyRecordWasDeleted(e: any) {
+      var cursor_rq = db.transaction("test").objectStore("test").openCursor();
 
-    cursor_rq.onsuccess = function (e: any) {
-      var cursor = e.target.result;
+      cursor_rq.onsuccess = function (e: any) {
+        var cursor = e.target.result;
 
-      if (!cursor) {
-        t.deepEqual(count, 1, "count");
-        t.end();
-      }
+        if (!cursor) {
+          t.deepEqual(count, 1, "count");
+          resolve();
+          return;
+        }
 
-      t.deepEqual(cursor.value.pKey, records[1].pKey);
-      count++;
-      cursor.continue();
-    };
-  }
+        t.deepEqual(cursor.value.pKey, records[1].pKey);
+        count++;
+        cursor.continue();
+      };
+    }
+  });
 });
 
 // IDBCursor.delete() - object store - attempt to remove a record in a 
read-only transaction
-test.cb("WPT idbcursor-delete-objectstore2.htm", (t) => {
-  var db: any,
-    records = [
-      { pKey: "primaryKey_0", iKey: "indexKey_0" },
-      { pKey: "primaryKey_1", iKey: "indexKey_1" },
-    ];
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-
-    var objStore = db.createObjectStore("test", { keyPath: "pKey" });
-
-    for (var i = 0; i < records.length; i++) objStore.add(records[i]);
-  };
-
-  open_rq.onsuccess = function (e: any) {
-    var cursor_rq = db.transaction("test").objectStore("test").openCursor();
-
-    cursor_rq.onsuccess = function (e: any) {
-      var cursor = e.target.result;
-
-      t.true(cursor != null, "cursor exist");
-      t.throws(
-        function () {
-          cursor.delete();
-        },
-        { name: "ReadOnlyError" },
-      );
-      t.end();
-    };
-  };
-});
-
-// IDBCursor.delete() - index - attempt to remove a record in an inactive 
transaction
-test.cb("WPT idbcursor-delete-objectstore3.htm", (t) => {
-  var db: any,
-    records = [
-      { pKey: "primaryKey_0", iKey: "indexKey_0" },
-      { pKey: "primaryKey_1", iKey: "indexKey_1" },
-    ];
+test("WPT idbcursor-delete-objectstore2.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any,
+      records = [
+        { pKey: "primaryKey_0", iKey: "indexKey_0" },
+        { pKey: "primaryKey_1", iKey: "indexKey_1" },
+      ];
 
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-    var objStore = db.createObjectStore("test", { keyPath: "pKey" });
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
 
-    for (var i = 0; i < records.length; i++) objStore.add(records[i]);
+      var objStore = db.createObjectStore("test", { keyPath: "pKey" });
 
-    var cursor_rq = objStore.openCursor();
-
-    const window: any = {};
+      for (var i = 0; i < records.length; i++) objStore.add(records[i]);
+    };
 
-    cursor_rq.onsuccess = function (e: any) {
-      var cursor = e.target.result;
-      t.true(cursor instanceof BridgeIDBCursor, "cursor exist");
-      window.cursor = cursor;
+    open_rq.onsuccess = function (e: any) {
+      var cursor_rq = db.transaction("test").objectStore("test").openCursor();
+
+      cursor_rq.onsuccess = function (e: any) {
+        var cursor = e.target.result;
+
+        t.true(cursor != null, "cursor exist");
+        t.throws(
+          function () {
+            cursor.delete();
+          },
+          { name: "ReadOnlyError" },
+        );
+        resolve();
+      };
     };
+  });
+});
 
-    e.target.transaction.oncomplete = function (e: any) {
-      t.throws(
-        function () {
-          window.cursor.delete();
-        },
-        {
-          name: "TransactionInactiveError",
-        },
-      );
-      t.end();
+// IDBCursor.delete() - index - attempt to remove a record in an inactive 
transaction
+test("WPT idbcursor-delete-objectstore3.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any,
+      records = [
+        { pKey: "primaryKey_0", iKey: "indexKey_0" },
+        { pKey: "primaryKey_1", iKey: "indexKey_1" },
+      ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+      var objStore = db.createObjectStore("test", { keyPath: "pKey" });
+
+      for (var i = 0; i < records.length; i++) objStore.add(records[i]);
+
+      var cursor_rq = objStore.openCursor();
+
+      const window: any = {};
+
+      cursor_rq.onsuccess = function (e: any) {
+        var cursor = e.target.result;
+        t.true(cursor instanceof BridgeIDBCursor, "cursor exist");
+        window.cursor = cursor;
+      };
+
+      e.target.transaction.oncomplete = function (e: any) {
+        t.throws(
+          function () {
+            window.cursor.delete();
+          },
+          {
+            name: "TransactionInactiveError",
+          },
+        );
+        resolve();
+      };
     };
-  };
+  });
 });
 
 // IDBCursor.delete() - object store - throw InvalidStateError caused by 
object store been deleted
-test.cb("WPT idbcursor-delete-objectstore4.htm", (t) => {
-  var db: any,
-    records = [{ pKey: "primaryKey_0" }, { pKey: "primaryKey_1" }];
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (event: any) {
-    db = event.target.result;
-    var objStore = db.createObjectStore("store", { keyPath: "pKey" });
-    for (var i = 0; i < records.length; i++) {
-      objStore.add(records[i]);
-    }
-    var rq = objStore.openCursor();
-    rq.onsuccess = function (event: any) {
-      var cursor = event.target.result;
-      t.true(cursor instanceof BridgeIDBCursor, "cursor exist");
-
-      db.deleteObjectStore("store");
-      t.throws(
-        function () {
-          cursor.delete();
-        },
-        { name: "InvalidStateError" },
-        "If the cursor's source or effective object store has been deleted, 
the implementation MUST throw a DOMException of type InvalidStateError",
-      );
-
-      t.end();
+test("WPT idbcursor-delete-objectstore4.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any,
+      records = [{ pKey: "primaryKey_0" }, { pKey: "primaryKey_1" }];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (event: any) {
+      db = event.target.result;
+      var objStore = db.createObjectStore("store", { keyPath: "pKey" });
+      for (var i = 0; i < records.length; i++) {
+        objStore.add(records[i]);
+      }
+      var rq = objStore.openCursor();
+      rq.onsuccess = function (event: any) {
+        var cursor = event.target.result;
+        t.true(cursor instanceof BridgeIDBCursor, "cursor exist");
+
+        db.deleteObjectStore("store");
+        t.throws(
+          function () {
+            cursor.delete();
+          },
+          { name: "InvalidStateError" },
+          "If the cursor's source or effective object store has been deleted, 
the implementation MUST throw a DOMException of type InvalidStateError",
+        );
+
+        resolve();
+      };
     };
-  };
+  });
 });
 
 // IDBCursor.delete() - object store - throw InvalidStateError when the cursor 
is being iterated
-test.cb("WPT idbcursor-delete-objectstore5.htm", (t) => {
-  var db: any,
-    records = [{ pKey: "primaryKey_0" }, { pKey: "primaryKey_1" }];
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (event: any) {
-    db = event.target.result;
-    var objStore = db.createObjectStore("store", { keyPath: "pKey" });
-    for (var i = 0; i < records.length; i++) {
-      objStore.add(records[i]);
-    }
-  };
-
-  open_rq.onsuccess = function (event: any) {
-    var txn = db.transaction("store", "readwrite");
-    var rq = txn.objectStore("store").openCursor();
-    rq.onsuccess = function (event: any) {
-      var cursor = event.target.result;
-      t.true(cursor instanceof BridgeIDBCursor, "cursor exist");
-
-      cursor.continue();
-      t.throws(
-        function () {
-          cursor.delete();
-        },
-        {
-          name: "InvalidStateError",
-        },
-      );
-
-      t.end();
+test("WPT idbcursor-delete-objectstore5.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any,
+      records = [{ pKey: "primaryKey_0" }, { pKey: "primaryKey_1" }];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (event: any) {
+      db = event.target.result;
+      var objStore = db.createObjectStore("store", { keyPath: "pKey" });
+      for (var i = 0; i < records.length; i++) {
+        objStore.add(records[i]);
+      }
+    };
+
+    open_rq.onsuccess = function (event: any) {
+      var txn = db.transaction("store", "readwrite");
+      var rq = txn.objectStore("store").openCursor();
+      rq.onsuccess = function (event: any) {
+        var cursor = event.target.result;
+        t.true(cursor instanceof BridgeIDBCursor, "cursor exist");
+
+        cursor.continue();
+        t.throws(
+          function () {
+            cursor.delete();
+          },
+          {
+            name: "InvalidStateError",
+          },
+        );
+
+        resolve();
+      };
     };
-  };
+  });
 });
diff --git a/packages/idb-bridge/src/idb-wpt-ported/idbcursor-reused.test.ts 
b/packages/idb-bridge/src/idb-wpt-ported/idbcursor-reused.test.ts
index 3c2ee875..54745802 100644
--- a/packages/idb-bridge/src/idb-wpt-ported/idbcursor-reused.test.ts
+++ b/packages/idb-bridge/src/idb-wpt-ported/idbcursor-reused.test.ts
@@ -1,5 +1,5 @@
 import test from "ava";
-import { createdb } from "./wptsupport";
+import { createdb } from "./wptsupport.js";
 
 test("WPT idbcursor-reused.htm", async (t) => {
   await new Promise<void>((resolve, reject) => {
diff --git 
a/packages/idb-bridge/src/idb-wpt-ported/idbcursor-update-index.test.ts 
b/packages/idb-bridge/src/idb-wpt-ported/idbcursor-update-index.test.ts
index dcbee2b1..81a7cd75 100644
--- a/packages/idb-bridge/src/idb-wpt-ported/idbcursor-update-index.test.ts
+++ b/packages/idb-bridge/src/idb-wpt-ported/idbcursor-update-index.test.ts
@@ -1,340 +1,356 @@
 import test from "ava";
-import { BridgeIDBCursor, BridgeIDBKeyRange } from "..";
+import { BridgeIDBCursor, BridgeIDBKeyRange } from "../bridge-idb.js";
 import {
   createDatabase,
   createdb,
   promiseForRequest,
   promiseForTransaction,
-} from "./wptsupport";
+} from "./wptsupport.js";
 
 // IDBCursor.update() - index - modify a record in the object store
-test.cb("WPT test idbcursor_update_index.htm", (t) => {
-  var db: any,
-    records = [
-      { pKey: "primaryKey_0", iKey: "indexKey_0" },
-      { pKey: "primaryKey_1", iKey: "indexKey_1" },
-    ];
+test("WPT test idbcursor_update_index.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any,
+      records = [
+        { pKey: "primaryKey_0", iKey: "indexKey_0" },
+        { pKey: "primaryKey_1", iKey: "indexKey_1" },
+      ];
 
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
 
-    var objStore = db.createObjectStore("test", { keyPath: "pKey" });
-    objStore.createIndex("index", "iKey");
+      var objStore = db.createObjectStore("test", { keyPath: "pKey" });
+      objStore.createIndex("index", "iKey");
 
-    for (var i = 0; i < records.length; i++) objStore.add(records[i]);
+      for (var i = 0; i < records.length; i++) objStore.add(records[i]);
 
-    // XXX: Gecko doesn't like this
-    //e.target.transaction.oncomplete = t.step_func(CursorUpdateRecord);
-  };
+      // XXX: Gecko doesn't like this
+      //e.target.transaction.oncomplete = t.step_func(CursorUpdateRecord);
+    };
 
-  open_rq.onsuccess = CursorUpdateRecord;
+    open_rq.onsuccess = CursorUpdateRecord;
 
-  function CursorUpdateRecord(e: any) {
-    var txn = db.transaction("test", "readwrite"),
-      cursor_rq = txn.objectStore("test").index("index").openCursor();
-    cursor_rq.onsuccess = function (e: any) {
-      var cursor = e.target.result;
+    function CursorUpdateRecord(e: any) {
+      var txn = db.transaction("test", "readwrite"),
+        cursor_rq = txn.objectStore("test").index("index").openCursor();
+      cursor_rq.onsuccess = function (e: any) {
+        var cursor = e.target.result;
 
-      cursor.value.iKey += "_updated";
-      cursor.update(cursor.value);
-    };
+        cursor.value.iKey += "_updated";
+        cursor.update(cursor.value);
+      };
 
-    txn.oncomplete = VerifyRecordWasUpdated;
-  }
+      txn.oncomplete = VerifyRecordWasUpdated;
+    }
 
-  function VerifyRecordWasUpdated(e: any) {
-    var cursor_rq = db.transaction("test").objectStore("test").openCursor();
+    function VerifyRecordWasUpdated(e: any) {
+      var cursor_rq = db.transaction("test").objectStore("test").openCursor();
 
-    cursor_rq.onsuccess = function (e: any) {
-      var cursor = e.target.result;
+      cursor_rq.onsuccess = function (e: any) {
+        var cursor = e.target.result;
 
-      t.deepEqual(cursor.value.iKey, records[0].iKey + "_updated");
-      t.end();
-    };
-  }
+        t.deepEqual(cursor.value.iKey, records[0].iKey + "_updated");
+        resolve();
+      };
+    }
+  });
 });
 
 // IDBCursor.update() - index - attempt to modify a record in a read-only 
transaction
-test.cb("WPT test idbcursor_update_index2.htm", (t) => {
-  var db: any,
-    records = [
-      { pKey: "primaryKey_0", iKey: "indexKey_0" },
-      { pKey: "primaryKey_1", iKey: "indexKey_1" },
-    ];
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-
-    var objStore = db.createObjectStore("test", { keyPath: "pKey" });
-    objStore.createIndex("index", "iKey");
-
-    for (var i = 0; i < records.length; i++) objStore.add(records[i]);
-  };
-
-  open_rq.onsuccess = function (e: any) {
-    var cursor_rq = db
-      .transaction("test")
-      .objectStore("test")
-      .index("index")
-      .openCursor();
-
-    cursor_rq.onsuccess = function (e: any) {
-      var cursor = e.target.result;
-      t.throws(
-        function () {
-          cursor.update(cursor.value);
-        },
-        { name: "ReadOnlyError" },
-      );
-      t.end();
+test("WPT test idbcursor_update_index2.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any,
+      records = [
+        { pKey: "primaryKey_0", iKey: "indexKey_0" },
+        { pKey: "primaryKey_1", iKey: "indexKey_1" },
+      ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+
+      var objStore = db.createObjectStore("test", { keyPath: "pKey" });
+      objStore.createIndex("index", "iKey");
+
+      for (var i = 0; i < records.length; i++) objStore.add(records[i]);
     };
-  };
-});
 
-//IDBCursor.update() - index - attempt to modify a record in an inactive 
transaction
-test.cb("WPT test idbcursor_update_index3.htm", (t) => {
-  var db: any,
-    records = [
-      { pKey: "primaryKey_0", iKey: "indexKey_0" },
-      { pKey: "primaryKey_1", iKey: "indexKey_1" },
-    ];
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-    var objStore = db.createObjectStore("test", { keyPath: "pKey" });
-    var index = objStore.createIndex("index", "iKey");
-
-    for (var i = 0; i < records.length; i++) objStore.add(records[i]);
-
-    var cursor_rq = index.openCursor();
-
-    const window: any = {};
-
-    cursor_rq.onsuccess = function (e: any) {
-      var cursor = e.target.result;
-      t.true(cursor instanceof BridgeIDBCursor, "cursor exist");
-      window.cursor = cursor;
-      window.record = cursor.value;
+    open_rq.onsuccess = function (e: any) {
+      var cursor_rq = db
+        .transaction("test")
+        .objectStore("test")
+        .index("index")
+        .openCursor();
+
+      cursor_rq.onsuccess = function (e: any) {
+        var cursor = e.target.result;
+        t.throws(
+          function () {
+            cursor.update(cursor.value);
+          },
+          { name: "ReadOnlyError" },
+        );
+        resolve();
+      };
     };
+  });
+});
 
-    e.target.transaction.oncomplete = function (e: any) {
-      t.throws(
-        function () {
-          window.cursor.update(window.record);
-        },
-        { name: "TransactionInactiveError" },
-      );
-      t.end();
+//IDBCursor.update() - index - attempt to modify a record in an inactive 
transaction
+test("WPT test idbcursor_update_index3.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any,
+      records = [
+        { pKey: "primaryKey_0", iKey: "indexKey_0" },
+        { pKey: "primaryKey_1", iKey: "indexKey_1" },
+      ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+      var objStore = db.createObjectStore("test", { keyPath: "pKey" });
+      var index = objStore.createIndex("index", "iKey");
+
+      for (var i = 0; i < records.length; i++) objStore.add(records[i]);
+
+      var cursor_rq = index.openCursor();
+
+      const window: any = {};
+
+      cursor_rq.onsuccess = function (e: any) {
+        var cursor = e.target.result;
+        t.true(cursor instanceof BridgeIDBCursor, "cursor exist");
+        window.cursor = cursor;
+        window.record = cursor.value;
+      };
+
+      e.target.transaction.oncomplete = function (e: any) {
+        t.throws(
+          function () {
+            window.cursor.update(window.record);
+          },
+          { name: "TransactionInactiveError" },
+        );
+        resolve();
+      };
     };
-  };
+  });
 });
 
 // IDBCursor.update() - index - attempt to modify a record when object store 
been deleted
-test.cb("WPT test idbcursor_update_index4.htm", (t) => {
-  var db: any,
-    records = [
-      { pKey: "primaryKey_0", iKey: "indexKey_0" },
-      { pKey: "primaryKey_1", iKey: "indexKey_1" },
-    ];
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (event: any) {
-    db = event.target.result;
-    var objStore = db.createObjectStore("store", { keyPath: "pKey" });
-    objStore.createIndex("index", "iKey");
-    for (var i = 0; i < records.length; i++) {
-      objStore.add(records[i]);
-    }
-    var rq = objStore.index("index").openCursor();
-    rq.onsuccess = function (event: any) {
-      var cursor = event.target.result;
-      t.true(cursor instanceof BridgeIDBCursor);
-
-      db.deleteObjectStore("store");
-      cursor.value.iKey += "_updated";
-      t.throws(
-        function () {
-          cursor.update(cursor.value);
-        },
-        { name: "InvalidStateError" },
-        "If the cursor's source or effective object store has been deleted, 
the implementation MUST throw a DOMException of type InvalidStateError",
-      );
-
-      t.end();
+test("WPT test idbcursor_update_index4.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any,
+      records = [
+        { pKey: "primaryKey_0", iKey: "indexKey_0" },
+        { pKey: "primaryKey_1", iKey: "indexKey_1" },
+      ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (event: any) {
+      db = event.target.result;
+      var objStore = db.createObjectStore("store", { keyPath: "pKey" });
+      objStore.createIndex("index", "iKey");
+      for (var i = 0; i < records.length; i++) {
+        objStore.add(records[i]);
+      }
+      var rq = objStore.index("index").openCursor();
+      rq.onsuccess = function (event: any) {
+        var cursor = event.target.result;
+        t.true(cursor instanceof BridgeIDBCursor);
+
+        db.deleteObjectStore("store");
+        cursor.value.iKey += "_updated";
+        t.throws(
+          function () {
+            cursor.update(cursor.value);
+          },
+          { name: "InvalidStateError" },
+          "If the cursor's source or effective object store has been deleted, 
the implementation MUST throw a DOMException of type InvalidStateError",
+        );
+
+        resolve();
+      };
     };
-  };
+  });
 });
 
 // IDBCursor.update() - index - throw DataCloneError
-test.cb("WPT test idbcursor_update_index5.htm", (t) => {
-  var db: any,
-    records = [
-      { pKey: "primaryKey_0", iKey: "indexKey_0" },
-      { pKey: "primaryKey_1", iKey: "indexKey_1" },
-    ];
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-
-    var objStore = db.createObjectStore("test", { keyPath: "pKey" });
-    objStore.createIndex("index", "iKey");
-
-    for (var i = 0; i < records.length; i++) objStore.add(records[i]);
-  };
-
-  open_rq.onsuccess = function (e: any) {
-    var cursor_rq = db
-      .transaction("test", "readwrite")
-      .objectStore("test")
-      .index("index")
-      .openCursor();
-
-    cursor_rq.onsuccess = function (e: any) {
-      var cursor = e.target.result;
-      t.true(cursor instanceof BridgeIDBCursor);
-
-      var record = cursor.value;
-      // Original test uses different uncloneable value
-      record.data = { foo: () => {} };
-      t.throws(
-        function () {
-          cursor.update(record);
-        },
-        { name: "DataCloneError" },
-      );
-      t.end();
+test("WPT test idbcursor_update_index5.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any,
+      records = [
+        { pKey: "primaryKey_0", iKey: "indexKey_0" },
+        { pKey: "primaryKey_1", iKey: "indexKey_1" },
+      ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+
+      var objStore = db.createObjectStore("test", { keyPath: "pKey" });
+      objStore.createIndex("index", "iKey");
+
+      for (var i = 0; i < records.length; i++) objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = function (e: any) {
+      var cursor_rq = db
+        .transaction("test", "readwrite")
+        .objectStore("test")
+        .index("index")
+        .openCursor();
+
+      cursor_rq.onsuccess = function (e: any) {
+        var cursor = e.target.result;
+        t.true(cursor instanceof BridgeIDBCursor);
+
+        var record = cursor.value;
+        // Original test uses different uncloneable value
+        record.data = { foo: () => {} };
+        t.throws(
+          function () {
+            cursor.update(record);
+          },
+          { name: "DataCloneError" },
+        );
+        resolve();
+      };
     };
-  };
+  });
 });
 
 // IDBCursor.update() - index - no argument
-test.cb("WPT test idbcursor_update_index6.htm", (t) => {
-  var db: any,
-    records = [
-      { pKey: "primaryKey_0", iKey: "indexKey_0" },
-      { pKey: "primaryKey_1", iKey: "indexKey_1" },
-    ];
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-
-    var objStore = db.createObjectStore("test", { keyPath: "pKey" });
-    objStore.createIndex("index", "iKey");
-
-    for (var i = 0; i < records.length; i++) objStore.add(records[i]);
-  };
-
-  open_rq.onsuccess = function (e: any) {
-    var cursor_rq = db
-      .transaction("test")
-      .objectStore("test")
-      .index("index")
-      .openCursor();
-
-    cursor_rq.onsuccess = function (e: any) {
-      var cursor = e.target.result;
-      t.true(cursor instanceof BridgeIDBCursor);
-
-      t.throws(
-        function () {
-          cursor.update();
-        },
-        {
-          instanceOf: TypeError,
-        },
-      );
-      t.end();
+test("WPT test idbcursor_update_index6.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any,
+      records = [
+        { pKey: "primaryKey_0", iKey: "indexKey_0" },
+        { pKey: "primaryKey_1", iKey: "indexKey_1" },
+      ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+
+      var objStore = db.createObjectStore("test", { keyPath: "pKey" });
+      objStore.createIndex("index", "iKey");
+
+      for (var i = 0; i < records.length; i++) objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = function (e: any) {
+      var cursor_rq = db
+        .transaction("test")
+        .objectStore("test")
+        .index("index")
+        .openCursor();
+
+      cursor_rq.onsuccess = function (e: any) {
+        var cursor = e.target.result;
+        t.true(cursor instanceof BridgeIDBCursor);
+
+        t.throws(
+          function () {
+            cursor.update();
+          },
+          {
+            instanceOf: TypeError,
+          },
+        );
+        resolve();
+      };
     };
-  };
+  });
 });
 
 // IDBCursor.update() - index - throw DataError
-test.cb("WPT test idbcursor_update_index7.htm", (t) => {
-  var db: any,
-    records = [
-      { pKey: "primaryKey_0", iKey: "indexKey_0" },
-      { pKey: "primaryKey_1", iKey: "indexKey_1" },
-    ];
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-
-    var objStore = db.createObjectStore("test", { keyPath: "pKey" });
-    objStore.createIndex("index", "iKey");
-
-    for (var i = 0; i < records.length; i++) objStore.add(records[i]);
-  };
-
-  open_rq.onsuccess = function (e: any) {
-    var cursor_rq = db
-      .transaction("test", "readwrite")
-      .objectStore("test")
-      .index("index")
-      .openCursor();
-
-    cursor_rq.onsuccess = function (e: any) {
-      var cursor = e.target.result;
-      t.true(cursor instanceof BridgeIDBCursor);
-
-      t.throws(
-        function () {
-          cursor.update(null);
-        },
-        { name: "DataError" },
-      );
-      t.end();
+test("WPT test idbcursor_update_index7.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any,
+      records = [
+        { pKey: "primaryKey_0", iKey: "indexKey_0" },
+        { pKey: "primaryKey_1", iKey: "indexKey_1" },
+      ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+
+      var objStore = db.createObjectStore("test", { keyPath: "pKey" });
+      objStore.createIndex("index", "iKey");
+
+      for (var i = 0; i < records.length; i++) objStore.add(records[i]);
+    };
+
+    open_rq.onsuccess = function (e: any) {
+      var cursor_rq = db
+        .transaction("test", "readwrite")
+        .objectStore("test")
+        .index("index")
+        .openCursor();
+
+      cursor_rq.onsuccess = function (e: any) {
+        var cursor = e.target.result;
+        t.true(cursor instanceof BridgeIDBCursor);
+
+        t.throws(
+          function () {
+            cursor.update(null);
+          },
+          { name: "DataError" },
+        );
+        resolve();
+      };
     };
-  };
+  });
 });
 
 // IDBCursor.update() - index - throw InvalidStateError when the cursor is 
being iterated
-test.cb("WPT test idbcursor_update_index8.htm", (t) => {
-  var db: any,
-    records = [
-      { pKey: "primaryKey_0", iKey: "indexKey_0" },
-      { pKey: "primaryKey_1", iKey: "indexKey_1" },
-    ];
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-
-    var objStore = db.createObjectStore("store", { keyPath: "pKey" });
-    objStore.createIndex("index", "iKey");
-
-    for (var i = 0; i < records.length; i++) objStore.add(records[i]);
-  };
-
-  open_rq.onsuccess = function (e: any) {
-    var cursor_rq = db
-      .transaction("store", "readwrite")
-      .objectStore("store")
-      .index("index")
-      .openCursor();
-
-    cursor_rq.onsuccess = function (e: any) {
-      var cursor = e.target.result;
-      t.true(cursor instanceof BridgeIDBCursor, "cursor exists");
+test("WPT test idbcursor_update_index8.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any,
+      records = [
+        { pKey: "primaryKey_0", iKey: "indexKey_0" },
+        { pKey: "primaryKey_1", iKey: "indexKey_1" },
+      ];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+
+      var objStore = db.createObjectStore("store", { keyPath: "pKey" });
+      objStore.createIndex("index", "iKey");
+
+      for (var i = 0; i < records.length; i++) objStore.add(records[i]);
+    };
 
-      cursor.continue();
-      t.throws(
-        function () {
-          cursor.update({ pKey: "primaryKey_0", iKey: "indexKey_0_updated" });
-        },
-        {
-          name: "InvalidStateError",
-        },
-      );
-
-      t.end();
+    open_rq.onsuccess = function (e: any) {
+      var cursor_rq = db
+        .transaction("store", "readwrite")
+        .objectStore("store")
+        .index("index")
+        .openCursor();
+
+      cursor_rq.onsuccess = function (e: any) {
+        var cursor = e.target.result;
+        t.true(cursor instanceof BridgeIDBCursor, "cursor exists");
+
+        cursor.continue();
+        t.throws(
+          function () {
+            cursor.update({ pKey: "primaryKey_0", iKey: "indexKey_0_updated" 
});
+          },
+          {
+            name: "InvalidStateError",
+          },
+        );
+
+        resolve();
+      };
     };
-  };
+  });
 });
 
 // Index cursor - indexed values updated during iteration
diff --git a/packages/idb-bridge/src/idb-wpt-ported/idbfactory-cmp.test.ts 
b/packages/idb-bridge/src/idb-wpt-ported/idbfactory-cmp.test.ts
index c7a25a46..a6cb9761 100644
--- a/packages/idb-bridge/src/idb-wpt-ported/idbfactory-cmp.test.ts
+++ b/packages/idb-bridge/src/idb-wpt-ported/idbfactory-cmp.test.ts
@@ -1,5 +1,5 @@
 import test from "ava";
-import { createdb, idbFactory } from "./wptsupport";
+import { idbFactory } from "./wptsupport.js";
 
 test("WPT idbfactory-cmp*.html", async (t) => {
   const indexedDB = idbFactory;
diff --git a/packages/idb-bridge/src/idb-wpt-ported/idbfactory-open.test.ts 
b/packages/idb-bridge/src/idb-wpt-ported/idbfactory-open.test.ts
index bba9c6e5..02618f17 100644
--- a/packages/idb-bridge/src/idb-wpt-ported/idbfactory-open.test.ts
+++ b/packages/idb-bridge/src/idb-wpt-ported/idbfactory-open.test.ts
@@ -1,7 +1,7 @@
 import test from "ava";
-import { BridgeIDBVersionChangeEvent } from "../bridge-idb";
-import FakeEvent from "../util/FakeEvent";
-import { createdb, format_value, idbFactory } from "./wptsupport";
+import { BridgeIDBVersionChangeEvent } from "../bridge-idb.js";
+import FakeEvent from "../util/FakeEvent.js";
+import { createdb, format_value, idbFactory } from "./wptsupport.js";
 
 // IDBFactory.open() - request has no source
 test("WPT idbfactory-open.htm", async (t) => {
diff --git a/packages/idb-bridge/src/idb-wpt-ported/idbindex-get.test.ts 
b/packages/idb-bridge/src/idb-wpt-ported/idbindex-get.test.ts
index 751b4f98..d3b6e844 100644
--- a/packages/idb-bridge/src/idb-wpt-ported/idbindex-get.test.ts
+++ b/packages/idb-bridge/src/idb-wpt-ported/idbindex-get.test.ts
@@ -1,7 +1,7 @@
 import test from "ava";
-import { BridgeIDBKeyRange, BridgeIDBRequest } from "..";
-import { IDBDatabase } from "../idbtypes";
-import { createdb } from "./wptsupport";
+import { BridgeIDBKeyRange } from "../bridge-idb.js";
+import { IDBDatabase } from "../idbtypes.js";
+import { createdb } from "./wptsupport.js";
 
 // IDBIndex.get() - returns the record
 test("WPT idbindex_get.htm", async (t) => {
diff --git a/packages/idb-bridge/src/idb-wpt-ported/idbindex-openCursor.test.ts 
b/packages/idb-bridge/src/idb-wpt-ported/idbindex-openCursor.test.ts
index f4515b69..765bcf06 100644
--- a/packages/idb-bridge/src/idb-wpt-ported/idbindex-openCursor.test.ts
+++ b/packages/idb-bridge/src/idb-wpt-ported/idbindex-openCursor.test.ts
@@ -1,82 +1,85 @@
 import test from "ava";
-import { BridgeIDBCursor } from "..";
-import { BridgeIDBCursorWithValue } from "../bridge-idb";
-import { IDBDatabase } from "../idbtypes";
-import { createdb } from "./wptsupport";
+import { createdb } from "./wptsupport.js";
 
 // IDBIndex.openCursor() - throw InvalidStateError when the index is deleted
-test.cb("WPT test idbindex-openCursor.htm", (t) => {
-  var db;
+test("WPT test idbindex-openCursor.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db;
 
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-    var store = db.createObjectStore("store", { keyPath: "key" });
-    var index = store.createIndex("index", "indexedProperty");
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+      var store = db.createObjectStore("store", { keyPath: "key" });
+      var index = store.createIndex("index", "indexedProperty");
 
-    store.add({ key: 1, indexedProperty: "data" });
-    store.deleteIndex("index");
+      store.add({ key: 1, indexedProperty: "data" });
+      store.deleteIndex("index");
 
-    t.throws(
-      () => {
-        index.openCursor();
-      },
-      { name: "InvalidStateError" },
-    );
+      t.throws(
+        () => {
+          index.openCursor();
+        },
+        { name: "InvalidStateError" },
+      );
 
-    t.end();
-  };
+      resolve();
+    };
+  });
 });
 
 // IDBIndex.openCursor() - throw TransactionInactiveError on aborted 
transaction
-test.cb("WPT test idbindex-openCursor2.htm", (t) => {
-  var db;
+test("WPT test idbindex-openCursor2.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db;
 
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-    var store = db.createObjectStore("store", { keyPath: "key" });
-    var index = store.createIndex("index", "indexedProperty");
-    store.add({ key: 1, indexedProperty: "data" });
-  };
-  open_rq.onsuccess = function (e: any) {
-    db = e.target.result;
-    var tx = db.transaction("store");
-    var index = tx.objectStore("store").index("index");
-    tx.abort();
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+      var store = db.createObjectStore("store", { keyPath: "key" });
+      var index = store.createIndex("index", "indexedProperty");
+      store.add({ key: 1, indexedProperty: "data" });
+    };
+    open_rq.onsuccess = function (e: any) {
+      db = e.target.result;
+      var tx = db.transaction("store");
+      var index = tx.objectStore("store").index("index");
+      tx.abort();
 
-    t.throws(
-      () => {
-        index.openCursor();
-      },
-      { name: "TransactionInactiveError" },
-    );
+      t.throws(
+        () => {
+          index.openCursor();
+        },
+        { name: "TransactionInactiveError" },
+      );
 
-    t.end();
-  };
+      resolve();
+    };
+  });
 });
 
 // IDBIndex.openCursor() - throw InvalidStateError on index deleted by aborted 
upgrade
-test.cb("WPT test idbindex-openCursor3.htm", (t) => {
-  var db;
+test("WPT test idbindex-openCursor3.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db;
 
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-    var store = db.createObjectStore("store", { keyPath: "key" });
-    var index = store.createIndex("index", "indexedProperty");
-    store.add({ key: 1, indexedProperty: "data" });
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+      var store = db.createObjectStore("store", { keyPath: "key" });
+      var index = store.createIndex("index", "indexedProperty");
+      store.add({ key: 1, indexedProperty: "data" });
 
-    e.target.transaction.abort();
+      e.target.transaction.abort();
 
-    t.throws(
-      () => {
-        console.log("index before openCursor", index);
-        index.openCursor();
-      },
-      { name: "InvalidStateError" },
-    );
+      t.throws(
+        () => {
+          console.log("index before openCursor", index);
+          index.openCursor();
+        },
+        { name: "InvalidStateError" },
+      );
 
-    t.end();
-  };
+      resolve();
+    };
+  });
 });
diff --git 
a/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-add-put-exception-order.test.ts
 
b/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-add-put-exception-order.test.ts
index a3aead9d..901eda89 100644
--- 
a/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-add-put-exception-order.test.ts
+++ 
b/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-add-put-exception-order.test.ts
@@ -1,8 +1,5 @@
 import test, { ExecutionContext } from "ava";
-import { BridgeIDBCursor } from "..";
-import { BridgeIDBRequest } from "../bridge-idb";
-import { InvalidStateError } from "../util/errors";
-import { createdb, indexeddb_test } from "./wptsupport";
+import { indexeddb_test } from "./wptsupport.js";
 
 async function t1(t: ExecutionContext, method: string): Promise<void> {
   await indexeddb_test(
diff --git a/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-add.test.ts 
b/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-add.test.ts
index 02f05f46..e8bc1747 100644
--- a/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-add.test.ts
+++ b/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-add.test.ts
@@ -1,7 +1,7 @@
 import test from "ava";
-import { BridgeIDBRequest } from "..";
-import { IDBDatabase } from "../idbtypes";
-import { createdb } from "./wptsupport";
+import { BridgeIDBRequest } from "../bridge-idb.js";
+import { IDBDatabase } from "../idbtypes.js";
+import { createdb } from "./wptsupport.js";
 
 // IDBObjectStore.add() - add with an inline key
 test("WPT idbobjectstore_add.htm", async (t) => {
diff --git a/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-get.test.ts 
b/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-get.test.ts
index 0c9d30b7..79064d19 100644
--- a/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-get.test.ts
+++ b/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-get.test.ts
@@ -1,159 +1,172 @@
 import test from "ava";
-import { BridgeIDBKeyRange, BridgeIDBRequest } from "..";
-import { IDBDatabase } from "../idbtypes";
-import { createdb } from "./wptsupport";
+import { BridgeIDBKeyRange } from "../bridge-idb.js";
+import { createdb } from "./wptsupport.js";
 
 // IDBObjectStore.get() - key is a number
-test.cb("WPT idbobjectstore_get.htm", (t) => {
-  var db: any,
-    record = { key: 3.14159265, property: "data" };
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-    db.createObjectStore("store", { keyPath: "key" }).add(record);
-  };
-
-  open_rq.onsuccess = function (e: any) {
-    var rq = db.transaction("store").objectStore("store").get(record.key);
-
-    rq.onsuccess = function (e: any) {
-      t.deepEqual(e.target.result.key, record.key);
-      t.deepEqual(e.target.result.property, record.property);
-      t.end();
+test("WPT idbobjectstore_get.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any,
+      record = { key: 3.14159265, property: "data" };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+      db.createObjectStore("store", { keyPath: "key" }).add(record);
     };
-  };
+
+    open_rq.onsuccess = function (e: any) {
+      var rq = db.transaction("store").objectStore("store").get(record.key);
+
+      rq.onsuccess = function (e: any) {
+        t.deepEqual(e.target.result.key, record.key);
+        t.deepEqual(e.target.result.property, record.property);
+        resolve();
+      };
+    };
+  });
 });
 
 // IDBObjectStore.get() - key is a string
-test.cb("WPT idbobjectstore_get2.htm", (t) => {
-  var db: any,
-    record = { key: "this is a key that's a string", property: "data" };
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-    db.createObjectStore("store", { keyPath: "key" }).add(record);
-  };
-
-  open_rq.onsuccess = function (e: any) {
-    var rq = db.transaction("store").objectStore("store").get(record.key);
-
-    rq.onsuccess = function (e: any) {
-      t.deepEqual(e.target.result.key, record.key);
-      t.deepEqual(e.target.result.property, record.property);
-      t.end();
+test("WPT idbobjectstore_get2.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any,
+      record = { key: "this is a key that's a string", property: "data" };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+      db.createObjectStore("store", { keyPath: "key" }).add(record);
+    };
+
+    open_rq.onsuccess = function (e: any) {
+      var rq = db.transaction("store").objectStore("store").get(record.key);
+
+      rq.onsuccess = function (e: any) {
+        t.deepEqual(e.target.result.key, record.key);
+        t.deepEqual(e.target.result.property, record.property);
+        resolve();
+      };
     };
-  };
+  });
 });
 
 // IDBObjectStore.get() - key is a date
-test.cb("WPT idbobjectstore_get3.htm", (t) => {
-  var db: any;
-  const record = { key: new Date(), property: "data" };
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-    db.createObjectStore("store", { keyPath: "key" }).add(record);
-  };
-
-  open_rq.onsuccess = function (e: any) {
-    var rq = db.transaction("store").objectStore("store").get(record.key);
-
-    rq.onsuccess = function (e: any) {
-      t.deepEqual(e.target.result.key.valueOf(), record.key.valueOf());
-      t.deepEqual(e.target.result.property, record.property);
-      t.end();
+test("WPT idbobjectstore_get3.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any;
+    const record = { key: new Date(), property: "data" };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+      db.createObjectStore("store", { keyPath: "key" }).add(record);
     };
-  };
+
+    open_rq.onsuccess = function (e: any) {
+      var rq = db.transaction("store").objectStore("store").get(record.key);
+
+      rq.onsuccess = function (e: any) {
+        t.deepEqual(e.target.result.key.valueOf(), record.key.valueOf());
+        t.deepEqual(e.target.result.property, record.property);
+        resolve();
+      };
+    };
+  });
 });
 
 // IDBObjectStore.get() - attempt to retrieve a record that doesn't exist
-test.cb("WPT idbobjectstore_get4.htm", (t) => {
-  var db: any;
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-    var rq = db.createObjectStore("store", { keyPath: "key" }).get(1);
-    rq.onsuccess = function (e: any) {
-      t.deepEqual(e.target.results, undefined);
-      setTimeout(function () {
-        t.end();
-      }, 10);
+test("WPT idbobjectstore_get4.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any;
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+      var rq = db.createObjectStore("store", { keyPath: "key" }).get(1);
+      rq.onsuccess = function (e: any) {
+        t.deepEqual(e.target.results, undefined);
+        setTimeout(function () {
+          resolve();
+        }, 10);
+      };
     };
-  };
 
-  open_rq.onsuccess = function () {};
+    open_rq.onsuccess = function () {};
+  });
 });
 
 // IDBObjectStore.get() - returns the record with the first key in the range
-test.cb("WPT idbobjectstore_get5.htm", (t) => {
-  var db: any;
-  var open_rq = createdb(t);
-
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-    var os = db.createObjectStore("store");
-
-    for (var i = 0; i < 10; i++) os.add("data" + i, i);
-  };
-
-  open_rq.onsuccess = function (e: any) {
-    db
-      .transaction("store")
-      .objectStore("store")
-      .get(BridgeIDBKeyRange.bound(3, 6)).onsuccess = function (e: any) {
-      t.deepEqual(e.target.result, "data3", "get(3-6)");
-      t.end();
+test("WPT idbobjectstore_get5.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any;
+    var open_rq = createdb(t);
+
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+      var os = db.createObjectStore("store");
+
+      for (var i = 0; i < 10; i++) os.add("data" + i, i);
+    };
+
+    open_rq.onsuccess = function (e: any) {
+      db
+        .transaction("store")
+        .objectStore("store")
+        .get(BridgeIDBKeyRange.bound(3, 6)).onsuccess = function (e: any) {
+        t.deepEqual(e.target.result, "data3", "get(3-6)");
+        resolve();
+      };
     };
-  };
+  });
 });
 
 // IDBObjectStore.get() - throw TransactionInactiveError on aborted transaction
-test.cb("WPT idbobjectstore_get6.htm", (t) => {
-  var db: any;
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-    db.createObjectStore("store", { keyPath: "key" });
-  };
-
-  open_rq.onsuccess = function (e: any) {
-    var store = db.transaction("store").objectStore("store");
-    store.transaction.abort();
-    t.throws(
-      function () {
-        store.get(1);
-      },
-      { name: "TransactionInactiveError" },
-      "throw TransactionInactiveError on aborted transaction.",
-    );
-    t.end();
-  };
+test("WPT idbobjectstore_get6.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any;
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+      db.createObjectStore("store", { keyPath: "key" });
+    };
+
+    open_rq.onsuccess = function (e: any) {
+      var store = db.transaction("store").objectStore("store");
+      store.transaction.abort();
+      t.throws(
+        function () {
+          store.get(1);
+        },
+        { name: "TransactionInactiveError" },
+        "throw TransactionInactiveError on aborted transaction.",
+      );
+      resolve();
+    };
+  });
 });
 
 // IDBObjectStore.get() - throw DataError when using invalid key
-test.cb("WPT idbobjectstore_get7.htm", (t) => {
-  var db: any;
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-    db.createObjectStore("store", { keyPath: "key" });
-  };
-
-  open_rq.onsuccess = function (e: any) {
-    var store = db.transaction("store").objectStore("store");
-    t.throws(
-      function () {
-        store.get(null);
-      },
-      { name: "DataError" },
-      "throw DataError when using invalid key.",
-    );
-    t.end();
-  };
+test("WPT idbobjectstore_get7.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any;
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+      db.createObjectStore("store", { keyPath: "key" });
+    };
+
+    open_rq.onsuccess = function (e: any) {
+      var store = db.transaction("store").objectStore("store");
+      t.throws(
+        function () {
+          store.get(null);
+        },
+        { name: "DataError" },
+        "throw DataError when using invalid key.",
+      );
+      resolve();
+    };
+  });
 });
diff --git a/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-put.test.ts 
b/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-put.test.ts
index 3ca1b8ec..152e3a9c 100644
--- a/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-put.test.ts
+++ b/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-put.test.ts
@@ -1,449 +1,483 @@
 import test from "ava";
-import { BridgeIDBKeyRange, BridgeIDBRequest } from "..";
-import { IDBDatabase } from "../idbtypes";
-import { createdb } from "./wptsupport";
+import { BridgeIDBRequest } from "../bridge-idb.js";
+import { createdb } from "./wptsupport.js";
 
 // IDBObjectStore.put() - put with an inline key
-test.cb("WPT idbobjectstore_put.htm", (t) => {
-  var db: any,
-    record = { key: 1, property: "data" };
+test("WPT idbobjectstore_put.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any,
+      record = { key: 1, property: "data" };
 
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-    var objStore = db.createObjectStore("store", { keyPath: "key" });
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+      var objStore = db.createObjectStore("store", { keyPath: "key" });
 
-    objStore.put(record);
-  };
+      objStore.put(record);
+    };
 
-  open_rq.onsuccess = function (e: any) {
-    var rq = db.transaction("store").objectStore("store").get(record.key);
+    open_rq.onsuccess = function (e: any) {
+      var rq = db.transaction("store").objectStore("store").get(record.key);
 
-    rq.onsuccess = function (e: any) {
-      t.deepEqual(e.target.result.property, record.property);
-      t.deepEqual(e.target.result.key, record.key);
-      t.end();
+      rq.onsuccess = function (e: any) {
+        t.deepEqual(e.target.result.property, record.property);
+        t.deepEqual(e.target.result.key, record.key);
+        resolve();
+      };
     };
-  };
+  });
 });
 
 // IDBObjectStore.put() - put with an out-of-line key
-test.cb("WPT idbobjectstore_put2.htm", (t) => {
-  var db: any,
-    key = 1,
-    record = { property: "data" };
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-    var objStore = db.createObjectStore("store");
-
-    objStore.put(record, key);
-  };
+test("WPT idbobjectstore_put2.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any,
+      key = 1,
+      record = { property: "data" };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+      var objStore = db.createObjectStore("store");
+
+      objStore.put(record, key);
+    };
 
-  open_rq.onsuccess = function (e: any) {
-    var rq = db.transaction("store").objectStore("store").get(key);
+    open_rq.onsuccess = function (e: any) {
+      var rq = db.transaction("store").objectStore("store").get(key);
 
-    rq.onsuccess = function (e: any) {
-      t.deepEqual(e.target.result.property, record.property);
+      rq.onsuccess = function (e: any) {
+        t.deepEqual(e.target.result.property, record.property);
 
-      t.end();
+        resolve();
+      };
     };
-  };
+  });
 });
 
 // IDBObjectStore.put() - put with an out-of-line key
-test.cb("WPT idbobjectstore_put3.htm", (t) => {
-  var db: any,
-    success_event: any,
-    record = { key: 1, property: "data" },
-    record_put = { key: 1, property: "changed", more: ["stuff", 2] };
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-    var objStore = db.createObjectStore("store", { keyPath: "key" });
-    objStore.put(record);
-
-    var rq = objStore.put(record_put);
-    rq.onerror = () => t.fail("error on put");
-
-    rq.onsuccess = function (e: any) {
-      success_event = true;
+test("WPT idbobjectstore_put3.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any,
+      success_event: any,
+      record = { key: 1, property: "data" },
+      record_put = { key: 1, property: "changed", more: ["stuff", 2] };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+      var objStore = db.createObjectStore("store", { keyPath: "key" });
+      objStore.put(record);
+
+      var rq = objStore.put(record_put);
+      rq.onerror = () => t.fail("error on put");
+
+      rq.onsuccess = function (e: any) {
+        success_event = true;
+      };
     };
-  };
 
-  open_rq.onsuccess = function (e: any) {
-    t.true(success_event);
+    open_rq.onsuccess = function (e: any) {
+      t.true(success_event);
 
-    var rq = db.transaction("store").objectStore("store").get(1);
+      var rq = db.transaction("store").objectStore("store").get(1);
 
-    rq.onsuccess = function (e: any) {
-      var rec = e.target.result;
+      rq.onsuccess = function (e: any) {
+        var rec = e.target.result;
 
-      t.deepEqual(rec.key, record_put.key);
-      t.deepEqual(rec.property, record_put.property);
-      t.deepEqual(rec.more, record_put.more);
+        t.deepEqual(rec.key, record_put.key);
+        t.deepEqual(rec.property, record_put.property);
+        t.deepEqual(rec.more, record_put.more);
 
-      t.end();
+        resolve();
+      };
     };
-  };
+  });
 });
 
 // IDBObjectStore.put() - put where an index has unique:true specified
-test.cb("WPT idbobjectstore_put4.htm", (t) => {
-  var db: any,
-    record = { key: 1, property: "data" };
+test("WPT idbobjectstore_put4.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any,
+      record = { key: 1, property: "data" };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+      var objStore = db.createObjectStore("store", { autoIncrement: true });
+      objStore.createIndex("i1", "property", { unique: true });
+      objStore.put(record);
+
+      var rq = objStore.put(record);
+      rq.onsuccess = () =>
+        t.fail("success on putting duplicate indexed record");
+
+      rq.onerror = function (e: any) {
+        t.deepEqual(rq.error.name, "ConstraintError");
+        t.deepEqual(e.target.error.name, "ConstraintError");
+
+        t.deepEqual(e.type, "error");
+
+        e.preventDefault();
+        e.stopPropagation();
+      };
+    };
 
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-    var objStore = db.createObjectStore("store", { autoIncrement: true });
-    objStore.createIndex("i1", "property", { unique: true });
-    objStore.put(record);
+    // Defer done, giving a spurious rq.onsuccess a chance to run
+    open_rq.onsuccess = function (e: any) {
+      resolve();
+    };
+  });
+});
 
-    var rq = objStore.put(record);
-    rq.onsuccess = () => t.fail("success on putting duplicate indexed record");
+// IDBObjectStore.put() - object store's key path is an object attribute
+test("WPT idbobjectstore_put5.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any,
+      record = { test: { obj: { key: 1 } }, property: "data" };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+      var objStore = db.createObjectStore("store", { keyPath: "test.obj.key" 
});
+      objStore.put(record);
+    };
 
-    rq.onerror = function (e: any) {
-      t.deepEqual(rq.error.name, "ConstraintError");
-      t.deepEqual(e.target.error.name, "ConstraintError");
+    open_rq.onsuccess = function (e: any) {
+      var rq = db
+        .transaction("store")
+        .objectStore("store")
+        .get(record.test.obj.key);
 
-      t.deepEqual(e.type, "error");
+      rq.onsuccess = function (e: any) {
+        t.deepEqual(e.target.result.property, record.property);
 
-      e.preventDefault();
-      e.stopPropagation();
+        resolve();
+      };
     };
-  };
-
-  // Defer done, giving a spurious rq.onsuccess a chance to run
-  open_rq.onsuccess = function (e: any) {
-    t.end();
-  };
+  });
 });
 
-// IDBObjectStore.put() - object store's key path is an object attribute
-test.cb("WPT idbobjectstore_put5.htm", (t) => {
-  var db: any,
-    record = { test: { obj: { key: 1 } }, property: "data" };
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-    var objStore = db.createObjectStore("store", { keyPath: "test.obj.key" });
-    objStore.put(record);
-  };
-
-  open_rq.onsuccess = function (e: any) {
-    var rq = db
-      .transaction("store")
-      .objectStore("store")
-      .get(record.test.obj.key);
-
-    rq.onsuccess = function (e: any) {
-      t.deepEqual(e.target.result.property, record.property);
-
-      t.end();
+// IDBObjectStore.put() - autoIncrement and inline keys
+test("WPT idbobjectstore_put6.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any,
+      record = { property: "data" },
+      expected_keys = [1, 2, 3, 4];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+      var objStore = db.createObjectStore("store", {
+        keyPath: "key",
+        autoIncrement: true,
+      });
+
+      objStore.put(record);
+      objStore.put(record);
+      objStore.put(record);
+      objStore.put(record);
     };
-  };
-});
 
-// IDBObjectStore.put() - autoIncrement and inline keys
-test.cb("WPT idbobjectstore_put6.htm", (t) => {
-  var db: any,
-    record = { property: "data" },
-    expected_keys = [1, 2, 3, 4];
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-    var objStore = db.createObjectStore("store", {
-      keyPath: "key",
-      autoIncrement: true,
-    });
-
-    objStore.put(record);
-    objStore.put(record);
-    objStore.put(record);
-    objStore.put(record);
-  };
-
-  open_rq.onsuccess = function (e: any) {
-    var actual_keys: any[] = [],
-      rq = db.transaction("store").objectStore("store").openCursor();
-
-    rq.onsuccess = function (e: any) {
-      var cursor = e.target.result;
-
-      if (cursor) {
-        actual_keys.push(cursor.value.key);
-        cursor.continue();
-      } else {
-        t.deepEqual(actual_keys, expected_keys);
-        t.end();
-      }
+    open_rq.onsuccess = function (e: any) {
+      var actual_keys: any[] = [],
+        rq = db.transaction("store").objectStore("store").openCursor();
+
+      rq.onsuccess = function (e: any) {
+        var cursor = e.target.result;
+
+        if (cursor) {
+          actual_keys.push(cursor.value.key);
+          cursor.continue();
+        } else {
+          t.deepEqual(actual_keys, expected_keys);
+          resolve();
+          return;
+        }
+      };
     };
-  };
+  });
 });
 
 // IDBObjectStore.put() - autoIncrement and out-of-line keys
-test.cb("WPT idbobjectstore_put7.htm", (t) => {
-  var db: any,
-    record = { property: "data" },
-    expected_keys = [1, 2, 3, 4];
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-    var objStore = db.createObjectStore("store", { autoIncrement: true });
-
-    objStore.put(record);
-    objStore.put(record);
-    objStore.put(record);
-    objStore.put(record);
-  };
-
-  open_rq.onsuccess = function (e) {
-    var actual_keys: any[] = [],
-      rq = db.transaction("store").objectStore("store").openCursor();
-
-    rq.onsuccess = function (e: any) {
-      var cursor = e.target.result;
-
-      if (cursor) {
-        actual_keys.push(cursor.key);
-        cursor.continue();
-      } else {
-        t.deepEqual(actual_keys, expected_keys);
-        t.end();
-      }
+test("WPT idbobjectstore_put7.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any,
+      record = { property: "data" },
+      expected_keys = [1, 2, 3, 4];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+      var objStore = db.createObjectStore("store", { autoIncrement: true });
+
+      objStore.put(record);
+      objStore.put(record);
+      objStore.put(record);
+      objStore.put(record);
     };
-  };
+
+    open_rq.onsuccess = function (e) {
+      var actual_keys: any[] = [],
+        rq = db.transaction("store").objectStore("store").openCursor();
+
+      rq.onsuccess = function (e: any) {
+        var cursor = e.target.result;
+
+        if (cursor) {
+          actual_keys.push(cursor.key);
+          cursor.continue();
+        } else {
+          t.deepEqual(actual_keys, expected_keys);
+          resolve();
+        }
+      };
+    };
+  });
 });
 
 // IDBObjectStore.put() - object store has autoIncrement:true and the key path 
is an object attribute
-test.cb("WPT idbobjectstore_put8.htm", (t) => {
-  var db: any,
-    record = { property: "data" },
-    expected_keys = [1, 2, 3, 4];
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-    var objStore = db.createObjectStore("store", {
-      keyPath: "test.obj.key",
-      autoIncrement: true,
-    });
-
-    objStore.put(record);
-    objStore.put(record);
-    objStore.put(record);
-    objStore.put(record);
-  };
-
-  open_rq.onsuccess = function (e: any) {
-    var actual_keys: any[] = [],
-      rq = db.transaction("store").objectStore("store").openCursor();
-
-    rq.onsuccess = function (e: any) {
-      var cursor = e.target.result;
-
-      if (cursor) {
-        actual_keys.push(cursor.value.test.obj.key);
-        cursor.continue();
-      } else {
-        t.deepEqual(actual_keys, expected_keys);
-        t.end();
-      }
+test("WPT idbobjectstore_put8.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any,
+      record = { property: "data" },
+      expected_keys = [1, 2, 3, 4];
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+      var objStore = db.createObjectStore("store", {
+        keyPath: "test.obj.key",
+        autoIncrement: true,
+      });
+
+      objStore.put(record);
+      objStore.put(record);
+      objStore.put(record);
+      objStore.put(record);
+    };
+
+    open_rq.onsuccess = function (e: any) {
+      var actual_keys: any[] = [],
+        rq = db.transaction("store").objectStore("store").openCursor();
+
+      rq.onsuccess = function (e: any) {
+        var cursor = e.target.result;
+
+        if (cursor) {
+          actual_keys.push(cursor.value.test.obj.key);
+          cursor.continue();
+        } else {
+          t.deepEqual(actual_keys, expected_keys);
+          resolve();
+          return;
+        }
+      };
     };
-  };
+  });
 });
 
 //IDBObjectStore.put() - Attempt to put a record that does not meet the 
constraints of an object store's inline key requirements
-test.cb("WPT idbobjectstore_put9.htm", (t) => {
-  var record = { key: 1, property: "data" };
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    var rq,
-      db = e.target.result,
-      objStore = db.createObjectStore("store", { keyPath: "key" });
-
-    t.throws(
-      function () {
-        rq = objStore.put(record, 1);
-      },
-      { name: "DataError" },
-    );
-
-    t.deepEqual(rq, undefined);
-    t.end();
-  };
+test("WPT idbobjectstore_put9.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var record = { key: 1, property: "data" };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      var rq,
+        db = e.target.result,
+        objStore = db.createObjectStore("store", { keyPath: "key" });
+
+      t.throws(
+        function () {
+          rq = objStore.put(record, 1);
+        },
+        { name: "DataError" },
+      );
+
+      t.deepEqual(rq, undefined);
+      resolve();
+    };
+  });
 });
 
 //IDBObjectStore.put() - Attempt to call 'put' without an key parameter when 
the object store uses out-of-line keys
-test.cb("WPT idbobjectstore_put10.htm", (t) => {
-  var db: any,
-    record = { property: "data" };
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-
-    var rq,
-      objStore = db.createObjectStore("store", { keyPath: "key" });
-
-    t.throws(
-      function () {
-        rq = objStore.put(record);
-      },
-      { name: "DataError" },
-    );
-
-    t.deepEqual(rq, undefined);
-    t.end();
-  };
+test("WPT idbobjectstore_put10.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any,
+      record = { property: "data" };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+
+      var rq,
+        objStore = db.createObjectStore("store", { keyPath: "key" });
+
+      t.throws(
+        function () {
+          rq = objStore.put(record);
+        },
+        { name: "DataError" },
+      );
+
+      t.deepEqual(rq, undefined);
+      resolve();
+    };
+  });
 });
 
 // IDBObjectStore.put() - Attempt to put a record where the record's key does 
not meet the constraints of a valid key
-test.cb("WPT idbobjectstore_put11.htm", (t) => {
-  var db: any,
-    record = { key: { value: 1 }, property: "data" };
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-
-    var rq,
-      objStore = db.createObjectStore("store", { keyPath: "key" });
-
-    t.throws(
-      function () {
-        rq = objStore.put(record);
-      },
-      { name: "DataError" },
-    );
-
-    t.deepEqual(rq, undefined);
-    t.end();
-  };
+test("WPT idbobjectstore_put11.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any,
+      record = { key: { value: 1 }, property: "data" };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+
+      var rq,
+        objStore = db.createObjectStore("store", { keyPath: "key" });
+
+      t.throws(
+        function () {
+          rq = objStore.put(record);
+        },
+        { name: "DataError" },
+      );
+
+      t.deepEqual(rq, undefined);
+      resolve();
+    };
+  });
 });
 
 // IDBObjectStore.put() - Attempt to put a record where the record's in-line 
key is not defined
-test.cb("WPT idbobjectstore_put12.htm", (t) => {
-  var db: any,
-    record = { property: "data" };
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-
-    var rq,
-      objStore = db.createObjectStore("store", { keyPath: "key" });
-
-    t.throws(
-      function () {
-        rq = objStore.put(record);
-      },
-      { name: "DataError" },
-    );
-
-    t.deepEqual(rq, undefined);
-    t.end();
-  };
+test("WPT idbobjectstore_put12.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any,
+      record = { property: "data" };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+
+      var rq,
+        objStore = db.createObjectStore("store", { keyPath: "key" });
+
+      t.throws(
+        function () {
+          rq = objStore.put(record);
+        },
+        { name: "DataError" },
+      );
+
+      t.deepEqual(rq, undefined);
+      resolve();
+    };
+  });
 });
 
 // IDBObjectStore.put() - Attempt to put a record where the out of line key 
provided does not meet the constraints of a valid key
-test.cb("WPT idbobjectstore_put13.htm", (t) => {
-  var db: any,
-    record = { property: "data" };
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
-
-    var rq,
-      objStore = db.createObjectStore("store");
-
-    t.throws(
-      function () {
-        rq = objStore.put(record, { value: 1 });
-      },
-      {
-        name: "DataError",
-      },
-    );
-
-    t.deepEqual(rq, undefined);
-    t.end();
-  };
+test("WPT idbobjectstore_put13.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any,
+      record = { property: "data" };
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
+
+      var rq,
+        objStore = db.createObjectStore("store");
+
+      t.throws(
+        function () {
+          rq = objStore.put(record, { value: 1 });
+        },
+        {
+          name: "DataError",
+        },
+      );
+
+      t.deepEqual(rq, undefined);
+      resolve();
+    };
+  });
 });
 
 // IDBObjectStore.put() - Put a record where a value being indexed does not 
meet the constraints of a valid key
-test.cb("WPT idbobjectstore_put14.htm", (t) => {
-  var db: any,
-    record = { key: 1, indexedProperty: { property: "data" } };
+test("WPT idbobjectstore_put14.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any,
+      record = { key: 1, indexedProperty: { property: "data" } };
 
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (e: any) {
-    db = e.target.result;
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (e: any) {
+      db = e.target.result;
 
-    var rq,
-      objStore = db.createObjectStore("store", { keyPath: "key" });
+      var rq,
+        objStore = db.createObjectStore("store", { keyPath: "key" });
 
-    objStore.createIndex("index", "indexedProperty");
+      objStore.createIndex("index", "indexedProperty");
 
-    rq = objStore.put(record);
+      rq = objStore.put(record);
 
-    t.true(rq instanceof BridgeIDBRequest);
-    rq.onsuccess = function () {
-      t.end();
+      t.true(rq instanceof BridgeIDBRequest);
+      rq.onsuccess = function () {
+        resolve();
+      };
     };
-  };
+  });
 });
 
 // IDBObjectStore.put() - If the transaction this IDBObjectStore belongs to 
has its mode set to readonly, throw ReadOnlyError
-test.cb("WPT idbobjectstore_put15.htm", (t) => {
-  var db: any;
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (event: any) {
-    db = event.target.result;
-    db.createObjectStore("store", { keyPath: "pKey" });
-  };
-
-  open_rq.onsuccess = function (event: any) {
-    var txn = db.transaction("store");
-    var ostore = txn.objectStore("store");
-    t.throws(
-      function () {
-        ostore.put({ pKey: "primaryKey_0" });
-      },
-      {
-        name: "ReadOnlyError",
-      },
-    );
-    t.end();
-  };
+test("WPT idbobjectstore_put15.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any;
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (event: any) {
+      db = event.target.result;
+      db.createObjectStore("store", { keyPath: "pKey" });
+    };
+
+    open_rq.onsuccess = function (event: any) {
+      var txn = db.transaction("store");
+      var ostore = txn.objectStore("store");
+      t.throws(
+        function () {
+          ostore.put({ pKey: "primaryKey_0" });
+        },
+        {
+          name: "ReadOnlyError",
+        },
+      );
+      resolve();
+    };
+  });
 });
 
 // IDBObjectStore.put() - If the object store has been deleted, the 
implementation must throw a DOMException of type InvalidStateError
-test.cb("WPT idbobjectstore_put16.htm", (t) => {
-  var db: any, ostore: any;
-
-  var open_rq = createdb(t);
-  open_rq.onupgradeneeded = function (event: any) {
-    db = event.target.result;
-    ostore = db.createObjectStore("store", { keyPath: "pKey" });
-    db.deleteObjectStore("store");
-    t.throws(
-      function () {
-        ostore.put({ pKey: "primaryKey_0" });
-      },
-      {
-        name: "InvalidStateError",
-      },
-    );
-    t.end();
-  };
+test("WPT idbobjectstore_put16.htm", (t) => {
+  return new Promise((resolve, reject) => {
+    var db: any, ostore: any;
+
+    var open_rq = createdb(t);
+    open_rq.onupgradeneeded = function (event: any) {
+      db = event.target.result;
+      ostore = db.createObjectStore("store", { keyPath: "pKey" });
+      db.deleteObjectStore("store");
+      t.throws(
+        function () {
+          ostore.put({ pKey: "primaryKey_0" });
+        },
+        {
+          name: "InvalidStateError",
+        },
+      );
+      resolve();
+    };
+  });
 });
diff --git 
a/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-rename-store.test.ts 
b/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-rename-store.test.ts
index b60e932b..a8aab828 100644
--- a/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-rename-store.test.ts
+++ b/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-rename-store.test.ts
@@ -7,7 +7,7 @@ import {
   createDatabase,
   createNotBooksStore,
   migrateDatabase,
-} from "./wptsupport";
+} from "./wptsupport.js";
 
 // IndexedDB: object store renaming support
 // IndexedDB object store rename in new transaction
diff --git 
a/packages/idb-bridge/src/idb-wpt-ported/idbtransaction-oncomplete.test.ts 
b/packages/idb-bridge/src/idb-wpt-ported/idbtransaction-oncomplete.test.ts
index 8f54fb7c..a501ff2c 100644
--- a/packages/idb-bridge/src/idb-wpt-ported/idbtransaction-oncomplete.test.ts
+++ b/packages/idb-bridge/src/idb-wpt-ported/idbtransaction-oncomplete.test.ts
@@ -1,5 +1,5 @@
 import test from "ava";
-import { createdb } from "./wptsupport";
+import { createdb } from "./wptsupport.js";
 
 // IDBTransaction - complete event
 test("WPT idbtransaction-oncomplete.htm", async (t) => {
diff --git a/packages/idb-bridge/src/idb-wpt-ported/keypath.test.ts 
b/packages/idb-bridge/src/idb-wpt-ported/keypath.test.ts
index 20ec6f3f..7ef1301f 100644
--- a/packages/idb-bridge/src/idb-wpt-ported/keypath.test.ts
+++ b/packages/idb-bridge/src/idb-wpt-ported/keypath.test.ts
@@ -1,5 +1,5 @@
 import test from "ava";
-import { assert_key_equals, createdb } from "./wptsupport";
+import { assert_key_equals, createdb } from "./wptsupport.js";
 
 test("WPT test keypath.htm", async (t) => {
   function keypath(
diff --git 
a/packages/idb-bridge/src/idb-wpt-ported/request-bubble-and-capture.test.ts 
b/packages/idb-bridge/src/idb-wpt-ported/request-bubble-and-capture.test.ts
index a7541a68..526c0678 100644
--- a/packages/idb-bridge/src/idb-wpt-ported/request-bubble-and-capture.test.ts
+++ b/packages/idb-bridge/src/idb-wpt-ported/request-bubble-and-capture.test.ts
@@ -1,7 +1,6 @@
 import test from "ava";
-import { BridgeIDBRequest } from "..";
-import { EventTarget, IDBDatabase } from "../idbtypes";
-import { createdb } from "./wptsupport";
+import { EventTarget } from "../idbtypes.js";
+import { createdb } from "./wptsupport.js";
 
 // Bubbling and capturing of request events
 test("WPT request_bubble-and-capture.htm", async (t) => {
diff --git 
a/packages/idb-bridge/src/idb-wpt-ported/transaction-requestqueue.test.ts 
b/packages/idb-bridge/src/idb-wpt-ported/transaction-requestqueue.test.ts
index 707bb525..9d76e79f 100644
--- a/packages/idb-bridge/src/idb-wpt-ported/transaction-requestqueue.test.ts
+++ b/packages/idb-bridge/src/idb-wpt-ported/transaction-requestqueue.test.ts
@@ -1,5 +1,5 @@
 import test from "ava";
-import { createdb } from "./wptsupport";
+import { createdb } from "./wptsupport.js";
 
 // Transactions have a request queue
 test("transaction-requestqueue.htm", async (t) => {
@@ -72,7 +72,7 @@ test("transaction-requestqueue.htm", async (t) => {
           "os2: 1",
           "os2: 1",
           "os1: 2",
-        ],
+        ] as any,
         "transaction keys",
       );
 
@@ -93,7 +93,7 @@ test("transaction-requestqueue.htm", async (t) => {
           "os3: 1",
           "os1: 2",
           "os4: 5",
-        ],
+        ] as any,
         "transaction 2 keys",
       );
 
diff --git a/packages/idb-bridge/src/idb-wpt-ported/value.test.ts 
b/packages/idb-bridge/src/idb-wpt-ported/value.test.ts
index acae2fe6..a80ec2b5 100644
--- a/packages/idb-bridge/src/idb-wpt-ported/value.test.ts
+++ b/packages/idb-bridge/src/idb-wpt-ported/value.test.ts
@@ -1,47 +1,51 @@
 import test from "ava";
-import { IDBVersionChangeEvent } from "../idbtypes";
-import { createdb } from "./wptsupport";
+import { IDBVersionChangeEvent } from "../idbtypes.js";
+import { createdb } from "./wptsupport.js";
 
-test.cb("WPT test value.htm, array", (t) => {
-  const value = new Array();
-  const _instanceof = Array;
+test("WPT test value.htm, array", (t) => {
+  return new Promise((resolve, reject) => {
+    const value = new Array();
+    const _instanceof = Array;
 
-  t.plan(1);
+    t.plan(1);
 
-  createdb(t).onupgradeneeded = function (e: IDBVersionChangeEvent) {
-    (e.target as any).result.createObjectStore("store").add(value, 1);
-    (e.target as any).onsuccess = (e: any) => {
-      console.log("in first onsuccess");
-      e.target.result
-        .transaction("store")
-        .objectStore("store")
-        .get(1).onsuccess = (e: any) => {
-        t.assert(e.target.result instanceof _instanceof, "instanceof");
-        t.end();
+    createdb(t).onupgradeneeded = function (e: IDBVersionChangeEvent) {
+      (e.target as any).result.createObjectStore("store").add(value, 1);
+      (e.target as any).onsuccess = (e: any) => {
+        console.log("in first onsuccess");
+        e.target.result
+          .transaction("store")
+          .objectStore("store")
+          .get(1).onsuccess = (e: any) => {
+          t.assert(e.target.result instanceof _instanceof, "instanceof");
+          resolve();
+        };
       };
     };
-  };
+  });
 });
 
-test.cb("WPT test value.htm, date", (t) => {
-  const value = new Date();
-  const _instanceof = Date;
+test("WPT test value.htm, date", (t) => {
+  return new Promise((resolve, reject) => {
+    const value = new Date();
+    const _instanceof = Date;
 
-  t.plan(1);
+    t.plan(1);
 
-  createdb(t).onupgradeneeded = function (e: IDBVersionChangeEvent) {
-    (e.target as any).result.createObjectStore("store").add(value, 1);
-    (e.target as any).onsuccess = (e: any) => {
-      console.log("in first onsuccess");
-      e.target.result
-        .transaction("store")
-        .objectStore("store")
-        .get(1).onsuccess = (e: any) => {
-        console.log("target", e.target);
-        console.log("result", e.target.result);
-        t.assert(e.target.result instanceof _instanceof, "instanceof");
-        t.end();
+    createdb(t).onupgradeneeded = function (e: IDBVersionChangeEvent) {
+      (e.target as any).result.createObjectStore("store").add(value, 1);
+      (e.target as any).onsuccess = (e: any) => {
+        console.log("in first onsuccess");
+        e.target.result
+          .transaction("store")
+          .objectStore("store")
+          .get(1).onsuccess = (e: any) => {
+          console.log("target", e.target);
+          console.log("result", e.target.result);
+          t.assert(e.target.result instanceof _instanceof, "instanceof");
+          resolve();
+        };
       };
     };
-  };
+  });
 });
diff --git a/packages/idb-bridge/src/idb-wpt-ported/wptsupport.ts 
b/packages/idb-bridge/src/idb-wpt-ported/wptsupport.ts
index 38b44bbe..7f68a53e 100644
--- a/packages/idb-bridge/src/idb-wpt-ported/wptsupport.ts
+++ b/packages/idb-bridge/src/idb-wpt-ported/wptsupport.ts
@@ -1,5 +1,5 @@
-import test, { ExecutionContext } from "ava";
-import { BridgeIDBFactory, BridgeIDBRequest } from "..";
+import { ExecutionContext } from "ava";
+import { BridgeIDBFactory, BridgeIDBRequest } from "../bridge-idb.js";
 import {
   IDBDatabase,
   IDBIndex,
@@ -7,10 +7,9 @@ import {
   IDBOpenDBRequest,
   IDBRequest,
   IDBTransaction,
-  IDBTransactionMode,
-} from "../idbtypes";
-import { MemoryBackend } from "../MemoryBackend";
-import { compareKeys } from "../util/cmp";
+} from "../idbtypes.js";
+import { MemoryBackend } from "../MemoryBackend.js";
+import { compareKeys } from "../util/cmp.js";
 
 BridgeIDBFactory.enableTracing = true;
 const backend = new MemoryBackend();
diff --git a/packages/idb-bridge/src/util/FakeEvent.ts 
b/packages/idb-bridge/src/util/FakeEvent.ts
index c16a58fd..e3ba864e 100644
--- a/packages/idb-bridge/src/util/FakeEvent.ts
+++ b/packages/idb-bridge/src/util/FakeEvent.ts
@@ -14,8 +14,8 @@
  permissions and limitations under the License.
 */
 
-import FakeEventTarget from "./FakeEventTarget";
-import { Event, EventTarget } from "../idbtypes";
+import FakeEventTarget from "./FakeEventTarget.js";
+import { Event, EventTarget } from "../idbtypes.js";
 
 /** @public */
 export type EventType =
diff --git a/packages/idb-bridge/src/util/FakeEventTarget.ts 
b/packages/idb-bridge/src/util/FakeEventTarget.ts
index 95489b4a..7ff22071 100644
--- a/packages/idb-bridge/src/util/FakeEventTarget.ts
+++ b/packages/idb-bridge/src/util/FakeEventTarget.ts
@@ -14,8 +14,8 @@
  permissions and limitations under the License.
  */
 
-import { InvalidStateError } from "./errors";
-import FakeEvent, { EventType } from "./FakeEvent";
+import { InvalidStateError } from "./errors.js";
+import FakeEvent, { EventType } from "./FakeEvent.js";
 import {
   EventTarget,
   Event,
diff --git a/packages/idb-bridge/src/util/canInjectKey.test.ts 
b/packages/idb-bridge/src/util/canInjectKey.test.ts
index b57dd1c9..c73552ea 100644
--- a/packages/idb-bridge/src/util/canInjectKey.test.ts
+++ b/packages/idb-bridge/src/util/canInjectKey.test.ts
@@ -16,7 +16,7 @@
 */
 
 import test from "ava";
-import { canInjectKey } from "./canInjectKey";
+import { canInjectKey } from "./canInjectKey.js";
 
 test("canInjectKey", (t) => {
   t.false(canInjectKey("foo", null));
diff --git a/packages/idb-bridge/src/util/canInjectKey.ts 
b/packages/idb-bridge/src/util/canInjectKey.ts
index 903a9d3d..e2927b70 100644
--- a/packages/idb-bridge/src/util/canInjectKey.ts
+++ b/packages/idb-bridge/src/util/canInjectKey.ts
@@ -15,7 +15,7 @@
  permissions and limitations under the License.
 */
 
-import { IDBKeyPath } from "../idbtypes";
+import { IDBKeyPath } from "../idbtypes.js";
 
 /**
  * Check that a key could be injected into a value.
diff --git a/packages/idb-bridge/src/util/cmp.ts 
b/packages/idb-bridge/src/util/cmp.ts
index e7f26bf1..19e1d01b 100644
--- a/packages/idb-bridge/src/util/cmp.ts
+++ b/packages/idb-bridge/src/util/cmp.ts
@@ -14,8 +14,8 @@
  permissions and limitations under the License.
  */
 
-import { DataError } from "./errors";
-import { valueToKey } from "./valueToKey";
+import { DataError } from "./errors.js";
+import { valueToKey } from "./valueToKey.js";
 
 const getType = (x: any) => {
   if (typeof x === "number") {
diff --git a/packages/idb-bridge/src/util/extractKey.ts 
b/packages/idb-bridge/src/util/extractKey.ts
index 09306dde..b768ed92 100644
--- a/packages/idb-bridge/src/util/extractKey.ts
+++ b/packages/idb-bridge/src/util/extractKey.ts
@@ -15,8 +15,8 @@
  permissions and limitations under the License.
 */
 
-import { IDBKeyPath, IDBValidKey } from "../idbtypes";
-import { valueToKey } from "./valueToKey";
+import { IDBKeyPath, IDBValidKey } from "../idbtypes.js";
+import { valueToKey } from "./valueToKey.js";
 
 // 
http://www.w3.org/TR/2015/REC-IndexedDB-20150108/#dfn-steps-for-extracting-a-key-from-a-value-using-a-key-path
 export const extractKey = (keyPath: IDBKeyPath | IDBKeyPath[], value: any) => {
diff --git a/packages/idb-bridge/src/util/fakeDOMStringList.ts 
b/packages/idb-bridge/src/util/fakeDOMStringList.ts
index 0549e128..92785f9e 100644
--- a/packages/idb-bridge/src/util/fakeDOMStringList.ts
+++ b/packages/idb-bridge/src/util/fakeDOMStringList.ts
@@ -14,7 +14,6 @@
  * permissions and limitations under the License.
  */
 
-import { DOMStringList } from "../idbtypes";
 
 /** @public */
 export interface FakeDOMStringList extends Array<string> {
diff --git a/packages/idb-bridge/src/util/getIndexKeys.test.ts 
b/packages/idb-bridge/src/util/getIndexKeys.test.ts
index 782b3da2..d3bbd519 100644
--- a/packages/idb-bridge/src/util/getIndexKeys.test.ts
+++ b/packages/idb-bridge/src/util/getIndexKeys.test.ts
@@ -16,7 +16,7 @@
 */
 
 import test from "ava";
-import { getIndexKeys } from "./getIndexKeys";
+import { getIndexKeys } from "./getIndexKeys.js";
 
 test("basics", (t) => {
   t.deepEqual(getIndexKeys({ foo: 42 }, "foo", false), [42]);
@@ -31,10 +31,10 @@ test("basics", (t) => {
   });
 
   t.deepEqual(getIndexKeys({ foo: 42 }, "foo", true), [42]);
-  t.deepEqual(getIndexKeys({ foo: 42, bar: 10 }, ["foo", "bar"], true), [
-    42,
-    10,
-  ]);
+  t.deepEqual(
+    getIndexKeys({ foo: 42, bar: 10 }, ["foo", "bar"], true),
+    [42, 10],
+  );
   t.deepEqual(getIndexKeys({ foo: 42, bar: 10 }, ["foo", "bar"], false), [
     [42, 10],
   ]);
diff --git a/packages/idb-bridge/src/util/getIndexKeys.ts 
b/packages/idb-bridge/src/util/getIndexKeys.ts
index 8515d79e..17e77e63 100644
--- a/packages/idb-bridge/src/util/getIndexKeys.ts
+++ b/packages/idb-bridge/src/util/getIndexKeys.ts
@@ -15,9 +15,9 @@
  permissions and limitations under the License.
 */
 
-import { IDBKeyPath, IDBValidKey } from "../idbtypes";
-import { extractKey } from "./extractKey";
-import { valueToKey } from "./valueToKey";
+import { IDBKeyPath, IDBValidKey } from "../idbtypes.js";
+import { extractKey } from "./extractKey.js";
+import { valueToKey } from "./valueToKey.js";
 
 export function getIndexKeys(
   value: any,
diff --git a/packages/idb-bridge/src/util/makeStoreKeyValue.test.ts 
b/packages/idb-bridge/src/util/makeStoreKeyValue.test.ts
index df974831..97169702 100644
--- a/packages/idb-bridge/src/util/makeStoreKeyValue.test.ts
+++ b/packages/idb-bridge/src/util/makeStoreKeyValue.test.ts
@@ -15,7 +15,7 @@
 */
 
 import test from "ava";
-import { makeStoreKeyValue } from "./makeStoreKeyValue";
+import { makeStoreKeyValue } from "./makeStoreKeyValue.js";
 
 test("basics", (t) => {
   let result;
diff --git a/packages/idb-bridge/src/util/makeStoreKeyValue.ts 
b/packages/idb-bridge/src/util/makeStoreKeyValue.ts
index c0fdb19a..4c7dab8d 100644
--- a/packages/idb-bridge/src/util/makeStoreKeyValue.ts
+++ b/packages/idb-bridge/src/util/makeStoreKeyValue.ts
@@ -14,11 +14,11 @@
  permissions and limitations under the License.
 */
 
-import { extractKey } from "./extractKey";
-import { DataCloneError, DataError } from "./errors";
-import { valueToKey } from "./valueToKey";
-import { structuredClone } from "./structuredClone";
-import { IDBKeyPath, IDBValidKey } from "../idbtypes";
+import { extractKey } from "./extractKey.js";
+import { DataCloneError, DataError } from "./errors.js";
+import { valueToKey } from "./valueToKey.js";
+import { structuredClone } from "./structuredClone.js";
+import { IDBKeyPath, IDBValidKey } from "../idbtypes.js";
 
 export interface StoreKeyResult {
   updatedKeyGenerator: number;
diff --git a/packages/idb-bridge/src/util/structuredClone.test.ts 
b/packages/idb-bridge/src/util/structuredClone.test.ts
index a14260da..0c613e6c 100644
--- a/packages/idb-bridge/src/util/structuredClone.test.ts
+++ b/packages/idb-bridge/src/util/structuredClone.test.ts
@@ -15,7 +15,7 @@
 */
 
 import test, { ExecutionContext } from "ava";
-import { structuredClone } from "./structuredClone";
+import { structuredClone } from "./structuredClone.js";
 
 function checkClone(t: ExecutionContext, x: any): void {
   t.deepEqual(structuredClone(x), x);
diff --git a/packages/idb-bridge/src/util/validateKeyPath.ts 
b/packages/idb-bridge/src/util/validateKeyPath.ts
index 8c29c1d5..1c614fcc 100644
--- a/packages/idb-bridge/src/util/validateKeyPath.ts
+++ b/packages/idb-bridge/src/util/validateKeyPath.ts
@@ -14,7 +14,7 @@
  permissions and limitations under the License.
 */
 
-import { IDBKeyPath } from "../idbtypes";
+import { IDBKeyPath } from "../idbtypes.js";
 
 // http://www.w3.org/TR/2015/REC-IndexedDB-20150108/#dfn-valid-key-path
 export const validateKeyPath = (
diff --git a/packages/idb-bridge/src/util/valueToKey.ts 
b/packages/idb-bridge/src/util/valueToKey.ts
index c65604df..6df82af8 100644
--- a/packages/idb-bridge/src/util/valueToKey.ts
+++ b/packages/idb-bridge/src/util/valueToKey.ts
@@ -14,8 +14,8 @@
  permissions and limitations under the License.
  */
 
-import { IDBValidKey } from "..";
-import { DataError } from "./errors";
+import { IDBValidKey } from "../idbtypes.js";
+import { DataError } from "./errors.js";
 
 // https://www.w3.org/TR/IndexedDB-2/#convert-a-value-to-a-key
 export function valueToKey(
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 201bbdd2..08a93d0c 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -125,27 +125,27 @@ importers:
       '@rollup/plugin-commonjs': ^21.0.1
       '@rollup/plugin-json': ^4.1.0
       '@rollup/plugin-node-resolve': ^13.1.3
-      '@types/node': ^17.0.8
-      ava: ^3.15.0
+      '@types/node': ^17.0.17
+      ava: ^4.0.1
       esm: ^3.2.25
-      prettier: ^2.2.1
+      prettier: ^2.5.1
       rimraf: ^3.0.2
-      rollup: ^2.63.0
+      rollup: ^2.67.2
       tslib: ^2.3.1
-      typescript: ^4.5.4
+      typescript: ^4.5.5
     dependencies:
       tslib: 2.3.1
     devDependencies:
-      '@rollup/plugin-commonjs': 21.0.1_rollup@2.63.0
-      '@rollup/plugin-json': 4.1.0_rollup@2.63.0
-      '@rollup/plugin-node-resolve': 13.1.3_rollup@2.63.0
-      '@types/node': 17.0.8
-      ava: 3.15.0
+      '@rollup/plugin-commonjs': 21.0.1_rollup@2.67.2
+      '@rollup/plugin-json': 4.1.0_rollup@2.67.2
+      '@rollup/plugin-node-resolve': 13.1.3_rollup@2.67.2
+      '@types/node': 17.0.17
+      ava: 4.0.1
       esm: 3.2.25
-      prettier: 2.2.1
+      prettier: 2.5.1
       rimraf: 3.0.2
-      rollup: 2.63.0
-      typescript: 4.5.4
+      rollup: 2.67.2
+      typescript: 4.5.5
 
   packages/pogen:
     specifiers:
@@ -10125,7 +10125,6 @@ packages:
 
   /@types/node/17.0.17:
     resolution: {integrity: 
sha512-e8PUNQy1HgJGV3iU/Bp2+D/DXh3PYeyli8LgIwsQcs1Ar1LoaWHSIT6Rw+H2rNJmiq6SNWiDytfx8+gYj7wDHw==}
-    dev: false
 
   /@types/node/17.0.8:
     resolution: {integrity: 
sha512-YofkM6fGv4gDJq78g4j0mMuGMkZVxZDgtU0JRdx6FgiJDG+0fY0GKVolOV8WqVmEhLCXkQRjwDdKyPxJp/uucg==}
@@ -10189,7 +10188,7 @@ packages:
   /@types/resolve/1.17.1:
     resolution: {integrity: 
sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==}
     dependencies:
-      '@types/node': 17.0.8
+      '@types/node': 17.0.17
     dev: true
 
   /@types/scheduler/0.16.2:

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]