<p>рдПрдХ 25 рдкреНрд░рджрд░реНрд╢рди рд╣реИ</p>

рдХреЛ рдирд┐рд░реНрдорд┐рдд 24 рдЬрдире░ 2020  ┬╖  119рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: facebook/jest

рд░рд┐рдЧреНрд░реЗрд╢рди рд░рд┐рдкреЛрд░реНрдЯ

рд╣рдордиреЗ рдЬреЗрд╕реНрдЯ рдХреЛ 24 рд╕реЗ 25 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдФрд░ рджреЗрдЦрд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯ рдЬреЗрдирдХреАрдВрд╕ рдореЗрдВ 5 рдорд┐рдирдЯ 23 рд╕реЗрдХреЗрдВрдб рд╕реЗ рд▓реЗрдХрд░ рдЕрдм 11 рдорд┐рдирдЯ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рдЧрдП рд╣реИрдВред рдЕрдкрдЧреНрд░реЗрдб рдореЗрдВ рдХреЗрд╡рд▓ рдХреБрдЫ рд╕реНрдиреИрдкрд╢реЙрдЯ рдкрд░реАрдХреНрд╖рдг рдЯреВрдЯ рдЧрдП, рд╣рдордиреЗ рдЙрдиреНрд╣реЗрдВ -u 'd рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЧрдВрднреАрд░ рдкреНрд░рддрд┐рдЧрдорди imo рд╣реИред рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП CI рдореЗрдВ рдХреИрд╢реЗ рд╕рд╛рдлрд╝ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рд╣рдореЗрд╢рд╛ рдирд╡реАрдирддрдо рдЪрд▓рд╛рдПрдВред

рдкреНрд░рддрд┐рдЧрдорди рдХреНрдпрд╛ рд╣реИ рдЗрд╕рдХрд╛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдФрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдгред
рд░рди рдЯрд╛рдЗрдо 5:23 рд╕реЗ 11:00 . рддрдХ рдЪрд▓рд╛ рдЧрдпрд╛

рдЕрдВрддрд┐рдо рдХрд╛рд░реНрдпрд╢реАрд▓ рд╕рдВрд╕реНрдХрд░рдг

24.8.0
рд╕рдВрд╕реНрдХрд░рдг рддрдХ рдХрд╛рдо рдХрд┐рдпрд╛:
24.8.0
рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛:
25.1.0

рдкреНрд░рдЬрдирди рдХрд░рдирд╛

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рд╣рдорд╛рд░рд╛ рдХреЛрдбрдмреЗрд╕ рд╕рд╛рдЭрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрджрдо:

рдЕрдкреЗрдХреНрд╖рд┐рддреН рд╡реНрдпрд╡рд╣рд╛рд░

рдЖрдк рдЬреЛ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣реЗ рдереЗ рдЙрд╕рдХрд╛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдФрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдгред

рдЙрддреНрддрд░ рдпрд╛ рд░реЗрдкреЛ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ (рдЕрддреНрдпрдзрд┐рдХ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд)

рдХреГрдкрдпрд╛ GitHub рдкрд░ рдПрдХ rep.it рдбреЗрдореЛ рдпрд╛ рдПрдХ рдиреНрдпреВрдирддрдо рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдкреНрд░рджрд╛рди рдХрд░реЗрдВред

рдкреБрдирд░реБрддреНрдкрд╛рджрди рд▓рд┐рдВрдХ рдХреЗ рдмрд┐рдирд╛ рдореБрджреНрджреЗ рд░реБрдХрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред

npx envinfo --preset jest рдЪрд▓рд╛рдПрдБ

рдкрд░рд┐рдгрд╛рдо рдпрд╣рд╛рдВ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ:

  System:
    OS: macOS Mojave 10.14.6
    CPU: (12) x64 Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz
  Binaries:
    Node: 10.16.0 - ~/.nvm/versions/node/v10.16.0/bin/node
    Yarn: 1.19.0 - ~/.nvm/versions/node/v10.16.0/bin/yarn
    npm: 6.13.6 - ~/.nvm/versions/node/v10.16.0/bin/npm
Regression Needs Repro

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@SimenB рдореИрдВрдиреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП git bisect рдХрд┐рдпрд╛ рдХрд┐ 24.9 рдФрд░ 25.1 рдХреЗ рдмреАрдЪ рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рддрд┐рдЧрдорди рдХрд╣рд╛рдБ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореИрдВрдиреЗ рд╕реБрдВрджрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ 24.9 рд╕реЗ 26.1 рддрдХ рд╕рднреА рддрд░рд╣ рд╕реЗ рд╕рдВрд╢реЛрдзрди рдХреЗ рдмрд┐рдирд╛ рдЪрд▓рддреЗ рд╣реИрдВред

рдореИрдВрдиреЗ рдЕрдХреНрд╖рдо рдХреИрд╢ рдХреЗ рд╕рд╛рде рдЬреЗрдПрд╕ рд╕рдмрд╕реЗрдЯ (рдХреБрдЫ рд╕рдордп рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП) рдХреЗ рддреАрди рд░рдиреЛрдВ рдХреЗ рд╕рдВрдЪрд┐рдд рд░рдирдЯрд╛рдЗрдо рдХреА рддреБрд▓рдирд╛ рдХреАред рдЕрдзрд┐рдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХрдорд╛рдВрдб ( yarn run jest --no-cache tests/js/ ) рдиреЛрдб 10.19.5 рдХреЗ рд╕рд╛рде рдереАред рдХреНрдпреЛрдВрдХрд┐ рдиреЛрдб 10 24.9 рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╢рдВрд╕рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдерд╛ред

рдкрд░рд┐рдгрд╛рдо:

24.9.0-dev 3cdbd556948b4974b2cc23178977eb159d343df8 151.84s <- Good
25.1.0-dev 5dcc48075f22d581864f381f20bc8b257d2a73cd 223.29s <- Bad
24.9.0-dev bf6109591365a2b71c7b642fa33ed06d3db6cb26 122.58s
24.9.0-dev 77c3ceedfd61ddc841e11fec7b76e540924d3e60 120.42s
24.9.0-dev 30e08e9ae7d7d78f40df757c2ec4b49357285eda 221.28s
24.9.0-dev ad5377333daf6716af3465bba39f86b7db485e2b 222.33s
24.9.0-dev 8ddadfca76eb3fb979df81033d3d0ff564c415d6 120.32s
24.9.0-dev 966f22f2a08d9ac9300b6964ab91c4e75dba4761 120.46s
24.9.0-dev b9084101189639524863e15ef7557ea6bc6704b9 119.87s
24.9.0-dev 1d8245d77d47b4198d51e55da87893d7dfe1a759 129.93s

ad5377333daf6716af3465bba39f86b7db485e2b is the first bad commit
commit ad5377333daf6716af3465bba39f86b7db485e2b
Author: Simen Bekkhus <[email protected]>
Date:   Mon Dec 2 23:20:16 2019 +0100

    feat: add support for `compileFunction` allowing us to avoid the module wrapper (#9252)

рдЪреВрдВрдХрд┐ compileFunction рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддреЛ рдПрдХ рдлреЙрд▓рдмреИрдХ рд╣реИ, compileFunction рдореИрдВрдиреЗ

26.1 рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдХреЛрдб рдереЛрдбрд╝рд╛ рдЗрдзрд░-рдЙрдзрд░ рд╣реЛ рдЧрдпрд╛ рд╣реИ рд▓реЗрдХрд┐рди compileFunction рдФрд░ рдХрдорд┐рдпрд╛рдВ рдЕрднреА рднреА рд╣реИрдВред рдЗрд╕рд▓рд┐рдП:

26.1.0-dev 817d8b6aca845dd4fcfd7f8316293e69f3a116c5 242.99s <- with compileFunction
26.1.0-dev 817d8b6aca845dd4fcfd7f8316293e69f3a116c5 151.61s <- without compileFunction

рдпрд╛рдиреА compileFunction рд╢рд╛рдЦрд╛ ( рдкреИрдЪ ) рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ 26.1 24.9 рдХреЗ рд░рдирдЯрд╛рдЗрдо рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реИред

рд╕рднреА 119 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдкреНрд░рддрд┐рдЧрдорди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЦреЗрдж рд╣реИ рд▓реЗрдХрд┐рди

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рд╣рдорд╛рд░рд╛ рдХреЛрдбрдмреЗрд╕ рд╕рд╛рдЭрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛

рдпрд╛рдиреА рд╣рдо рдмрд┐рд▓реНрдХреБрд▓ рдХреБрдЫ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдпрд╣ рдкрд╣рд▓реА рдмрд╛рд░ рд╣реИ рдЬрдм рдореИрдВрдиреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╡рд╛рдкрд╕ рдЖрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд╛ рд╣реИ, рдмрд╛рдХреА рд╕рднреА рдЬрдЧрд╣реЛрдВ рдкрд░ рдореИрдВрдиреЗ 10-40% _рд╕реБрдзрд╛рд░_ рд╕реЗ 24 рд╕реЗ 25 рддрдХ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдирд╛ рд╣реИред рдЖрдкрдХреЛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкреНрд░рдЬрдирди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рд╣рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдЦрдбрд╝рд╛ рд╣реИ, рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИред

рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рддреЗ рд╣реБрдП рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рдкреБрдирд░реБрддреНрдкрд╛рджрди рдорд╛рдорд▓реЗ рдХреЛ рдПрдХ рд╕рд╛рде рд░рдЦрдиреЗ рдореЗрдВ рдХреБрдЫ рд╕рдордп рдмрд┐рддрд╛рдирд╛ рд╣реЛрдЧрд╛, рдпрд╛ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдФрд░ рдРрд╕рд╛ рдХрд░реЗрдЧрд╛ред

рдареАрдХ рд╣реИ, рдореИрдВ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдЕрдкрдиреЗ 10 рд╕рдмрд╕реЗ рдзреАрдореЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЦреАрдВрдЪ рд╕рдХрддрд╛ рд╣реВрдВ, рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ 24 рдмрдирд╛рдо 25 рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдЗрд╕ рдмреАрдЪ, рд╕реАрдЖрдИ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреИрд╢ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЖрдк рдХреНрдпрд╛ рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ? рдЗрд╕реЗ рдХрд░реЗрдВ? рдпрд╣ рдордд рдХрд░реЛ?

рдЖрдкрдХрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ transforms рдФрд░ рд╕реЗрдЯрдЕрдк рдлрд╝рд╛рдЗрд▓реЗрдВ рд╢рд╛рдпрдж рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рднреА рд╣реИрдВ

рд╕реАрдЖрдИ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреИрд╢ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЖрдк рдХреНрдпрд╛ рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ?

рдореБрдЭреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ рдЭреВрдареА рдирдХрд╛рд░рд╛рддреНрдордХ рдпрд╛ рд╕рдХрд╛рд░рд╛рддреНрдордХ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдкреБрд░рд╛рдирд╛ рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ _not_ рдХреИрд╢ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдЕрдВрддрд░ рдбрд╛рд▓рддрд╛ рд╣реИ?

рдХреИрд╢ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЪрд▓рд╛рдиреЗ рдкрд░ рдпрд╣ рдХрд╛рдлреА рдзреАрдорд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ рдЗрд╕реЗ рджреЗрдЦ рд▓реВрдВрдЧрд╛ рдФрд░ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдПрдХ рд░рд┐рдкреНрд░реЛ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ

рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ, рдореИрдВрдиреЗ рдпрд╣ рднреА рджреЗрдЦрд╛ рд╣реИ рдХрд┐ v25 рдпрд╛ рддреЛ рдереЛрдбрд╝рд╛ рдзреАрдорд╛ рд╣реИ рдпрд╛ v24 рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рдХрд╣реАрдВ рднреА 10-40% рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╕реБрдзрд╛рд░ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореИрдВрдиреЗ рдЬреЗрд╕реНрдЯ 24 рдкрд░ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЧрддрд┐ рджреЗрдЦреА: https://github.com/facebook/jest/issues/7811#issuecomment -577057189

рдЙрдкрд░реЛрдХреНрдд рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдУрдПрд╕рдПрдХреНрд╕ рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдареАрдХ рд╡рд╣реА рд╕реЗрдЯрдЕрдк рд╣рдорд╛рд░реЗ CI рдкрд░ рдмрд╣реБрдд рдзреАрдорд╛ рдЪрд▓рддрд╛ рд╣реИ, рдЬреЛ CentOS рдЪрд▓рд╛рддрд╛ рд╣реИред

рд▓рд┐рдирдХреНрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореБрджреНрджрд╛? рдХреИрд╢реЗ рдлрд╝рд╛рдЗрд▓реЗрдВ рд▓рд┐рдЦрддреЗ рд╕рдордп I/O рд╕рдВрдмрдВрдзрд┐рдд рд╕рдорд╕реНрдпрд╛рдПрдБ? рдХреНрдпрд╛ рдЗрд╕реЗ рд░рджреНрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╢ рдЬрдирд░реЗрд╢рди рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрдВрдж рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ?

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдкрд░рд╛рдзреА рдорд┐рд▓ рдЧрдпрд╛ рд╣реИ, рдпрд╣ --collectCoverage рдЭрдВрдбрд╛ рд╣реИред рдЬрдм рдЗрд╕реЗ Jest 24 рдФрд░ 25 рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг 25 рд╡рд░реНрд╖ рд╕реЗ рдХрдо рдЙрдореНрд░ рдореЗрдВ рд▓рдЧрднрдЧ рджреЛ рдЧреБрдирд╛ рддреЗрдЬреА рд╕реЗ рдЪрд▓рддреЗ рд╣реИрдВред рдЬрдм рдЗрд╕реЗ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ 25 рдХреЗ рддрд╣рдд рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рд▓рдЧрднрдЧ 4 рдЧреБрдирд╛ рдзреАрдореЗ рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ 24 рд╡рд░реНрд╖ рд╕реЗ рдХрдо рдЙрдореНрд░ рдХреЗ рд╣реЛрддреЗ рд╣реИрдВред

рдпрд╣ OSX рдФрд░ CentOS рджреЛрдиреЛрдВ рдкрд░ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореЗрд░реА рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд╡рд┐рдкрд░реАрдд рд╕рдорд╕реНрдпрд╛ рд▓рд┐рдирдХреНрд╕-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред

рджрд┐рд▓рдЪрд╕реНрдк! рд╣рдордиреЗ рдЗрд╕реНрддрд╛рдВрдмреБрд▓ рдХреЛ v3 рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИ, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣рд╛рдВ рдХреБрдЫ рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ рд╣реЛред рд╣рдордиреЗ v8 рдХреЛрдб рдХрд╡рд░реЗрдЬ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рддреЗ рд╕рдордп рдореИрдВрдиреЗ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЛ рднреА рдЧрдбрд╝рдмрдбрд╝ рдХрд░ рджрд┐рдпрд╛ рд╣реЛрдЧрд╛

рд╣рд╛рдВ! рдореИрдВ рдЬреЛ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдЙрд╕рдХреЗ рдЕрдиреБрд░реВрдк рднреА рд╣реИред рд╣рдо рд╕реАрдЖрдИ рдореЗрдВ рдХрд╡рд░реЗрдЬ рдХреЗ рд╕рд╛рде рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдпрд╣ 2x рдзреАрдорд╛ рд╣реИред рдФрд░ рдЬрдм рдореИрдВ рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдкрд░ рдмрд┐рдирд╛ covg рдХреЗ рджреМрдбрд╝рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдХрд╛рдлреА рддреЗрдЬ рд╣реЛрддрд╛ рд╣реИред @SimenB рдкреБрд░рд╛рдиреЗ рдЗрд╕реНрддрд╛рдВрдмреБрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдХрд▓реНрдк рд╣реИ? :)

рдкреНрд░рддрд┐рдзреНрд╡рдирд┐рдд рдХрд░рддреЗ рд╣реБрдП рдХрд┐ @csvan рдиреЗ рдХрд╣рд╛ рдХрд┐ CI рдореЗрдВ рдХреИрд╢реЗ рдЬреЗрдирд░реЗрд╢рди рдХреЛ рдмрдВрдж рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╡рд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЕрдкрд░рд╛рдзреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЗрд╕реЗ рд╡реИрд╕реЗ рднреА рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВ

рдореИрдВ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реВрдВ - рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рд░реЗрдкреЛ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╛рди рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╕рд╛рде --coverage v24 рдФрд░ v25 рдХреЗ рдмреАрдЪ рд╣реИред рдХреНрдпрд╛ рдХреЛрдИ рдЬреЗрд╕реНрдЯ 24 рдФрд░ рдЬреЗрд╕реНрдЯ 25 рдХреЗ рд╕рд╛рде рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдХреЛ рдПрдХ рд╕рд╛рде рд░рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ рдЬрд╣рд╛рдВ рдЙрдирдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рд╕реЗ рдЕрдВрддрд░ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ?

