diff --git a/src/MountedTraversal.js b/src/MountedTraversal.js index 2508265f6..83912b5c1 100644 --- a/src/MountedTraversal.js +++ b/src/MountedTraversal.js @@ -49,7 +49,14 @@ export function instHasClassName(inst, className) { if (!isDOMComponent(inst)) { return false; } - let classes = findDOMNode(inst).className || ''; + const node = findDOMNode(inst); + if (node.classList) { + return node.classList.contains(className); + } + let classes = node.className || ''; + if (typeof classes === 'object') { + classes = classes.baseVal; + } classes = classes.replace(/\s/g, ' '); return ` ${classes} `.indexOf(` ${className} `) > -1; } diff --git a/test/ReactWrapper-spec.js b/test/ReactWrapper-spec.js index a21a9dedd..47ced4823 100644 --- a/test/ReactWrapper-spec.js +++ b/test/ReactWrapper-spec.js @@ -289,6 +289,15 @@ describeWithDOM('mount', () => { expect(wrapper.find('.foo').type()).to.equal('input'); }); + it('should find an SVG element based on a class name', () => { + const wrapper = mount( +
+ +
+ ); + expect(wrapper.find('.foo').type()).to.equal('svg'); + }); + it('should find an element based on a tag name', () => { const wrapper = mount(