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.
});
  });
  describe('String boolean attributes', function() {
    it('does not assign string boolean attributes for custom attributes', function() {
      spyOn(console, 'error');
      var el = ReactTestUtils.renderIntoDocument(<div whatever={true} />);
      expect(el.hasAttribute('whatever')).toBe(false);
      expectDev(console.error.calls.argsFor(0)[0]).toContain(
        'Warning: Received `true` for non-boolean attribute `whatever`.',
      );
    });
    it('stringifies the boolean true for allowed attributes', function() {
      var el = ReactTestUtils.renderIntoDocument(<div spellCheck={true} />);
      expect(el.getAttribute('spellCheck')).toBe('true');
    });
    it('stringifies the boolean false for allowed attributes', function() {
      var el = ReactTestUtils.renderIntoDocument(<div spellCheck={false} />);
      expect(el.getAttribute('spellCheck')).toBe('false');
    });
    it('stringifies implicit booleans for allowed attributes', function() {
      
      var el = ReactTestUtils.renderIntoDocument(<div spellCheck />);
      expect(el.getAttribute('spellCheck')).toBe('true');
    });
  });
  if (ReactDOMFeatureFlags.useFiber) {
    
    
    
    describe('Hyphenated SVG elements', function() {