[idb-explicit-commit.any.html]
  expected:
    if (os == "win") and debug and (processor == "x86_64") and swgl: [ERROR, OK, TIMEOUT]
    if (os == "win") and debug and (processor == "x86_64") and not swgl: [ERROR, OK, TIMEOUT]
    if (os == "linux") and not fission and debug: OK
    if (os == "linux") and not fission and not debug: [OK, ERROR]
    if (os == "win") and not debug: [ERROR, OK, TIMEOUT]
    if os == "android": OK
  [Transactions that explicitly commit and have errors should abort.]
    expected:
      if (os == "win") and debug and (processor == "x86_64") and not swgl: [FAIL, PASS, NOTRUN]
      if (os == "linux") and not fission and debug: PASS
      if (os == "linux") and not fission and not debug: [PASS, FAIL]
      if (os == "win") and not debug: [FAIL, PASS, TIMEOUT, NOTRUN]
      if os == "android": PASS

  [Transactions that handle all errors properly should behave as expected when an explicit commit is called in an onerror handler.]
    expected:
      if (os == "win") and not swgl and debug and (processor == "x86_64"): [PASS, NOTRUN]
      if (os == "win") and not swgl and not debug and (processor == "x86_64"): [PASS, TIMEOUT, NOTRUN]
      if (os == "win") and not swgl and not debug and (processor == "x86"): [PASS, NOTRUN]
      if (os == "win") and swgl: [PASS, TIMEOUT]

  [Calling abort on a committed transaction throws and does not prevent persisting the data.]
    expected:
      if (os == "win") and debug and (processor == "x86_64") and not swgl: [PASS, TIMEOUT]
      if (os == "win") and not debug and (processor == "x86_64"): [PASS, TIMEOUT, NOTRUN]
      if (os == "win") and not debug and (processor == "x86"): [PASS, NOTRUN]

  [Transactions with same scope should stay in program order, even if one calls commit.]
    expected:
      if (os == "win") and debug and (processor == "x86_64") and not swgl: [PASS, NOTRUN]
      if (os == "win") and not debug: [PASS, TIMEOUT, NOTRUN]

  [Calling txn.commit() when txn is inactive should throw.]
    expected:
      if (os == "win") and debug and (processor == "x86_64") and not swgl: [PASS, NOTRUN]
      if (os == "win") and not debug: [PASS, NOTRUN]

  [A committed transaction becomes inactive immediately.]
    expected:
      if (os == "win") and not debug: [PASS, NOTRUN]

  [commit() on a version change transaction does not cause errors.]
    expected:
      if (os == "win") and not debug and (processor == "x86_64"): [PASS, TIMEOUT]
      if (os == "win") and not debug and (processor == "x86"): [PASS, NOTRUN]

  [Calling commit on an aborted transaction throws.]
    expected:
      if (os == "win") and not debug and (processor == "x86_64"): [PASS, NOTRUN]
      if (os == "win") and not debug and (processor == "x86"): [PASS, TIMEOUT, NOTRUN]

  [Puts issued after commit are not fulfilled.]
    expected:
      if (os == "win") and not debug: [PASS, NOTRUN]

  [Calling commit on a committed transaction throws.]
    expected:
      if (os == "win") and not debug and (processor == "x86_64"): [PASS, NOTRUN]
      if (os == "win") and not debug and (processor == "x86"): [PASS, TIMEOUT, NOTRUN]

  [A committed transaction is inactive in future request callbacks.]
    expected:
      if (os == "win") and not debug: [PASS, NOTRUN]

  [Explicitly committed data can be read back out.]
    expected:
      if (processor == "x86") and not debug: [PASS, TIMEOUT]


[idb-explicit-commit.any.worker.html]
  expected:
    if (os == "win") and not swgl and debug and (processor == "x86_64"): [OK, TIMEOUT]
    if (os == "win") and not swgl and not debug: [OK, TIMEOUT]
    if (os == "win") and swgl: [TIMEOUT, OK]
  [Calling txn.commit() when txn is inactive should throw.]
    expected:
      if (os == "win") and debug and swgl: [PASS, NOTRUN]
      if (os == "win") and not debug: [PASS, NOTRUN]

  [A committed transaction is inactive in future request callbacks.]
    expected:
      if (os == "win") and debug and swgl: [PASS, TIMEOUT]
      if (os == "win") and not debug: [PASS, TIMEOUT, NOTRUN]

  [Puts issued after commit are not fulfilled.]
    expected:
      if (os == "win") and debug and swgl: [PASS, NOTRUN]
      if (os == "win") and not debug: [PASS, TIMEOUT, NOTRUN]

  [Calling commit on an aborted transaction throws.]
    expected:
      if (os == "win") and debug and swgl: [PASS, NOTRUN]
      if (os == "win") and not debug: [PASS, TIMEOUT, NOTRUN]

  [Calling abort on a committed transaction throws and does not prevent persisting the data.]
    expected:
      if (os == "win") and debug and swgl: [PASS, TIMEOUT, NOTRUN]
      if (os == "win") and not debug: [PASS, TIMEOUT, NOTRUN]

  [Transactions that explicitly commit and have errors should abort.]
    expected:
      if (os == "win") and debug and (processor == "x86_64") and swgl: [NOTRUN, PASS]
      if (os == "win") and debug and (processor == "x86_64") and not swgl: [PASS, TIMEOUT]
      if (os == "win") and not debug: [PASS, TIMEOUT, NOTRUN]

  [Transactions with same scope should stay in program order, even if one calls commit.]
    expected:
      if (os == "win") and debug and swgl: [TIMEOUT, PASS, NOTRUN]
      if (os == "win") and not debug and (processor == "x86_64"): [PASS, NOTRUN]
      if (os == "win") and not debug and (processor == "x86"): [PASS, TIMEOUT, NOTRUN]

  [Calling commit on a committed transaction throws.]
    expected:
      if (os == "win") and debug and swgl: [PASS, NOTRUN]
      if (os == "win") and not debug: [PASS, NOTRUN]

  [Transactions that handle all errors properly should behave as expected when an explicit commit is called in an onerror handler.]
    expected:
      if (os == "win") and debug and (processor == "x86_64") and swgl: [NOTRUN, PASS]
      if (os == "win") and debug and (processor == "x86_64") and not swgl: [PASS, NOTRUN]
      if (os == "win") and not debug: [PASS, TIMEOUT, NOTRUN]

  [A committed transaction becomes inactive immediately.]
    expected:
      if (os == "win") and not debug: [PASS, NOTRUN]

  [commit() on a version change transaction does not cause errors.]
    expected:
      if (os == "win") and not debug: [PASS, TIMEOUT]
