Jest: рдЧреНрд▓реЛрдмрд▓ рдмрд┐рдлреЛрд░рдСрд▓

рдХреЛ рдирд┐рд░реНрдорд┐рдд 15 рдЬреВрди 2017  ┬╖  36рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: facebook/jest

рдХреНрдпрд╛ рд╡реИрд╢реНрд╡рд┐рдХ рдкрд╣рд▓реЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рд╣реИ?

рдореИрдВ рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдмрд╛рд░ рдЪрд▓рд╛рдПрдЧрд╛ред

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

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

рд╡реИрд╢реНрд╡рд┐рдХ рд╕реЗрдЯрдЕрдк рдХреЗ рд▓рд┐рдП +1ред рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рддрд░рд╣, рдореИрдВ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдРрдк/рдбреАрдмреА рдХреЛ рд╕реЗрдЯрдЕрдк рдФрд░ рдлрд╛рдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

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

рдХреНрдпрд╛ рдЖрдкрдиреЗ рд╕реЗрдЯрдЕрдкрдлрд╛рдЗрд▓ рджреЗрдЦрд╛ рд╣реИ?

рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЗрд╕ рддрд░рд╣ setupFiles рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ:

package.json

{
  "jest": {
    "setupFiles": [
      "./private/mocks/runtime.js"
    ]
  }
}

./private/mocks/runtime.js

global.__meteor_runtime_config__ = {ROOT_URL: 'localhost'};

рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░рд╢реНрди рдХреЗ рд▓рд┐рдП рдПрдлрд╡рд╛рдИрдЖрдИ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлрд╝реНрд▓реЛ рдПрдХ рдмреЗрд╣рддрд░ рдЬрдЧрд╣ рд╣реЛ рд╕рдХрддреА рд╣реИред (рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ/рд╕реБрд╡рд┐рдзрд╛ рдЕрдиреБрд░реЛрдз рдХреЗ рдмрдЬрд╛рдп рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рд╢реНрди)ред

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

рдореИрдВ рдХреНрд░рд┐рдПрдЯ-рд░рд┐рдПрдХреНрд╢рди-рдРрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдФрд░ setupFiles рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдЪрд▓рддреА рд╣реИрдВред

рдПрдХ рдЙрддреНрддрд░ рджреЗрдирд╛ рдЬреЛ рд╕рд╣реА рдирд╣реАрдВ рд╣реИ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдХрд┐рд╕реА рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░рдирд╛ред рд╡рд╛рд╣рд╡рд╛рд╣реА!

@cpojer @ashtonsix рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕реЗ рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЙрддреНрддрд░ рд╕рд╣реА рдирд╣реАрдВ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдХреЗ рд▓рд┐рдП setupFiles рдпрд╛ setupTestFrameworkScriptFile рджреЛрдиреЛрдВ рдЪрд▓рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рднреА рд╕реЗ рдкрд╣рд▓реЗ "рд╡реИрд╢реНрд╡рд┐рдХ" рдирд╣реАрдВ рд╣реИ рдЬрд╣рд╛рдВ рд╣рдо рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдбреАрдмреА рдХреА рд╕рдлрд╛рдИ рдХреА рддрд░рд╣ рд╕реЛрдЪ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рдЖрдкрдХреЗ рдкрд╛рд╕ package.json рдореЗрдВ pretest рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

@ Negan1911 - рд╢рд╛рдпрдж, рд▓реЗрдХрд┐рди рдпрд╣ рдмрддрд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐ рдУрдкреА рдореЗрдВ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЙрдкрдпреЛрдЧреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдФрд░ рдЖрдк рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯрддрд╛ рд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреВрд╕рд░рд╛ рдореБрджреНрджрд╛ рдмрдирд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

