<!DOCTYPE html>
<meta charset="utf-8">
<title>requireInteraction: true</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<p>
  <button id="button">Push me to open a requireInteraction=true notification!</button>
  <button id="finish">Push me if you are done</button>
</p>
Steps:
<ol>
  <li>Make sure you didn't block the notification permission.</li>
  <li>Allow the notification permission if the prompt opens.</li>
  <li>Click the first button.</li>
  <li>See whether the notification disappears from the screen without interaction. It must not.</li>
  <li>If you are sure it's not disappearing, then click that second button.</li>
</ol>
Why this is manual? Because
<ol>
  <li>
    One need to wait for more than arbitrary platform-specific time to see
    it really does not disappear automatically.
  </li>
  <li>There's simply no API to tell it's disappeared from the screen or not</li>
</ol>
<script>
  setup({ explicit_timeout: true })

  promise_test(async () => {
    const permission = await Notification.requestPermission();
    if (permission === "denied") {
      throw new Error("Permission is denied, can't proceed");
    }
    await new Promise(r => button.onclick = r);
    const n = new Notification("Test notification", { requireInteraction: true });
    await new Promise((resolve, reject) => {
      n.onshow = resolve;
      n.onerror = () => reject(new Error(
        "Notification failed, and there's no good error message. Maybe some permission issue?"
      ));
    });
    await Promise.race([
      new Promise(r => finish.onclick = r),
      new Promise((r, reject) => {
        n.onclose = n.onclick = () => reject(new Error(
          "Uh, you should finish the test before you interact with the notification."
        ));
      }),
    ]);
  });
</script>