рдмрд╕ рд╣рдорд╛рд░реЗ рд╕реАрдЖрдИ рдмрд┐рд▓реНрдб w/рдХрд╡рд░реЗрдЬ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░ рджрд┐рдпрд╛, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @csvan рдХреБрдЫ рдкрд░ рд╣реИред рдкрд░реАрдХреНрд╖рдг 4:00 w/рдХрд╡рд░реЗрдЬ рдмрдВрдж рдмрдирд╛рдо 11 рдорд┐рдирдЯ w/рдХрд╡рд░реЗрдЬ рдЪрд╛рд▓реВ рдореЗрдВ рдЪрд▓рд╛рдП рдЧрдПред рдореИрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдХреЗ рдЕрдВрдд рдореЗрдВ рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рд░реЗрдкреНрд░реЛ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВред

рдирд┐рд░реНрдорд╛рдг рдПрдЬреЗрдВрдЯ рд╕реЗ рд╣рдорд╛рд░реА exinfo:

00:03:31.992   System:
00:03:31.992     OS: Linux 3.10 CentOS Linux 7 (Core)
00:03:31.992     CPU: (8) x64 Intel Core Processor (Skylake, IBRS)
00:03:31.992   Binaries:
00:03:31.992     Node: 10.16.0 - ~/workspace/grocery-electrode/tools/nix_64/nodejs-10.16.0/bin/node
00:03:31.992     npm: 6.9.0 - ~/workspace/grocery-electrode/tools/nix_64/npm-6.9.0/node_modules/.bin/npm
00:03:31.993   npmPackages:
00:03:31.993     jest: 25.1.0 => 25.1.0 