@cpojer @ashtonsix рдЕрдЧрд░ рдореИрдВ рдЗрд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рддреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реЗрдЯрдЕрдк рдФрд░ рдЯрд┐рдпрд░рдбрд╛рдЙрди рд╣реЛрдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣рд╛рдВ рдореЛрдЪрд╛ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИред
рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓рд╛ рдЬреЛ рдореЗрд░реЗ (рдФрд░ рд╢рд╛рдпрдж рдУрдкреА) рдХреЗ рдкрд╛рд╕ рд╣реИ, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рдПрдХ рд╕рд░реНрд╡рд░ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдореЗрд░реЗ рд╕рднреА рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг (рдФрд░ рд╢рд╛рдпрдж рдЙрди рд╕рднреА рдХреЗ рдкрд░реАрдХреНрд╖рдг рдбреАрдмреА рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж)ред
рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рд▓рд╛рд╣ рдпрд╛ рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ рд╣реИ?
рдореИрдВрдиреЗ рдЬреЛ рдкрд╛рдпрд╛ рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рд▓реЛрдЧ рдЬреНрдпрд╛рджрд╛рддрд░ рд╕рд░реНрд╡рд░ рдХреЛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ "рд╕реНрдерд╛рдиреАрдп" рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ/рдмрд╛рдж рдореЗрдВ рдмрдВрдж рдХрд░ рджреЗрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ @kentcdodds рджреНрд╡рд╛рд░рд╛ , рд▓реЗрдХрд┐рди рдмрд╣реБрдд рд╕рд╛рд░реЗ рдбреБрдкреНрд▓рд┐рдХреЗрд╢рдВрд╕ рдХрд╛ рддрд╛рддреНрдкрд░реНрдп рд╣реИ, рдирд╣реАрдВ?

рд╡реИрд╢реНрд╡рд┐рдХ рд╕реЗрдЯрдЕрдк рд╣реЛрдиреЗ рдкрд░ +1, рдореЗрд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдВ рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░ рднреА рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ

@ashtonsix рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдХреНрдпрд╛ рд╣реИ, рдУрдкреА рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдерд╛ред рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рд╛ рдЬрд╛рдПред

рдЖрдк рдПрдХ рдХрд╕реНрдЯрдо jest-environment рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, jest-environment-node рдпрд╛ jest-environment-jsdom рджреЗрдЦреЗрдВ рдФрд░ рдЗрд╕реЗ рдЙрдкрд╡рд░реНрдЧрд┐рдд рдХрд░реЗрдВред рдпрд╣ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреА рдЪрд╛рд╣рд┐рдПред рд╣рдордиреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдПрд╕рд┐рдВрдХ рд╣реБрдХ рдЬреЛрдбрд╝рдиреЗ рдкрд░ рднреА рдЪрд░реНрдЪрд╛ рдХреА, рдФрд░ рдореБрдЭреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреАрдЖрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛ рд░рд╣реА рд╣реИред

+1 рдореЛрдЪрд╛ рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЬреЗрд╕реНрдЯ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдФрд░ jest-codemods рдФрд░ рдбреЙрдХреНрд╕ рдХреА рдЖрд╕рд╛рдиреА рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдерд╛, рдЬрдм рддрдХ рдХрд┐ рдореИрдВ рдЗрд╕реА рдореБрджреНрджреЗ рд╕реЗ рдлрдВрд╕ рдирд╣реАрдВ рдЧрдпрд╛ред

рдкреНрд░рддреНрдпреЗрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкрд╣рд▓реЗ describe рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рд▓рдВрдмрд╛ рд╕рдордп рд▓рдЧ рд░рд╣рд╛ рдерд╛ред рдпрд╣ рд╕реЗрдЯрдЕрдк рдирд┐рдХрд▓рд╛ - рдЬреИрд╕рд╛ рдХрд┐ рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдкреНрд░рддрд┐ рдлрд╝рд╛рдЗрд▓ рдПрдХ рдмрд╛рд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк DROP DATABASE , CREATE DATABASE , рдФрд░ рдЕрдзрд┐рдХ рдЬреИрд╕реЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрдЪрд╛рд▓рди рд╣реЛрддреЗ рд╣реИрдВред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ node setup.js && jest рдЪрд▓рд╛рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рдХреЛрдИ рдХрд╛рдордХрд╛рдЬ рдирд╣реАрдВ рд╣реИ (рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ рдореБрдЭреЗ рдпрд╣рд╛рдВ рд▓рд╛рдпрд╛) рдЬреЛ рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИ ..

рд╡реИрд╢реНрд╡рд┐рдХ рд╕реЗрдЯрдЕрдк рдХреЗ рд▓рд┐рдП +1ред рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рддрд░рд╣, рдореИрдВ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдРрдк/рдбреАрдмреА рдХреЛ рд╕реЗрдЯрдЕрдк рдФрд░ рдлрд╛рдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

