This usually means that the user mixed up our lowercase/uppercase naming convention; see https://github.com/facebook/react/pull/3429#issuecomment-85166440.

We could add a message like

> Warning: The tag <commentBox> is unrecognized in this browser. If you meant to render a React component, start its name with an uppercase letter.

We'd check this only once per tag and only in development mode.

});
    it('gives source code refs for unknown prop warning for update render', () => {
      spyOn(console, 'error');
      var container = document.createElement('div');
      ReactTestUtils.renderIntoDocument(<div className="paladin" />, container);
      expectDev(console.error.calls.count()).toBe(0);
      ReactTestUtils.renderIntoDocument(<div class="paladin" />, container);
      expectDev(console.error.calls.count()).toBe(1);
      expect(normalizeCodeLocInfo(console.error.calls.argsFor(0)[0])).toBe(
        'Warning: Unknown DOM property class. Did you mean className?\n    in div (at **)',
      );
    });
    it('gives source code refs for unknown prop warning for exact elements', () => {
      spyOn(console, 'error');
      ReactTestUtils.renderIntoDocument(
        <div className="foo1">
          <div class="foo2" />
          <div onClick="foo3" />
          <div onclick="foo4" />
          <div className="foo5" />
          <div className="foo6" />
        </div>,
      );
      expectDev(console.error.calls.count()).toBe(2);
      expectDev(console.error.calls.argsFor(0)[0]).toContain('className');
      var matches = console.error.calls.argsFor(0)[0].match(/.*\(.*:(\d+)\).*/);
      var previousLine = matches[1];
      expectDev(console.error.calls.argsFor(1)[0]).toContain('onClick');
      matches = console.error.calls.argsFor(1)[0].match(/.*\(.*:(\d+)\).*/);
      var currentLine = matches[1];