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.
'of <p>.' +
          addendum,
      );
    });
    it('warns nicely for table rows', () => {
      spyOn(console, 'error');
      class Row extends React.Component {
        render() {
          return <tr>x</tr>;
        }
      }
      class Foo extends React.Component {
        render() {
          return <table><Row /> </table>;
        }
      }
      ReactTestUtils.renderIntoDocument(<Foo />);
      expectDev(console.error.calls.count()).toBe(3);
      var addendum1 = ReactDOMFeatureFlags.useFiber
        ? '\n    in tr (at **)' +
            '\n    in Row (at **)' +
            '\n    in table (at **)' +
            '\n    in Foo (at **)'
        : ' See Foo > table > Row > tr.';
      expectDev(normalizeCodeLocInfo(console.error.calls.argsFor(0)[0])).toBe(
        'Warning: validateDOMNesting(...): <tr> cannot appear as a child of ' +
          '<table>. Add a <tbody> to your code to match the DOM tree generated ' +
          'by the browser.' +
          addendum1,
      );