+1

#4506 . рдореЗрдВ рдлрд┐рдХреНрд╕реНрдб

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЗрд╕реНрдЯ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ globalSetup рдФрд░ globalTeardown ред https://facebook.github.io/jest/docs/en/configuration.html#globalsetup -string

рдореИрдВрдиреЗ globalSetup рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд░рд╣рддреА рд╣реИ .. рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдХрд▓реНрдк @ shai32 рдЪрд╛рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ ...

"jest": "^21.2.1"
 "jest": {
    "globalSetup": "./jest-config.js"
  }



md5-d3a1dcf99642fcf0b9c99c838aadb689



тЧП Validation Warning:

  Unknown option "globalSetup" with value "./jest-setup.js" was found.
  This is probably a typing mistake. Fixing it will remove this message.

  Configuration Documentation:
  https://facebook.github.io/jest/docs/configuration.html

рдЗрд╕реЗ рдЕрднреА рддрдХ рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЬреЗрд╕реНрдЯ 22 рдЕрдм рдХрд┐рд╕реА рднреА рджрд┐рди рдЖ рд░рд╣рд╛ рд╣реИ

#4506 . рдореЗрдВ рдлрд┐рдХреНрд╕реНрдб

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрд╕рдореЗрдВ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП: https://github.com/facebook/jest/pull/4716

@btav рд╡рд╣ 2 рдмрдЧ рд╣реИ

  1. рдЖрдкрдХреЛ рдЕрднреА рдХреЗ рд▓рд┐рдП рдирд┐рд░рдкреЗрдХреНрд╖ рдкрде рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдпрд╛ ("../../../~ root ~")
  2. рд╕рддреНрдпрд╛рдкрди рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВ рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╣реИрдВ

рдпрд╣рд╛рдБ рджреЗрдЦреЗрдВ
рдпрд╣ рднреА #5093

рдмрдЧ рдХреЛ #5095 #5096 . рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП

рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛....рдХреНрдпрд╛ рдпрд╣ рдбрд┐рдЬрд╝рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рд╣реИ?

рдореЗрд░рд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рдпрд╣ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдХрд╕реНрдЯрдо рд▓реЙрдЧ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореИрдВрдиреЗ _setup.test.js рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рд╣реБрдП рд╣реИрдВред

@zwhitchcox setupFiles config рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: https://facebook.github.io/jest/docs/en/configuration.html#setupfiles -array

рдХрднреА-рдХрднреА рдпрд╣ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдПрдХ async рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реЗрдЯрдЕрдк рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЧреНрд▓реЛрдмрд▓рд╕реЗрдЯрдЕрдк рдореЗрдВ рдПрдХ рдмрд╛рд░ рдХрдардкреБрддрд▓реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рд╕реЗрдЯрдЕрдк рдХрд░рдирд╛ рдФрд░ рдлрд┐рд░ рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг / рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдореЗрдВ рдПрдХ рдирдпрд╛ рдкреГрд╖реНрда рдмрдирд╛рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

@tdenovan рдареАрдХ рд╡рд╣реА рд╣реИ рдЬреЛ рдореИрдВ рдЕрднреА рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рд▓рдЧ рд░рд╣рд╛ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕реЗ рдкрд╣рд▓реЗ рдореЛрдЪрд╛ рдореЗрдВ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдПрдХ рд╣рд╡рд╛ рдереА, рд▓реЗрдХрд┐рди рдордЬрд╛рдХ рдХреЗ рд╕рд╛рде рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред
рдпрд╣ рдореЗрд░рд╛ рдордЬрд╝рд╛рдХ config рд╣реИ

"jest": {
    "verbose": true,
    "testEnvironment": "node",
    "globalSetup": "<rootDir>/scripts/testSetup.js",
    "globalTeardown": "<rootDir>/scripts/testTeardown.js"
  },
// globalSetup.js
module.exports = async () => {
  const browser = await puppeteer.launch({ headless: false });
  const page = await browser.newPage();
  bot = Bot(browser, page);
  await bot.goto(bot.baseUrl);
  global.bot = bot;
}

