Jest: Async рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рддреНрд░реБрдЯрд┐: ReferenceError: regeneratorRuntime рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 12 рдорд╛рд░реНрдЪ 2017  ┬╖  21рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: facebook/jest

рдЗрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИ:
https://github.com/facebook/jest/tree/master/examples/async

 FAIL  __tests__/user-test.js
  тЧП Test suite failed to run

    ReferenceError: regeneratorRuntime is not defined

      at Object.<anonymous> (__tests__/user-test.js:16:48)
      at process._tickCallback (internal/process/next_tick.js:103:7)

Test Suites: 1 failed, 1 total
Tests:       0 total
Snapshots:   0 total
Time:        1.495s
Ran all test suites.

рдиреЛрдб 6.10 рдФрд░ рдиреЛрдб 7.7.4 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

git clone https://github.com/facebook/jest jest
cd jest/examples/async
npm install
npm run test

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

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЬреЗрд╕реНрдЯ рдореЗрдВ "ReferenceError: regeneratorRuntime рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИ" рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

npm install --save-dev @babel/plugin-transform-runtime

рдлрд┐рд░ .babelrc рдореЗрдВ (рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛):

{
  "env": {
    "test": {
      "plugins": ["@babel/plugin-transform-runtime"]
    }
  }
}

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

рдпрд╣ рд╣рдорд╛рд░реЗ рд╕реАрдЖрдИ рдпрд╛ рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдкрд░ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд░рд┐рдкреНрд░реЛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ npm рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝ рд╣реЛ?

@cpojer

рдзрдиреНрдпрд╡рд╛рдж рдХреНрд░рд┐рд╕ред

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░ рд░рдирд┐рдВрдЧ рдиреЛрдб рд╕реЗ рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ
https://hub.docker.com/_/node/

рдиреАрдЪреЗ рд╡реЗ рдЪрд░рдг рджрд┐рдП рдЧрдП рд╣реИрдВ рдЬреЛ рддреНрд░реБрдЯрд┐ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ:

# from local machine (also tested in vagrant 1.9.2 running ubuntu/trusty64)
docker pull node:latest
docker run --rm -it node bash
# from inside the container (docker version 17.03.0-ce, node version 7.7.2)
git clone https://github.com/facebook/jest /jest
cd /jest
# as per instructions from https://github.com/facebook/jest/tree/master/examples
npm install
cd examples/async
npm install
npm test

рдХреНрдпрд╛ рдореИрдВ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдореЗрдВ рд╕рд╣реА рд╣реВрдБ?
рдХреНрдпрд╛ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдХреБрдЫ рд╡реИрд╢реНрд╡рд┐рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рдпрд╛рдж рдЖ рд░рд╣реА рд╣реИрдВ рдЬреЛ рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░ рджреЗрдВрдЧреА?
рдХреНрдпрд╛ рдореИрдВ рдЖрдкрдХреЛ рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ?

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдЙрджрд╛рд╣рд░рдг рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдкреБрдирд░реНрдЬрдирди-рд░рдирдЯрд╛рдЗрдо рдХреЛ рдмреЗрдмреЗрд▓-рдкреЙрд▓реАрдлрд┐рд▓ рдХреЗ рд╕рд╛рде рджреЗрд╡рдирд┐рд░реНрднрд░рддрд╛ рдореЗрдВ рдмрджрд▓рддреЗ рд╣реИрдВред

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

рдореИрдВ рдЯреНрд░реИрд╡рд┐рд╕ рд╕реАрдЖрдИ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ: https://travis-ci.org/okonet/lint-staged/jobs/212179781

рдкрд░реАрдХреНрд╖рдг рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдкрд░ рдареАрдХ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рд╕реАрдЖрдИ рдкрд░ рдирд╣реАрдВ

рдореИрдВ рдмрд╕ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЯрдХрд░рд╛ рдЧрдпрд╛!

