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.
'nor use `dangerouslySetInnerHTML`.\n\nThis DOM node was rendered by `X`.',
      );
    });
    it('should support custom elements which extend native elements', () => {
      var container = document.createElement('div');
      spyOn(document, 'createElement').and.callThrough();
      ReactDOM.render(<div is="custom-div" />, container);
      expect(document.createElement).toHaveBeenCalledWith('div', {
        is: 'custom-div',
      });
    });
    it('should work load and error events on <image> element in SVG', () => {
      spyOn(console, 'log');
      var container = document.createElement('div');
      ReactDOM.render(
        <svg>
          <image
            xlinkHref="http://example.org/image"
            onError={e => console.log('onError called')}
            onLoad={e => console.log('onLoad called')}
          />
        </svg>,
        container,
      );
      var loadEvent = document.createEvent('Event');
      var errorEvent = document.createEvent('Event');
      loadEvent.initEvent('load', false, false);
      errorEvent.initEvent('error', false, false);
      container.getElementsByTagName('image')[0].dispatchEvent(errorEvent);
      container.getElementsByTagName('image')[0].dispatchEvent(loadEvent);