<!doctype html>
<title>Make sure we don't crash if the AudioWorklet gets constructed while the AudioContext is already rendering.</title>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script>
var context;
promise_setup(async (t) => {
  context = new AudioContext();
  internals.withUserGesture(() => {
      context.resume();
  });

  const filePath = 'processors/basic-processor.js';
  await context.audioWorklet.addModule(filePath);
});

const wait_for_audioworklet_rendering = async (node) => {
  await new Promise((resolve) => {
    node.port.onmessage = resolve;
  });
};

promise_test(async (t) => {
  const options = {
    numberOfInputs: 0,
    numberOfOutputs: 1
  };

  const node = new AudioWorkletNode(context, 'basic-processor', options);
  await wait_for_audioworklet_rendering(node);
}, 'Passes if it does not crash');
</script>
