рд╣рдо рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП expect(document.activeElement).toBe(myElement)
рдкреИрдЯрд░реНрди рдХреЗ рд╕рд╛рде рдЬреЗрд╕реНрдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рддрддреНрд╡ рдмрд╛рддрдЪреАрдд рдХреЗ рдмрд╛рдж рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХреЗрдВрджреНрд░рд┐рдд рд╣реЛ рдЧрдпрд╛ рд╣реИред рдЬреЗрд╕реНрдЯ 25 (jsdom 15) рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдРрд╕реЗ рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдЯреВрдЯ рдЧрдП, document.activeElement
рд╣рдореЗрд╢рд╛ рд╢реВрдиреНрдп рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рдЕрдЧрд░ рд╣рдо рдЗрд╕реЗ jsDom 16 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪрд▓рд╛рддреЗ рд╣реИрдВ рддреЛ рднреА рдпрд╣реА рд╕реНрдерд┐рддрд┐ рд╣реИред
рдЬреЗрд╕реНрдЯ рдЯреАрдо рдиреЗ рдореБрдЭреЗ рдпрд╣рд╛рдВ рдПрдХ рдореБрджреНрджрд╛ рдЦреЛрд▓рдиреЗ рдХреА
import * as React from 'react';
it('should find active element', () => {
const wrapper = mount(<input />);
const inputNode = wrapper.find('input').getDOMNode();
expect(document.activeElement).not.toBe(inputNode);
inputNode.focus();
expect(document.activeElement).toBe(inputNode); // fails here with expected being null
});
рдХреЗрдВрджреНрд░рд┐рдд рддрддреНрд╡ document.activeElement
рдореЗрдВ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ; рдпрд╣ рдЕрдорд╛рдиреНрдп рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрддрд╛ рд╣реИред
рд╕рдорд╕реНрдпрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреГрдкрдпрд╛ рдкреЛрд╕реНрдЯ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ, рдПрдХ рдирдореВрдирд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдЬрд┐рд╕реЗ рд╣рдо Node.js рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВред рдореИрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рдПрдХ jsbin рдпрд╛ рдЗрд╕реА рддрд░рд╣ рдХреЗ рд▓рд┐рдВрдХ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреВрдВрдЧрд╛ред рдЙрд╕ рд╕рдордп рд╣рдо рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рдПрдВрдЬрд╛рдЗрдо рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рд╛рдорд╛рди рдХреЗ рдмрд┐рдирд╛ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
https://runkit.com/wojtekmaj/jsdom-15-2-16-document-activeelement-issue-ok
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ #2586 рдХреЗ рд╕рд╛рде рдХрд╕рдХрд░ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЕрднреА рднреА v15.2 рдХреЗ рдмрд╛рдж рд╕реЗ рдПрдХ рдкреНрд░рддрд┐рдЧрдорди рд╣реИ:
https://runkit.com/wojtekmaj/jsdom-15-2-16-document-activeelement-issue
рд╕рдВрдмрдВрдзрд┐рдд: рдПрдВрдЬрд╛рдЗрдордЬ/рдПрдВрдЬрд╛рдЗрдо#2337
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ activeElement
рдХреЛ document
рдмрд╛рд╣рд░ рдХрд┐рд╕реА рддрддреНрд╡ рдкрд░ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ jsdom рдХреА рдмрдврд╝рддреА рд╕рдЦреНрддреА рдХреЗ рдХрд╛рд░рдг рдмреНрд░реЗрдХ рд╣реБрдЖ рд╣реИред рдорд╛рдЙрдВрдЯ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП attachTo
рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд┐рдХреНрд╕ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрдХреНрд╖ рдкрд░ рд╣реИред