It seems problematic to allow arbitary non-lowercase attribute on HTML nodes. Because the server has no ability to keep them case sensitive (HTML isn't). So they will end up different on the client.

We should probably warn if the attribute is not a known one *and* is not lowercase.
<div id="parent"><div id="child1" /><div id="child2" /></div>,
        ));
      it('should error reconnecting a div with children separated by different whitespace', () =>
        expectMarkupMismatch(
          <div id="parent"><div id="child1" /> <div id="child2" /></div>,
          
          <div id="parent"><div id="child1" />      <div id="child2" /></div>, 
        ));
      it('can distinguish an empty component from a dom node', () =>
        expectMarkupMismatch(
          <div><span /></div>,
          <div><EmptyComponent /></div>,
        ));
      it('can distinguish an empty component from an empty text component', () =>
        (ReactDOMFeatureFlags.useFiber
          ? expectMarkupMatch
          : expectMarkupMismatch)(
          <div><EmptyComponent /></div>,
          <div>{''}</div>,
        ));
    });
    
    it('should error reconnecting a div with different dangerouslySetInnerHTML', () =>
      expectMarkupMismatch(
        <div dangerouslySetInnerHTML={{__html: "<span id='child1'/>"}} />,
        <div dangerouslySetInnerHTML={{__html: "<span id='child2'/>"}} />,
      ));
  });
});