рд╣рдо рдРрд╕рд╛ рд╣реА рдПрдХ рдореБрджреНрджрд╛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВред рдХрд╡рд░реЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп Jest 25 рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рд╕реЗ рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рдзреАрдореЗ рд╣реЛ рдЧрдП (Jest 24 рдХреЗ рд╕рд╛рде 166 рдмрдирд╛рдо Jest 25 рдХреЗ рд╕рд╛рде 381)ред рдЬреЗрд╕реНрдЯ 25 рдЪреЗрдХ рдЪрд▓рд╛рддреЗ рд╕рдордп рдЗрдирдореЗрдВ рд╕реЗ рдХрдИ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ:

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
 1: 0x10003d041 node::Abort() [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 2: 0x10003d24b node::OnFatalError(char const*, char const*) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 3: 0x1001b8e25 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 4: 0x100586d82 v8::internal::Heap::FatalProcessOutOfMemory(char const*) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 5: 0x100589855 v8::internal::Heap::CheckIneffectiveMarkCompact(unsigned long, double) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 6: 0x1005856ff v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 7: 0x1005838d4 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 8: 0x10059016c v8::internal::Heap::AllocateRawWithLigthRetry(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 9: 0x1005901ef v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
10: 0x10055fb34 v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationSpace) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
11: 0x1007e7e14 v8::internal::Runtime_AllocateInNewSpace(int, v8::internal::Object**, v8::internal::Isolate*) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
12: 0xb9c575dbe3d 
13: 0xb9c57ab091a 
14: 0xb9c579e7d65 
15: 0xb9c579ebaf3 

<--- Last few GCs --->

[733:0x102804000]    84639 ms: Mark-sweep 1335.2 (1449.6) -> 1325.4 (1452.1) MB, 1443.2 / 0.0 ms  (average mu = 0.135, current mu = 0.076) allocation failure scavenge might not succeed
[733:0x102804000]    85872 ms: Mark-sweep 1338.3 (1452.1) -> 1327.8 (1455.1) MB, 1159.4 / 0.0 ms  (average mu = 0.101, current mu = 0.059) allocation failure scavenge might not succeed


<--- JS stacktrace --->

Jest 24 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рд╕реЗ рд╡реЗ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рджреВрд░ рд╣реЛ рдЬрд╛рддреА рд╣реИрдВред

рдореИрдВрдиреЗ рдпрд╣ рднреА рджреЗрдЦрд╛ рдХрд┐ рдЬреЗрд╕реНрдЯ 25 collectCoverageFrom рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрди рдлрд╛рдЗрд▓реЛрдВ рд╕реЗ рдХрд╡рд░реЗрдЬ рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдордиреЗ рдЙрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдо рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдХреНрдпрд╛ рдЧреНрд▓реЛрдм рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╡рд╣рд╛рдВ рдмрджрд▓ рдЧрдпрд╛?

рдХреЛрдИ рдЬреЗрдПрд╕ рдмрд┐рд▓реНрдХреБрд▓ рдирд┐рд╢рд╛рди? рдпрд╣ рджреЗрдЦрдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ рдХрд┐ рдЙрд╕рдХреА рдореМрдд рдХрд╣рд╛рдВ рд╣реБрдИред

рдореИрдВрдиреЗ рдпрд╣ рднреА рджреЗрдЦрд╛ рдХрд┐ рдЬреЗрд╕реНрдЯ 25 рдХрд▓реЗрдХреНрдЯрдХрд╡рд░реЗрдЬ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╣реИрдВрдбрд▓ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрди рдлрд╛рдЗрд▓реЛрдВ рд╕реЗ рдХрд╡рд░реЗрдЬ рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдордиреЗ рдЙрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдо рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдХреНрдпрд╛ рдЧреНрд▓реЛрдм рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╡рд╣рд╛рдВ рдмрджрд▓ рдЧрдпрд╛?

рд╣рдордиреЗ рдорд╛рдЗрдХреНрд░реЛрдореИрдЪ 4 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рд╣реИ, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдиреЗ рдХреБрдЫ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реЛред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЬрд╛рдирдмреВрдЭ рдХрд░ рдЗрд╕рдореЗрдВ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдкреБрдирд░реБрддреНрдкрд╛рджрди рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ?

рдХреЛрдИ рдЬреЗрдПрд╕ рдмрд┐рд▓реНрдХреБрд▓ рдирд┐рд╢рд╛рди?

рдпрд╣ рдореБрджреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:

==== JS stack trace =========================================

    0: ExitFrame [pc: 0x521cca5be3d]
Security context: 0x0ebfa799e6e9 <JSObject>
    1: _clearMemoizedQueries [0xebf2a5aba99] [/Users/evhaus/Git/zenhub/client/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/nodes/Node-impl.js:~208] [pc=0x521cd0d9a4e](this=0x0ebf5bee2aa9 <EventTargetImpl map = 0xebf7963d039>)
    2: _clearMemoizedQueries [0xebf2a5aba99] [/Users/evhaus/Git/zenhub/client/node_modules/jest-environment-...

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ : рдЕрд╕рд▓ рдореЗрдВ, рдореБрдЭреЗ рдХрд╡рд░реЗрдЬ рдЕрдХреНрд╖рдо рд╣реЛрдиреЗ рдкрд░ рднреА рдвреЗрд░ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реА рд╣реИрдВред

рд╣рдордиреЗ рдорд╛рдЗрдХреНрд░реЛрдореИрдЪ 4 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рд╣реИ, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдиреЗ рдХреБрдЫ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реЛред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЬрд╛рдирдмреВрдЭ рдХрд░ рдЗрд╕рдореЗрдВ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдкреБрдирд░реБрддреНрдкрд╛рджрди рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ?

рдХрд╛рдо рдЪрд▓ рдЬрд╛рдпреЗрдЧрд╛ред

рдлрд┐рд░ рд╕реЗ рдЪрд┐рд▓реНрд▓рд╛ рд░рд╣рд╛ рд╣реИред рдХрд╡рд░реЗрдЬ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдзреАрдорд╛ рд╣реИ, рдФрд░ рдирдХрд▓реА рд▓рдЧрддрд╛ рд╣реИред рдпрд╣рд╛рдБ OSX рдХреЗ рд▓рд┐рдП рд╕рдордп рд╣реИред

46.69
41.77
45.06

v24 coverage
78.60
75.79
80.38

v25
45.93
52.49
53.36

v25 circus
61.27
52.08

v25 coverage
310.98
227.15
153.81

рд╕реАрдЖрдИ (рдЯреНрд░реИрд╡рд┐рд╕) рдХреЗ рд▓рд┐рдП рд╕рдордпред

v24 coverage -w 4
101.634s

v25 coverage -w 4
178.306s

@milesj v25 рд╕рд░реНрдХрд╕ рдХреНрдпрд╛ рд╣реИ?

рдпрд╣ рдЬрд╕реНрдЯ рдиреНрдпреВ рд░рдирд░ рд╣реИ, рдЬрд┐рд╕реЗ рддреЗрдЬ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдореИрдВрдиреЗ рдЬреЛ рджреЗрдЦрд╛ рд╣реИ рдЙрд╕рд╕реЗ рдХрднреА рдирд╣реАрдВ рд╣реИред https://www.npmjs.com/package/jest-circus

JSDOM рд╕реЗ jest-environment-jsdom@24 рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рд╣рдордиреЗ 11 рд╕реЗ 15 рддрдХ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣рд╛рдВ рдХреБрдЫ рдмрджрд▓ рдЧрдпрд╛ рд╣реЛред рдПрдХ рд▓рдВрдмреЗ рд╢реЙрдЯ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреМрди рдЬрд╛рдирддрд╛ рд╣реИ

@SimenB рдореЗрд░реЗ package.json рдХреЗрд╡рд▓ jest-environment-jsdom рд╕реЗ <24.0.0 рдЖрдиреЗ рд╕реЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рд╛ред heap out of memory рддреНрд░реБрдЯрд┐рдпрд╛рдВ рджреВрд░ рд╣реЛ рдЧрдИ рд╣реИрдВ рдФрд░ рдЬреЗрд╕реНрдЯ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЕрдкрдиреЗ рд░рди рдкреВрд░реЗ рдХрд░рддрд╛ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред

рджрд┐рд▓рдЪрд╕реНрдк! рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рдордп рд╣реИ, рддреЛ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХреЗрдВ

рдпрд╛ рдмрд╕ jsdom рдореЗрдВ рд▓рд┐рдВрдХ рдХрд░реЗрдВ рдФрд░ рджреНрд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВред рдореИрдВ рд╡рд╣ рдХрд▓ рдХрд░реВрдБрдЧрд╛, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрднреА рддрдХ рдПрдХ рдЕрдЪреНрдЫрд╛ рдкреНрд░рдЬрдирди рдирд╣реАрдВ рд╣реИ

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рдХрд╡рд░реЗрдЬ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИред

  • [email protected]

    • 143s рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП

    • рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ

  • [email protected]

    • рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП 154s

    • рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ

  • [email protected]

    • рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП 228s

    • рдХрдИ JavaScript heap out of memory рддреНрд░реБрдЯрд┐рдпрд╛рдБ

рдвреЗрд░ рдХреЗ рдирд┐рд╢рд╛рди

рдпреЗ jest-environment-jsdom-fourteen рд░рди рдХреЗ рдХреБрдЫ рд╕реНрдЯреИрдХ рдЯреНрд░реИрд╕ рд╣реИрдВ:

==== JS stack trace =========================================

    0: ExitFrame [pc: 0x20deef6dbe3d]
Security context: 0x36ee8219e6e9 <JSObject>
    1: _modified [0x36ee35982ec1] [/Users/evhaus/Git/zenhub/client/node_modules/jest-environment-jsdom-fourteen/node_modules/jsdom/lib/jsdom/living/nodes/Node-impl.js:~189] [pc=0x20deefba6433](this=0x36eef3246e99 <EventTargetImpl map = 0x36ee99264ee9>)
    2: _insert [0x36eeb41f1e41] [/Users/evhaus/Git/zenhub/client/node_modules/jest-environment-jsdom-fourte...
    0: ExitFrame [pc: 0x2aa5df5be3d]
Security context: 0x116a8d49e6e9 <JSObject>
    1: _clearMemoizedQueries [0x116a365133d1] [/Users/evhaus/Git/zenhub/client/node_modules/jest-environment-jsdom-fourteen/node_modules/jsdom/lib/jsdom/living/nodes/Node-impl.js:~208] [pc=0x2aa5dfe7dae](this=0x116a8f16cd11 <EventTargetImpl map = 0x116ae7cc9b61>)
    2: _clearMemoizedQueries [0x116a365133d1] [/Users/evhaus/Git/zenhub/client/node_modules/jest-...

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
 1: 0x10003d041 node::Abort() [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 2: 0x10003d24b node::OnFatalError(char const*, char const*) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 3: 0x1001b8e25 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 4: 0x100586d82 v8::internal::Heap::FatalProcessOutOfMemory(char const*) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 5: 0x100589855 v8::internal::Heap::CheckIneffectiveMarkCompact(unsigned long, double) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 6: 0x1005856ff v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 7: 0x1005838d4 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 8: 0x10059016c v8::internal::Heap::AllocateRawWithLigthRetry(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 9: 0x1005901ef v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
10: 0x10055fb34 v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationSpace) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
11: 0x1007e7e14 v8::internal::Runtime_AllocateInNewSpace(int, v8::internal::Object**, v8::internal::Isolate*) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
12: 0x20deef6dbe3d 
13: 0x20deefba6433 
    0: ExitFrame [pc: 0xb8909f5be3d]
Security context: 0x09e628d9e6e9 <JSObject>
    1: childrenIterator [0x9e612e1d581] [/Users/evhaus/Git/zenhub/client/node_modules/symbol-tree/lib/SymbolTree.js:~367] [pc=0xb890a41010e](this=0x09e612e3eb01 <SymbolTree map = 0x9e6a7f56c09>,parent=0x09e685ca27d1 <EventTargetImpl map = 0x9e6061f36f1>,options=0x09e67b6026f1 <undefined>)
    2: arguments adaptor frame: 1->2
    3: _detach [0x9e65c4ae341] [/U...

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
 1: 0x10003d041 node::Abort() [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 2: 0x10003d24b node::OnFatalError(char const*, char const*) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 3: 0x1001b8e25 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 4: 0x100586d82 v8::internal::Heap::FatalProcessOutOfMemory(char const*) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 5: 0x100589855 v8::internal::Heap::CheckIneffectiveMarkCompact(unsigned long, double) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 6: 0x1005856ff v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 7: 0x1005838d4 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 8: 0x10059016c v8::internal::Heap::AllocateRawWithLigthRetry(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 9: 0x1005901ef v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
10: 0x10055fb34 v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationSpace) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
11: 0x1007e7e14 v8::internal::Runtime_AllocateInNewSpace(int, v8::internal::Object**, v8::internal::Isolate*) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
12: 0x2aa5df5be3d 
    0: ExitFrame [pc: 0x180d6e95be3d]
Security context: 0x02052079e6e9 <JSObject>
    1: _modified [0x205b86c1861] [/Users/evhaus/Git/zenhub/client/node_modules/jest-environment-jsdom-fourteen/node_modules/jsdom/lib/jsdom/living/nodes/Node-impl.js:~189] [pc=0x180d6ede24fa](this=0x0205c8284411 <EventTargetImpl map = 0x205c1ea9769>)
    2: _attrModified [0x205b86ba771] [/Users/evhaus/Git/zenhub/client/node_modules/jest-environment-jsdom-fou...

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
 1: 0x10003d041 node::Abort() [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 2: 0x10003d24b node::OnFatalError(char const*, char const*) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 3: 0x1001b8e25 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 4: 0x100586d82 v8::internal::Heap::FatalProcessOutOfMemory(char const*) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 5: 0x100589855 v8::internal::Heap::CheckIneffectiveMarkCompact(unsigned long, double) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 6: 0x1005856ff v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 7: 0x1005838d4 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 8: 0x10059016c v8::internal::Heap::AllocateRawWithLigthRetry(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 9: 0x1005901ef v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
10: 0x10055fb34 v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationSpace) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
11: 0x1007e7e14 v8::internal::Runtime_AllocateInNewSpace(int, v8::internal::Object**, v8::internal::Isolate*) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
12: 0xb8909f5be3d 

рдЙрдореНрдореАрдж рд╣реИ рдХреА рдпрд╣ рдорджрдж рдХрд░реЗрдЧрд╛

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕рд╕реЗ рдорджрдж рдорд┐рд▓реЗрдЧреА рдпрд╛ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд╕рдВрдЧрдарди рдореЗрдВ рдЬреЗрд╕реНрдЯ 24 рд╕реЗ рдЬреЗрд╕реНрдЯ 25 (18 рдорд┐рдирдЯ рд╕реЗ 28 рдорд┐рдирдЯ) рддрдХ рдХрд╛рдлрд╝реА рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдереА, рдЬреЛ рдХрд╡рд░реЗрдЬ рд╕рдВрдЧреНрд░рд╣ (10 рдорд┐рдирдЯ рддрдХ рдХрдо) рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЪрд▓реА рдЧрдИред

@rosasynstylae рдЬрд┐рдЬреНрдЮрд╛рд╕рд╛ рд╕реЗ рдмрд╛рд╣рд░, рдХреНрдпрд╛ рдЖрдкрдХреЗ рдХреЛрдб рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕реНрдиреИрдкрд╢реЙрдЯ рдкрд░реАрдХреНрд╖рдг рд╣реИрдВ?

@benmonro рдпрд╣ рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рдБред

рддреЛ рд╣рдорд╛рд░рд╛ рднреА! @SimenB рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░реЗрдкреЛ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕реНрдиреИрдкрд╢реЙрдЯ рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддреЗ рд╣реИрдВ?

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмрд┐рдирд╛ рд╕реНрдиреИрдкрд╢реЙрдЯ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рд╕рдВрдмрдВрдзреА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред рд╣рдо рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрд╡рд░реЗрдЬ рдПрдХрддреНрд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВред 24 -> 25. 2 рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдордВрджреАред рдпрд╣ рдмрджрд▓рддрд╛ рд░рд╣рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдордВрджреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдФрд░ рд╕реБрд╕рдВрдЧрдд рд╣реИред

рдореИрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдмрджрд▓рд╛рд╡ рдХреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдмрд╛рд░-рдмрд╛рд░ рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдФрд╕рддрди 10 рдЧреБрдирд╛ рдзреАрдореЗ рд╣реИрдВ, рдлрд┐рд░ рд╡реЗ 24 рдХреЗ рд╕рд╛рде рдереЗред

рдореИрдВ рд╡рд╛рдкрд╕ 24 рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рд░рди рдЙрд╕реА рдЧрддрд┐ рд╕реЗ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рдереЗред

рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдореИрдВ рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдореИрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕реНрдиреИрдкрд╢реЙрдЯ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЕрдкрдиреА 2 рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред

рдпрд╣рд╛рдВ рд╕рднреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рд╕реЗ, рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд╡рд░реЗрдЬ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдФрд░ рд╢рд╛рдпрдж рдЗрд╕реНрддрд╛рдВрдмреБрд▓ рдореЗрдВ рдПрдХ рдкреНрд░рддрд┐рдЧрдорди рд╣реИ?

рдпрд╣рд╛рдВ рд╕рднреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рд╕реЗ, рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд╡рд░реЗрдЬ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдФрд░ рд╢рд╛рдпрдж рдЗрд╕реНрддрд╛рдВрдмреБрд▓ рдореЗрдВ рдПрдХ рдкреНрд░рддрд┐рдЧрдорди рд╣реИ?

рдореИрдВ рдЗрд╕реНрддрд╛рдВрдмреБрд▓ рдкрд░ рдЙрдВрдЧрд▓реА рдЙрдард╛рдиреЗ рдХреА рдЗрддрдиреА рдЬрд▓реНрджреА рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрд╡рд░реЗрдЬ рдЕрдХреНрд╖рдо рд╣реЛрдиреЗ рдкрд░ рднреА, рдореБрдЭреЗ рдЬреЗрд╕реНрдЯ 25 рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рджрд░реНрд╢рди рдФрд░ рд╕реНрдерд┐рд░рддрд╛ рдХреЗ рдореБрджреНрджреЗ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реЗ рд╣реИрдВред рджреЗрдЦреЗрдВ https://github.com/facebook/jest/issues/9457#issuecomment -579423330

рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореБрджреНрджреЗ рд╣реЛрдВ:

1) рдордЬрд╝рд╛рдХ-рд╡рд╛рддрд╛рд╡рд░рдг-jsdom-рдЪреМрджрд╣, рдФрд░ . рдХреЗ рд╕рд╛рде рдореБрджреНрджреЗ
2) рдЗрд╕реНрддрд╛рдВрдмреБрд▓ рдХрд╡рд░реЗрдЬ рдХреЗ рдореБрджреНрджреЗ

рдореИрдВрдиреЗ micromatch рд╕реЗ ^3.0.0 рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдФрд░ --coverage рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдЧрддрд┐ рджреЗрдЦреА, рдХрдореЛрдмреЗрд╢ рдЙрд╕ рдкреНрд░рджрд░реНрд╢рди рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ рдЬреЛ рд╣рдордиреЗ рдЬреЗрд╕реНрдЯ 24 рдХреЗ рддрд╣рдд рджреЗрдЦрд╛ рдерд╛ред рдХреНрдпрд╛ рдХреЛрдИ рдкреБрди: рдкреЗрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

рдЕрджреНрдпрддрди: рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдм --coverage рдмрд┐рдирд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдЬреЗрд╕реНрдЯ 24 рд╕реНрддрд░реЛрдВ рдкрд░ рднреА рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ рд╣реИ - рджреЛ рдмрд╛рд░ рдзреАрдорд╛: - /

@EvHaus рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк! рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВ рдЕрднреА рднреА рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реВрдВред рддреЛ рдПрдХ рдкреНрд░рдЬрдирди рдЕрднреА рднреА рднрдпрд╛рдирдХ рд╣реЛрдЧрд╛, рдЗрд╕ рддрд░рд╣ рдореИрдВ рдЗрд╕реЗ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдореИрдВрдиреЗ micromatch рд╕реЗ ^3.0.0 рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдФрд░ --coverage рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдЧрддрд┐ рджреЗрдЦреА, рдХрдореЛрдмреЗрд╢ рдЙрд╕ рдкреНрд░рджрд░реНрд╢рди рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ рдЬреЛ рд╣рдордиреЗ рдЬреЗрд╕реНрдЯ 24 рдХреЗ рддрд╣рдд рджреЗрдЦрд╛ рдерд╛ред рдХреНрдпрд╛ рдХреЛрдИ рдкреБрди: рдкреЗрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

рдЕрджреНрдпрддрди: рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдм --coverage рдмрд┐рдирд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдЬреЗрд╕реНрдЯ 24 рд╕реНрддрд░реЛрдВ рдкрд░ рднреА рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ рд╣реИ - рджреЛ рдмрд╛рд░ рдзреАрдорд╛: - /

рджреБрдирд┐рдпрд╛ рдореЗрдВ рдХреНрдпрд╛... рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореИрдВ рдЗрд╕реНрддрд╛рдВрдмреБрд▓ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛ рдорд╛рдЗрдХреНрд░реЛрдореИрдЪ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХрд╡рд░реЗрдЬ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХреНрдпреЛрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╣ рдореЗрд░реЗ рд╕реЗ рдкрд░реЗ рд╣реИ

рдкреВрд░реЗ рдорд╛рдЗрдХреНрд░реЛрдореИрдЪ рдкреНрд░рджрд░реНрд╢рди рдХреА рдмрд╛рдд рдереЛрдбрд╝реА рдмреЗрддреБрдХреА рд╣реЛ рд░рд╣реА рд╣реИ, рдХрд╡рд░реЗрдЬ рдХреЗ рд╕рд╛рде v3 v4 рд╕реЗ рддреЗрдЬ рд╣реИ, рдмрд┐рдирд╛ v4 v3 рд╕реЗ рддреЗрдЬ рд╣реИ? рдореИрдВ

@SimenB рд╣рд╛рдБ, рдЗрд╕реЗ рд╣рдорд╛рд░реЗ CI рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА рдХреЗрд╡рд▓ рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд▓рд╛рдпрд╛ред рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рдирд╣реАрдВ рдмрджрд▓рдирд╛

  "resolutions": {
    "micromatch": "^3.0.0"
  }

--coverage рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╣рдорд╛рд░реЗ package.json рдиреЗ рд░рди рд╕реЗ 6 рдорд┐рдирдЯ рдХреА рджреВрд░реА рдкрд░ рдПрдХ рдареЛрд╕ рдореБрдВрдбрди рдХрд┐рдпрд╛, рдЗрд╕реЗ рдореЛрдЯреЗ рддреМрд░ рдкрд░ Jest 24 рдХреЗ рддрд╣рдд рд╣рдордиреЗ рдЬреЛ рджреЗрдЦрд╛, рдЙрд╕реЗ рд╡рд╛рдкрд╕ рд▓рд╛рдпрд╛ред

рдЬрд╣рд╛рдБ рддрдХ рдореИрдВ рдЗрд╕реНрддрд╛рдВрдмреБрд▓ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛ рдорд╛рдЗрдХреНрд░реЛрдореИрдЪ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ

рдпрд╣ рдЯрд┐рдкреНрдкрдгреА рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реВрддреНрд░ рдореЗрдВ рдорд┐рд▓реА рдЬреЛ рдЗрд╕рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ рд╕рдХрддреА рд╣реИ:

https://github.com/facebook/jest/issues/9464#issuecomment -579733243

рдЗрд╕реНрддрд╛рдВрдмреБрд▓ рдореЗрдВ micromatch рдореЗрдВ рдХреБрдЫ рднреА рдкреБрд╖реНрдЯрд┐ рдирд╣реАрдВ рдХреА рдЧрдИ рд╣реИ (рд╡реЗ рдмреЗрдмреЗрд▓ рдкреНрд▓рдЧрдЗрди рдореЗрдВ minimatch рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ)ред

рдпрд╣ рдмрд╣рд┐рд╖реНрдХрд░рдгреЛрдВ рдХреЗ рдареАрдХ рд╕реЗ рдХрд╛рдо рди рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗред рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ рдХреНрдпрд╛ рдЙрдкрдХрд░рдг рдЪрд╛рд╣рд┐рдП: https://github.com/facebook/jest/blob/28f6da44cc58d41438bddfa9fcd741fd01b02ded/packages/jest-transform/src/ shouldInstrument.tsред рдХреНрдпрд╛ рдЖрдк рд╢рд╛рдпрдж рд╡рд╣рд╛рдВ рдХреБрдЫ рд▓реЙрдЧ рдЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдо true рд╕рд╛рде рдХрд╣реАрдВ рднреА micromatch@4 рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдо micromatch@3 рд▓рд┐рдП рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ?

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ 2 рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореБрджреНрджреЛрдВ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рдПрдХ jsdom рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рджреВрд╕рд░рд╛ рдХрд╡рд░реЗрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ

рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рд╕реАрдЖрдИ рдореЗрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рдЧрддрд┐ рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ рд╣реИ рдЬрдм рд╣рдо рдорд╛рдЗрдХреНрд░реЛрдореИрдЪ @ 3 рдХреЛ рднреА рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВред

рдЬреЗрд╕реНрдЯ + рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ + рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛрдбрдмреЗрд╕ рдпрд╣рд╛рдБред рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рджреЗрдЦрдХрд░ рдФрд░ рдорд╛рдЗрдХреНрд░реЛрдореИрдЪ ^3.0.0 рдХреЛ рдмрд╛рдзреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП npm-force-resolutions рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╛рдЧрд▓ рдордВрджреА рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧ рд░рд╣рд╛ рдерд╛ред

рдХреНрдпрд╛ рдЖрдкрдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдХрд╕реНрдЯрдо рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рдкреИрдЯрд░реНрди рдкреАрдЖрд░ рдХрд╡рд░реЗрдЬ рдкреИрдЯрд░реНрди рд╣реИрдВ?

@EvHaus рдореБрдЭреЗ рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ рдпрджрд┐ рдЖрдк

рдЕрдЧрд░ рдЖрдкрдХрд╛ рдпрд╣реА рдорддрд▓рдм рд╣реИ, рддреЛ рд╣рд╛рдБред

  collectCoverage: true,
  collectCoverageFrom: [
    'src/**/*.ts',
    'src/**/*.tsx',
    'src/**/*.js',
    'src/**/*.jsx',
    '!src/themes/**',
    '!src/**/Styled*.tsx',
    '!src/**/Styled*.ts',
    '!src/**/*Actions.ts',
    '!src/mainStore.ts',
    '!src/App.tsx',
    '!src/AppView.tsx',
    '!src/AppError.tsx',
    '!src/StyledAppComponents.tsx',
    '!src/index.tsx',
    'src/utility/redux/*.ts',
    '!src/testingUtils/*',
    '!src/**/index.ts',
    '!docs/**/**',
  ],

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд╣ рднреА рд╣реИ рдФрд░ рд╣рдорд╛рд░рд╛ рд▓рдВрдмрд╛рдИ/рдорд╛рдиреЛрдВ рдореЗрдВ рдХрд╛рдлреА рд╕рдорд╛рди рджрд┐рдЦрддрд╛ рд╣реИ

@ рдкреНрд░рд╛рдЪреАрди123 рд╣рд╛рдБ, рдмрд┐рд▓реНрдХреБрд▓ред рдирдХрд╛рд░рд╛рддреНрдордХ рдкреИрдЯрд░реНрди рдХреЗ рд▓рд┐рдП рдорд╛рдЗрдХреНрд░реЛрдореИрдЪ рд░рд┐рдЧреНрд░реЗрд╢рди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд▓рдЧрддрд╛ рд╣реИред рдзрдиреНрдпрд╡рд╛рдж!

рдирдХрд╛рд░рд╛рддреНрдордХ рдкреИрдЯрд░реНрди рдХреЗ рд▓рд┐рдП рдорд╛рдЗрдХреНрд░реЛрдореИрдЪ рд░рд┐рдЧреНрд░реЗрд╢рди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд▓рдЧрддрд╛ рд╣реИред рдзрдиреНрдпрд╡рд╛рдж!

рдиреЛрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛, рдореИрдВ рдЗрд╕реЗ ASAP рдореЗрдВ рджреЗрдЦ рд▓реВрдВрдЧрд╛ред

рд╕рдВрдкреВрд░реНрдг рдорд╛рдЗрдХреНрд░реЛрдореИрдЪ рдкреНрд░рджрд░реНрд╢рди рдХреА рдмрд╛рдд рдереЛрдбрд╝реА рдмреЗрддреБрдХреА рд╣реЛ рд░рд╣реА рд╣реИ

рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред рдЧреНрд▓реЛрдмрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд░реЗрдЧреБрд▓рд░ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдмрдирд╛рдирд╛ рдЬрд┐рддрдирд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рдЙрд╕рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИред рдЦрд╛рд╕рддреМрд░ рдкрд░ рддрдм рдЬрдм рдЙрд╕реЗ рдирдХрд╛рд░ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдФрд░ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╣реЛрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реЛред рдореИрдВ рдЕрдм рдЗрд╕ рдкрд░ рдЧреМрд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

@jonschlinkert рдЗрд╕рдХрд╛ рдорддрд▓рдм рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЖрд░реЛрдк рд▓рдЧрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдирд╣реАрдВ рдерд╛, рдЬреЛ рдХрд╛рдо рдЖрдк рдорд╛рдЗрдХреНрд░реЛрдореИрдЪ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рдбрд╛рд▓ рд░рд╣реЗ рд╣реИрдВ, рдЙрд╕рдХреА рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ! :рджрд┐рд▓:

рд╣рд╛рдВ! @SimenB рдиреЗ рдХреНрдпрд╛ рдХрд╣рд╛ред тЭдя╕П . рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рдирд╣реАрдВ

@EvHaus рдореБрдЭреЗ рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ рдпрджрд┐ рдЖрдк

рдореЗрд░реЗ package.json рдореИрдВрдиреЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ:

"resolutions": {
    "micromatch": "^3.0.0"
}

npm install рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдпрд╛ рдЧрдпрд╛, рдФрд░ рдлрд┐рд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ node_modules/jest/micromatch (рдЬреЛ рд╕рдВрд╕реНрдХрд░рдг 4 рдкрд░ рдерд╛) рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ред рдлрд┐рд░ рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдг рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдПред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВ рдЕрднреА рднреА рдХрдИ "рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реАрдк рдЖрдЙрдЯ рдСрдлрд╝ рдореЗрдореЛрд░реА" рддреНрд░реБрдЯрд┐рдпрд╛рдБ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдБред

рдХреНрдпрд╛ рдореИрдВ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ?

resolutions рдЬрд░реВрд░рдд рд╣реИ yarn , npm рдиреЗ рдЗрд╕реЗ рдЕрднреА рддрдХ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ (рдпрд╣ v7 рдХреЗ рд░реЛрдбрдореИрдк рдкрд░ рд╣реИ: https://blog.npmjs.org/post/186983646370/npm- рдХреНрд▓реА-рд░реЛрдбрдореИрдк-рд╕рдорд░-2019)

@EvHaus npm v7 рдХреЗ рдмрд╛рд╣рд░ рдЖрдиреЗ рддрдХ рдЖрдк https://www.npmjs.com/package/npm-force-resolutions

рд╡рд┐рд▓рдВрдм рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред micromatch рдХреЛ v3 рдореЗрдВ рд▓реЙрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП npm-force-resolutions (рдЬреЛ рд╕рд╣реА рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕рдиреЗ рдореЗрд░реА рдвреЗрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рджреВрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ред

рддреЛ рдореЗрд░реЗ рд▓рд┐рдП, рдпрд╣ рдЕрднреА рднреА [email protected] рдХреЛ рджреЛрд╖ рджреЗрдирд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ: https://github.com/facebook/jest/issues/9457#issuecomment -579423330

Jsdom рдХреЛ thirteen рдореЗрдВ рд╣рд▓ рдХрд░рдирд╛ рдЗрд╕реЗ рдареАрдХ рдХрд░рддрд╛ рд╣реИред

рдХреНрдпрд╛ 25 рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдкрд╛рд╕ рдРрд╕реЗ рдореБрджреНрджреЗ рд╣реИрдВ рдЬреЛ рдпрд╛ рддреЛ jsdom@13 рдпрд╛ micromatch@3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддрдп рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВ https:// github.com/micromatch/micromatch/issues/179ред

JSDOM рдХрд╛ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдк рдЗрд╕реЗ jest-environment-jsdom-sixteen рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред @EvHaus рдХреНрдпрд╛ рдЖрдк рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ?

@SimenB рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рд╢рд╛рдпрдж рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ jest-environment-jsdom-sixteen рдмрдирд╛рдо рдХреЛрд╢рд┐рд╢ рдХреА, рдФрд░ рдмрд╛рд░-рдмрд╛рд░ рд░рдиреЛрдВ рдкрд░ рдЙрд╕реА рдЯреЗрд╕реНрдЯ рд╕реВрдЯ рдХреЗ рд▓рд┐рдП рд░рдирдЯрд╛рдЗрдо рдореЗрдВ 20 рдХреА рд╡реГрджреНрдзрд┐ рджреЗрдЦреА рдЧрдИред

v15 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЕрдзрд┐рдХ (рдЬреЛ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЬреЗрд╕реНрдЯ рдХреЗ рд╕рд╛рде рдЬрд╣рд╛рдЬ рд╣реИ) рдФрд░ рдХреЛрдИ рдЕрдиреНрдп рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ? рдХреНрдпрд╛ рдЖрдк 16.1.0 рдХреЗ рд╕рд╛рде рднреА рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕реНрдореГрддрд┐ рдХреЛ рд▓реАрдХ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдХрдард┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)ред JSDOM рдмрд╕ рдХрд╕реНрдЯрдо рддрддреНрд╡ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдЙрддрд░рд╛, рд╡рд╣рд╛рдБ _might_ рдХреБрдЫ рдкреНрд░рддрд┐рдЧрдорди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рдкрдХреНрдХрд╛ рдирд╣реАрдВ

JSDOM рдХрд╛ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдк рдЗрд╕реЗ jest-environment-jsdom-sixteen рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред @EvHaus рдХреНрдпрд╛ рдЖрдк рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ?

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдЕрднреА рднреА рдвреЗрд░ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛ рд░рд╣реА рд╣реИрдВ jest-environment-jsdom-sixteen ред рдореЗрд░реЗ рд▓рд┐рдП JSDom рдХрд╛ рдЕрдВрддрд┐рдо рд╕реНрдерд┐рд░ рдХрд╛рд░реНрдпрд╢реАрд▓ рд╕рдВрд╕реНрдХрд░рдг jest-environment-jsdom-thirteen ред

JSDOM рдХрд╛ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдк рдЗрд╕реЗ jest-environment-jsdom-sixteen рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред @EvHaus рдХреНрдпрд╛ рдЖрдк рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ?

рдкрд░реНрдпрд╛рд╡рд░рдг рд╣рдорд╛рд░реЗ рдХреЛрдбрдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЕрднреА рднреА рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рд▓рдЧрднрдЧ 100% рдкреНрд░рддрд┐рдЧрдорди рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВред рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ jest-environment-jsdom-sixteen рдХреЗрд╡рд▓ 25.1 рдмрдирд╛рдо 24.9 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд░рди рдЯрд╛рдЗрдо рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ 10% ish рддрдХ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ

рд╣рд╛рдп @ рд╕рд┐рдореЗрдирдмреА ,

рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдорд╛рдорд▓рд╛ рдмрдирд╛рдпрд╛ рд╣реИ https://github.com/olebedev/jest-perf-issue ред рдХреГрдкрдпрд╛ рджреЗрдЦ рд▓реАрдЬрд┐рдпреЗред рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдо рдХреЗ рдиреАрдЪреЗред /рд╕реАрд╕реА @joscha

рдкрд░рд┐рдгрд╛рдо

рдмреЗрдВрдЪрдорд╛рд░реНрдХ MBP 2019, 32Gb RAM, i9-8950HK CPU @ 2.90GHz рдкрд░ рдЪрд▓рд╛рдП рдЧрдП рдереЗред

| рдордЬрд╝рд╛рдХ рд╕рдВрд╕реНрдХрд░рдг | рд╢рд╛рдЦрд╛ | рд╕рдордп |
|:--------------|:------:|----------:|
| 24.9.0 | master | 348.077s |
| 25.1.0 | jest25 | 591.33s |

рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬрд╣рд╛рдВ рдЬреЗрд╕реНрдЯ v25.1 v24.9 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ ~ 50% рдзреАрдорд╛ рдерд╛, рдЕрдм рдирд╡реАрдирддрдо рдЬреЗрд╕реНрдЯ v25.2.0 v25.1 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдФрд░ рднреА 20% рдзреАрдорд╛ рд╣реИред

@olebedev рд╡рд╛рд╣ , рдпрд╣ рджрд░реНрджрдирд╛рдХ рд╣реИ

рдореБрдЭреЗ рдЖрдкрдХреЗ рд╕рдорд╛рди рдирдВрдмрд░ рдорд┐рд▓ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рдпрд╣ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рддреЛ рдореИрдВ v8 рдХрд╡рд░реЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рдпрд╣ рдЖрдкрдХреЗ рдкреНрд░рдЬрдирди рдореЗрдВ рдореЗрд░реА рдорд╢реАрди рдкрд░ 600 рд╕реЗ 35 рддрдХ рд░рдирдЯрд╛рдЗрдо рд▓реЗрддрд╛ рд╣реИред рд╡рд┐рд╢рд╛рд▓ рдЕрдВрддрд░ рдХрд╛ рдХрд╛рд░рдг рд╢рд╛рдпрдж рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо v8 рдХрд╡рд░реЗрдЬ рдХреЗ рд╕рд╛рде рдЧреИрд░-рдХрд╡рд░ рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рд╛рдзрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ (рд╣рдо рдмрд╕ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╣рд░ рдмрд╛рдЗрдЯ рдЦреБрд▓рд╛ рд╣реИ, рдЬреЛ v8 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)ред

https://jestjs.io/docs/en/configuration#coverageprovider -string

рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЗрддрдирд╛ рдзреАрдорд╛ рдХреНрдпреЛрдВ рд╣реИ... рдореИрдВ рдЗрд╕ рдкрд░ рдЧреМрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдордп рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЬрд▓реНрдж рд╣реА рдХрднреА рднреА рдирд╣реАрдВ рд╣реЛрдЧрд╛)ред рдпрд╣ рдХрдо рд╕реЗ рдХрдо v25 рдкрд░ v24 . рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдзреАрдорд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

рдХреНрдпрд╛ рдореИрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдо рдПрдХ рд╕рд╛рде v8 рдХрд╡рд░реЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
...-sixteen рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рд╕рд╛рде?

рдЪреАрдпрд░реНрд╕,
рдЬреЗ

рдмреБрдзрд╡рд╛рд░, 8 рдЕрдкреНрд░реИрд▓ 2020, 22:33 рдХреЛ рд╕рд┐рдореЗрди рдмреЗрдХреНрдЦреБрд╕, рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:

@olebedev https://github.com/olebedev рд╡рд╛рд╣ , рдпрд╣ рджрд░реНрджрдирд╛рдХ рд╣реИ

рдореБрдЭреЗ рдЖрдкрдХреЗ рд╕рдорд╛рди рдирдВрдмрд░ рдорд┐рд▓ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рдпрд╣ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ I . рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ
v8 рдХрд╡рд░реЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВред рдпрд╣ my . рдкрд░ рд░рдирдЯрд╛рдЗрдо рдХреЛ 600s рд╕реЗ 35s рддрдХ рд▓реЗрддрд╛ рд╣реИ
рдЖрдкрдХреЗ рдкреНрд░рдЬрдирди рдореЗрдВ рдорд╢реАрдиред рд╡рд┐рд╢рд╛рд▓ рдЕрдВрддрд░ рдХрд╛ рдХрд╛рд░рдг рд╢рд╛рдпрдж рдпрд╣ рд╣реИ рдХрд┐
рд╣рдо v8 рдХрд╡рд░реЗрдЬ рд╡рд╛рд▓реА рдЧреИрд░-рдХрд╡рд░ рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рд╛рдзрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

https://jestjs.io/docs/en/configuration#coverageprovider -string

рдкрддрд╛ рдирд╣реАрдВ рдХреНрдпреЛрдВ рдпрд╣ рдЗрддрдирд╛ рдзреАрдорд╛ рд╣реИ... рдореИрдВ рдЗрд╕ рдкрд░ рдЧреМрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдордп рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдБрдЧрд╛ред
рдпрд╣ рдХрдо рд╕реЗ рдХрдо v25 рдкрд░ v24 . рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдзреАрдорд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/facebook/jest/issues/9457#issuecomment-610931770 , рдпрд╛
рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд
https://github.com/notifications/unsubscribe-auth/AABN5BW6R45SS5Z5GXGFGF3RLRVJLANCNFSM4KK67LOA
.

рд╣рд╛рдВ, рдпрд╛ рддреЛ jest-environment-jsdom-sixteen , рдпрд╛ рдмрдВрдбрд▓ jest-environment-node ред рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдиреЛрдб 10+ рдкрд░ рд╕рдорд░реНрдерд┐рдд рд╣реИ, рдиреЛрдб 8 рдкрд░ рдирд╣реАрдВред

(рдореИрдВрдиреЗ рдХрднреА рдХреЗрд╡рд▓ рдиреЛрдб рдПрдирд╡реА рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рдЬреЗрдПрд╕рдбреЙрдо рдПрдирд╡реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рддреЛ рдпрд╣ рдПрдХ рдмрдЧ рд╣реИ - рдХреГрдкрдпрд╛ рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рдЦреЛрд▓реЗрдВ ЁЯЩВ)

jest-environment-jsdom-sixteen + v8 рдХрд╡рд░реЗрдЬ рдкреНрд░рджрд╛рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП jest 25.3.0, рдиреЛрдб 12.16 рдкрд░ рд▓рдЧрднрдЧ 20% рдЦрд░рд╛рдм рдерд╛ред рд╣рдо рдпрд╣ рднреА рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░рд╛ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рджрд░реНрд╢рди рдЬреЗрд╕реНрдЯ 24 рд╕реЗ 25 рддрдХ рдЬрд╛рдиреЗ рдкрд░ рд▓рдЧрднрдЧ 80% рдЦрд░рд╛рдм рдХреНрдпреЛрдВ рд╣реЛ рдЧрдпрд╛ред

@joual рдХреНрдпрд╛ рдЖрдкрдиреЗ

рдпрд╣рд╛рдВ рдПрдХ рд╕рдорд╛рди рдЕрдиреБрднрд╡ рд╣реЛрдиреЗ рдкрд░, рдкрд░реАрдХреНрд╖рдг рд╕рдордп (_рдмрд┐рдирд╛_рдХрд╡рд░реЗрдЬ) v25 рдкрд░ рджреЛрдЧреБрдирд╛ рд╣реЛрдХрд░ 35-40 рд╕реЗрдХрдВрдб рд╕реЗ 80-90 рдФрд░ рдХрднреА-рдХрднреА рдЕрдзрд┐рдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред v3 рдкрд░ рдорд╛рдЗрдХреНрд░реЛрдореИрдЪ рд▓реЙрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛, рдХреЛрдИ рдорд╛рдкрдиреЗ рдпреЛрдЧреНрдп рдЕрдВрддрд░ рдирд╣реАрдВред Fwiw, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд▓рдЧрднрдЧ 3k рдкрд░реАрдХреНрд╖рдг рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рд╕реЗ 58 рд╕реНрдиреИрдкрд╢реЙрдЯ рдкрд░реАрдХреНрд╖рдг рд╣реИрдВред
Jsdom рдХреЛ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛ рд░рд╣реА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рдЯреВрдЯрдирд╛ рд╢реБрд░реВ рд╣реЛ рдЧрдП рд╣реИрдВред рдореИрдВ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рд╡рд╛рдкрд╕ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

@SimenB рдкреНрд░реАрдЯрд┐рдпрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдХрд╡рд░реЗрдЬ рдХрд▓реЗрдХреНрдЯ рдЬреЙрдм рднреА рдмрд╣реБрдд рдзреАрдореА рд╣реИ, рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ рдЪреЗрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? https://github.com/prettier/prettier/runs/579497097 Node.js 12 on ubuntu-latest рдХрд╡рд░реЗрдЬ рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИ, рдЕрдиреНрдп рдХрд╛рдо рдирд╣реАрдВред

рдпрд╣рд╛рдВ рдПрдХ рд╕рдорд╛рди рдЕрдиреБрднрд╡ рд╣реЛрдиреЗ рдкрд░, рдкрд░реАрдХреНрд╖рдг рд╕рдордп (_рдмрд┐рдирд╛_рдХрд╡рд░реЗрдЬ) v25 рдкрд░ рджреЛрдЧреБрдирд╛ рд╣реЛрдХрд░ 35-40 рд╕реЗрдХрдВрдб рд╕реЗ 80-90 рдФрд░ рдХрднреА-рдХрднреА рдЕрдзрд┐рдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред v3 рдкрд░ рдорд╛рдЗрдХреНрд░реЛрдореИрдЪ рд▓реЙрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛, рдХреЛрдИ рдорд╛рдкрдиреЗ рдпреЛрдЧреНрдп рдЕрдВрддрд░ рдирд╣реАрдВред Fwiw, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд▓рдЧрднрдЧ 3k рдкрд░реАрдХреНрд╖рдг рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рд╕реЗ 58 рд╕реНрдиреИрдкрд╢реЙрдЯ рдкрд░реАрдХреНрд╖рдг рд╣реИрдВред
Jsdom рдХреЛ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛ рд░рд╣реА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рдЯреВрдЯрдирд╛ рд╢реБрд░реВ рд╣реЛ рдЧрдП рд╣реИрдВред рдореИрдВ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рд╡рд╛рдкрд╕ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдЖрдЬ jest@24 рдкрд░ рд╡рд┐рднрд┐рдиреНрди jsdom рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ (рдЬреЛ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ v11 рд╣реИ)ред V14 рддрдХ рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди v15 рдЯреЗрд╕реНрдЯ рд░рди рдХреЗ рд░реВрдк рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ 50-60% рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред v16 рдореЗрдВ рд╡рд╣реА рдХрд╣рд╛рдиреАред рдореИрдВ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ jsdom рдХреЛ v14 рдореЗрдВ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХрд░рдХреЗ jest@25 рдкрд░ рд╕рдорд╛рди рдкрд░рдл рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

[email protected] рдореЗрдВ рдХреБрдЫ рдореЗрдореЛрд░реА рд╕реБрдзрд╛рд░ рд╣реИрдВ, @EvHaus рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ --detect-leaks рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рд▓реАрдХ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди 16.2.2 рдХреЛ рдирд╣реАрдВред

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рд┐рдореНрд▓рд┐рдВрдХ рд╣реИрдВ (рдЬреЛ рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рд╕реБрдкрд░ рд╕реНрд▓реЛ рд╣реИ), рддреЛ рдореИрдВрдиреЗ рдХреБрдЫ рдЕрдиреНрдп рд╕реБрдзрд╛рд░ рднреА рдХрд┐рдП рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рд▓реЛрдЧ [email protected] рдХреЛ рдЖрдЬрд╝рдорд╛ рд╕рдХрддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛

@SimenB рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реИ? рдЕрдЧрд░ рдореИрдВ [email protected] рд╕реАрдзреЗ рдПрдХ рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдЬреЗрд╕реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ рддреЛ рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ jest-environment-jsdom рд╕рд╛рде рдЬреЛ рдХреБрдЫ рднреА рдмрдВрдбрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрдЬ 15.2.1 рд╣реИред

рдореИрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП npm рдХреИрд╕реЗ рдЫрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдореЗрд░реЗ рдЗрдЪреНрдЫрд┐рдд jsdom рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ?

jest-environment-jsdom-sixteen рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ рдФрд░ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВ https://jestjs.io/docs/en/configuration#testenvironment -string

рдЕрд▓реНрдлрд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд, рдЗрд╕рд▓рд┐рдП рдЖрдк jest@next рдЖрдЬрд╝рдорд╛ рд╕рдХрддреЗ рд╣реИрдВ - рдпрд╣ jsdom 16 рдЖрдЙрдЯ рдСрдлрд╝ рдж рдмреЙрдХреНрд╕ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ

@SimenB рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, [email protected] рдФрд░ рдЗрд╕рдХреЗ [email protected] рд╕рд╛рде рдмрд╣реБрдд рднрд╛рдЧреНрдп рдирд╣реАрдВ рд╣реИред рдЕрднреА рднреА рдЗрдирдореЗрдВ рд╕реЗ рдХрдИ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛ рд░рд╣реА рд╣реИрдВ:

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory

рдФрд░ рдЕрдВрдд рдореЗрдВ рдзрд╛рд╡рдХ рдХреА рдореГрддреНрдпреБ рд╣реЛ рдЬрд╛рддреА рд╣реИред

рдореЗрд░рд╛ рд╡рд┐рд╡рд░рдг:

> npx envinfo --preset jest

  System:
    OS: macOS 10.15.4
    CPU: (8) x64 Intel(R) Core(TM) i5-8279U CPU @ 2.40GHz
  Binaries:
    Node: 10.17.0 - ~/.nvm/versions/node/v10.17.0/bin/node
    Yarn: 1.22.4 - /usr/local/bin/yarn
    npm: 6.14.4 - ~/.nvm/versions/node/v10.17.0/bin/npm
  npmPackages:
    jest: ^26.0.0-alpha.0 => 26.0.0-alpha.0 

рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдкреВрд░реНрдг рд╕реНрдЯреИрдХ рдпрд╣рд╛рдВ рджрд┐рдП рдЧрдП рд╣реИрдВ:

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
 1: 0x10003d041 node::Abort() [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 2: 0x10003d24b node::OnFatalError(char const*, char const*) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 3: 0x1001b8e25 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 4: 0x100586d82 v8::internal::Heap::FatalProcessOutOfMemory(char const*) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 5: 0x100589855 v8::internal::Heap::CheckIneffectiveMarkCompact(unsigned long, double) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 6: 0x1005856ff v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 7: 0x1005838d4 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 8: 0x10059016c v8::internal::Heap::AllocateRawWithLigthRetry(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 9: 0x1005901ef v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
10: 0x10055fb34 v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationSpace) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
11: 0x1007e7e14 v8::internal::Runtime_AllocateInNewSpace(int, v8::internal::Object**, v8::internal::Isolate*) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
12: 0x3f82f50dbe3d 
13: 0x3f82f5c630de 
14: 0x3f82f5c94431 
15: 0x3f82f5c7d3be 
16: 0x3f82f5c4e98b 
17: 0x3f82f5c3c38e 

<--- Last few GCs --->

[50818:0x102804000]   189738 ms: Mark-sweep 1288.8 (1450.6) -> 1280.2 (1454.1) MB, 890.1 / 0.1 ms  (average mu = 0.181, current mu = 0.061) allocation failure scavenge might not succeed
[50818:0x102804000]   190673 ms: Mark-sweep 1292.8 (1454.1) -> 1282.9 (1457.6) MB, 856.2 / 0.2 ms  (average mu = 0.136, current mu = 0.084) allocation failure scavenge might not succeed


<--- JS stacktrace --->

==== JS stack trace =========================================

    0: ExitFrame [pc: 0x3f82f50dbe3d]
Security context: 0x274d67c9e6e9 <JSObject>
    1: createImpl [0x274d6d9ba1b9] [/Users/evhaus/Git/zenhub/client/node_modules/jsdom/lib/jsdom/living/generated/HTMLInputElement.js:~47] [pc=0x3f82f5c630de](this=0x274d51911261 <Object map = 0x274dd51fe489>,globalObject=0x274d89d38609 <Window map = 0x274d2fe6c211>,constructorArgs=0x274d832134b1 <JSArray[0]>,privateData=0x274d832134d1 <Object map = 0x274d69...

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
 1: 0x10003d041 node::Abort() [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 2: 0x10003d24b node::OnFatalError(char const*, char const*) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 3: 0x1001b8e25 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 4: 0x100586d82 v8::internal::Heap::FatalProcessOutOfMemory(char const*) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 5: 0x100589855 v8::internal::Heap::CheckIneffectiveMarkCompact(unsigned long, double) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 6: 0x1005856ff v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 7: 0x1005838d4 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 8: 0x10059016c v8::internal::Heap::AllocateRawWithLigthRetry(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 9: 0x1005901ef v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
10: 0x10055fb34 v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationSpace) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
11: 0x1007e7e14 v8::internal::Runtime_AllocateInNewSpace(int, v8::internal::Object**, v8::internal::Isolate*) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
12: 0x2cea552dbe3d 
13: 0x2cea55937c04 
14: 0x2cea5592618b 

<--- Last few GCs --->

[51263:0x102804000]    34292 ms: Mark-sweep 1332.4 (1452.5) -> 1320.5 (1453.5) MB, 902.6 / 0.0 ms  (average mu = 0.149, current mu = 0.104) allocation failure scavenge might not succeed
[51263:0x102804000]    35480 ms: Mark-sweep 1332.6 (1453.5) -> 1323.6 (1457.5) MB, 1049.3 / 0.0 ms  (average mu = 0.131, current mu = 0.116) allocation failure scavenge might not succeed


<--- JS stacktrace --->

==== JS stack trace =========================================

    0: ExitFrame [pc: 0x2cea552dbe3d]
Security context: 0x1a4cb371e6e9 <JSObject>
    1: next [0x1a4ca627dcd1] [/Users/evhaus/Git/zenhub/client/node_modules/symbol-tree/lib/TreeIterator.js:~16] [pc=0x2cea55937c04](this=0x1a4c807c75b1 <TreeIterator map = 0x1a4c38b8a9c9>)
    2: shadowIncludingInclusiveDescendantsIterator(aka shadowIncludingInclusiveDescendantsIterator) [0x1a4ca627a641] [/Users/evhaus/Git/zenhub/client/node_modules/jsdom/li...

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
 1: 0x10003d041 node::Abort() [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 2: 0x10003d24b node::OnFatalError(char const*, char const*) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 3: 0x1001b8e25 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 4: 0x100586d82 v8::internal::Heap::FatalProcessOutOfMemory(char const*) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 5: 0x100589855 v8::internal::Heap::CheckIneffectiveMarkCompact(unsigned long, double) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 6: 0x1005856ff v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 7: 0x1005838d4 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 8: 0x10059016c v8::internal::Heap::AllocateRawWithLigthRetry(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 9: 0x1005901ef v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
10: 0x10055fb34 v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationSpace) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
11: 0x1007e7e14 v8::internal::Runtime_AllocateInNewSpace(int, v8::internal::Object**, v8::internal::Isolate*) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
12: 0x3e0d8aedbe3d 
13: 0x3e0d8b35eedc 

<--- Last few GCs --->

[51519:0x102804000]    28074 ms: Mark-sweep 1324.5 (1445.0) -> 1315.7 (1449.0) MB, 760.4 / 0.0 ms  (average mu = 0.182, current mu = 0.080) allocation failure scavenge might not succeed
[51519:0x102804000]    28906 ms: Mark-sweep 1328.5 (1449.0) -> 1317.7 (1452.0) MB, 770.4 / 0.0 ms  (average mu = 0.129, current mu = 0.074) allocation failure scavenge might not succeed


<--- JS stacktrace --->

==== JS stack trace =========================================

    0: ExitFrame [pc: 0x3e0d8aedbe3d]
Security context: 0x3611d141e6e9 <JSObject>
    1: queueMutationRecord(aka queueMutationRecord) [0x361185f32321] [/Users/evhaus/Git/zenhub/client/node_modules/jsdom/lib/jsdom/living/helpers/mutation-observers.js:~33] [pc=0x3e0d8b35eedc](this=0x361116e826f1 <undefined>,type=0x3611aa0a3681 <String[9]: childList>,target=0x36110b275a91 <EventTargetImpl map = 0x3611a254a2f1>,name=0x361116e822b1 <null>,name...

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
 1: 0x10003d041 node::Abort() [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 2: 0x10003d24b node::OnFatalError(char const*, char const*) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 3: 0x1001b8e25 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 4: 0x100586d82 v8::internal::Heap::FatalProcessOutOfMemory(char const*) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 5: 0x100589855 v8::internal::Heap::CheckIneffectiveMarkCompact(unsigned long, double) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 6: 0x1005856ff v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 7: 0x1005838d4 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 8: 0x10059016c v8::internal::Heap::AllocateRawWithLigthRetry(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
 9: 0x1005901ef v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
10: 0x10055fb34 v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationSpace) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
11: 0x1007e7e14 v8::internal::Runtime_AllocateInNewSpace(int, v8::internal::Object**, v8::internal::Isolate*) [/Users/evhaus/.nvm/versions/node/v10.17.0/bin/node]
12: 0x8d8aedbe3d 
<--- Last few GCs --->

[51526:0x102804000]    33125 ms: Mark-sweep 1318.6 (1425.0) -> 1317.7 (1424.0) MB, 874.8 / 0.0 ms  (average mu = 0.126, current mu = 0.038) allocation failure scavenge might not succeed
[51526:0x102804000]    33136 ms: Scavenge 1318.5 (1424.0) -> 1318.0 (1424.5) MB, 3.8 / 0.0 ms  (average mu = 0.126, current mu = 0.038) allocation failure 
[51526:0x102804000]    33148 ms: Scavenge 1318.7 (1424.5) -> 1318.2 (1425.0) MB, 4.2 / 0.0 ms  (average mu = 0.126, current mu = 0.038) allocation failure 


<--- JS stacktrace --->

==== JS stack trace =========================================

    0: ExitFrame [pc: 0x8d8aedbe3d]
    1: StubFrame [pc: 0x8d8ae8d40b]
    2: ConstructFrame [pc: 0x8d8ae8cfa3]
Security context: 0x3324ecd9e6e9 <JSObject>
    3: new NodeImpl(aka NodeImpl) [0x3324c2083e11] [/Users/evhaus/Git/zenhub/client/node_modules/jsdom/lib/jsdom/living/nodes/Node-impl.js:~125] [pc=0x8d8b357fd4](this=0x332437582801 <the_hole>,globalObject=0x3324b10f98e9 <Window map = 0x3324649cf0a1>,args=0x3324b1841471 <JSArray[0]>,...

рдмрд╣реБрдд рдмреБрд░рд╛ рдХреНрдпрд╛ рдпрд╣ рдХрд╡рд░реЗрдЬ рдХреЗ рд╕рд╛рде рдпрд╛ рдмрд┐рдирд╛ рдХрд╡рд░реЗрдЬ рдХреЗ рд╣реИ?

рд╡рд╣ рдХрд╡рд░реЗрдЬ рдХреЗ рдмрд┐рдирд╛ рдерд╛ред рд╕реНрдкрд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред

рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдиреЛрдб рдХрд╛ рдХрд╛рдлреА рдкреБрд░рд╛рдирд╛ рд╕рдВрд╕реНрдХрд░рдг рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ (v10) рдЗрд╕рдореЗрдВ рдХрд╛рд░рдХ рд╣реЛрдЧрд╛?

рдЖрдк рдирдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрджрд┐ рдФрд░ рдХреБрдЫ рдирд╣реАрдВ рддреЛ рдпрд╣ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдбреЗрдЯрд╛ рдмрд┐рдВрджреБ рд╣реЛрдЧрд╛ред рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдЪреАрдЬреЗрдВ рдорд░рдиреЗ рд╕реЗ рдареАрдХ рдкрд╣рд▓реЗ рдвреЗрд░ рдбрдВрдк рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рд╣реИред рдвреЗрд░ рдкрд░ рдХреНрдпрд╛ рд╣реИ?

рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдиреЗ рднреА рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдХрд┐ рдорд╛рдЗрдХреНрд░реЛрдореИрдЪ@4 рдЕрдм рд░реЗрдЧреЗрдХреНрд╕рдкреНрд╕ рдХреЛ рдХреИрд╢ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рджреЗрдЦреЗрдВ https://github.com/micromatch/micromatch/pull/151 рдФрд░ https://github.com/facebook/jest/pull/10131 рд▓рд╛рдкрддрд╛ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддрд╛ рд╣реИ рдордЬрд╝рд╛рдХ рдкрдХреНрд╖ рдкрд░ рдХреИрд╢рд┐рдВрдЧред

рдореЗрд░реЗ рд▓рд┐рдП micromatch@3 рдореЗрдВ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХрд░реЗрдВ рдФрд░ jest-environment-jsdom-sixteen рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ рдЬрд┐рд╕рд╕реЗ 50% рд╕рдордп рдХреА рдмрдЪрдд рд╣реБрдИред
рд▓реЗрдХрд┐рди рдЬреЗрд╕реНрдЯ 26 рдФрд░ рдмрд┐рд▓реНрдЯ-рдЗрди jsdom рдХреЗ рд╕рд╛рде рдореБрдЭреЗ рдЕрднреА рднреА рд▓реАрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИ рдЬрдм рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ --detectLeaks рдХреЗ рд╕рд╛рде рдЬреЗрд╕реНрдЯ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддрд╛рдЬрд╛ рд░реЗрдкреЛ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рд╕рднреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

https://github.com/facebook/jest/pull/10131 рд╡рд┐рд▓рдп рд╣реЛ рдЧрдпрд╛ рд╣реИ !! <3

26.1.0 рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛, рдЕрдЧрд░ рдпрд╣ рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИ рддреЛ рд╕реБрдирдиреЗ рдореЗрдВ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ

@SimenB рд░рд┐рд▓реАрдЬ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж! рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рд╣рдорд╛рд░реА рддрд░рдл рд╕реЗ рд╣рдо рдЕрднреА рднреА рдПрдХ рдмрдбрд╝реЗ рдЕрдВрддрд░ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:

рд╡рд░реНрддрдорд╛рди:

os: osx
node: 12.6.1
jest: 24.9
-----------------
174 test suites
823 tests
322 snapshots
-----------------
done in 23.569s

24.9 . рд╕реЗ рдЕрдзрд┐рдХ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрд╕реНрдХрд░рдг рдкрд░

os: osx
node: 12.6.1
jest: 26.1.0
-----------------
174 test suites
823 tests
322 snapshots
-----------------
done in 133.763s

рджреЛрдиреЛрдВ рддрд╛рдЬрд╛ рдХреИрд╢ рдХреЗ рд╕рд╛рде рдФрд░ рд╕рднреА рдиреЛрдб рдореЙрдбреНрдпреВрд▓ рдХреЗ рдкреВрд░реНрдг рдкреБрдирд░реНрд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рджред рдЕрдЫреВрддрд╛ рд╡рд┐рдиреНрдпрд╛рд╕ред
рдШрдбрд╝реА рдореЛрдб рдкрд░ рдкрд░реАрдХреНрд╖рдг рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреМрди рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдирд╛ рд╣реИ, рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдореЗрд░реА рдорд╢реАрди рдкрд░ 3 рдорд┐рдирдЯ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреБрдирд░реБрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЕрд▓рдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдореБрдЭреЗ рдХреБрдЫ рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реЛрдЧреАред рдЖрдкрдиреЗ рдЙрд╕рдореЗрдВ рдЬреЛ рднреА рдХрд╛рдо рдХрд┐рдпрд╛ рдЙрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

@ рд╕рд┐рдореЗрдирдмреА

prettier рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП, рдХрд╡рд░реЗрдЬ рдПрдХрддреНрд░ рдХрд░рддреЗ рд╕рдордп рдЕрднреА рднреА v24 рд╕реЗ рдзреАрдорд╛ рд╣реИред

image

image

https://github.com/prettier/prettier/pull/8636

рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдмрд┐рдЯрдмрдХреЗрдЯ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдкрд░ рд╕рдВрд╕реНрдХрд░рдг 25 рдФрд░ 26 рдкреНрд░рджрд░реНрд╢рди 24 рд╕реЗ рдХрдо рд╣реИрдВред рдореИрдВрдиреЗ рдпрд╣ рднреА рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдХрд╡рд░реЗрдЬ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рд╕реЗ рд╕реБрд╕реНрддреА рдмрдврд╝ рдЬрд╛рддреА рд╣реИред рд╕рдВрд╕реНрдХрд░рдг 25 26 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдФрд░ рднреА рдЦрд░рд╛рдм рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдореЗрдореЛрд░реА рдЦрдкрдд рдХреЗ рдХрд╛рд░рдг рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддреА рд╣реИред

@SimenB рдореИрдВрдиреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП git bisect рдХрд┐рдпрд╛ рдХрд┐ 24.9 рдФрд░ 25.1 рдХреЗ рдмреАрдЪ рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рддрд┐рдЧрдорди рдХрд╣рд╛рдБ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореИрдВрдиреЗ рд╕реБрдВрджрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ 24.9 рд╕реЗ 26.1 рддрдХ рд╕рднреА рддрд░рд╣ рд╕реЗ рд╕рдВрд╢реЛрдзрди рдХреЗ рдмрд┐рдирд╛ рдЪрд▓рддреЗ рд╣реИрдВред

рдореИрдВрдиреЗ рдЕрдХреНрд╖рдо рдХреИрд╢ рдХреЗ рд╕рд╛рде рдЬреЗрдПрд╕ рд╕рдмрд╕реЗрдЯ (рдХреБрдЫ рд╕рдордп рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП) рдХреЗ рддреАрди рд░рдиреЛрдВ рдХреЗ рд╕рдВрдЪрд┐рдд рд░рдирдЯрд╛рдЗрдо рдХреА рддреБрд▓рдирд╛ рдХреАред рдЕрдзрд┐рдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХрдорд╛рдВрдб ( yarn run jest --no-cache tests/js/ ) рдиреЛрдб 10.19.5 рдХреЗ рд╕рд╛рде рдереАред рдХреНрдпреЛрдВрдХрд┐ рдиреЛрдб 10 24.9 рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╢рдВрд╕рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдерд╛ред

рдкрд░рд┐рдгрд╛рдо:

24.9.0-dev 3cdbd556948b4974b2cc23178977eb159d343df8 151.84s <- Good
25.1.0-dev 5dcc48075f22d581864f381f20bc8b257d2a73cd 223.29s <- Bad
24.9.0-dev bf6109591365a2b71c7b642fa33ed06d3db6cb26 122.58s
24.9.0-dev 77c3ceedfd61ddc841e11fec7b76e540924d3e60 120.42s
24.9.0-dev 30e08e9ae7d7d78f40df757c2ec4b49357285eda 221.28s
24.9.0-dev ad5377333daf6716af3465bba39f86b7db485e2b 222.33s
24.9.0-dev 8ddadfca76eb3fb979df81033d3d0ff564c415d6 120.32s
24.9.0-dev 966f22f2a08d9ac9300b6964ab91c4e75dba4761 120.46s
24.9.0-dev b9084101189639524863e15ef7557ea6bc6704b9 119.87s
24.9.0-dev 1d8245d77d47b4198d51e55da87893d7dfe1a759 129.93s

ad5377333daf6716af3465bba39f86b7db485e2b is the first bad commit
commit ad5377333daf6716af3465bba39f86b7db485e2b
Author: Simen Bekkhus <[email protected]>
Date:   Mon Dec 2 23:20:16 2019 +0100

    feat: add support for `compileFunction` allowing us to avoid the module wrapper (#9252)

рдЪреВрдВрдХрд┐ compileFunction рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддреЛ рдПрдХ рдлреЙрд▓рдмреИрдХ рд╣реИ, compileFunction рдореИрдВрдиреЗ

26.1 рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдХреЛрдб рдереЛрдбрд╝рд╛ рдЗрдзрд░-рдЙрдзрд░ рд╣реЛ рдЧрдпрд╛ рд╣реИ рд▓реЗрдХрд┐рди compileFunction рдФрд░ рдХрдорд┐рдпрд╛рдВ рдЕрднреА рднреА рд╣реИрдВред рдЗрд╕рд▓рд┐рдП:

26.1.0-dev 817d8b6aca845dd4fcfd7f8316293e69f3a116c5 242.99s <- with compileFunction
26.1.0-dev 817d8b6aca845dd4fcfd7f8316293e69f3a116c5 151.61s <- without compileFunction

рдпрд╛рдиреА compileFunction рд╢рд╛рдЦрд╛ ( рдкреИрдЪ ) рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ 26.1 24.9 рдХреЗ рд░рдирдЯрд╛рдЗрдо рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реИред

рдПрдХ рдЕрдиреНрдп рдбреЗрдЯрд╛ рдмрд┐рдВрджреБ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдорд╛рд░реЗ рдЬреЗрд╕реНрдЯ рд╕реВрдЯ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ [email protected] рдХреЗ рд╕рд╛рде рд▓рдЧрднрдЧ 2767 рд╕реЗрдХрдВрдб рд╣рдорд╛рд░реЗ рдЕрдкрдбреЗрдЯ MR рдореЗрдВ рд▓рдЧрднрдЧ 3497 рд╕реЗрдХрдВрдб рд▓рдЧрддреЗ рд╣реИрдВ, рд▓рдЧрднрдЧ 27% рдХреА рд╡реГрджреНрдзрд┐ред

рд╕рднреА рдорд╣рд╛рди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЬреЗрд╕реНрдЯ рдЯреАрдо, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ @wurstbonbon рдХреЗ рдЬрд╛рд╕реВрд╕реА рдХреМрд╢рд▓ рдЖрдкрдХреЛ рдЙрд╕ рдкреНрд░рддрд┐рдЧрдорди рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ!

@wurstbonbon рдЦреБрджрд╛рдИ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ compileFunction рдзреАрдорд╛ рд╣реИ... рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЖрдк рдкреИрдЪ рд▓рдЧрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХреЗрд╡рд▓ рдПрдХ рдХрд╕реНрдЯрдо рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

const NodeEnv = require('jest-environment-node');

class MyNodeEnv extends NodeEnv {}

delete MyNodeEnv.prototype.compileFunction;

module.exports = MyNodeEnv;

(рдФрд░ jsdom env рдХреЗ рд▓рд┐рдП рднреА рдпрд╣реА)ред рдХреНрдпрд╛ рдЖрдк рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?


рдпрд╣ рдПрдХ рдРрд╕реА рдЕрдбрд╝рдЪрди рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ - рдиреЛрдб рдиреЗ 18 рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рдерд╛: https://github.com/nodejs/node/pull/21573ред рддреЛ рд╢рд╛рдпрдж рдпрд╣ рдХреБрдЫ рдЕрдЬреАрдм рд╣реИ рдЬреЛ рд╣рдо рдЕрдкрдиреА рддрд░рдл рд╕реЗ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд▓рд┐рдВрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ https://github.com/nodejs/node/issues/26229 рд╣рд╛рд▓рд╛рдВрдХрд┐ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ - рд╢рд╛рдпрдж рд╣рдореЗрдВ рдЕрдкрдиреА рддрд░рдл рд╕реЗ рдХреБрдЫ рдФрд░ рдХреИрд╢рд┐рдВрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?

@ рд╕рд┐рдореЗрдирдмреА рдореИрдВрдиреЗ рдмрд╕ рдЙрд╕ рдХрд╕реНрдЯрдо рдПрдирд╡реА рдХреЗ рд╕рдорд╛рди рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдереЛрдбрд╝рд╛ рдмреЗрд╣рддрд░ рдерд╛ (рд▓реЗрдХрд┐рди рдЕрднреА рднреА рдЬреЗрд╕реНрдЯ 24 рд╕реЗ рдзреАрдорд╛)ред

рдореБрдЭреЗ MyNodeEnv.prototype.getVmContext = null; , рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЬреЗрд╕реНрдЯ 26 рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ if (typeof this._environment.getVmContext === 'function') { рдЕрднреА рдЬрд╛рдВрдЪрддрд╛ рд╣реИред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдиреНрдп рдореБрджреНрджреЛрдВ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИ, рдпрджреНрдпрдкрд┐ред

рдХреБрдЫ рд░рдиреЛрдВ рдХреЗ рдмрд╛рдж рдореИрдВ рдпреЗ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ:

рдЬреЗрд╕реНрдЯ 26 w/testEnvironment: "рдиреЛрдб" => ~280s
рдЬреЗрд╕реНрдЯ 26 w/рдХрд╕реНрдЯрдо рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг => ~210s
рдЬреЗрд╕реНрдЯ 24 => ~160s

рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдХрд┐рд╕реА рдЕрдиреНрдп рдЬрд╛рдирдХрд╛рд░реА рдпрд╛ рдХреБрдЫ рдФрд░ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ!

рдЬреИрд╕рд╛ рдХрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рдерд╛ рдХрд╕реНрдЯрдо рдПрдирд╡реА рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░реАрдЯрд┐рдпрд░ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдЧрддрд┐ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдкрдиреЗ рдХреЛрдбрдмреЗрд╕ рдкрд░ рднреА рдЖрдЬрдорд╛рдпрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЕрдВрддрд░ ~ 270 рдмрдирд╛рдо ~ 200 рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЗрд╡рд▓ 25% рдФрд░ 40% рдХреА рдХрдореА рдирд╣реАрдВ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдореИрдВ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдЬреЗрд╕реНрдЯ 24 рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЪрд▓рд╛ рд╕рдХрддрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдирдП рдЖрдзреБрдирд┐рдХ рдЯрд╛рдЗрдорд░ рдХрд╛ рдордЬрд╝рд╛рдХ рдЙрдбрд╝рд╛рддреЗ рд╣реБрдП рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред

рдореБрдЭреЗ рдЙрдкрд░реЛрдХреНрдд рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ delete рдпрд╛рдж рдЖрдпрд╛, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред


рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рд╕рдВрдХрд▓рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХреИрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ - рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдкреИрдЪ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? (рджреЛрдиреЛрдВ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓реНрдб рдЬреЗрдПрд╕ рдФрд░ рдЯреАрдПрд╕ рд╕реНрд░реЛрдд рдпрд╣рд╛рдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ)

diff --git i/packages/jest-runtime/build/index.js w/packages/jest-runtime/build/index.js
index 1d094a6dc0..f6d059caa3 100644
--- i/packages/jest-runtime/build/index.js
+++ w/packages/jest-runtime/build/index.js
@@ -267,6 +267,7 @@ const getModuleNameMapper = config => {
 const unmockRegExpCache = new WeakMap();
 const EVAL_RESULT_VARIABLE = 'Object.<anonymous>';
 const runtimeSupportsVmModules = typeof _vm().SyntheticModule === 'function';
+const compiledFunctionCache = new Map();
 /* eslint-disable-next-line no-redeclare */

 class Runtime {
@@ -1169,23 +1170,30 @@ class Runtime {
       value: this._createRequireImplementation(localModule, options)
     });
     const transformedCode = this.transformFile(filename, options);
-    let compiledFunction = null; // Use this if available instead of deprecated `JestEnvironment.runScript`
+    let compiledFunction = undefined; // Use this if available instead of deprecated `JestEnvironment.runScript`

     if (typeof this._environment.getVmContext === 'function') {
       const vmContext = this._environment.getVmContext();

       if (vmContext) {
-        try {
-          compiledFunction = (0, _vm().compileFunction)(
-            transformedCode,
-            this.constructInjectedModuleParameters(),
-            {
-              filename,
-              parsingContext: vmContext
-            }
-          );
-        } catch (e) {
-          throw (0, _transform().handlePotentialSyntaxError)(e);
+        const params = this.constructInjectedModuleParameters();
+        const cacheKey = transformedCode + params;
+        compiledFunction = compiledFunctionCache.get(cacheKey);
+
+        if (!compiledFunction) {
+          try {
+            compiledFunction = (0, _vm().compileFunction)(
+              transformedCode,
+              params,
+              {
+                filename,
+                parsingContext: vmContext
+              }
+            );
+            compiledFunctionCache.set(cacheKey, compiledFunction);
+          } catch (e) {
+            throw (0, _transform().handlePotentialSyntaxError)(e);
+          }
         }
       }
     } else {
@@ -1194,13 +1202,13 @@ class Runtime {
       const runScript = this._environment.runScript(script);

       if (runScript === null) {
-        compiledFunction = null;
+        compiledFunction = undefined;
       } else {
         compiledFunction = runScript[EVAL_RESULT_VARIABLE];
       }
     }

-    if (compiledFunction === null) {
+    if (!compiledFunction) {
       this._logFormattedReferenceError(
         'You are trying to `import` a file after the Jest environment has been torn down.'
       );
diff --git i/packages/jest-runtime/src/index.ts w/packages/jest-runtime/src/index.ts
index 522adabd1e..8958a4cef8 100644
--- i/packages/jest-runtime/src/index.ts
+++ w/packages/jest-runtime/src/index.ts
@@ -137,6 +137,8 @@ type RunScriptEvalResult = {[EVAL_RESULT_VARIABLE]: ModuleWrapper};

 const runtimeSupportsVmModules = typeof SyntheticModule === 'function';

+const compiledFunctionCache = new Map<string, ModuleWrapper>();
+
 /* eslint-disable-next-line no-redeclare */
 class Runtime {
   private _cacheFS: StringMap;
@@ -1000,24 +1002,29 @@ class Runtime {

     const transformedCode = this.transformFile(filename, options);

-    let compiledFunction: ModuleWrapper | null = null;
+    let compiledFunction: ModuleWrapper | undefined = undefined;

     // Use this if available instead of deprecated `JestEnvironment.runScript`
     if (typeof this._environment.getVmContext === 'function') {
       const vmContext = this._environment.getVmContext();

       if (vmContext) {
-        try {
-          compiledFunction = compileFunction(
-            transformedCode,
-            this.constructInjectedModuleParameters(),
-            {
+        const params = this.constructInjectedModuleParameters();
+
+        const cacheKey = transformedCode + params;
+
+        compiledFunction = compiledFunctionCache.get(cacheKey);
+
+        if (!compiledFunction) {
+          try {
+            compiledFunction = compileFunction(transformedCode, params, {
               filename,
               parsingContext: vmContext,
-            },
-          ) as ModuleWrapper;
-        } catch (e) {
-          throw handlePotentialSyntaxError(e);
+            }) as ModuleWrapper;
+            compiledFunctionCache.set(cacheKey, compiledFunction);
+          } catch (e) {
+            throw handlePotentialSyntaxError(e);
+          }
         }
       }
     } else {
@@ -1028,13 +1035,13 @@ class Runtime {
       );

       if (runScript === null) {
-        compiledFunction = null;
+        compiledFunction = undefined;
       } else {
         compiledFunction = runScript[EVAL_RESULT_VARIABLE];
       }
     }

-    if (compiledFunction === null) {
+    if (!compiledFunction) {
       this._logFormattedReferenceError(
         'You are trying to `import` a file after the Jest environment has been torn down.',
       );

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдирд╣реАрдВ, рдпрд╣ рдмреБрд░реА рддрд░рд╣ рд╕реЗ рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ рдореИрдВрдиреЗ рдиреЛрдб рдореБрджреНрджреЗ рдореЗрдВ рдкреВрдЫрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╕рдВрдХрд▓рди рдХреИрд╢ рдХреЛ рдкреЙрдкреНрдпреБрд▓реЗрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ

рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдпрд╣ рдЪрд╛рд▓ рдЪрд▓ рд╕рдХрддреА рд╣реИред

const params = this.constructInjectedModuleParameters();
const cacheKey = transformedCode + params;
const cachedData = compileFunctionCache.get(cacheKey);

try {
  compiledFunction = (0, _vm().compileFunction)(
    transformedCode,
    params,
    {
      filename,
      parsingContext: vmContext,
      cachedData,
      produceCachedData: !cachedData,
    },
  );

  if (compiledFunction.cachedDataProduced) {
    compileFunctionCache.set(cacheKey, compiledFunction.cachedData);
  } 
} catch (e) {
  throw (0, _transform().handlePotentialSyntaxError)(e);
}

рдпрд╣ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди Script рдЕрднреА рднреА рдмрд╣реБрдд рддреЗрдЬ рд╣реИред

@SimenB рд╕реЗ рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/33252/diffs?commit_id=6d633c88caf70f712fa0ccaac42d952976161ec6

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдиреЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛, рдпрд╣ рдЕрднреА рднреА рдЬреЗрд╕реНрдЯ 24.x рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╛рдлреА рдзреАрдорд╛ рд╣реИ:

  • рдЬреЗрд╕реНрдЯ 24.x: 2580 рд╕реЗрдХрдВрдб рд╣рдорд╛рд░реЗ рдЬреЗрд╕реНрдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдХреБрд▓ рд░рдирдЯрд╛рдЗрдо
  • рдЬреЗрд╕реНрдЯ 26.рдПрдХреНрд╕: 3166 рд╕реЗрдХрдВрдб рд╣рдорд╛рд░реЗ рдЬреЗрд╕реНрдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдХреБрд▓ рд░рдирдЯрд╛рдЗрдо

@leipert рдХреНрдпрд╛ рдЖрдкрдиреЗ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ jsdom рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ 14 рдореЗрдВ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ?

yarn add test-environment-jsdom-fourteen --dev + "testEnvironment": "test-environment-jsdom-fourteen" рдЖрдкрдХреЗ рдЬреЗрд╕реНрдЯ рдХреЙрдиреНрдлрд┐рдЧрд░ рдореЗрдВред рдпрд╣ рдЕрднреА рднреА рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЕрд╡рдзрд┐ рд╡реГрджреНрдзрд┐ рдХреЗ рдмрдбрд╝реЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ (40-50% рдЬреЛрдбрд╝рддрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрдиреЗ рд▓рдЧрд╛ рд╣реИ рдХрд┐ рдЦреЗрд▓ рдореЗрдВ рдХрдИ рдкреНрд░рддрд┐рдЧрдорди рд╣реИрдВред

@pleunv jest jest-environment-jsdom-sixteen рд╕рд╛рде jsdom 16 рдкрд░ рд╣реИрдВ, рд╣рдореЗрдВ рд╡реЗрдм рдШрдЯрдХреЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде рдХреБрдЫ рдореБрджреНрджреЛрдВ рдХреЗ рдХрд╛рд░рдг рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдЗрд╕рд▓рд┐рдП рд╣рдо рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдмрджрд▓рд╛рд╡ рдХрд░рддреЗ рд╣реИрдВ: jest 24.x + jest-environment-jsdom-sixteen -> jest.26x + jest-environment-jsdom , рдЗрд╕рд▓рд┐рдП jsdom рд╕рдВрд╕реНрдХрд░рдг рднреА рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред

@wurstbonbon рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ https://github.com/nodejs/node/issues/35375 рдЕрдкрд╕реНрдЯреНрд░реАрдо рдЦреЛрд▓рд╛ рдЧрдпрд╛

@SimenB рдХреНрдпрд╛ рдЖрдк https://github.com/micromatch/micromatch/issues/179 рдЕрднреА рднреА рдЦреБрд▓реЗ рд╣реИрдВред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ, рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдорд┐рдирд┐рдореИрдЪ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╣реЛрдЧрд╛

@SimenB рдорд╛рдЗрдХреНрд░реЛрдореИрдЪ рдХреЛ рд╕рднреА рд╡рд┐рдХрд▓реНрдкреЛрдВ рд╕реЗ рдмреЗрд╣рддрд░ рдХреНрдпрд╛ рдмрдирд╛рддрд╛ рд╣реИ?

рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЦреЛрд▓реЗ рдЧрдП рдореБрджреНрджреЗ рдореЗрдВ рдлреАрдбрдмреИрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рд╣рдореЗрдВ рдЕрднреА рдХреЗ рд▓рд┐рдП Script рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреЛрдб рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╛ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

@leipert @wurstbonbon рдпрд╛ рдХреЛрдИ рдФрд░, рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдкреИрдЪ рдХреЛ рдЕрдкрдиреЗ node_modules/jest-runtime/build/index.js рдореЗрдВ рдЖрдЬрд╝рдорд╛ рд╕рдХрддреЗ рд╣реИрдВ?

diff --git i/packages/jest-runtime/build/index.js w/packages/jest-runtime/build/index.js
index 851d8e12cd..7235082546 100644
--- i/packages/jest-runtime/build/index.js
+++ w/packages/jest-runtime/build/index.js
@@ -1170,35 +1170,24 @@ class Runtime {
       value: this._createRequireImplementation(localModule, options)
     });
     const transformedCode = this.transformFile(filename, options);
-    let compiledFunction = null; // Use this if available instead of deprecated `JestEnvironment.runScript`
+    let compiledFunction = null;
+    const script = this.createScriptFromCode(transformedCode, filename);
+    let runScript = null; // Use this if available instead of deprecated `JestEnvironment.runScript`

     if (typeof this._environment.getVmContext === 'function') {
       const vmContext = this._environment.getVmContext();

       if (vmContext) {
-        try {
-          compiledFunction = (0, _vm().compileFunction)(
-            transformedCode,
-            this.constructInjectedModuleParameters(),
-            {
-              filename,
-              parsingContext: vmContext
-            }
-          );
-        } catch (e) {
-          throw (0, _transform().handlePotentialSyntaxError)(e);
-        }
+        runScript = script.runInContext(vmContext, {
+          filename
+        });
       }
     } else {
-      const script = this.createScriptFromCode(transformedCode, filename);
-
-      const runScript = this._environment.runScript(script);
+      runScript = this._environment.runScript(script);
+    }

-      if (runScript === null) {
-        compiledFunction = null;
-      } else {
-        compiledFunction = runScript[EVAL_RESULT_VARIABLE];
-      }
+    if (runScript !== null) {
+      compiledFunction = runScript[EVAL_RESULT_VARIABLE];
     }

     if (compiledFunction === null) {

рдореБрдЭреЗ рдпрд╣ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ v8 рдХреЛрдб рдХрд╡рд░реЗрдЬ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдХрд▓ рдпрд╛ рдЕрдЧрд▓реЗ рд╕рдкреНрддрд╛рд╣ рдПрдХ рдкреАрдЖрд░ рдЦреЛрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред

рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдкрд░ Script рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрдЪ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдФрд░ рдпрд╣рд╛рдВ рдкрд░рд┐рдгрд╛рдо рд╣реИ рдЬреЛ рдореИрдВ рдЖрдпрд╛ рдерд╛
рд╕рдордп min:sec

рдирд╛рдо | рд╕реБрдЗрдЯ 1 | рд╕реБрдЗрдЯ 2 | рд╕реБрдЗрдЯ 3 | рд╕реБрдЗрдЯ 4
-- | -- | -- | -- | --
рдордЬрд╝рд╛рдХ 24 | 3:25 | 3:30 | 3:29 | 0:53
рдордЬрд╝рд╛рдХ 26 рдкреИрдЪ | 3:32 | 4:36 | 3:48 | 0:53
рдордЬрд╝рд╛рдХ 26 рдЕрдкреНрд░рдХрд╛рд╢рд┐рдд | 5:10 | 6:12 | 5:11 | 1:07
26 рдкреИрдЪ рдмрдирд╛рдо 24 | 4% | 31% | 9% | 1%
26 рдЕрдкреНрд░рдХрд╛рд╢рд┐рдд рдмрдирд╛рдо 24 | 52% | 76% | 49% | 27%
26 рдкреИрдЪ рдмрдирд╛рдо рдЕрдирдкреИрдЪреНрдб | 46% | 35% | 36% | 25%

рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ | рд╕реБрдЗрдЯ 1 | рд╕реБрдЗрдЯ 2 | рд╕реБрдЗрдЯ 3 | рд╕реБрдЗрдЯ 4
-- | -- | -- | -- | --
рдордЬрд╝рд╛ 24 - 1 | 2:58 | 3:37 | 3:33 | 0:47
рдордЬрд╝рд╛ 24 - 2 | 3:18 | 3:34 | 3:32 | 0:51
рдордЬрд╝рд╛ 24 - 3 | 3:27 | 3:08 | 3:48 | 0:59
рдордЬрд╝рд╛ 24 - 4 | 3:37 | 3:44 | 3:38 | 0:53
рдордЬрд╝рд╛ 24 - 5 | 3:45 | 3:31 | 2:56 | 0:55
рдЬреЗрд╕реНрдЯ 26 рдкреИрдЪ - 1 | 3:42 | 4:31 | 4:08 | 0:57
рдордЬрд╝рд╛рдХ 26 рдкреИрдЪ - 2 | 3:11 | 4:18 | 3:28 | 0:57
рдордЬрд╝рд╛рдХ 26 рдкреИрдЪ - 3 | 3:55 | 5:12 | 3:19 | 0:55
рдЬреЗрд╕реНрдЯ 26 рдкреИрдЪ - 4 | 3:22 | 4:25 | 4:20 | 0:46
рдЬреЗрд╕реНрдЯ 26 рдЕрдкреНрд░рдХрд╛рд╢рд┐рдд - 1 | 4:30 | 6:12 | 4:28 | 1:08
рдЬреЗрд╕реНрдЯ 26 рдЕрдкреНрд░рдХрд╛рд╢рд┐рдд - 2 | 5:16 | 6:17 | 5:18 | 1:05
рдЬрд╕реНрдЯ 26 рдЕрдкреНрд░рдХрд╛рд╢рд┐рдд - 3 | 5:46 | 6:07 | 5:49 | 1:09

рд╕рднреА рдкрд░реАрдХреНрд╖рдг рд╕рдорд╛рди рдкреНрд░рддрд┐рдмрджреНрдз рдФрд░ рд╕рдорд╛рди рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рдкрд░ рдЪрд▓реЗ (Azure DevOps Hosted Ubuntu 18)
рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рдЯреЗрд╕реНрдЯ рд╕реВрдЯ рдкрд░ рдЬреЗрд╕реНрдЯ рдЪрд▓рд╛рдиреЗ рдореЗрдВ рд▓рдЧрдиреЗ рд╡рд╛рд▓рд╛ рд╕рдордп рд▓рд┐рдпрд╛ред
рдореЗрд░реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕реБрдЗрдЯ рдкреНрд░рдХреГрддрд┐ рдореЗрдВ рд╕рдорд╛рди рд╣реИрдВ (рд╕рднреА рдмреИрдХрдПрдВрдб рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг)

рдореИрдВ рдЬреЛ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рдЙрд╕рд╕реЗ Script рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрдЪ рдкреВрд░реНрдг рдкрд░ рдПрдХ рдмрдбрд╝рд╛ рдЕрдВрддрд░ рдбрд╛рд▓рддрд╛ рд╣реИред
рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдмрддрд╛ рд╕рдХрддрд╛ рдХрд┐ Suite 2 рдкрд░ рдордВрджреА рдПрдХ рдмрд╛рд╣рд░реА рдпрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рддрд┐рдЧрдорди рд╣реИ (рдХреЗрд╡рд▓ 4 рд░рди)ред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрднреА рднреА рдПрдХ рдкреВрд░реНрдг рдкреНрд░рддрд┐рдЧрдорди рд╣реИ, рд▓реЗрдХрд┐рди рдЙрддрдирд╛ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИ

рдЕрднреА рднреА рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ v26 рдЕрднреА рднреА v24 рдкрд░ рд╕реБрдзрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ ...

рдзрдиреНрдпрд╡рд╛рдж @ рд╕реЗрд▓реНрдпреВрд▓! рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рд╣реИ - рдЬрдм рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рд╕рдордп рд╣реЛрдЧрд╛ рддреЛ рдореИрдВ рдПрдХ рдкреАрдЖрд░ рдПрдХ рд╕рд╛рде рд░рдЦреВрдВрдЧрд╛

рдЕрджреНрднреБрдд рд╕рд╛рдорд╛рди! рдпрд╣ рдХреЗрд╡рд▓ рдорд╛рдЗрдХреНрд░реЛрдореИрдЪ рдореБрджреНрджрд╛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ, рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд░реЗрдкреЛ рдлрд┐рд░ рд╕реЗ рд╕рдХреНрд░рд┐рдп рд░рдЦрд░рдЦрд╛рд╡ рдХреЗ рддрд╣рдд рдЖрдПрдЧрд╛ред

рдмреАрдЯреАрдбрдмреНрд▓реВ, рдЬреЗрдПрд╕рдбреАрдУрдПрдо рдореЗрдВ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд░рдл рд░рд┐рдЧреНрд░реЗрд╢рди рднреА рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдПрдХ рдмрдбрд╝реЗ рд╡реЗрдм рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдРрд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдПред рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдХреЛрдИ рдкреИрдЪ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдФрд░ рдРрд╕рд╛ рд▓рдЧ рд░рд╣рд╛ рдерд╛ред

Jest 24  (testEnvironment: "jsdom") (no rewires latest CRA)
144.014s

Jest 24 (testEnvironment: "jest-environment-jsdom-sixteen") (rewire latest CRA that changes testEnvironment)
409.473s (also few failed tests)

Jest 26 (testEnvironment: "jsdom") (no rewires latest CRA) so old jsdom? Whatever is the default for Jest 26 I assume? (I used react-app-rewired to rewire jest config and pnpmfile.js to override what version of Jest was installed with `react-scripts` as it still ships Jest 24 (like resolutions in yarn))
310.275s

Jest 26 (testEnvironment: "jest-environment-jsdom-sixteen") (rewire latest CRA that changes testEnvironment + pnpmfile.js)
over 1200s+ (some tests failed plus test run just stuck forever)

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╣ рдПрдХ рд╕реБрдкрд░ рдЕрд╕реНрдкрд╖реНрдЯ рдФрд░ рдЕрд╕реНрдерд┐рд░ рдкреНрд░рджрд░реНрд╢рди рд░рд┐рдкреЛрд░реНрдЯ рд╣реИ рдЬрд┐рд╕реЗ рдореБрдЭреЗ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рд░ рдЗрдирдкреБрдЯ рдорджрдж рдХрд░рддрд╛ рд╣реИ :)

https://github.com/facebook/jest/releases/tag/v26.5.0 рдореЗрдВ vm.Script рдкрд░рд┐рд╡рд░реНрддрди рдкрд░ рдпрд╣рд╛рдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИ

(рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдЕрддрд┐рд░рд┐рдХреНрдд рд░рди рдХреЗ рдмрд╛рдж рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛)

рдПрдХ рд╣реА рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдкрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкрд░рд┐рдгрд╛рдо:

рдЬреЗрд╕реНрдЯ 26.5
рд╢реАрдд: 59.992
рдЧрд░реНрдо: 43.976

рдЬреЗрд╕реНрдЯ 26.4:
рд╢реАрдд: 90.213
рдЧрд░реНрдо: 47.408

рдХреЛрд▓реНрдб рд░рди рдкрд░ рдПрдХ рдмрд╣реБрдд рд╣реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЧрддрд┐ <3

рдФрд░ рдпрд╣рд╛рдБ рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдХреЗ рд╕рд╛рде рдкрд░рд┐рдгрд╛рдо рд╣реИрдВ:

рдЬреЗрд╕реНрдЯ 26.5
рд╢реАрдд: 149s

рдЬреЗрд╕реНрдЯ 26.4
рд╢реАрдд: 226s

рдЕрдЪреНрдЫреА рдЦрдмрд░ ЁЯЩВ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдХреЗрд╡рд▓ рдорд╛рдЗрдХреНрд░реЛрдореИрдЪ рд░рд┐рдЧреНрд░реЗрд╢рди рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЧрдП рд╣реИрдВ, рдлрд┐рд░

рдпрджрд┐ рдЖрдк рд▓реЛрдЧ npm-force-resolutions рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬрдмрд░рджрд╕реНрддреА рдорд╛рдЗрдХреНрд░реЛрдореИрдЪ 3 рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ [email protected] рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

// package.json
  ...
  "preinstall": "npx npm-force-resolutions",
  ..
  "resolutions": {
    "micromatch": "^3.0.0"
  }

рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддреЗ рд╕рдордп рддреНрд░реБрдЯрд┐:

TypeError: _micromatch(...).default.scan is not a function
    at globs.map.glob (/home/travis/build/removed/node_modules/jest-util/build/globsToMatcher.js:65:47)
    at Array.map (<anonymous>)
    at globsToMatcher (/home/travis/build/removed/node_modules/jest-util/build/globsToMatcher.js:61:26)
    at new SearchSource (/home/travis/build/removed/node_modules/@jest/core/build/SearchSource.js:197:49)
    at contexts.map.context (/home/travis/build/removed/node_modules/@jest/core/build/runJest.js:265:16)
    at Array.map (<anonymous>)
    at runJest (/home/travis/build/removed/node_modules/@jest/core/build/runJest.js:264:34)
    at startRun (/home/travis/build/removed/node_modules/@jest/core/build/cli/index.js:479:35)
    at runWithoutWatch (/home/travis/build/removed/node_modules/@jest/core/build/cli/index.js:494:10)
    at _run10000 (/home/travis/build/removed/node_modules/@jest/core/build/cli/index.js:416:13)
npm ERR! Test failed.  See above for more details.

@SimenB рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред [email protected] рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдпрд╣ рд╣рдореЗрдВ рдЯреНрд░реИрд╡рд┐рд╕ рдкрд░ рдЪрд▓рдиреЗ рдХреЗ рд╕рдордп рдХрд╛ 20% рдмрдЪрд╛рддрд╛ рд╣реИ

рд╣рдорд╛рд░реЗ рдкрд░рд┐рдгрд╛рдо:

рдпрд╣ v26.5 . рд╣реИ

  • 323.98s
  • 321.24s

рдпрд╣ рд╡реА24.9 . рд╣реИ

  • 262.17s
  • 275.96s

рдзрдиреНрдпрд╡рд╛рдж @ рд╕рд┐рдореЗрдирдмреА! рдпреЗ рдЕрджреНрднреБрдд рд╣реИред ~2000 рд╕реБрдЗрдЯреНрд╕ рдореЗрдВ рд╣рдорд╛рд░реЗ ~22000 рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд░рд┐рдгрд╛рдо:

  • рдЬреЗрд╕реНрдЯ 24.x: 2864 рд╕реЗрдХрдВрдб
  • рдЬреЗрд╕реНрдЯ 26.5.2: 2967 рдПрд╕

рдЬреЛ рд▓рдЧрднрдЧ 3% рдзреАрдорд╛ рд╣реИ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рд░реНрдЬрд┐рди рдореЗрдВ, ~ 27% рдордВрджреА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╣рдордиреЗ рдкрд╣рд▓реЗ рджреЗрдЦрд╛ рдерд╛ред рдзрдиреНрдпрд╡рд╛рдж, рдЕрдм рд╣рдореЗрдВ рдмрд╕ рдорд░реНрдЬ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/33252#note_425616404

рдмрд╕ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рдЬреЛ "рдореЗрдореЛрд░реА рд╕реЗ рдмрд╛рд╣рд░ рдвреЗрд░" рдореБрджреНрджреЗ рдереЗ, рд╡реЗ рдЬреЗрд╕реНрдЯ 26.5.2 рдФрд░ рдиреЛрдб 14 (рдкрд╣рд▓реЗ рдиреЛрдб 10 рдкрд░ рдереЗ) рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЪрд▓реЗ рдЧрдП рд╣реИрдВред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЬреЗрд╕реНрдЯ рдмрдирд╛рдо рдиреЛрдб рджреНрд╡рд╛рд░рд╛ рдХрд┐рддрдиреА рд╕рдорд╕реНрдпрд╛ рд╣реБрдИ рдереА, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЕрдиреНрдп рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛рдПрдВ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ рддреЛ рджреЛрдиреЛрдВ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

рдЕрджреНрдпрддрди : рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВред рдореБрдЭреЗ рдУрдУрдПрдо рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдлрд┐рд░ рд╕реЗ рдорд┐рд▓рдиреА рд╢реБрд░реВ рд╣реЛ рдЧрдИ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реАрдорд╛ рд░реЗрдЦрд╛ рдкрд░ рд╣реИ рдХрд┐ рдореЗрд░рд╛ рд▓реИрдкрдЯреЙрдк рдХреНрдпрд╛ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдкрд╣рд▓реЗ рдХреБрдЫ рд░рди рдЕрдЪреНрдЫреЗ рдереЗ, рд▓реЗрдХрд┐рди рдЕрдм рдпрд╣ рдлрд┐рд░ рд╕реЗ рдорд░ рд░рд╣рд╛ рд╣реИред рдЕрднреА рднреА 24.xx рд╕реЗ рдЪрд┐рдкрдХреЗ рд░рд╣рдирд╛ рд╣реЛрдЧрд╛ :(

рдЕрдЧрд░ рдХреЛрдИ рджрд┐рд▓рдЪрд╕реНрдкреА рд▓реЗрддрд╛ рд╣реИ, рддреЛ рдореИрдВрдиреЗ рдПрдХ рдбреЛрдо рдмрдирд╛рдпрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЬреЗрдПрд╕рдбреАрдУрдПрдо рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдкреНрд░рджрд░реНрд╢рди рд╣реИред рдЗрд╕рдореЗрдВ рдЬреЗрд╕реНрдЯ рдХрд╛ рд╕рдорд░реНрдерди рд╣реИред

| рдСрдкрд░реЗрд╢рди | рдЬреЗрдПрд╕рдбреАрдУрдПрдо | рд╣реИрдкреНрдкреА рдбреЛрдо |
| ---------------------------------------- | ------- | ------------- |
| рдЖрдпрд╛рдд / рдЖрд╡рд╢реНрдпрдХрддрд╛ | 333 рдПрдордПрд╕ | 45 рдПрдордПрд╕ |
| рдкрд╛рд░реНрд╕ рдПрдЪрдЯреАрдПрдордПрд▓ | 256 рдПрдордПрд╕ | 26 рдПрдордПрд╕ |
| рдПрдЪрдЯреАрдПрдордПрд▓ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ | 65 рдПрдордПрд╕ | 8 рдПрдордПрд╕ |
| рдХрд╕реНрдЯрдо рддрддреНрд╡ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдВ | 214 рдПрдордПрд╕ | 19 рдПрдордПрд╕ |
| querySelectorAll('tagname') | 4.9 рдПрдордПрд╕ | 0.7 рдПрдордПрд╕ |
| querySelectorAll('.class') | 6.4 рдПрдордПрд╕ | 3.7 рдПрдордПрд╕ |
| querySelectorAll('[рд╡рд┐рд╢реЗрд╖рддрд╛]') | 4.0 рдПрдордПрд╕ | 1.7 рдПрдордПрд╕ |
| querySelectorAll('[class~="name"]') | 5.5 рдПрдордПрд╕ | 2.9 рдПрдордПрд╕ |
| querySelectorAll(':nth-child(2n+1)') | 10.4 рдПрдордПрд╕ | 3.8 рдПрдордПрд╕ |

рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ:
https://github.com/capricorn86/happy-dom/

@ рдордХрд░ 86 рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИред рдХреНрдпрд╛ рдпрд╣ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрдиреБрд░реВрдк рд╣реИ?

@ рдордХрд░ 86 рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИред рдХреНрдпрд╛ рдпрд╣ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрдиреБрд░реВрдк рд╣реИ?

рдзрдиреНрдпрд╡рд╛рдж @milesj!

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреА рдЧрдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЪрд╢реНрдореЗ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдХреМрди рд╕реЗ рд╕реНрдкреЗрдХреНрд╕ рдХреЛ рдХрд╡рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдХреЛрдИ рд╡рд┐рд╕реНрддреГрдд рдЕрд╡рд▓реЛрдХрди рдирд╣реАрдВ рд╣реИред рдореИрдВ рдЗрд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рднреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд╡рд░ рдХреА рдЬрд╛рддреА рд╣реИред

рдбреАрдУрдПрдо рдХрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд▓рдХреНрд╖реНрдп рд╡реЗрдм рдШрдЯрдХ рд╕рд░реНрд╡рд░ рдкрдХреНрд╖ рдХреЛ рдЕрдЪреНрдЫреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╕рд╛рде рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдХреБрдЫ рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред

Fwiw, рдореИрдВ рдмрд╕ рд╕реЗ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА react-scripts@3 рдЬреЗрд╕реНрдЯ 24.9 рдХреЗ рд╕рд╛рде рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @react-scripts@4 рдЬреЗрд╕реНрдЯ 26.6 рдХреЗ рд╕рд╛рдеред

рд╣рдорд╛рд░рд╛ рд╕рд░реНрд╡рд░ рдПрдкреАрдЖрдИ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдкрд╣рд▓реЗ рд▓рдЧрднрдЧ 180-190 рд╕реЗрдХрдВрдб рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛ рд░рд╣рд╛ рдерд╛ред рдЬреЗрд╕реНрдЯ 26.6 рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рд▓рдЧрд╛рддрд╛рд░ рд▓рдЧрднрдЧ 220 рд╕реЗрдХрдВрдб рд▓реЗ рд░рд╣рд╛ рдерд╛ред рдореИрдВрдиреЗ minimatch рд╕реЗ 4.0.2 рд╕рдВрдХрд▓реНрдк рдХреЛ рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХрд╛ рднреА рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред рдЯреЗрд╕реНрдЯ рд░рдирд░ рдХреЛ jest-circus рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рдХреБрдЫ рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рджрд╕реНрддрдХ рджреЗрдирд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, 26.6 рдХрд╛рдлрд╝реА рдзреАрдорд╛ рд▓рдЧрддрд╛ рд╣реИред

react-scripts@4 рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ jest-circus рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, fwiwред рдпрд╣ micromatch рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рди рдХрд┐ minimatch ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдордиреЗ micromatch рдорд╛рдзреНрдпрдо рд╕реЗ #10131 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░реЛрд▓рд┐рдВрдЧ рдмреИрдХ рддреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдм рдкреНрд░рддрд┐рдЧрдорди рдХрд╛ рдХрд╛рд░рдг рд╣реИ рдпрд╛ рдирд╣реАрдВ

@SimenB : рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЕрдЬреАрдм рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд╕реЗрдЯрдЕрдк рдПрдЯреАрдПрдо рд╣реИ - рдпрд╣ рдПрдХ рд╡рд┐рд░рд╛рд╕рдд MEAN/AngularJS рдРрдк рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ CRA рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рд╣реИ ред рдкрд░реАрдХреНрд╖рдг рдХреЙрдиреНтАНрдлрд╝рд┐рдЧрд░ рд╣рдорд╛рд░рд╛ рдЕрдкрдирд╛ рд╣реИ, рдмрдирд╛рдо рдмрд┐рд▓реНрдЯ-рдЗрди CRA Jest рдХреЙрдиреНтАНрдлрд╝рд┐рдЧрд░реЗрд╢рди - рд╣рдо рдХреЗрд╡рд▓ рдЗрд╕ рддрдереНтАНрдп рдХрд╛ рд▓рд╛рдн рдЙрдард╛ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ CRA рдЬреЗрд╕реНрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рдЖрддрд╛ рд╣реИред

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдЯреАрдПрдо рдХреЗ рд╕рд╛рдордиреЗ рдореЗрд░рд╛ рд╡рд░реНрдХ рдмреЙрдХреНрд╕ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдм рдореБрдЭреЗ рдпрд╛рдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдореЗрд░рд╛ рдорддрд▓рдм рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ micromatch рдпрд╛ рдЕрдЧрд░ рдореИрдВрдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЧрд▓рдд рдкреИрдХреЗрдЬ рдирд╛рдо рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд┐рдпрд╛ :) рдореБрдЭреЗ рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд▓реЗ рд╣рдлреНрддреЗ рдлрд┐рд░ рд╕реЗ рдЙрд╕ рдкрд░ред

рдореИрдВрдиреЗ рдЕрднреА рджреЗрдЦрд╛ рдХрд┐ v26 macOS рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЯрд░реНрдорд┐рдирд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ iTerm рдореЗрдВ _alot_ рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдЪрд▓рддрд╛ рд╣реИред 6500 рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдкрд░ рдореБрдЭреЗ рд▓рдЧрд╛рддрд╛рд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рддреЗ рд╣реИрдВ:

  • v24, рдЯрд░реНрдорд┐рдирд▓: ~90s
  • v24, iTerm2: ~90s
  • v26, рдЯрд░реНрдорд┐рдирд▓: ~ 110s
  • v26, iTerm2: ~150s

рдордВрджреА рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдЪреАрдЬреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рдорд╣реАрдиреЛрдВ рдХреЗ рдмрд╛рдж рдЗрд╕рдиреЗ рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдХреЛ рдереЛрдбрд╝рд╛ рдЙрдбрд╝рд╛ рджрд┐рдпрд╛ред рдореИрдХ рдкрд░ рдкреВрд░реНрдг рдореБрджреНрджреЛрдВ рдХреЗ рд╕рд╛рде рдХреЛрдИ рдФрд░ рдореМрдХрд╛ рдХрд┐рд╕реА рдФрд░ рдХреЛ рдпрд╣ рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИ? рдзреНрдпрд╛рди рд░рд╣реЗ, рдпрд╣ v26 рдкрд░ jsdom@14 рдХреЗ рд╕рд╛рде рд╣реИред

@pleunv рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: https://github.com/facebook/jest/pull/9294 ред рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рд╣рд╛рдЗрдкрд░рд▓рд┐рдВрдХ рдореЗрд░реА рдорд╢реАрди рдкрд░ iTerm2 рдХреЛ рдзреАрдорд╛ рдХрд░ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдпрд╣ рдЕрд╕реНрдерд┐рд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдирд┐рд╖реНрдкрд╛рджрди рдХреА рд╕рдордЧреНрд░ рдЧрддрд┐ рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХреА рд╣реИ, рдФрд░ рди рд╣реА рдХрд┐рд╕реА рдЕрдиреНрдп рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдереАред

рдпреВрд░реЗрдХрд╛ред "рдЖрдИрдЯрд░реНрдо" рдХреА рдЦреЛрдЬ рдиреЗ рдореБрдЭреЗ рдЗрд╕ рдЬрдирд╕рдВрдкрд░реНрдХ рдореЗрдВ рд▓рд╛рдпрд╛ред рдореИрдВрдиреЗ рдЗрди рдЕрдВрдбрд░рд▓рд╛рдЗрдиреНрд╕ рдХреЛ рдкрд╣рд▓реЗ рджреЗрдЦрд╛ рдерд╛ рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдХрд┐ рдпреЗ рд╣рд╛рдЗрдкрд░рд▓рд┐рдВрдХреНрд╕ рд╣реИрдВред рдЙрд╕ рдкреАрдЖрд░ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рдмрд╛рдж рдореИрдВрдиреЗ рдЖрдИрдЯрд░реНрдо рдореЗрдВ рд╣рд╛рдЗрдкрд░рд▓рд┐рдВрдХреНрд╕ рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░ рджрд┐рдпрд╛ рдЬрд┐рд╕рд╕реЗ рдореЗрд░рд╛ рд░рдирдЯрд╛рдЗрдо 130 рд╕реЗ рдиреАрдЪреЗ рдЖ рдЧрдпрд╛ред рдкреАрдЖрд░ рд╕реЗ рдХреЛрдб рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдФрд░ рд╣рд╛рдЗрдкрд░рд▓рд┐рдВрдХреНрд╕ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдореИрдВ 120 рдХреЗ рджрд╢рдХ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ рд╣реВрдВред рд╡рд┐рд╡реЗрдХ рдереЛрдбрд╝рд╛ рдмрд╣рд╛рд▓ред

рдХреЛрдИ рдореМрдХрд╛ рд╣реИ рдХрд┐ рдкреАрдЖрд░ рд╡рд╛рдкрд╕ рдЖ рд╕рдХрддрд╛ рд╣реИ?

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: @thymikee рдиреЗ рдореБрдЭреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рд░рд╛рдпрд╛

@pleunv рдореИрдВ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдХреБрдЫ рд╕рдордп

рдореИрдВрдиреЗ рдЕрднреА рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдиреЗ рдореБрдЭреЗ рдПрдХрд▓ рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП 1s рджрд┐рдпрд╛ рд╣реИред рдФрд░ рдЖрдк рдЕрднреА рднреА рдпреВрдЖрд░рдПрд▓ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдЕрдм рд░реЗрдЦрд╛рдВрдХрд┐рдд рдирд╣реАрдВ рд╣реИред
image

рдпрд╣ рдмрдбрд╝реЗ рд░рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред тЭдя╕П

// рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ
рдордЬреЗрджрд╛рд░ рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдерд╛ рдХрд┐ рдпрд╣ рдЗрдЯрд░рдо рдпрд╛ рдЯрд░реНрдорд┐рдирд▓ рдерд╛ред рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рдж рдореЗрд░реЗ рд▓рд┐рдП рдЖрдИрдЯрд░реНрдо рддреЗрдЬ рд╣реИред

@pleunv рдореИрдВ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдХреБрдЫ рд╕рдордп

рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдПрдХ рдореБрджреНрджрд╛ рдмрдирд╛рдпрд╛

рдореИрдВ рдЗрд╕ рдмреАрдЪ рдХреБрдЫ рдФрд░ рдкреНрд░рдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐, рдЬрдм рдЗрд╕реЗ рдХреЗрд╡рд▓ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рдЙрдкрд╕рдореБрдЪреНрдЪрдп (рджреЛ рджрд░реНрдЬрди рдкрд░реАрдХреНрд╖рдг рдлрд╛рдЗрд▓реЛрдВ) рдкрд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рд╛рдЗрдкрд░рд▓рд┐рдВрдХреНрд╕ рдЖрдо рддреМрд░ рдкрд░ рдЗрддрдирд╛ рдЕрдВрддрд░ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕реЗ рд╣рдорд╛рд░реЗ рдкреВрд░реЗ рд╕реЗрдЯ рдкрд░ рдЪрд▓рд╛рддреЗ рд╕рдордп (700 рдлрд╛рдЗрд▓реЗрдВ) рдкреНрд░рднрд╛рд╡ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдорд╛рдкрдиреЗ рдпреЛрдЧреНрдп рд╣реЛрддрд╛ рд╣реИред

рдореБрдЭреЗ рдпрд╣ рднреА рдЖрднрд╛рд╕ рд╣реИ рдХрд┐ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЬреЗрд╕реНрдЯ рдХрд╛ рдХрдВрд╕реЛрд▓ рдЖрдЙрдЯрдкреБрдЯ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЧрдбрд╝рдмрдбрд╝/рдЪрдордХрджрд╛рд░ рд╣реЛрдиреЗ рд▓рдЧрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рддрд▓ рдкрд░ рдкреНрд░рдЧрддрд┐ рд░реЗрдЦрд╛рдПрдВ рджреГрд╢реНрдпрдорд╛рди рд╕реЗ рдЕрдзрд┐рдХ рдЫрд┐рдкреА рд╣реБрдИ рд╣реИрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

paularmstrong picture paularmstrong  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

samzhang111 picture samzhang111  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

rosiakr picture rosiakr  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

kgowru picture kgowru  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

stephenlautier picture stephenlautier  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