рд▓реЗрдХрд┐рди рдореИрдВ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдмреЙрдЯ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рдкрд╛ рд░рд╣рд╛ рд╣реВрдВред

рдЬреАрдЬреАрдбрдмреНрд▓реНрдпреВрдкреА! рдмрд╕ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ред

"e2e": "jest --testRegex '.*.e2e.js'"
// globalTeardown.js
module.exports = async () => {
  if (process.testSetup) {
    process.testSetup.bot.close();
  }
}

 process.testSetup = { bot };
// and then im my tests
const { bot } = process.testSetup;

рдФрд░ рдХреЛрдИ рднреА рд╕реЛрдЪ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдмреЙрдЯ рдХреНрдпрд╛ рд╣реИ,

const Bot = (browser, page) => ({
  browser: browser,
  page: page,
  baseUrl: 'http://localhost:4000',
  user: {
    name: faker.name.findName(),
    email: faker.internet.email(),
    password: 'Test<strong i="13">@123</strong>',
  },
  oldUser: {
    email: '[email protected]',
    password: 'Test<strong i="14">@123</strong>',
  },
  clearSession: async () => {
    await page.evaluate(() => sessionStorage.clear());
  },
  goto: async (url) => {
    await page.goto(url);
  },
  clickButton: async (id) => {
    await page.waitForSelector(id);
    await page.click(id);
  },
  checkText: async (expect, id, text) => {
    await page.waitForSelector(id);
    const elText = await page.$eval(id, el => el.innerHTML);
    expect(elText).toContain(text);
  },
  type: async (id, text) => {
    await page.waitForSelector(id);
    await page.$eval(id, el => el.value = '');
    await page.type(id, text);
  },
  wait: async () => {
    await page.waitForNavigation();
  },
  close: () => {
    browser.close();
  },
});

рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдХрдардкреБрддрд▓реА рдХреЗ рд▓рд┐рдП рдПрдХ рдЧрд╛рдЗрдб рд╣реИ: https://facebook.github.io/jest/docs/en/puppeteer.html

рд╣рд╛рдВ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдЧреНрд▓реЛрдмрд▓рд╕реЗрдЯрдЕрдк рдПрд╕рд┐рдВрдХ рд╡рд┐рдзрд┐ рдореЗрдВ рдЧреНрд▓реЛрдмрд▓ рд╕реЗрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдЬреЛ рдЙрдкрд░реЛрдХреНрдд рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдмреА рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ

