jestã24ãã25ã«ã¢ããã°ã¬ãŒããããŠããããã¹ãããžã§ã³ãã³ã¹ã§ã®5å23ç§ãã11å以äžã«ãªãããšã確èªããŸããã ã¢ããã°ã¬ãŒãã§å€±æããã¹ãããã·ã§ãããã¹ãã¯ãããããã§ã -u
'dããŸããããããã¯æ·±å»ãªãªã°ã¬ãã·ã§ã³imoã§ãã ãããä¿®æ£ããæ¹æ³ãç解ããã®ãæäŒã£ãŠãã ããã CIã®ãã£ãã·ã¥ãã¯ãªã¢ããŠãåžžã«ææ°ã®ãã®ãå®è¡ã§ããããã«ããŸãã
ååž°ãšã¯äœãã«ã€ããŠã®æ確ã§ç°¡æœãªèª¬æã
å®è¡æéã¯5:23ãã11:00ã«ãªããŸãã
24.8.0
ããŒãžã§ã³ãŸã§åäœããŸããïŒ
24.8.0
ããŒãžã§ã³ã§ã®åäœãåæ¢ããŸããïŒ
25.1.0
ç³ãèš³ãããŸããããã³ãŒãããŒã¹ãå
±æã§ããŸãã
åäœãåçŸããæé ïŒ
äœãèµ·ãããšäºæ³ãããã«ã€ããŠã®æ確ã§ç°¡æœãªèª¬æã
repl.itãã¢ãŸãã¯GitHubã®æå°éã®ãªããžããªã®ãããããæäŸããŠãã ããã
è€è£œãªã³ã¯ã®ãªãåé¡ã¯å€±éããå¯èœæ§ããããŸãã
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
ãªã°ã¬ãã·ã§ã³ã«ã€ããŠã¯ç³ãèš³ãããŸããã
ç³ãèš³ãããŸããããã³ãŒãããŒã¹ãå ±æã§ããŸãã
絶察ã«äœãã§ããªããšããæå³ã§ãã ããã¯ãããã©ãŒãã³ã¹ã®äœäžã«ã€ããŠèããæåã®ããšã§ããä»ã®ãã¹ãŠã®å Žæã§ãããã©ãŒãã³ã¹ã24ãã25ã«10ã40ïŒ _æ¹å_ããŠãããšèããŠããŸããäœããã®åçŸãæäŸããå¿ èŠããããŸããããããªããšããã®åé¡ã解決ããå¿ èŠããããŸããçŸç¶ã§ã¯ãŸã£ããå®è¡å¯èœã§ã¯ãªãããã§ãã
ãããä¿®æ£ãããŠããã®ãèŠããå Žåã¯ãè€è£œã±ãŒã¹ãçµã¿ç«ãŠãã®ã«æéãè²»ããå¿ èŠããããŸãããŸãã¯ãä»ã®èª°ããããããããšãæåŸ ããŸãã
ããããŸãããããããæãé ã10åã®ãã¹ãããã«ã§ãããã©ããã確èªãã24察25ã§å®è¡ããŠã¿ãŸãããããŸã§ã®éãCIã§ãã¹ããå®è¡ããåã«ãã£ãã·ã¥ãã¯ãªã¢ããããšã«é¢ããŠãäœããå§ãããŸããïŒ ããïŒ ããŸãããïŒ
æ§æãç¹ã«transforms
ãšã»ããã¢ãããã¡ã€ã«ãããããé¢é£æ§ããããŸã
CIã§ãã¹ããå®è¡ããåã«ãã£ãã·ã¥ãã¯ãªã¢ããããšã«é¢ããŠäœããå§ãããŸãã
å人çã«ã¯ãåœé°æ§ãŸãã¯åœéœæ§ãäžããããšã§é³è åãããã®ããªãããšã確èªããã®ã¯è¯ãèãã ãšæããŸãã ãã£ãã·ã¥ãã¯ãªã¢ããªãããšã¯ããã¹ãã®å®è¡æéã«å€§ããªéãããããããŸããïŒ
ãã£ãã·ã¥ãã¯ãªã¢ããåŸã«å®è¡ãããšãããªãé ããªãããã§ãã ãã³ããããããšãç§ã¯ããã調ã¹ãŠãåçŸãè©Šã¿ãããšãã§ãããã©ããã確èªããŸã
FWIWãç§ã¯ãŸããv25ããããã«é ãããv24ãšåçã§ããããšã«æ°ã¥ããŸããã 10ã40ïŒ è¿ãã®æ¹åã¯èŠãããŸããã§ããã
ããã«èšèŒãããŠããããã«ãjest 24ãããå€§å¹ ã«é«éåãããŠããŸãïŒ https ïŒ
äžèšã¯osxã§ãã¹ããããŸããã
ãã ããCentOSãå®è¡ããCIã§ã¯ããŸã£ããåãã»ããã¢ããã®å®è¡é床ãå€§å¹ ã«äœäžããŸãã
Linuxåºæã®åé¡ïŒ ãã£ãã·ã¥ãã¡ã€ã«ãæžã蟌ããšãã®I / Oé¢é£ã®åé¡ïŒ ãããé€å€ããããã«ãã£ãã·ã¥çæãå®å šã«ãªãã«ããããšã¯å¯èœã§ããïŒ
ç§ãã¡ã®å Žåãç¯äººãèŠã€ãããšæããŸããããã¯--collectCoverage
ãã©ã°ã§ãã Jest 24ãš25ã®äž¡æ¹ã§åé€ãããšã25æªæºã®ãã¹ãã¯çŽ2åã®é床ã§å®è¡ãããŸããæå¹ã«ãããšã25æªæºã®ãã¹ãã¯24æªæºã®åããã¹ãã®ã»ãŒ4åã®é床ã«ãªããŸãã
ããã¯OSXãšCentOSã®äž¡æ¹ã§åçŸå¯èœã§ããããã以åã®ã³ã¡ã³ããšã¯ç°ãªãããã®åé¡ã¯Linuxåºæã§ã¯ãªãããã§ãã
é¢çœãïŒ ã€ã¹ã¿ã³ããŒã«ãv3ã«æŽæ°ããŸããããããããããã«ããäœããåŸéããŠããŸãã v8ã³ãŒãã«ãã¬ããžã®ãµããŒããè¿œå ããã®ã§ããããããšãã«ãªãã¡ã¯ã¿ãªã³ã°ãå°ç¡ãã«ããå¯èœæ§ããããŸã
ã¯ãïŒ ããã¯ç§ãèŠãŠãããã®ãšãäžèŽããŠããŸãã 2åé ãCIã§ã«ãã¬ããžãå®è¡ããŠããŸãã ãããŠãç§ãcovgãªãã§ããŒã«ã«ã«å®è¡ãããšããéåžžã«é«éã§ãã @SimenBå€ãã€ã¹ã¿ã³ããŒã«ã䜿çšããããã®èšå®ãªãã·ã§ã³ã¯ãããŸããïŒ :)
ãšã«ãããã«ãããåã«ãã£ãã·ã¥ãåé€ããã®ã§ããããå®éã«åå ã§ããå Žåã¯ãCIã§ã®ãã£ãã·ã¥çæããªãã«ãããšãããš@csvanãèšã£ãããšããšã³ãŒãââãŸã
ãããåçŸããããšã¯ã§ããŸãã-ç§ããã¹ããããªããžããªã¯ãv24ãšv25ã®éã§--coverage
ãšã»ãŒåãããã©ãŒãã³ã¹ã瀺ããŸãã 誰ããjest24ãšjest25ã䜿ã£ãŠãªããžããªããŸãšããããšãã§ããã§ããããïŒããããåãæ¿ãããšéããããããŸããïŒ
ã«ãã¬ããžãç¡å¹ã«ããŠCIãã«ããå®è¡ããã ãã§ããã @ csvanã¯äœãã«
ãã«ããšãŒãžã§ã³ãããã®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ç§ïŒã Jest 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ã«ããŠã³ã°ã¬ãŒããããšããããã®ãšã©ãŒã¯ãªããªããŸãã
ãŸããJest 25ã¯ããã®æ§æã§æ瀺çã«ç¡å¹ã«ãããã¡ã€ã«ããã«ãã¬ããžãåéããŠããããã«èŠããããã collectCoverageFrom
æ¹æ³ãç°ãªãããšã«æ°ä»ããŸããã ããã§globæ§æã®ãµããŒãã¯å€æŽãããŸãããïŒ
JSãã¬ãŒã¹ã¯ãããŸããïŒ ãããã©ãã§æ»ãã ããèŠãã®ã¯èå³æ·±ãã§ãããã
ãŸããJest 25ã¯ããã®æ§æã§æ瀺çã«ç¡å¹ã«ãããã¡ã€ã«ããã«ãã¬ããžãåéããããã«èŠãããããcollectCoverageFromã®åŠçæ¹æ³ãç°ãªãããšã«æ°ä»ããŸããã ããã§globæ§æã®ãµããŒãã¯å€æŽãããŸãããïŒ
Micromatch 4ã«ã¢ããã°ã¬ãŒãããŸããããäœããå€ãã£ãå¯èœæ§ããããŸãã ãã ããæå³çã«å€æŽããããšã¯ãããŸããã è€è£œã§å¥ã®åé¡ãéãããšãã§ããŸããïŒ
JSãã¬ãŒã¹ã¯ãããŸããïŒ
ããã¯å°å·ãããŸããïŒ
==== 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-...
ç·šéïŒå®éã«ã¯ãã«ãã¬ããžãç¡å¹ã«ããŠãããŒããšã©ãŒãçºçããŸãã
Micromatch 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
CIïŒtravisïŒã®ã¿ã€ãã³ã°ã
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ããŒãªã³ã°ã¯ããã¯ã ãã§jest-environment-jsdom
ã«<24.0.0
ç§ã®äžã«package.json
ééããªã圱é¿ãäžããŸããã heap out of memory
ãšã©ãŒã¯ãªããªããJestã¯åé¡ãªãå®è¡ãå®äºããããã§ãã
é¢çœãïŒ æéãããã°ããã¹ãã§ãããçŽ æµã§ã
ãŸãã¯ã jsdom
ãªã³ã¯ããŠäºçåããŸãã ææ¥ãããŸããããŸã ããåçŸããããŸãã
次ã®ãã¹ãã§ã¯ãã«ãã¬ããžãæå¹ã«ããŠããŸããã
[email protected]
[email protected]
[email protected]
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
ã圹ã«ç«ãŠãã°
ããã圹ç«ã€ãã©ããã¯ããããŸããããç§ã®çµç¹ã§ã¯ãJest24ããJest25ïŒ18åãã28åïŒãžã®å€§å¹ ãªé床äœäžããããã«ãã¬ããžåéããªãã«ããåŸïŒ10åãŸã§ïŒãªããªããŸããã
@rosasynstylae奜å¥å¿ãããããªãã®ã³ãŒãã«ã¯ããããã®ã¹ãããã·ã§ãããã¹ãããããŸããïŒ
@benmonroããã§ããã
ç§ãã¡ãããã§ãïŒ @SimenBãªããžããªå ã®ã¹ãããã·ã§ããããããããããšããããçºçããå¯èœæ§ããããšæããŸããïŒ
ã¹ãããã·ã§ããããªãå Žåã«ããã©ãŒãã³ã¹ã®åé¡ãçºçããŸãã ãã ããã«ãã¬ããžãåéããŠããŸãã 24-> 25ããã®å€§å¹ ãªæžéã2ã€ã®ç°ãªããããžã§ã¯ãã ããã¯å€åããŸãããæžéã¯éèŠã§äžè²«ããŠããŸãã
å€æŽãå ããã«äœåºŠããã¹ããå®è¡ã§ãããã¹ãã¯å¹³åããŠ24åã®é床ã§10åé ããªããŸãã
24ã«æ»ããšãå®è¡ã¯ä»¥åã®é床ã«æ»ããŸãã
å¿ èŠã«å¿ããŠãããå€ãã®æ å ±ãæäŸã§ããŸãã ã¹ãããã·ã§ãããã¹ãã®ãªã2ã€ã®ãããžã§ã¯ãã«ã€ããŠèšåãããã£ãã®ã§ãã
ããã«ãããã¹ãŠã®ã³ã¡ã³ããããã«ãã¬ããžãåé¡ã§ãããããããã€ã¹ã¿ã³ããŒã«ã§ã®ååž°ã§ããããã«æãããŸããïŒ
ããã«ãããã¹ãŠã®ã³ã¡ã³ããããã«ãã¬ããžãåé¡ã§ãããããããã€ã¹ã¿ã³ããŒã«ã§ã®ååž°ã§ããããã«æãããŸããïŒ
ã€ã¹ã¿ã³ããŒã«ã«æãåããã®ã¯ããã»ã©éãã¯ãªãã§ãããã ç§ã®å Žåãã«ãã¬ããžãç¡å¹ã«ãªã£ãŠããå Žåã§ããJest 25ã§ããã©ãŒãã³ã¹ãšå®å®æ§ã«é倧ãªåé¡ãçºçããŠããŸããhttpsïŒ //github.com/facebook/jest/issues/9457#issuecomment-579423330ãåç §ããŠ
2ã€ã®å¥ã ã®åé¡ãããå¯èœæ§ããããŸãã
1ïŒjest-environment-jsdom-fourteenã®åé¡ãããã³
2ïŒã€ã¹ã¿ã³ããŒã«ã«ãã¬ããžã®åé¡
ç§ã¯æ Œäžãmicromatch
ã«^3.0.0
䜿çšããŠå€§èŠæš¡ãªé«éåãšã®ããã--coverage
å€ããå°ãªããããã¯æã
ã¯åè«24猶誰ã®åçã®äžã§èŠãããã©ãŒãã³ã¹ã«ã¯ãïŒ
æŽæ°ïŒãã ãã --coverage
ãªãã§å®è¡ãããšãJest 24ã¬ãã«ã®ããã©ãŒãã³ã¹ã«æ»ããŸã-2åé
ãïŒ-/
@EvHausãã§ãã¯ããŠãããŠããããšãããšãŠãé¢çœãïŒ æ®å¿µãªãããç§ã¯ãŸã ãããåçŸããããšãã§ããŸããã ã ãããè€è£œã¯ãŸã çŽ æŽãããã§ããããããããã°ç§ã¯ããããããã°ããããšããããšãã§ããŸãã
ç§ã¯æ Œäžã
micromatch
ã«^3.0.0
䜿çšããŠå€§èŠæš¡ãªé«éåãšã®ããã--coverage
å€ããå°ãªããããã¯æã ã¯åè«24猶誰ã®åçã®äžã§èŠãããã©ãŒãã³ã¹ã«ã¯ãïŒæŽæ°ïŒãã ãã
--coverage
ãªãã§å®è¡ãããšãJest 24ã¬ãã«ã®ããã©ãŒãã³ã¹ã«æ»ããŸã-2åé ãïŒ-/
äžçã§äœã...ã€ã¹ã¿ã³ããŒã«ã§äœãèŠããªãéãããã€ã¯ããããã«äŸåããŠããã®ã§ããããã«ãã¬ããžã«åœ±é¿ãäžããçç±ã¯ç§ãè¶ ããŠããŸãð
ãã€ã¯ããããå šäœã®ããã©ãŒãã³ã¹ã¯å°ãã°ãããŠããŸããã«ãã¬ããžv3ã¯v4ãããé«éã§ãããv4ããªãå Žåã¯v3ãããé«éã§ããã ð
@SimenBããã確èªã®ããã«CIã«ãå®è¡ããŸããã è¿œå 以å€ã¯äœãå€æŽããŸãã
"resolutions": {
"micromatch": "^3.0.0"
}
ç§ãã¡ã®package.jsonã¯ã --coverage
ã䜿çšãããšãå®è¡ãã6åã§ç¢ºå®ã«ççž®ãããJest24ã§èŠããã®ã«ã»ãŒæ»ããŸããã
ç§ãèŠãéããã€ã¹ã¿ã³ããŒã«ã§ã¯ãã€ã¯ããããã«äŸåããŠããŸã
ããã«é¢é£ããŠããå¯èœæ§ã®ããå¥ã®ã¹ã¬ããã§ãã®ã³ã¡ã³ããèŠã€ãããŸããïŒ
https://github.com/facebook/jest/issues/9464#issuecomment -579733243
istanbulã§micromatch
ããã«ãããã®ããªãããšã確èªããŸããïŒåœŒãã¯babelãã©ã°ã€ã³ã§minimatch
ã䜿çšããŸãïŒã
確ãã«ãé€å€ãé©åã«æ©èœããŠããªãããšã«ã€ããŠã®äœããããããŸããã ããã䜿çšããŠãã€ã³ã¹ãã«ã¡ã³ãããå¿
èŠããããã®ã確èªããŸãïŒ https ïŒ true
ã§ã©ãã§ãmicromatch@4
æã
ããªãããšmicromatch@3
ïŒ
確ãã«2ã€ã®å¥ã ã®åé¡ã®ããã«æããŸãã1ã€ã¯jsdomã«é¢ãããã®ã§ããã1ã€ã¯ã«ãã¬ããžã«é¢ãããã®ã§ãã
micromatch @ 3ã解決ãããšãCIã§éåžžã®é床ã«æ»ã£ãŠããããšã確èªã§ããŸãã
Jest + typescript + reactã³ãŒãããŒã¹ã¯ãã¡ãã ãã®åé¡ã確èªããnpm-force-resolutionsã䜿çšããŠmicromatch ^ 3.0.0ã匷å¶ãããšãã¯ã¬ã€ãžãŒãªé床äœäžãä¿®æ£ãããããã§ãã
æ§æã«ã«ã¹ã¿ã ãã¹ããã¡ã€ã«ãã¿ãŒã³ãŸãã¯ã«ãã¬ããžãã¿ãŒã³ããããŸããïŒ
@EvHaus jsdomããŒãžã§ã³ãšã®å€§ããªéããèŠãããã«ãMicromatchãããŠã³ã°ã¬ãŒãããããšã§éããèŠããããã©ãããç§ã¯éåžžã«èå³ããããŸã
ãããããªãã®èšãããããšãªããããã§ãã
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/**/**',
],
ç§ãã¡ã«ãããããããé·ã/å€ãéåžžã«äŒŒãŠããŸã
@ Ancient123ããããã®éãã§ãã åŠå®ããããã¿ãŒã³ã®ãã€ã¯ããããååž°ã«é¢é£ããŠããããã§ãã ããããšãïŒ
åŠå®ããããã¿ãŒã³ã®ãã€ã¯ããããååž°ã«é¢é£ããŠããããã§ãã ããããšãïŒ
泚æããŠãç§ã¯ãããã§ããã ãæ©ã調ã¹ãŸãã
ãã€ã¯ããããã®ããã©ãŒãã³ã¹å šäœãå°ãã°ãããŠããŸã
ããã©ãŒãã³ã¹ã®äœäžã«ã€ããŠç³ãèš³ãããŸããã ã°ããã®æ£èŠè¡šçŸãçæããããšã¯ãèŠãç®ãããã¯ããã«å°é£ã§ãã ç¹ã«ãåŠå®ãåŠçããã¯ãã¹ãã©ãããã©ãŒã ã«ããå¿ èŠãããå Žåã ç§ã¯ä»ããã調ã¹ãŠããŸãã
@jonschlinkertããã¯
ã¯ãïŒ @SimenBãèšã£ãããšã â€ïžã«ä»ãªããŸãã
@EvHaus jsdomããŒãžã§ã³ãšã®å€§ããªéããèŠãããã«ãMicromatchãããŠã³ã°ã¬ãŒãããããšã§éããèŠããããã©ãããç§ã¯éåžžã«èå³ããããŸã
ç§ã®package.json
ç§ã¯èšå®ããŸããïŒ
"resolutions": {
"micromatch": "^3.0.0"
}
npm install
åå®è¡ããŠãããæåã§node_modules/jest/micromatch
åé€ããŸããïŒããŒãžã§ã³4ã§ããïŒã 次ã«ããã¹ããåå®è¡ããŸããã
æ®å¿µãªããããŸã å€ãã®ãJavaScriptããŒãã®ã¡ã¢ãªäžè¶³ããšã©ãŒãçºçããŠããŸãã
ããŠã³ã°ã¬ãŒãã¯æ£ããè¡ã£ãŠããŸããïŒ
resolutions
ã¯yarn
resolutions
ãå¿
èŠã§ããã npm
ã¯ãŸã å®è£
ãããŠããŸããïŒv7ã®ããŒããããã«ãããŸãïŒhttpsïŒ//blog.npmjs.org/post/186983646370/npm- cli-roadmap-summer-2019ïŒ
@EvHaus npm v7ãhttps ïŒ //www.npmjs.com/package/npm-force-resolutions
é
ããŠç³ãèš³ãããŸããã npm-force-resolutions
ïŒããã¯æ£ããããšãããŠããŸãïŒã䜿çšããŠmicromatch
ãv3ã«ããã¯ããŸããã æ®å¿µãªãããããŒããšã©ãŒã¯è§£æ¶ãããŸããã§ããã
ã ããç§ã«ãšã£ãŠã¯ãããã§è¿°ã¹ãããŠããããã«ãããã¯ãŸã [email protected]
ããã§ãïŒ https ïŒ
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ïŒããã©ã«ãã§jestã«ä»å±ããŠãããã®ïŒã䜿ããããŠãä»ã®å€æŽã¯ãããŸãããïŒ 16.1.0ã§ããã¹ãã§ããŸããïŒãã ããã¡ã¢ãªãªãŒã¯ãçºçããããããã¹ããé£ããå ŽåããããŸãïŒã JSDOMã¯ã«ã¹ã¿ã èŠçŽ ã®ãµããŒããå©çšããŠçéžããã°ããã§ãããããã«äœããã®ãªã°ã¬ãã·ã§ã³ãããå¯èœæ§ããããŸããïŒ ããããªã
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ïŒ
åäžãããããã§ãã
ããã«ã¡ã¯@SimenB ã
ããã§åçŸå¯èœãªã±ãŒã¹ãäœæããŸããhttps://github.com/olebedev/jest-perf-issueã ã芧ãã ããã 以äžã®çµæãæ¯èŒããŸãã / cc @joscha
çµæ
ãã³ãããŒã¯ã¯
MBP 2019, 32Gb RAM, i9-8950HK CPU @ 2.90GHz
å®è¡ãããŸããã| ãžã§ã¹ãããŒãžã§ã³| ãã©ã³ã| æé|
|ïŒ-------------- |ïŒ------ïŒ| ----------ïŒ|
|24.9.0
|master
|348.077s
|
|25.1.0
|jest25
|591.33s
|
ç§ãã¡ã®å Žåãjest v25.1ã¯v24.9ãšæ¯èŒããŠçŽ50ïŒ é ããªããŸããããææ°ã®jest v25.2.0ã¯v25.1ãšæ¯èŒããŠããã«20ïŒ é ããªã£ãŠããŸãð
@olebedevãããŒãããã¯çãã§ãð¬
ç§ã¯ããªãã«äŒŒãçªå·ãååŸããŠããŸãã å®éã®ãããžã§ã¯ãã«åºã¥ããŠããå Žåã¯ãv8ã«ãã¬ããžã䜿çšããããšããå§ãããŸãã ããªãã®è€è£œã§ã¯ãç§ã®ãã·ã³ã§ã¯600ç§ãã35ç§ã®ã©ã³ã¿ã€ã ãå¿ èŠã§ãã 倧ããªéãã®çç±ã¯ããããããã«ããŒãããŠããªããã¡ã€ã«ãv8ã«ãã¬ããžã§ã€ã³ã¹ãã«ã¡ã³ãåããããšããªãããšã§ãïŒv8ã§æ©èœãããã¹ãŠã®ãã€ããã«ããŒãããŠããªããšèšãã ãã§ãïŒã
https://jestjs.io/docs/en/configuration#coverageprovider -string
ãªããããªã«é ãã®ãããããªã...ç§ã¯ããã調ã¹ãæéãèŠã€ããããšããŸãïŒãããããã«ã¯ãããŸããïŒã å°ãªããšãv25ã§ã¯v24ãããé ããªããªãããã«ããå¿ èŠããããŸã
v8ã«ãã¬ããžãäžç·ã«äœ¿çšã§ããããšãããã¥ã¡ã³ããæ£ããç解ããŠããŸãã
...-sixteen
ç°å¢ã§ïŒ
也æ¯ã
J
2020幎4æ8æ¥æ°Žææ¥ã22ïŒ33 Simen Bekkhusã notifications @ github.comã¯æ¬¡ã®ããã«æžããŠããŸãã
@olebedev https://github.com/olebedevãããŒãããã¯çãã§ãð¬
ç§ã¯ããªãã«äŒŒãçªå·ãååŸããŠããŸãã ãããå®éã®ãããžã§ã¯ãã«åºã¥ããŠããå Žåç§ã¯
v8ã«ãã¬ããžã®äœ¿çšããå§ãããŸãã ç§ã®å Žåãã©ã³ã¿ã€ã ã¯600ç§ãã35ç§ããããŸã
ããªãã®è€è£œã®æ©æ¢°ã 倧ããªéãã®çç±ã¯ããããããã§ã
ã«ããŒãããŠããªããã¡ã€ã«ã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
ã§ãã ãŸããããŒã8ã§ã¯ãªããããŒã10以éã§ã®ã¿ãµããŒããããŠããããšã«ã泚æããŠãã ããã
ïŒããã¯Node envã§ã®ã¿ãã¹ãããããšããããŸããããã°ã§ããjsdom envã§åäœããªãå Žåã¯ãå¥ã®åé¡ãéããŠãã ããðïŒ
jest-environment-jsdom-sixteen + v8ã¯ãã«ãã¬ããžãããã€ããŒãšããŠãjest 25.3.0ãããŒã12.16ã§çŽ20ïŒ æªåããŸããã ãŸãããã¹ãããã©ãŒãã³ã¹ãjest 24ãã25ã«çŽ80ïŒ æªåããçç±ããããã°ããããšããŠããŸãã
@joualãã€ã¯ããããã®åé¿çïŒ3.xãžã®ããŠã³ã°ã¬ãŒãïŒãè©ŠããŸãããïŒ
ããã§ãåæ§ã®çµéšãããããã¹ãæéïŒã«ãã¬ããžãªãïŒã¯v25ã§35ã40ç§ãã80ã90ç§ãå Žåã«ãã£ãŠã¯ãã以äžã«2åã«ãªããŸãã v3ã§ãã€ã¯ãããããããã¯ããŠã¿ãŸãããã枬å®å¯èœãªéãã¯ãããŸããã FwiwãçŽ3kã®ãã¹ããããããã®ãã¡58ã¯ã¹ãããã·ã§ãããã¹ãã§ãã
jsdomãããŠã³ã°ã¬ãŒãããããšããŸããããããã¯ç§ãã¡ã䜿çšããŠããæè¿ã®æ©èœã®ããã«å€ãã®ãã¹ãã®ç Žæãããããããã§ãã ã©ãã«ãããŠãããåé¿ããŠå ±åã§ãããã©ããã確èªããŸãã
@SimenBããããããªãããžã§ã¯ãã®ã«ãã¬ããžåéãžã§ããéåžžã«é
ãã§ããããªãã¯ããããã§ãã¯ã§ããŸããïŒ https://github.com/prettier/prettier/runs/579497097 Node.js 12 on ubuntu-latest
ã¯ã«ãã¬ããžãåéããŸãããä»ã®ãžã§ãã¯åéããŸããã
ããã§ãåæ§ã®çµéšãããããã¹ãæéïŒã«ãã¬ããžãªãïŒã¯v25ã§35ã40ç§ãã80ã90ç§ãå Žåã«ãã£ãŠã¯ãã以äžã«2åã«ãªããŸãã v3ã§ãã€ã¯ãããããããã¯ããŠã¿ãŸãããã枬å®å¯èœãªéãã¯ãããŸããã FwiwãçŽ3kã®ãã¹ããããããã®ãã¡58ã¯ã¹ãããã·ã§ãããã¹ãã§ãã
jsdomãããŠã³ã°ã¬ãŒãããããšããŸããããããã¯ç§ãã¡ã䜿çšããŠããæè¿ã®æ©èœã®ããã«å€ãã®ãã¹ãã®ç Žæãããããããã§ãã ã©ãã«ãããŠãããåé¿ããŠå ±åã§ãããã©ããã確èªããŸãã
ä»æ¥ã jest @ 24 ïŒããã©ã«ãã§ã¯v11ïŒã§ããŸããŸãªjsdomããŒãžã§ã³ãè©ŠããŠããŸããã v14ãŸã§ã¯ãã¹ãŠãæ£åžžã«æ©èœããŠããããã«èŠããŸãããv15ã®æç¹ã§ã¯ããã¹ãã®å®è¡ã«äžè²«ããŠ50ã60ïŒ é·ãããããŸãã v16ã§ãåã話ã jsdomãv14ã«ããŠã³ã°ã¬ãŒãããããšã§ã jest @ 25ã§åæ§ã®ããã©ãŒãã³ã¹ãååŸã§ãããã©ããã確èªããŸãã
[email protected]ã«ã¯ããã€ãã®ã¡ã¢ãªä¿®æ£ããããŸããã @ EvHausã§è©ŠããŠã¿ãŠãã ããã Jestèªèº«ã®--detect-leaks
ã¯ä»¥åã®ããŒãžã§ã³ã§ãªãŒã¯ãæ€åºããŸãããã16.2.2ã§ã¯æ€åºããŸããã§ããã
ã·ã³ããªãã¯ãªã³ã¯ãããããããå ŽåïŒWindowsã§ã¯éåžžã«é ãïŒãä»ã«ãããã€ãã®æ¹åç¹ããããŸãããããã£ãŠã人ã ã[email protected]ãè©ŠããŠçŽ æŽãããããšã§ãð
@SimenBããããã¹ãããæãç°¡åãªæ¹æ³ã¯äœã§ããïŒ [email protected]
ãdevDependencyãšããŠçŽæ¥è¿œå ãããšãJestã¯ãããç¡èŠããä»æ¥15.2.1ã§ããjest-environment-jsdom
ãã³ãã«ãããŠãããã®ããã¹ãŠäœ¿çšããŸãã
npm
ãã ãŸããŠãå¿
èŠãªjsdomããŒãžã§ã³ã䜿çšããŠããããšã確èªããã«ã¯ã©ãããã°ããã§ããïŒ
jest-environment-jsdom-sixteenãã€ã³ã¹ããŒã«ããããã䜿çšããŸãhttps://jestjs.io/docs/en/configuration#testenvironment -string
Alphaãå
¬éãããŠããã®ã§ã jest@next
è©Šãããšãã§ããŸã-ããã«äœ¿ããjsdom16ãä»å±ããŠããŸã
@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]>,...
ã²ã©ãðããã¯ã«ãã¬ããžã®æç¡ã«ãããããã§ããïŒ
ããã¯å ±éãªãã§ããã æ確ã«ãã¹ãã ã£ãã
ããªãå€ãããŒãžã§ã³ã®NodeïŒv10ïŒãå®è¡ããŠããããšããããã«åœ±é¿ãããšæããŸããïŒ
æ°ããããŒãžã§ã³ãè©ŠããŠã¿ãããšãã§ããŸããããã以å€ã«èå³æ·±ãããŒã¿ãã€ã³ãã¯ãããŸããã ä»ã«è©Šãã¹ãããšã¯ãããŒããã³ããæ»ã¬çŽåã«äœæããããšã§ãã ããŒãã«ã¯äœããããŸããïŒ
micromatch @ 4ãæ£èŠè¡šçŸããã£ãã·ã¥ããªããªã£ãããšã誰ãèšåããŠããªãã®ã¯èå³æ·±ãããšã§ãïŒ https://github.com/micromatch/micromatch/pull/151ããã³https://github.com/facebook/jest/pull/10131ãåç §ïŒãžã§ã¹ãåŽã®ãã£ãã·ã³ã°ã
ç§ã«ãšã£ãŠã¯ã micromatch @ 3ã«ããŠã³ã°ã¬ãŒããã jest-environment-jsdom-sixteen
ã¢ããã°ã¬ãŒããããšãæéã®50ïŒ
ãç¯çŽãããŸããã
ããããjest 26ãšçµã¿èŸŒã¿ã®jsdomã䜿çšãããšãç§ã®å Žåã-detectLeaksãæå®ããŠjestãå®è¡ãããšããªãŒã¯ãšã©ãŒãçºçããŸãã æ°é®®ãªã¬ããè©ŠããŠã¿ãŸãããããã¹ãŠããŸããããŸããã
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å以äžããããŸãã åçŸã®ããã«åé¡ãç¹å®ããããšã¯ã§ããŸããããäœããã¹ããããã«ã€ããŠã¢ããã€ã¹ãããã ããã°ãéåžžã«èå³ããããŸãã ããªããããã«è²»ããããã¹ãŠã®ä»äºã«æè¬ããŸãïŒ
@SimenB
prettier
ãããžã§ã¯ãã®å Žåãã«ãã¬ããžãåéãããšãã«v24
ãããäœéã§ãã
ããŒãžã§ã³25ããã³26ã®ããã©ãŒãã³ã¹ãBitbucketPipelineã§24ãããäœãããšã確èªã§ããŸãã ãŸããã«ãã¬ããžãæå¹ã«ãããšé床ãäœäžããããšã«ãæ°ã¥ããŸããã ããŒãžã§ã³25ã¯26ã«æ¯ã¹ãŠããã«æªåããã¡ã¢ãªã®æ¶è²»ã«ãããã€ãã©ã€ã³ãã¯ã©ãã·ã¥ããŸãã
@SimenB git bisect
ãå®è¡ããŠã24.9ãš25.1ã®éã®ããã©ãŒãã³ã¹ã®äœäžãã©ãã§çºçãããã調ã¹ãŸããã 24.9ãã26.1ãŸã§å€æŽãªãã§å®è¡ããããããããããããªãã¹ãã䜿çšããŸããã
jsãµãã»ããã®3åã®å®è¡ã®çŽ¯ç©å®è¡æéãïŒãã°ããã®éå®å
šã«ããããã«ïŒç¡å¹ã«ãããã£ãã·ã¥ãšæ¯èŒããŸããã ããå
·äœçã«ã¯ãç§ã䜿çšããã³ãã³ãã¯ãããŒã10.19ã®ïŒ yarn run jest --no-cache tests/js/
ïŒ
çµæïŒ
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
ãå®çŸ©ãããŠããªãå Žåã¯ãã©ãŒã«ããã¯ããããããad5377333daf6716af3465bba39f86b7db485e2bãã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ã®ã©ã³ã¿ã€ã ã«æ»ããŸãã ããã解決çã§ã¯ãªããšç¢ºä¿¡ããŠããŸãããå°ãªããšãç§ãã¡ã«ã¯äœãåãçµãã¹ãããšããããŸãã
å¥ã®ããŒã¿ãã€ã³ããšããŠãç§ãã¡ã®jestã¹ã€ãŒãã¯çŸåš[email protected]ã§çŽ2767ç§ããããã¢ããããŒãMRã§ã¯çŽ3497ç§ããããçŽ27ïŒ å¢å ããŸãã
çŽ æŽãããä»äºãããŠãããŠããããšããjestããŒã ã @ wurstbonbonã®æ¢åµã¹ãã«ãããã®ãªã°ã¬ãã·ã§ã³ã®ä¿®æ£ã«åœ¹ç«ã€ããšãé¡ã£ãŠããŸãïŒ
@wurstbonbonæãã®ã«æéãcompileFunction
ãé
ãã®ã¯éåžžã«èå³æ·±ãããšã§ã...ã€ãŸããããããé©çšãã代ããã«ãã«ã¹ã¿ã ãã¹ãç°å¢ã䜿çšã§ãããšããããšã§ãã
const NodeEnv = require('jest-environment-node');
class MyNodeEnv extends NodeEnv {}
delete MyNodeEnv.prototype.compileFunction;
module.exports = MyNodeEnv;
ïŒãããŠjsdom envã«ã€ããŠãåãã§ãïŒã 確èªã§ããŸããïŒ
ãããããã®ãããªããã«ããã¯ã§ããããšã¯å¥åŠã«èãããŸã-18ãæåã«ããŒãèªäœãããã䜿çšããããã«åãæ¿ããŸããïŒ https ïŒ https://github.com/nodejs/node/issues/26229ã¯éåžžã«èå³æ·±ããã®ã§ãããããããç§ãã¡ã®åŽã§ããå°ããã£ãã·ã¥ãè¡ãå¿ èŠããããŸããïŒ
@SimenBç§ã¯ãã®ã«ã¹ã¿ã
ãã ããjest 26ã§ãã¹ãããŠããããã MyNodeEnv.prototype.getVmContext = null;
ãå®è¡ããå¿
èŠããããŸãããçŸåšã if (typeof this._environment.getVmContext === 'function') {
ãã§ãã¯ããŠããããã§ãã ãã ãããããä»ã®åé¡ãåŒãèµ·ããå¯èœæ§ããããã©ããã¯ããããŸããã
ãããã¯ãæ°åå®è¡ããåŸã«è¡šç€ºãããçµæã§ãã
Jest 26 w / testEnvironmentïŒ "ããŒã" => ã280s
Jest 26 w /ã«ã¹ã¿ã ãã¹ãç°å¢=> ã210s
ãžã§ã¹ã24 => ã160ç§
ä»ã®æ å ±ãäœãä»ã®ããšãæäŒã£ãŠããããã©ããæããŠãã ããïŒ
äºæ³éããã«ã¹ã¿ã ç°å¢ã¯ããããããªãã®ãšåãã¹ããŒãã¢ããããããããŸãã
ãŸããã³ãŒãããŒã¹ã§è©ŠããŠã¿ãŸããããéãã¯çŽ270ç§ãšçŽ200ç§ã§ãããããçŽ25ïŒ ã§ããã40ïŒ ã®åæžã§ã¯ãããŸããã æ®å¿µãªãããç§ãã¡ã¯jest 24ã§ãã¹ããå®è¡ã§ããŸãããããã¯ãæ°ããææ°ã®ã¿ã€ããŒã®ã¢ãã¯ã«äŸåããŠããããã§ãã
äžèšã®äŸã§delete
ãéããŸãããç³ãèš³ãããŸããã
ã³ã³ãã€ã«ãããé¢æ°ãæåã§ãã£ãã·ã¥ããã ãã§ååãã©ããçåã«æããŸã-ãã®ããããé©çšããŠã¿ãŠãã ããã ïŒããã«å«ãŸããŠãããã©ã³ã¹ãã€ã«ãããJSãšTSãœãŒã¹ã®äž¡æ¹ïŒ
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
ããã©ãŒãã³ã¹ã¯å°ãåäžããŸããããããã§ãjest24.xãããããªãäœéã§ãã
@leipert jsdomç°å¢ã14ã«ããŠã³ã°ã¬ãŒãããŠã¿ãããšããããŸããïŒ
jestæ§æã®yarn add test-environment-jsdom-fourteen --dev
+ "testEnvironment": "test-environment-jsdom-fourteen"
ã ããã¯ãç§ãã¡ã®æéã®å¢å ã®å€§éšåïŒ40ã50ïŒ
ãè¿œå ïŒã®åå ã§ããããã«èŠããŸãããè€æ°ã®ååž°ãçºçããŠããããã«èŠãå§ããŠããŸãã
@pleunv jest24.xã§ã¯jest-environment-jsdom-sixteen
jsdom 16ã䜿çšããŠããŸãããWebã³ã³ããŒãã³ãã®ãã¹ãã«é¢ããããã€ãã®åé¡ã®ããã«ã¢ããã°ã¬ãŒãããå¿
èŠããããŸããã ãããã£ãŠãç§ãã¡ãè¡ãå¯äžã®å€æŽã¯ã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ã®ãããªJestã«åœ±é¿ãäžããäž»èŠãªåé¡ã¯ãŸã éããŠããŸãã
å®éã«ã¯ãããã¯ã»ãšãã©ã®å³æžé€šã䜿çšããŠãããã®ã§ãã ããšãã°ããããããèŠãããšãã§ããŸããããããå®è¡å¯èœã«ãªããšã¯æããŸãã
@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ã³ãŒãã«ãã¬ããžãã©ã®ããã«æ©èœãããã埮調æŽããå¿ èŠããããŸãããææ¥ãŸãã¯æ¥é±ã«PRãéå§ããããšããŸãã
ãã¹ãã¹ã€ãŒãã§Script
ã䜿çšããããã«ãããããã¹ãããŸãããããããç§ãåŸãçµæã§ãã
æéã¯min:sec
åå| ã¹ã€ãŒã1 | ã¹ã€ãŒã2 | ã¹ã€ãŒã3 | ã¹ã€ãŒã4
-| -| -| -| -
ãžã§ã¹ã24 | 3:25 | 3:30 | 3:29 | 0:53
ããããåœãŠãjest26 | 3:32 | 4:36 | 3:48 | 0:53
jest26ããããªã| 5:10 | 6:12 | 5:11 | 1:07
26ãããvs24 | 4ïŒ
| 31ïŒ
| 9ïŒ
| 1ïŒ
26ããããªãvs24 | 52ïŒ
| 76ïŒ
| 49ïŒ
| 27ïŒ
26ãããé©çšæžã¿vsããããªã| 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
ããããåœãŠãjest26-1 | 3:42 | 4:31 | 4:08 | 0:57
ããããåœãŠãjest26-2 | 3:11 | 4:18 | 3:28 | 0:57
ããããåœãŠãjest26-3 | 3:55 | 5:12 | 3:19 | 0:55
ããããåœãŠãjest26-4 | 3:22 | 4:25 | 4:20 | 0:46
jest26ããããªã-1 | 4:30 | 6:12 | 4:28 | 1:08
jest26ããããªã-2 | 5:16 | 6:17 | 5:18 | 1:05
jest26ããããªã-3 | 5:46 | 6:07 | 5:49 | 1:09
ãã¹ãŠã®ãã¹ãã¯ãåãã³ãããããã³åæ§ã®ãã¹ãç°å¢ã§å®è¡ãããŸããïŒAzure DevOps Hosted Ubuntu 18ïŒ
ãã¹ãã¹ã€ãŒãã§jestãå®è¡ããã®ã«ããã£ãæéã ãã§ããã
ç§ã®ã¹ã€ãŒãã®ã»ãšãã©ã¯æ¬è³ªçã«äŒŒãŠããŸãïŒãã¹ãŠã®ããã¯ãšã³ãåäœãã¹ãïŒ
ç§ã®ç¥ãéãã Script
ã䜿çšãããããã¯ãããã©ãŒãã³ã¹ã«å€§ããªéãããããããŸãã
Suite 2
ã®é床äœäžãå€ãå€ãªã®ããå®éã®ååž°ãªã®ãããããŸããïŒ4åã®å®è¡ã®ã¿ïŒã
ããã©ãŒãã³ã¹ã®äœäžã¯ãŸã ããããã«èŠããŸãããããã»ã©æªãã¯ãããŸãã
v26ãv24ã§ãŸã æ¹åãããŠããªãããšã¯ãŸã èå³æ·±ãã§ã...
ããããšã@CelluleïŒ ããã§ååã§ããæéãããã°PRããŸãšããŸãã
ããããã®ïŒ ãã®å ŽåãMicromatchã®åé¡ã®ã¿ãæ®ããã¬ããžããªãåã³ã¢ã¯ãã£ããªã¡ã³ããã³ã¹ãåããããšãé¡ã£ãŠããŸãã
ãšããã§ãç§ãæšæž¬ããJSDOMã«ã¯ããã©ãŒãã³ã¹ååž°ããããŸãã ç§ã倧ããªãŠã§ããããžã§ã¯ãã§ãã®ãããªãã¹ããããããã«ã äžèšã®ãããã¯é©çšãããŸããã
ãããŠãããã¯ãã®ããã«èŠããŸããã
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
å¯ãïŒ149ç§
ãžã§ã¹ã26.4
å¯ãïŒ226ç§
çŽ æŽããããã¥ãŒã¹ðãã€ã¯ããããååž°ã«æ»ã£ããšæããŸãã
npm-force-resolutions
ã䜿çšããŠmicromatch 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]
ã«æŽæ°ããåŸãTravisã®å®è¡æéã20ïŒ
ç¯çŽã§ããŸã
ç§ãã¡ã®çµæïŒ
v26.5ã§ã
v24.9ã§ã
ããããšã@SimenBïŒ ããã¯çŽ æŽãããã§ãã ã2000ã¹ã€ãŒãã§ã®ã22000ãã¹ãã®çµæïŒ
ããã¯ã以åã«èŠãçŽ27ïŒ ã®é床äœäžãšæ¯èŒããŠãçŽ3ïŒ é ãããããã£ãŠèª€å·®ã®ç¯å²å ã§ãã ããããšãããããŸããããŒãžããå¿ èŠããããŸãïŒ //gitlab.com/gitlab-org/gitlab/-/merge_requests/33252#note_425616404
Jest 26.5.2ãšããŒã14ïŒä»¥åã¯ããŒã10ã«ãããŸããïŒã«ã¢ããã°ã¬ãŒãããåŸã以åã«çºçããŠãã
æŽæ°ïŒæ°ã«ããªãã§ãã ããã åã³OOMãšã©ãŒãçºçãå§ããŸããã ããã¯ç§ã®ã©ããããããåŠçã§ãããã®ã®å¢çç·äžã«ãããæåã®æ°åã®å®è¡ã¯è¯ãã£ããšæããŸãããä»ã¯åã³æ»ã«ãããŠããŸãã ãŸã 24.xxã«åºå·ããå¿ èŠããããŸã:(
誰ããèå³ãæã£ãŠãããªããç§ã¯JSDOMãšæ¯èŒããŠéåžžã«åªããããã©ãŒãã³ã¹ãæã€DOMãäœæããŸããã JestããµããŒãããŠããŸãã
| æäœ| JSDOM | Happy DOM |
| ------------------------------------ | ------- | --------- |
| ã€ã³ããŒã/å¿
é | 333ããªç§| 45ããªç§|
| HTMLã解æãã| 256ããªç§| 26ããªç§|
| HTMLãã·ãªã¢ã«åãã| 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/
@ capricorn86ããããã ã ä»æ§ã«æºæ ããŠããŸããïŒ
@ capricorn86ããããã ã ä»æ§ã«æºæ ããŠããŸããïŒ
ããããšã@milesjïŒ
å®è£ ãããæ©èœã¯ä»æ§ã«åŸã£ãŠå®è£ ãããŠããŸãããã©ã®ä»æ§ãã«ããŒãããŠãããã«ã€ããŠã®è©³çŽ°ãªæŠèŠã¯ãŸã ãããŸããã ãããè¿œå ããããšãèããŠããŸãã ãã ãããã¹ãŠã®æ©èœã¯åäœãã¹ãã§ã«ããŒãããŠããŸãã
DOMã®æåã®ç®æšã¯ãä»ã®ããã€ãã®ãããžã§ã¯ãã§å¿ èŠã ã£ãããã«ãWebã³ã³ããŒãã³ãã®ãµãŒããŒåŽãåªããããã©ãŒãã³ã¹ã§ã¬ã³ããªã³ã°ã§ããããã«ããããšã§ããã
FWIWãç§ã¯ãããžã§ã¯ããJest 24.9ã®react-scripts@3
ããJest 26.6ã®@react-scripts@4
ã«äžããŠã¿ãŸããã
ç§ãã¡ã®ãµãŒããŒAPIãã¹ãã¹ã€ãŒãã¯ã以åã¯çŽ180ã190ç§ã§å®è¡ãããŠããŸããã Jest 26.6ã«åãæ¿ããåŸãäžè²«ããŠçŽ220ç§ããããŸããã minimatch
ã4.0.2
匷å¶çã«è§£æ±ºããããšããŸããã ãã¹ãã©ã³ããŒãjest-circus
åãæ¿ãããšãæ°ç§ã§ããã¯ãªãããããã«èŠããŸããããå
šäœãšããŠã26.6ã¯èããé
ãããã§ãã
react-scripts@4
ã¯ãããã©ã«ãã§jest-circus
ã䜿çšããŸãïŒfwiwïŒã ãŸãã minimatch
ã§ã¯ãªãã micromatch
ã䜿çšããŸãã ïŒ10131ãä»ããŠmicromatch
ããŒã«ããã¯ãäžæããããã§ãããããããªã°ã¬ãã·ã§ã³ã®åå ã§ãããã©ããããã¹ãããã®ã¯ç°¡åã§ã¯ãããŸããã
@SimenB ïŒå¥åŠãªç§»è¡ã»ããã¢ããatmããããŸã-ããã¯ã CRAã䜿çšããŠãã«ããããã
atmã®åã«ã¯ãŒã¯ããã¯ã¹ããªãã®ã§ãå®éã«micromatch
æå³ããã®ãããããšãééã£ãããã±ãŒãžåã«çŠç¹ãåãããã®ããæãåºããŸãã:)確èªããå¿
èŠããããŸãæ¥é±ãŸãããã§ã
ç§ã¯ã¡ããã©v26ãmacOSã®ããã©ã«ã端æ«ãããiTermã§_ããªã_é ãããšã«æ°ã¥ããŸããã 6500ã®ãã¹ãã®ã»ããã§ãç§ã¯äžè²«ããŠæ¬¡ã®çµæãååŸããŸãã
ããã¯ãæžéã解決ããããã«ããŸããŸãªããšãäœã¶æãè©Šã¿ãåŸãå°ãé ãæ©ãŸããŸããã Macã§ããã©ãŒãã³ã¹ã®åé¡ãæ±ããŠããä»ã®èª°ãããããè©Šãããšãã§ããå¯èœæ§ã¯ãããŸããïŒ å¿µã®ããã«èšã£ãŠãããŸãããããã¯
@pleunvããã¯é¢é£ããŠããå¯èœæ§ããããšæããŸãïŒ https ïŒ
ãŠãŒã¬ã«ã ãiTermããæ€çŽ¢ãããšããã®PRã«ãã©ãçããŸããã ç§ã¯ä»¥åã«ãããã®äžç·ã«æ°ã¥ããŸãããããããããã€ããŒãªã³ã¯ã§ããããšã«æ°ã¥ããŠããŸããã§ããã ãã®PRãèŠãåŸãiTermã§ãã€ããŒãªã³ã¯ãç¡å¹ã«ããŠãã©ã³ã¿ã€ã ã130ç§ã«ççž®ããŸããã PRããã³ãŒããé©çšãããã€ããŒãªã³ã¯ãåé€ããåŸã120ç§ã«æ»ããŸããã æ£æ°ããããã«å埩ããŸããã
PRãå ã«æ»ãããå¯èœæ§ã¯ãããŸããïŒ
ç·šéïŒ @thymikeeã¯ç§ãããã«æã¡è² ãããŸããð
@pleunvä»é±ããããåãæ»ãããã®æéãèŠã€ããããšæããŸãã å®éã®ååŒã¯iTermã§ãããä¿®æ£ããããšã§ãããLinuxãªã©ã®ä»ã®ç«¯æ«ã§ã¯ãã€ããŒãªã³ã¯ã«åé¡ããªãããã§ãã iTermãããžã§ã¯ãã«åé¡ãæåºããŠããã ããŸãããïŒ
ãã®å€æŽãè¡ã£ããšããã1ã€ã®ãã¹ããã¡ã€ã«ã«å¯ŸããŠ1ãåŸãããŸããã ãããŠãããªãã¯ãŸã URLãã¯ãªãã¯ããããšãã§ããŸããããã¯ãã¯ãäžç·ãåŒãããŠããŸããã
ããã¯ã倧èŠæš¡ãªå®è¡ã§ã¯å·šå€§ã«ãªãå¯èœæ§ããããŸãã â€ïž
//ç·šé
é¢çœãããšã«ããããitermã§ãããã¿ãŒããã«ã§ãããã¯ã以åã¯äœã®éãããããŸããã§ããã å€æŽåŸãitermã®æ¹ãéããªããŸãã
@pleunvä»é±ããããåãæ»ãããã®æéãèŠã€ããããšæããŸãã å®éã®ååŒã¯iTermã§ãããä¿®æ£ããããšã§ãããLinuxãªã©ã®ä»ã®ç«¯æ«ã§ã¯ãã€ããŒãªã³ã¯ã«åé¡ããªãããã§ãã iTermãããžã§ã¯ãã«åé¡ãæåºããŠããã ããŸãããïŒ
ããã§åé¡ãäœæããŸããïŒGitLabã«ãããŸãïŒã 誰ããè¿œå ã®è©³çŽ°ãåçŸãããžã§ã¯ããæã£ãŠããå Žåã¯ãé æ ®ãªãè¿œå ããŠãã ããã
ãã®éã«ããå°ãå®éšãè¡ã£ãŠãããšããããã¹ãã®å°ããªãµãã»ããïŒæ°åã®ãã¹ããã¡ã€ã«ïŒã§ã®ã¿å®è¡ããå Žåããã€ããŒãªã³ã¯ã¯äžè¬ã«ããã»ã©å€§ããªéãããããããªãããšãããããŸããã ãã«ã»ããïŒ700ãã¡ã€ã«ïŒã§å®è¡ãããšã圱é¿ã¯éåžžã«æž¬å®å¯èœã§ãã
ãŸããé·æçã«ã¯ãjestã®ã³ã³ãœãŒã«åºåãéåžžã«ã°ãªãã/掟æã«ãªãå§ãããšããå°è±¡ããããŸãã ããšãã°ãäžéšã®é²è¡ç¶æ³ã©ã€ã³ã¯ã衚瀺ãããé衚瀺ã«ãªã£ãŠããŸãã
æãåèã«ãªãã³ã¡ã³ã
@SimenB
git bisect
ãå®è¡ããŠã24.9ãš25.1ã®éã®ããã©ãŒãã³ã¹ã®äœäžãã©ãã§çºçãããã調ã¹ãŸããã 24.9ãã26.1ãŸã§å€æŽãªãã§å®è¡ããããããããããããªãã¹ãã䜿çšããŸãããjsãµãã»ããã®3åã®å®è¡ã®çŽ¯ç©å®è¡æéãïŒãã°ããã®éå®å šã«ããããã«ïŒç¡å¹ã«ãããã£ãã·ã¥ãšæ¯èŒããŸããã ããå ·äœçã«ã¯ãç§ã䜿çšããã³ãã³ãã¯ãããŒã10.19ã®ïŒ
yarn run jest --no-cache tests/js/
ïŒçµæïŒ
compileFunction
ãå®çŸ©ãããŠããªãå Žåã¯ãã©ãŒã«ããã¯ããããããad5377333daf6716af3465bba39f86b7db485e2bããcompileFunction
ãã©ã³ããåé€ããŠãããã©ãŒãã³ã¹ã埩å ããŸããã26.1ãèŠããšãã³ãŒãã¯å°ã移åããŠããŸããã
compileFunction
ãšãã©ãŒã«ããã¯ã¯ãŸã ãããŸãã ããïŒã€ãŸãã
compileFunction
ãã©ã³ãïŒãããïŒãåé€ãããšã26.1ã24.9ã®ã©ã³ã¿ã€ã ã«æ»ããŸãã ããã解決çã§ã¯ãªããšç¢ºä¿¡ããŠããŸãããå°ãªããšãç§ãã¡ã«ã¯äœãåãçµãã¹ãããšããããŸãã