<!DOCTYPE html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<body>
<script>
promise_test(async t => {
  assert_implements("HTMLPortalElement" in self);
  let portal = document.createElement('portal');
  document.body.appendChild(portal);
  t.add_cleanup(() => { document.body.removeChild(portal); });

  await promise_rejects_dom(t, 'InvalidStateError', portal.activate());
}, "A portal that has never been navigated cannot be activated");

promise_test(async t => {
  assert_implements("HTMLPortalElement" in self);
  let portal = document.createElement('portal');
  document.body.appendChild(portal);
  t.add_cleanup(() => { document.body.removeChild(portal); });

  // We use a status of 204 (No Content) as that couldn't possibly mature.
  portal.src = "/common/blank.html?pipe=status(204)"
  await promise_rejects_dom(t, 'InvalidStateError', portal.activate());
}, "A portal that has not completed an initial navigation cannot be activated");
</script>
</body>
