<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>UA style for form in table elements - XHTML</title>
    <link rel="help" href="https://html.spec.whatwg.org/multipage/rendering.html#tables-2" />
    <link rel="author" title="Rune Lillesveen" href="mailto:futhark@chromium.org" />
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
  </head>
  <body>
    <table><form></form></table>
    <table><thead><form></form></thead></table>
    <table><tbody><form></form></tbody></table>
    <table><tfoot><form></form></tfoot></table>
    <table><tr><form></form></tr></table>
    <script>
      for (const form of document.querySelectorAll("form")) {
        test(function() {
          assert_equals(getComputedStyle(form).display, "block");
        }, `Computed display of form inside ${form.parentNode.nodeName} in xhtml should be 'block'`);
      }
    </script>
  </body>
</html>