@mpontus @okonet рдЖрдк jest@next рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдпрд╣ рддрдп рд╣реИ рдпрд╛ рдЕрдиреНрдпрдерд╛ рдЖрдкрдХреЛ babel-polyfill рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЬреЗрд╕реНрдЯ babel-polyfill (рдФрд░ рдЕрднреА рднреА рдЗрд╕реЗ 19.0.2 рдореЗрдВ рдХрд░рддрд╛ рд╣реИ) рдХреЛ рд╕реНрд╡рддрдГ рд╢рд╛рдорд┐рд▓ рдХрд░рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдпрд╣ рдореЗрдореЛрд░реА рд▓реАрдХ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдХреЗрд╡рд▓ regenerator-runtime рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд▓реЗ рдЧрдП, рдЬреЛ рд╣рдорд╛рд░реЗ рдЯреНрд░рд╛рдВрдЬрд┐рдЯрд┐рд╡ рдбрд┐рдкреЛ рдХреЗ рд╕рд╛рде рдЬрд╣рд╛рдЬ рдХрд░рддрд╛ рд╣реИ (рдЗрд╕рд▓рд┐рдП рдЬреЗрд╕реНрдЯ рдХреЗ рдмрд╛рдж рд╕реЗ) v20 рдпрджрд┐ рдЖрдк npm>=3 рдпрд╛ рдпрд╛рд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ async/рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ)ред

рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдордиреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рд╕реЗ babel-polyfill рдХреЛ рдорд┐рдЯрд╛ рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЗрд╕ рдЕрдВрддрд░ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рднреВрд▓ рдЧрдП https://github.com/facebook/jest/pull/2755 19.0.2 рдФрд░ рдПрдХ рд░реЛрд▓ рдЖрдЙрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рддрдм рд╕реЗ рдЕрдЪреНрдЫреА рд░рд┐рд▓реАрдЬ (рдХреЗрд╡рд▓ jest@next рдЯреИрдЧ)ред
рдЕрд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ!

@thymikee рдореИрдВ regenerator-runtime рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдЬреИрд╕рд╛ рдХрд┐ рдбреЙрдХреНрд╕ рдореЗрдВ рдПрдХ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо рдХреЗ рд╕рд╛рде рд╡рд░реНрдгрд┐рдд рд╣реИ?
рдореИрдВ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХрд┐рд╕реА рднреА .babelrc рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдПрдХ рдмреЗрдмрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд▓реЛрдб рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдиреАрдЪреЗ рдХреА рддрд░рд╣ рд╡реЗрдмрдкреИрдХ рдФрд░ рдЬреЗрд╕реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

jest.config.js

...
'transform': {
    '^.+\\.js$': '<rootDir>/config/jest.transform.js'
}
...

рдордЬрд╝рд╛рдХ.рдЯреНрд░рд╛рдВрд╕рдлрд╝реЙрд░реНрдо.рдЬреЗрдПрд╕

var babelConfig = require('./babel.config')

module.exports = require('babel-jest').createTransformer(babelConfig)

рдПрдХ рдкреБрд░рд╛рдиреЗ рдореБрджреНрджреЗ рдХреЛ рдЬрдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВ: рдореИрдВ рдЬреЗрд╕реНрдЯ 20.0.4 рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдореБрджреНрджреЗ рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрди рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛ рдирд╣реАрдВ рд╕рдХрддрд╛ред рдореИрдВ рдЬреЛ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдЙрд╕рд╕реЗ:

  • async/рдкреНрд░рддреАрдХреНрд╖рд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ babel-preset-env рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди async/рдкреНрд░рддреАрдХреНрд╖рд╛ рдЙрджрд╛рд╣рд░рдг рдЗрд╕рдХреЗ рдмрдЬрд╛рдп
  • okonet , рд░реАрдЬреЗрдирд░реЗрдЯрд░ рд░рдирдЯрд╛рдЗрдо рд╕рд░реНрдХрд┐рд▓рд╕реАрдЖрдИ рдкрд░ --runInBand рд╕рд╛рде рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдореЗрд░реА рд╕реАрдЖрдИ рдкрд░реАрдХреНрд╖рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдирд╛ рдпрд╣ рдЗрдВрдЧрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИред
  • рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореВрд▓ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ regenerator-runtime рдХреЛ рд╕реАрдзреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдПрдХ рдкреБрд░рд╛рдиреЗ рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ CI рдкрд░ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред

рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рдерд╛, babel-polyfill рд╕реАрдзреЗ jest.init.js (рдЬреЗрд╕реНрдЯ рд╕реЗрдЯрдЕрдк рдлрд╝рд╛рдЗрд▓) рдореЗрдВ рдЖрдпрд╛рдд рдХрд░рдиреЗ рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИред

  ...
 "setupFiles": [
   "<rootDir>/jest.init.js"
  ],
  ...
/// jest.init.js
import Enzyme from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
import 'babel-polyfill';

рдЯрдХреНрдХрд░ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ! рд▓реЗрдХрд┐рди рдореИрдВ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдЗрд╕реЗ рдореЗрд░реЗ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд▓рдЧрдЗрдиреНрд╕ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

    [
      "transform-runtime",
      {
        "helpers": false,
        "polyfill": false,
        "regenerator": true
      }
    ]

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдЗрд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ред

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЬреЗрд╕реНрдЯ рдореЗрдВ "ReferenceError: regeneratorRuntime рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИ" рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

npm install --save-dev @babel/plugin-transform-runtime

рдлрд┐рд░ .babelrc рдореЗрдВ (рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛):

{
  "env": {
    "test": {
      "plugins": ["@babel/plugin-transform-runtime"]
    }
  }
}

рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рдерд╛, babel-polyfill рд╕реАрдзреЗ jest.init.js (рдЬреЗрд╕реНрдЯ рд╕реЗрдЯрдЕрдк рдлрд╝рд╛рдЗрд▓) рдореЗрдВ рдЖрдпрд╛рдд рдХрд░рдиреЗ рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИред

  ...
 "setupFiles": [
   "<rootDir>/jest.init.js"
  ],
  ...
/// jest.init.js
import Enzyme from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
import 'babel-polyfill';

рдореИрдВрдиреЗ рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдХреЛ jest.init.js рдореЗрдВ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдЗрд╕рдиреЗ рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЕрдЬреАрдм рддрд░рд╣ рд╕реЗ рддреЛрдбрд╝ рджрд┐рдпрд╛ред рдореЗрд░реЗ рдкрд╛рд╕ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдЬрдирд░реЗрдЯрд░ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рдереА, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд╛рд╕ рдмрд╣реБрдд рд╕рд╛рд░реА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдереАрдВ рдЬреЛ рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдкрд╣рд▓реЗ рдирд╣реАрдВ рдереАрдВ, рдЬреИрд╕реЗ рд▓рд╛рдкрддрд╛ рдШрдЯрдХ рдЖрдпрд╛рдд рдпрд╛ рд▓рд╛рдкрддрд╛ рдкреНрд░реЙрдкреНрд╕ред

рдореЗрд░реЗ jest.conf.js рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐ рд╣реИ:

setupFiles: ['<rootDir>/test/unit/setup']

рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ jest.init.js (рдЬреЛ рдореМрдЬреВрдж рдирд╣реАрдВ рдерд╛) рдХреЗ рдмрдЬрд╛рдп setup.js рдореЗрдВ рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдЖрдпрд╛рдд рдХрд░рдирд╛ рдкрдбрд╝рд╛:

import Vue from 'vue'
import '@babel/polyfill';

Vue.config.productionTip = false
Vue.config.silent = true

_рдкреЙрд▓реАрдлрд┐рд▓ рдЖрдпрд╛рдд рд▓рд╛рдЗрди рдХреЛ рдЫреЛрдбрд╝рдХрд░, 3 рдЕрдиреНрдп рд▓рд╛рдЗрдиреЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдереАрдВ рдЬрдм рдореИрдВрдиреЗ рдЗрд╕реЗ рдЦреЛрд▓рд╛ред_

рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдХреЛ setup.js рдореЗрдВ рдЖрдпрд╛рдд рдХрд░рдирд╛ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрдмрдХрд┐ рдЗрд╕реЗ jest.init.js рдореЗрдВ рдЖрдпрд╛рдд рдХрд░рдиреЗ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдЪрд▓рд╛ (рдореИрдВрдиреЗ рд╕реЗрдЯрдЕрдкрдлрд╝рд╛рдЗрд▓ рдкрде рдмрджрд▓ рджрд┐рдпрд╛)ред

