diff --git a/scripts/fiber/tests-failing.txt b/scripts/fiber/tests-failing.txt index 0aba62db6f..f5338b4598 100644 --- a/scripts/fiber/tests-failing.txt +++ b/scripts/fiber/tests-failing.txt @@ -27,6 +27,9 @@ src/renderers/art/__tests__/ReactART-test.js src/renderers/dom/__tests__/ReactDOMProduction-test.js * should throw with an error code in production +src/renderers/dom/fiber/__tests__/ReactDOMFiber-test.js +* findDOMNode should find dom element after expanding a fragment + src/renderers/dom/shared/__tests__/ReactDOM-test.js * throws in render() if the mount callback is not a function * throws in render() if the update callback is not a function @@ -63,6 +66,9 @@ src/renderers/dom/shared/__tests__/ReactRenderDocument-test.js * should throw on full document render w/ no markup * supports findDOMNode on full-page components +src/renderers/dom/shared/__tests__/findDOMNode-test.js +* findDOMNode should find dom element after an update from null + src/renderers/shared/__tests__/ReactPerf-test.js * should count no-op update as waste * should count no-op update in child as waste diff --git a/src/renderers/dom/fiber/__tests__/ReactDOMFiber-test.js b/src/renderers/dom/fiber/__tests__/ReactDOMFiber-test.js index 13f6a41499..4fb7cd2137 100644 --- a/src/renderers/dom/fiber/__tests__/ReactDOMFiber-test.js +++ b/src/renderers/dom/fiber/__tests__/ReactDOMFiber-test.js @@ -459,5 +459,29 @@ describe('ReactDOMFiber', () => { expect(portalContainer.innerHTML).toBe('
changed-changed
'); expect(container.innerHTML).toBe(''); }); + + it('findDOMNode should find dom element after expanding a fragment', () => { + class MyNode extends React.Component { + render() { + return ( + !this.props.flag ? + [
] : + [,
] + ); + } + } + + var container = document.createElement('div'); + + var myNodeA = ReactDOM.render(, container); + var a = ReactDOM.findDOMNode(myNodeA); + expect(a.tagName).toBe('DIV'); + + var myNodeB = ReactDOM.render(, container); + expect(myNodeA === myNodeB).toBe(true); + + var b = ReactDOM.findDOMNode(myNodeB); + expect(b.tagName).toBe('SPAN'); + }); } }); diff --git a/src/renderers/dom/shared/__tests__/findDOMNode-test.js b/src/renderers/dom/shared/__tests__/findDOMNode-test.js index ea1e72e58c..e7f7aba6d3 100644 --- a/src/renderers/dom/shared/__tests__/findDOMNode-test.js +++ b/src/renderers/dom/shared/__tests__/findDOMNode-test.js @@ -34,6 +34,32 @@ describe('findDOMNode', () => { expect(mySameDiv).toBe(myDiv); }); + it('findDOMNode should find dom element after an update from null', () => { + function Bar({ flag }) { + if (flag) { + return A; + } + return null; + } + class MyNode extends React.Component { + render() { + return ; + } + } + + var container = document.createElement('div'); + + var myNodeA = ReactDOM.render(, container); + var a = ReactDOM.findDOMNode(myNodeA); + expect(a).toBe(null); + + var myNodeB = ReactDOM.render(, container); + expect(myNodeA === myNodeB).toBe(true); + + var b = ReactDOM.findDOMNode(myNodeB); + expect(b.tagName).toBe('SPAN'); + }); + it('findDOMNode should reject random objects', () => { expect(function() { ReactDOM.findDOMNode({foo: 'bar'});