chromium/third_party/blink/web_tests/external/wpt/IndexedDB/transaction-scheduling-ro-waits-for-rw.any.js

// META: script=resources/support.js

indexeddb_test(
  (t, db) => {
    const store = db.createObjectStore('store');
    store.put('value', 'key');
  },

  (t, db) => {
    const transaction1 = db.transaction('store', 'readwrite', {durability: 'relaxed'});
    transaction1.onabort = t.unreached_func('transaction1 should not abort');

    const transaction2 = db.transaction('store', 'readonly', {durability: 'relaxed'});
    transaction2.onabort = t.unreached_func('transaction2 should not abort');

    const request = transaction1.objectStore('store').put('new value', 'key');
    request.onerror = t.unreached_func('request should not fail');

    const request2 = transaction2.objectStore('store').get('key');
    request2.onerror = t.unreached_func('request2 should not fail');
    request2.onsuccess = t.step_func_done(evt => {
      assert_equals(request2.result, 'new value',
                    'Request should see new value.');
    });
  },
  "readonly transaction should see the result of a previous readwrite transaction");