рдЬреЗрд╕реНрдЯ рдореЗрдВ "ReferenceError: regeneratorRuntime рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИ" рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдХреНрд╖реНрдп рдиреЛрдб рд╡рд░реНрддрдорд╛рди рдЬреЛрдбрд╝рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

{
  "presets": [
    [
      "@babel/preset-env",
      {
        "targets": {
          "node": "current"
        }
      }
    ]
  ]
}

рдЬреЗрд╕реНрдЯ рдореЗрдВ "ReferenceError: regeneratorRuntime рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИ" рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдХреНрд╖реНрдп рдиреЛрдб рд╡рд░реНрддрдорд╛рди рдЬреЛрдбрд╝рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

{
  "presets": [
    [
      "@babel/preset-env",
      {
        "targets": {
          "node": "current"
        }
      }
    ]
  ]
}

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмреЗрдмрд▓реАрдлрд┐рдВрдЧ рдореЗрдВ рдорджрдж рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдореЗрд░рд╛ рдХреЛрдб рд▓рдХреНрд╖реНрдп рдиреЛрдб рд╡рд░реНрддрдорд╛рди рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╡реИрд╕рд╛ рд╣реА рджрд┐рдЦреЗрдЧрд╛ (ES6)ред рдЯреЗрд╕реНрдЯ рдЪрд▓ рд░рд╣реЗ рд╣реЛрдВрдЧреЗ, рдмрдврд╝рд┐рдпрд╛, рд▓реЗрдХрд┐рди рдХреЛрдИ рд╕рдВрдХрд▓рд┐рдд рдХреЛрдб рдирд╣реАрдВ: рдкреА

рдпрд╣рд╛рдБ рдореЗрд░реЗ package.json рдХрд╛ рдПрдХ рдЕрдВрд╢ рд╣реИ, рдпрд╣ рдЕрдм рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

"babel": {
    "presets": [
      [
        "@babel/preset-env",
        {
          "targets": {
            "node": "current"
          }
        }
      ],
      "@babel/preset-react"
    ],
    "plugins": [
      "component-identification",
      "@babel/plugin-proposal-class-properties",
      [
        "module-resolver",
        {
          "root": [
            "./src"
          ]
        }
      ]
    ]
  },

рдореЗрд░реЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреНрд░реАрд╕реЗрдЯ-рдПрдирд╡реА рд▓рдХреНрд╖реНрдп рд╣реЛрдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рдерд╛ред
рдореБрдЭреЗ node рддрд╣рдд env.test рддрд╣рдд рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдкрдбрд╝рд╛ред

{
  'presets': [
    [
      '@babel/preset-env',
      {
        'targets': {
          'chrome': 61,
          'node': 8,
          'electron': '2.0.9'
        },
      }
    ],
    '@babel/typescript',
    '@babel/preset-react'
  ],
  'env': {
    'test': {
      'presets': [
        [
          '@babel/preset-env',
          {
            'targets': {
              'node': 8,  // <- ADDED
            },
          }
        ],
        '@babel/typescript',
      ]
    }
  }
}

рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рдореБрдЭреЗ рдХрд░рдиреА рдереА, рд╡рд╣ рд╣реИ @AoDev рджреНрд╡рд╛рд░рд╛ рдмрддрд╛рдП рдЧрдП рд▓рдХреНрд╖реНрдп рдХреЛ рдмреЗрдмреЗрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ред рдХрд╣реАрдВ рдФрд░ рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рдХреНрд╖реНрдп рдирд╣реАрдВред

рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рдкреБрдирд░реНрдпреЛрдЬреА-рд░рдирдЯрд╛рдЗрдо рдХреЛ рдЖрдпрд╛рдд рдФрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдпрд╣ рдХрд░рддреЗ рд╣реИрдВ:

require('regenerator-runtime/runtime');

рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рдЪреАрдЬрд╝ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдордЬрд╝рд╛рдХ рдХреЗ рд▓рд┐рдП рд╕рднреА рдмреЗрдмреЗрд▓ рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд╕рд╛рде рдЧрдбрд╝рдмрдбрд╝ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдЬреЗрд╕реНрдЯ 24 рдХреЛ рдкреЗрд╢ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЕрдЧрд░ рд▓реЛрдЧ рдЗрд╕реЗ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ: https://jestjs.io/blog/2019/01/25/jest-24-refreshing-polished-typescript-friendly#break -changesред рдЖрдкрдХреЛ рдмреЗрдмреЗрд▓ рдХреЛ рдареАрдХ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХрд┐рд╕реА рднреА рдХреЛрдб рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдкреАрдЖрд░ рд╕реЗ рдпрд╣ рдЯрд┐рдкреНрдкрдгреА рджреЗрдЦреЗрдВ: https://github.com/facebook/jest/pull/7595#issuecomment -454486373

@ghengeveld рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рд╣реИ, рдзрдиреНрдпрд╡рд╛рдж

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

  'globals': {
    'vue-jest': {
      'babelConfig': {
        'plugins': [
          '@babel/plugin-transform-regenerator',
          '@babel/plugin-transform-runtime',
        ],
        'presets': [['@babel/preset-env', { 'modules': false }]],
        'env': {
          'test': {
            'presets': [
              ['@babel/preset-env', { 'targets': { 'node': 'current' } }],
            ],
          },
        },
      },
    },
  },

@рдпрд╣рд╛рдБ рдХрд┐рд╕реА рднреА рдкреНрд░рдпрд╛рд╕ рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдореБрдЭреЗ рдЕрднреА рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЯреЗрд╕реНрдЯ рд╕реВрдЯ рдЪрд▓рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рд╛ рд╣реИ

ReferenceError: regeneratorRuntime is not defined

рдпрд╣ рдореЗрд░рд╛ рдореЗрд░рд╛ рдкреИрдХреЗрдЬ рд╣реИредjson
"рджреЗрд╡ рдирд┐рд░реНрднрд░рддрд╛": {
"@ рдмреЗрдмреЗрд▓/рдХреЛрд░": "^7.6.2",
"@ рдмреЗрдмреЗрд▓/рдкреНрд▓рдЧрдЗрди-рдЯреНрд░рд╛рдВрд╕рдлрд╝реЙрд░реНрдо-рд░реАрдЬреЗрдирд░реЗрдЯрд░": "^7.8.7",
"@ рдмреЗрдмреЗрд▓/рд░рдирдЯрд╛рдЗрдо": "^7.9.6",
"@ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рд╕рдореБрджрд╛рдп/рдПрд╕реНрд▓рд┐рдВрдЯ-рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди": "^0.0.5",
"рдмреЗрдмреЗрд▓-рдПрд╕реНрд▓рд┐рдВрдЯ": "^10.0.1",
"рдмреЗрдмреЗрд▓-рдЬреЗрд╕реНрдЯ": "^24.9.0",
"рдмреЗрдмреЗрд▓-рдкреНрд▓рдЧрдЗрди-рдореЙрдбреНрдпреВрд▓-рд░рд┐рдЬрд╝реЙрд▓реНрд╡рд░": "^3.1.3",
"рдмреЗрдмреЗрд▓-рдкреНрд▓рдЧрдЗрди-рдЯреНрд░рд╛рдВрд╕рдлрд╝реЙрд░реНрдо-рд░рдирдЯрд╛рдЗрдо": "^6.23.0",
"рдбрд┐рдЯреЙрдХреНрд╕": "^16.5.1",

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

рдПрдХ рд╣реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рддрд╛рдЬрд╝рд╛ jest (26.6.3), рд╕рд╛рджрд╛ async рдкрд░реАрдХреНрд╖рдг рдФрд░ рдпрд╣ ..
рдПрдХ рдврд╛рдВрдЪреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЦреБрдж рдХреЛ "рд░рдордгреАрдп" рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рд╣реИред
рдореБрдЭреЗ рдмреЗрдмреЗрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди, рдкреНрд▓рдЧрдЗрдиреНрд╕ рдЖрджрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░реЗрд╢рд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?
рдпрд╣ рд▓реАрдХ рд╕реЗ рд╣рдЯрдХрд░ рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛?

рдЕрджреНрдпрддрди рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА babel.config.js рдерд╛ рд▓реЗрдХрд┐рди рдЧрд╛рдпрдм рдерд╛
targets: { node: 'current' }

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

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

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

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

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

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

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