@SimenB рдЖрд╣ .. рдпрд╛рд░ ... рдореИрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рдХрд╛рдлреА рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЬреЗрд╕реНрдЯ рдбреЙрдХреНрд╕ рдореЗрдВ рднреА рдерд╛ рдФрд░ рдЙрд╕ рд╕реЗрдХреНрд╢рди рдкрд░ рдХрднреА рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ред рдореЗрд░реЗ рд╕рдордп рдХреА рдмрд░реНрдмрд╛рджреАред

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╡реИрд╢реНрд╡рд┐рдХ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдЬреЛ рдореИрдВрдиреЗ рдЧреНрд▓реЛрдмрд▓рд╕реЗрдЯрдЕрдк рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ, рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВ рдпрджрд┐ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдХрдИ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ (рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╣реИ)ред рдПрдХрд▓ рд╕реВрдЯ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рд╕реЗ рд╡рд╕реНрддреБрдПрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ рдпрд╛ рдпрджрд┐ рдореИрдВ --runInBand рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реВрдВред рдпрджрд┐ рдкрд░реАрдХреНрд╖рдг рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдЪрд▓рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ GlobalSetup рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рдЪрд░реЛрдВ рддрдХ рдХреИрд╕реЗ рдкрд╣реБрдБрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБ?
рдореИрдВрдиреЗ рдКрдкрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг (рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдореИрдВрдиреЗ рдЙрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреА рднреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд╣рд╛рдВ рдореИрдВ рдХрд╕реНрдЯрдо рдЯреЗрд╕реНрдЯ рдкрд░реНрдпрд╛рд╡рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХрд┐рд╕реНрдордд рдХреЗ:

const PuppeteerJsdomEnvironment = require('jest-puppe-shots/lib/jsdom-environment');

class JestPuppeShotsEnv extends PuppeteerJsdomEnvironment {

  async setup(config) {
    await super.setup(config);
    const { allThemesCss } = global;

    // make the allThemesCss object available in test suites
    Object.assign(this.global, {
      allThemesCss
    });
  }
}

module.exports = JestPuppeShotsEnv;

рдпрд╣ GlobalSetup.js рд╕реЗ allThemesCss рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдореЗрдВ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

@ рдУрд╡рд┐рдбрд┐рдпреВ-рд▓реИрдкрдбрд╕ рдореИрдВ рдЧреНрд▓реЛрдмрд▓ рдХреЗ рдмрдЬрд╛рдп process рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧреНрд▓реЛрдмрд▓рд╕реЗрдЯрдЕрдк рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред рдпрд╣ --runInBand рдХреЗ рд╕рд╛рде рдФрд░ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП

// globalSetup.js
module.exports = async () => {
  process.FOOT = 'BALL';
};
// globalTeardown.js
module.exports = async () => {
  console.log(process.FOOT) // BALL 
};
// some.test.js
it('expects 1 to be 1', () => {
    expect(1).toBe(1);
     console.log(process.FOOT); // BALL
});

рдФрд░ рдордЬрд╝рд╛рдХ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЯреАрдо рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ global s рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреНрдпреЛрдВ рд╣реИрдВ (babel-jest 22.2.2), рд▓реЗрдХрд┐рди globalTeardown.js рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдмрдЧ рд╣реИред рдЕрднреА рдХреЗ рд▓рд┐рдП рдореИрдВ рдХреЗрд╡рд▓ process рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред рдЪреАрдпрд░реНрд╕!

рдзрдиреНрдпрд╡рд╛рдж @cellis рдЖрдкрдиреЗ рдореЗрд░рд╛ рджрд┐рди рдмрдЪрд╛рдпрд╛! рдореИрдВ рджреАрд╡рд╛рд░ рдХреЗ рдЦрд┐рд▓рд╛рдл рдЕрдкрдирд╛ рд╕рд┐рд░ рдкреАрдЯ рд░рд╣рд╛ рд╣реВрдВ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпреЛрдВ global.FOO рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛ред process.FOO рдЪрд╛рд▓ рд╣реИ :-)

@kalutheo рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЪреЗрддрд╛рд╡рдиреА рд╣реИрдВред FOOред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЖрдк рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдиреЗрд╕реНрдЯреЗрдб рдЪрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред envред рдореИрдВрдиреЗ рдЧреНрд▓реЛрдмрд▓реНрд╕ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рдирд┐рдХрд╛рд▓рд╛, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдореИрдВ рдЗрд╕реЗ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдореИрдВрдиреЗ рдЬреЛ рдХрд┐рдпрд╛ рд╣реИ, рд╡рд╣ рдореЗрд░рд╛ рдЕрдкрдирд╛ dbEnvironment рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЗрд╕реНрдЯ-рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред рд╡рд╣рд╛рдВ, рдореИрдВ рд╡реИрд╢реНрд╡рд┐рдХ рдбреАрдмреАрдПрд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реВрдВред рдбреЗрдЯрд╛рдмреЗрд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗрд╡рд▓ рдбреАрдмреА рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдореЗрд░реЗ рдкрд╛рд╕ рдлреНрд░рдВрдЯрдПрдВрдб рдХреЗрд╡рд▓ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реИред рдЗрд╕ рддрд░рд╣, рдореИрдВ рдкреНрд░рддреНрдпреЗрдХ рдлреНрд░рдВрдЯрдПрдВрдб рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рдбреАрдмреА рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдореЗрдВ рд╕рдордп рдмрд░реНрдмрд╛рдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВред рджреВрд╕рд░реЗ, рдореЗрд░реЗ рдкрд╛рд╕ рдХрдИ "рдкреНрд░рддрд┐рдХреГрддрд┐" рдбреАрдмреАрдПрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ рдЬреЛ рд╣рдореЗрд╢рд╛ рдЧрд░реНрдо рд╣реЛрддреЗ рд╣реИрдВ - рдЖрдкрдХреЛ рд╣рд░ рдЬрд╕реНрдЯ рд░рди рдкрд░ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдпрд╛ рдбрдВрдк рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рджреЗрд╡ рдбреАрдмреА рдХреЗ рд╕рд╛рде рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рддрд╛ рд╣реВрдВ (рдЖрдк рдЗрд╕рдХреА рдЭрд▓рдХ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╣ рдЬрд┐рд╕ рд╕рд╛рд░ рдореЗрдВ рдореИрдВрдиреЗ рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рд╣реИ), рдЬреЛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдФрд░ рднреА рддреЗрдЬрд╝реА рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЗрди рдкреНрд░рддрд┐рдХреГрддрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рдкреВрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рддрд╛рдХрд┐ рдореИрдВ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдЕрдзрд┐рдХрддрдо рд╕рдорд╛рдирддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХреВрдВред рдпрд╣ рдЬреЗрд╕реНрдЯ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдПрдХ рддрд░рд╣ рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рд╕рдордЭрд╛рдпрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИред рд╡реИрд╕реЗ рднреА, рдпрд╣рд╛рдБ рд╕рд╛рд░ рд╣реИ: https://gist.github.com/cellis/08cc332dacf9a548005e8cf35d4b16e2

