ok(
  SpecialPowers.getBoolPref("dom.webgpu.enabled"),
  "WebGPU pref should be enabled."
);
ok(
  SpecialPowers.getBoolPref("gfx.offscreencanvas.enabled"),
  "OffscreenCanvas pref should be enabled."
);
SimpleTest.waitForExplicitFinish();

const workerWrapperFunc = async function (worker_path, data, transfer) {
  const worker = new Worker(worker_path);

  const results = new Promise((resolve, reject) => {
    worker.addEventListener("message", event => {
      resolve(event.data);
    });
  });

  worker.postMessage(data, transfer);
  for (const result of await results) {
    ok(result.value, result.message);
  }
};

async function runWorkerTest(worker_path, data, transfer) {
  try {
    await workerWrapperFunc(worker_path, data, transfer);
  } catch (e) {
    ok(false, "Unhandled exception " + e);
  }
  SimpleTest.finish();
}