@ ovidiu-lapadus рдХрд░реАрдм рд╕реЗ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╢рд╛рдпрдж рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЕрдкрдиреЗ рдЧреНрд▓реЛрдмрд▓реНрд╕ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ super.setup() рдкрд░ рдХреЙрд▓ рдХрд┐рдпрд╛ рдерд╛ред рдХреГрдкрдпрд╛ рдПрдХ рдХрд╛рд░реНрдп рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдКрдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕рд╛рд░ рджреЗрдЦреЗрдВред

@cellis рдЗрди рдмрд╣реБрдореВрд▓реНрдп рд╕реВрдЪрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдПрдХ рдХрд╕реНрдЯрдо рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд╕рд╛рде рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛

рджреЛрд╕реНрддреЛрдВ, рдХреНрдпрд╛ globalSetup рдореЗрдВ babel-polyfill рдХреЗ рд╕рд╛рде рдЧрдардмрдВрдзрди, chai jest-extended рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ globalSetup setupTestFrameworkScriptFile рд╕реЗ рдмрд╣реБрдд рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡рд╣рд╛рдВ рдЬреЛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд╡рд╣ globalSetup рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рдХрд┐ рд╣рд░ рдЬреЗрд╕реНрдЯ рдЯреЗрд╕реНрдЯ рдХреЗрд╕ рдЙрд╕рдХреЗ рд╕реНрдиреИрдбрдмреЙрдХреНрд╕ рд╡рд╛рд▓реЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди setupTestFrameworkScriptFile рдореЗрдВ рдЪреАрдЬреЗрдВ veeeeeeeeeeeery рдХреЛ рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВред

рдореЛрдЪрд╛: 9s
рдЬреЗрд╕реНрдЯ: 60s, рд╡реЙрдЪ рдореЛрдб рдореЗрдВ: 170s-200s

?

process рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдПрдХ рд╣реИрдХ рд╣реИ рдЬреЛ рд╢рд╛рдпрдж рдЯреВрдЯ рдЬрд╛рдПрдЧрд╛ (рдпрд╣ рдПрдХ рдмрдЧ рд╣реИ)ред

рдЖрдк рд╢рд╛рдпрдж #7184 . рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ

рдпрд╣ рдХреЛрдИ рд╡реИрд╢реНрд╡рд┐рдХ beforeAll() рдирд╣реАрдВ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдкреНрд░рд╢реНрди рдкрд░ рдкреВрдЫрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╕рд╛рде, рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдХреЛрдб рджреЛрд╣рд░рд╛рд╡ рд╕реЗ рдмрдЪ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдПрдХ рдиреЛрдб рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЖрдкрдХреА рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрдЕрдк рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛: https://stackoverflow.com/a/61260044/4934640


рдЕрджреНрдпрддрди

рдореБрдЭреЗ рдЕрднреА рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдореИрдВ globalSetup рдкрд░ рдПрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЛрдВ/рд╕реВрдЯ/рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдмреАрдЪ рд╕рд░реНрд╡рд░ рдкрддрд╛ рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ: https://github.com/facebook/jest/issues/7184# рдирд┐рд░реНрдЧрдо рдЯрд┐рдкреНрдкрдгреА

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

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

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

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

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

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

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