8.0.0
5.1.2
n/a
Chrome / chromedriver 2.29.0
Mac Sierra 10.12.5
n/a
ããŒãv8.0.0ãšnpmv5.0.0ãã€ã³ã¹ããŒã«ããå床åšãã°ããŒãã«ã«åã€ã³ã¹ããŒã«ããŠwebdriver-manager update
å®è¡ããåŸã次ã®ãšã©ãŒãçºçããããã protractor --elementExplorer
å®è¡ã§ããŸããã
protractor --elementExplorer
(node:76684) [DEP0022] DeprecationWarning: os.tmpDir() is deprecated. Use os.tmpdir() instead.
[11:04:10] I/hosted - Using the selenium server at http://localhost:4444/wd/hub
[11:04:11] I/protractor -
[11:04:11] I/protractor - ------- Element Explorer -------
[11:04:11] I/protractor - Starting WebDriver debugger in a child process. Element Explorer is still beta, please report issues at github.com/angular/protractor
[11:04:11] I/protractor -
[11:04:11] I/protractor - Type <tab> to see a list of locator strategies.
[11:04:11] I/protractor - Use the `list` helper function to find elements by strategy:
[11:04:11] I/protractor - e.g., list(by.binding('')) gets all bindings.
[11:04:11] I/protractor -
module.js:487
throw err;
^
Error: Cannot find module '_debugger'
at Function.Module._resolveFilename (module.js:485:15)
at Function.Module._load (module.js:437:25)
at Module.require (module.js:513:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/usr/local/lib/node_modules/protractor/built/debugger/debuggerCommons.js:1:82)
at Module._compile (module.js:569:30)
at Object.Module._extensions..js (module.js:580:10)
at Module.load (module.js:503:32)
at tryModuleLoad (module.js:466:12)
at Function.Module._load (module.js:458:3)
ããŒã7.10.0ã«æ»ã£ãŠãããã®ãšã©ãŒã¯çºçããŸããã
çŸåšãããŒã8ã«å¯ŸããŠãã¹ããè¡ã£ãŠãããšã¯æããªãã®ã§ããããå£ããŠããå¯èœæ§ãããããšã¯çã«ããªã£ãŠããŸãã ãããæã£ãŠããŠãããŠããããšãïŒ
æ°æ¥äžã«ãããæãäžããããšããŸããããããä¿®æ£ããããã®PRã¯å€§æè¿ã§ãïŒ
_debuggerãšã¬ã¬ã·ãŒCLIãããã¬ãŒã¯ããŒã8ã§åé€ãããŸããïŒ https ïŒ
ããã«é¢ããæŽæ°ã¯ãããŸããïŒ
Node8ãµããŒãã®èšç»ãæããŠãã ããã :)
Node v8ã10æã«LTSã«å ¥ãããã«èšå®ãããŠããã®ã§ãã¢ããããŒããå ¥æã§ããã§ããããïŒ
https://github.com/nodejs/LTS#lts -schedule1
https://nodejs.org/en/docs/guides/debugging-getting-started/#legacy -debuggerã«ãããšã
node.jsããŒã ã¯ããŠãŒã¶ãŒãæ°ããinspectAPIã«ç§»è¡ããŠããŸãã
inspect APIãŸãã¯ä»ã®ã¢ãããŒãã®ããããã§ãããåã³æ©èœãããããã®ããŒã ããã®èšç»ã¯ãããŸããïŒ
ç§ã¯ããã調ã¹å§ããŸããã ãããæŽæ°ããæ¹æ³ã«ã€ããŠã®æšæž¬ã¯æ¬¡ã®ãšããã§ãã
ç§ã®ç¥ãéããå€æŽã¯debuggerCommons.jsã§è¡ãå¿ èŠããã
ãããããrequire('_debugger');
ããã䜿çšããå¿
èŠãrequire('inspector');
ïŒããã§ã¯ããã¥ã¡ã³ããïŒã 次ã«ãã€ã³ã¹ãã¯ã¿ãŒãéããã»ãã·ã§ã³ãäœæããŠæ¥ç¶ãã session.post
ãšChrome DevToolsãããã³ã«ã䜿çšããŠã¡ãã»ãŒãžãéä¿¡ãããã¬ãŒã¯ãã€ã³ããè¿œå ããŸãã
æéãããã°PRã«ã²ã³ãå ¥ããŸãã
@phenomnomnominalãããããã¯çŽ æŽãããã§ãïŒ ãã€PRãã§ãããæããŠããã ããŸããïŒ ãã®æ©èœã¯ãšãŠã䟿å©ãªã®ã§ãããã«äœæã§ããã°çŽ æŽããããšæããŸãã ããã¯ç§ãã¡ã®éçºããšãŠãã¹ããŒãã¢ããããŸãã
ããããšãïŒ
@phenomnomnominalããã«ã¡ã¯ãæè¿ããŒã8.0ããµããŒãããäºå®ã§ããããã®åé¡ãä¿®æ£ããçŸåšã®èšç»ã¯äœã§ããïŒ
ç§ãäžã§æŠèª¬ãããã®ã ãã ç§ã¯ä»æ©ãããã¯ã©ãã¯ããããšãèšç»ããŠããŸããã
@phenomnomnominalããã¯çŽ æŽãããã§ããã©ããããããšãïŒ
@phenomnomnominalããã«ã¡ã¯ããããŸã§ã®æŽæ°ã¯ãããŸããïŒ
ç§ã¯è©ŠããŠã¿ãŸãããããã¹ããå®è¡ããããšãããšãã«Seleniumã§åé¡ãçºçããŠããŸããïŒãã³ãã¯ãããŸããïŒïŒã ç«ææ¥ã®å€ã¯ããå°ãæéããããŸãã æ°ããAPIã¯ãŸã£ããç°ãªããŸãããå®éã®åé¡ã¯äºæž¬ã§ããŸããã
ã¯ããããããšããããŸãã æææ¥ä»¥éã¯å°ãæéããããã¯ãã§ããããã以éã調ã¹ãŠã¿ãŠã¯ãããã§ããããã
ç§ã¯...ã©ããã§ïŒ ãããã¬ãŒã®ãããã°ã¯ãç§ãæãã§ããã»ã©ç°¡åã§ã¯ãªãããšãããããŸããã @qiyiggäœããèŠãæ©äŒããããŸãããïŒ
ä»æ¥ã¯èª¿ã¹ãŠã¿ãŸããããããšãïŒ
ä»æ©ãããå°ãæéããããŸããåŸã§ã¡ã¢ãæ¯èŒã§ããŸãã
ããã«ã¡ã¯ãå é±ã®ãã®åé¡ã«é¢ããé²å±ã¯ãããŸããïŒ ããã¯ãŸã èµ·ãã£ãŠããŸãã
å床åšãããã¬ãŒ/ãšã¯ã¹ãããŒã©ãŒã®å ŽåãããŒã8ã§ã¯ãµããŒãããªãããšã«ããŸããã
ãã®ããã®äœããã®ETAã¯ãããŸããïŒ ç§ãåããŠããå Žæã§ã¯ãå°ãã°ããæ©ãã§ããŸãã e2eãã¹ãã«ã€ããŠäœäººãã®äººã ã«æããããšããŠããŸããããããã°ã¢ãŒãã«å ¥ããé害ãçºçããã³ã³ããã¹ãã§å®éã«ã³ãŒããå®è¡ããæ¹æ³ããããŸããã ãã以å€ã®æ¹æ³ãããå Žåã¯ãç¥ãããã ããã
@ KellyR-STCU
ããã
ããŒãããŒãžã§ã³<8ã®å Žåãå
ã®ãããã°ããã»ã¹/ããŒã«ã䜿çšã§ããŸãã
ããŒãããŒãžã§ã³> = 8ã®å ŽåãNode.jsãã€ãã£ãasync / awaitã䜿çšããŠéåæåŒã³åºããåŠçããïŒå¶åŸ¡ãããŒãšå€ããããã¬ãŒã«äŸåããå¿
èŠããªãããã«ïŒæ°ãããããã°ããã»ã¹ã«åŸããchrome inspectorïŒãŸãã¯ä»ã®ããŒããããã¬ãŒïŒããããã°ããŸã
ãã€ãã£ãã®async / awaitãšchromeinspectorã䜿çšããŠãããã°ããæ¹æ³ã説æããããã¥ã¡ã³ããããã€ããããŸã
å¶åŸ¡ãããŒãç¡å¹ã«ããŠãããã°ãã
async / awaitã®äœ¿ãæ¹
ããã圹ã«ç«ãŠã°å¹žã
@qiyigg elementExplorerã¯ã©ãã§ããïŒ
@monkpitåãçç±ã§ããŒã8ã§ã¯æ©èœããŸããã ããã«å®å šã«ä»£ãããã®ã¯ãããŸãããããããã°äžã«ChromeéçºããŒã«ãéããŠäœ¿çšã§ããŸããããã¯ã以åã«ééããå床åšã®ãããã°ãšç«¶åããŸããã
@qiyiggããããŸãããelementExploreræ©èœãåé¡ã®çŠç¹ã ã£ãã®ã§ãéãããŸãŸã«ããŠãããŸãã
ãasync / awaitãšå¶åŸ¡ãããŒãçµã¿åãããŠäœ¿çšââããããšã¯ã§ããªãããããæ¢åã®ãã¹ããæžãçŽãå¿ èŠãããããããã®ãœãªã¥ãŒã·ã§ã³ãå°ãåé¡ã«ãªããŸãã åãæ¿ãã§æ¢åã®ãã¹ãŠã®ãã¹ããæŽæ°ããå¿ èŠããªãããã«ããã¹ãããšã«å®è¡ããã¢ãããŒããæå®ã§ãããšäŸ¿å©ã§ãã
@ uriah-æé
ã¯ããç§ã¯ãããå®ç§ãªè§£æ±ºçã§ã¯ãªãããšãèªããªããã°ãªããŸããã ããããåè¿°ããããã«ãå¶åŸ¡ãããŒã¯æçµçã«åé€ããããã®ã§ãã ãã¹ããasync / awaitã«å€æããããšã¯ãåŸã
ã«è¡ãå¿
èŠãããããšã§ããããããã°ãšã¯ã¹ããªãšã³ã¹ãåäžããŸãã
ç§ãã§ããæ¹æ³ã®1ã€ã¯ãæ°ãããã¹ãçšã«åå¥ã®ãã¹ãæ§æãçšæããããããåŸã
ã«å€æããããšã ãšæããŸãã
@qiyigg async / awaitã«å€æããæ¹æ³ã«ã€ããŠã®ã¬ã€ããããã¥ã¡ã³ãã¯ãããŸããïŒ
圌ãæäŸãããå¶åŸ¡ãããŒãç¡å¹ã«ãããããã°ãšããã¿ã€ãã«ã®2ã€ã®ãªã³ã¯ã®ããªãè¯ãæ
å ±ãš
async / awaitã®äœ¿ãæ¹
2ã€ç®ã¯ãããããå€æã®ããã®æ®µéçãªãã®ã§ãã
ããŒã8ã§browser.pause()
ã«åé¡ãçºçããåŸã
ç¡å¹ãªå¶åŸ¡ãããŒã«åŸããŸããã
node --inspect-brk bin/protractor <config_file>
ãå®è¡ããŠãã©ãŠã¶ã§ãããã°ãã代ããã«ãã¿ãŒããã«ã§node inspect $(which protractor) <config_file>
ã䜿çšããŠããdebug> cont
ã䜿çšããŸãã
ä»ãç§ã¯browser.pause()
çžåœã®ãã®ãæã£ãŠããŸãã
ããªãã¡ã䜿çšdebugger
ã®ä»£ããã«browser.pause()
確èªããã ãã§ãã倧èŠæš¡ãªå床åšã³ãŒãããŒã¹ããããäžåºŠã«async / awaitã«å€æããããšã¯ã§ããŸããã ãããå®è¡ããè¯ãæ¹æ³ã¯ãæåã«ãããã¹ãã§ãŒã³ã䜿çšããŠãã¹ãŠã®ãéåæãå床åšã¢ã¯ã·ã§ã³ãå€æããããšã§ãã ãã®ããã«ããŠãå¶åŸ¡ãããŒãæå¹ãã©ããã«é¢ä¿ãªãæ©èœããã¯ãã§ãã
ããããšã ïŒ
Promiseãã§ãŒã³ã¯ãå¶åŸ¡ãããŒãæå¹ãã©ããã«é¢ä¿ãªãæ©èœããŸãããé¢åãªå Žåãããããã€ãéåæ/åŸ
æ©ã«æ»ãããšããå§ãããŸããïŒ
ã ããç§ã®ææ¡ã¯ä»ã®ãšãã2ã€ã®å¥ã
ã®èšå®ãæã£ãŠããããšã§ããæ°ãããã¹ã/å€æããããã¹ããæ°ããèšå®ã«å
¥ããŠcontrol_flowãç¡å¹ã«ããå€ããã®ãåŸã
ã«åãé€ããŸã
åé¡ã¯ããã¹ãéã§å€ãã®é¢æ°ãå
±æããŠããããããããã®é¢æ°ãasync awaitã«ç§»è¡ãããšããããã䜿çšããasync awaitã«ç§»è¡ãããŠããªããã¹ãŠã®ãã¹ããäžæãããããšã§ãïŒãã³ãïŒA LOTïŒã ãŸããåãé¢æ°ã®2ã€ã®ããŒãžã§ã³ãä¿æãããšãããããåå²ãããªã¹ã¯ããããŸãã
ãããã£ãŠãasync / awaitã«ç§»è¡ããåã«ãäžéã¹ããããšããŠãã§ãŒã³ãçŽæããããã«ãã¹ãŠã移è¡ãããããã¹ãã³ãŒãããŒã¹ããã©ã³ã¹ãã€ã«ããããã«babelãèšå®ããŸãïŒhttps://stackoverflow.com/questions/ã®ãããªãã®ã䜿çšïŒã 28708975 / transpile-async-await-proposal-with-babel-jsïŒïŒãasync / awaitãèšè¿°ããŠãå¶åŸ¡ãããŒã®æç¡ã«ãããããå®è¡ã§ãããã®ã«ãã©ã³ã¹ãã€ã«ããããšãã§ããŸãã
ããã以åã«è¡ãããããšããããã©ãã誰ããç¥ã£ãŠããŸããïŒ
ãããã«ãããReadmeã§å€§èŠæš¡ãªã³ãŒãããŒã¹ã®ç§»è¡ãã¹ãæå®ããããšããå§ãããŸã...
çã«ããªã£ãŠããŸããå®éç§ãã¡ã¯æè¿ããã«ã€ããŠèããŠããŸãã
倧èŠæš¡ãªã³ãŒãããŒã¹ãasync / awaitã«ç§»è¡ãã瀟å
ããŒã ãšè©±ãããŸããã
圌ãã¯ãäžè¬çãªãŠãŒãã£ãªãã£ãpromise chainã«å€æŽããå Žåã埮åŠãªãã°ãšç«¶åç¶æ
ãçºçããããšãçºèŠãããã§ã«ããããããããŸããã
圌ãã¯ããã€ãã®äžè¬çãªãŠãŒãã£ãªãã£ãã³ããŒããããããasync / awaitã«å€æããŸããã ãããæåã®è§£æ±ºçãã©ããã¯ããããŸããããããªããèšã£ãããã«ãããã¯ããã€ãã®çºæ£ãªã¹ã¯ãæã£ãŠããŸã
ãŸãã移è¡ããŒã«ãç°¡åã«äœæã§ããããã«åãçµãã§ããŸãããããŒã«ã¯å€éšã§ã¯æ©èœããªãå¯èœæ§ããããŸãã
ãšã«ãããç§ãã¡ã¯æè¿ç§»è¡èšç»ã«åãçµãã§ãããè¿ãå°æ¥ã©ããã«ç§»è¡ã®ã¢ããã€ã¹ãäžããå¿ èŠããããŸãã
ãè¿äºããããšãããããŸãããããåé¡ã§ããããšãç¥ã£ãŠããã®ã¯è¯ãããšã§ã
調ã¹ãããŠããïŒ
ã©ã®ããã«ç¹å®ã®åé¡ãäœæããã®ã¯è¯ãèãã ãšæããŸã
倧èŠæš¡ãªã³ãŒãããŒã¹ã移è¡ããŠãäœæ¥äžã®ã³ãŒãããŒã¹ã衚瀺ãããããã«ããŸãã
Le 16janvã 2018 19ïŒ58ããqiyiã [email protected]écrit ïŒ
çã«ããªã£ãŠããŸããå®éç§ãã¡ã¯æè¿ããã«ã€ããŠèããŠããŸãã
倧èŠæš¡ãªã³ãŒãããŒã¹ãã«ç§»è¡ãã瀟å ããŒã ãšè©±ãããŸãã
async / awaitã
圌ãã¯ããã圌ããããããã°ãããã埮åŠãªãã°ãšç«¶åç¶æ ãããããããšãçºèŠããŸãã
ãã§ãŒã³ãçŽæããããã«äžè¬çãªãŠãŒãã£ãªãã£ãå€æŽããŸããããããŠåœŒãã¯ãã§ã«ãããããããšããããããŸããã
圌ãã¯ããã€ãã®äžè¬çãªãŠãŒãã£ãªãã£ãã³ããŒããããããasync / awaitã«å€æããŸããã ç§
ãããæåã®è§£æ±ºçã§ãããã©ããã¯ããããŸããããããªããèšã£ãããã«ãããã¯
ããã€ãã®çºæ£ãªã¹ã¯ããã
ãŸããç°¡åã«ããããã®ç§»è¡ããŒã«ã®äœæã«ãåãçµãã§ããŸããã
ããŒã«ã¯ããããå€éšã§ã¯æ©èœããŸããããšã«ãããç§ãã¡ã¯æè¿ç§»è¡èšç»ã«åãçµãã§ããŸãããããŠããã€ããäžããå¿ èŠããããŸã
è¿ãå°æ¥ã©ããã«ç§»è¡ã®ã¢ããã€ã¹ãâ
ããªããã³ã¡ã³ãããã®ã§ããªãã¯ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/angular/protractor/issues/4307#issuecomment-358068096 ã
ãŸãã¯ã¹ã¬ããããã¥ãŒãããŸã
https://github.com/notifications/unsubscribe-auth/AHHOgiLEdFS-xZVcOKmO1EB-CID53cryks5tLPFagaJpZM4NtM1n
ã
ããã«ã¡ã¯ãã¿ããªïŒ åé¿çã¯ãããŸããïŒ
protractor - 5.2.2
nodejs - 9.3
protractor --elementExplorer
(node:72438) [DEP0022] DeprecationWarning: os.tmpDir() is deprecated. Use os.tmpdir() instead.
[19:15:43] I/local - Starting selenium standalone server...
[19:15:44] I/local - Selenium standalone server started at http://172.29.148.101:58279/wd/hub
[19:15:45] I/protractor -
[19:15:45] I/protractor - ------- Element Explorer -------
[19:15:45] I/protractor - Starting WebDriver debugger in a child process. Element Explorer is still beta, please report issues at github.com/angular/protractor
[19:15:45] I/protractor -
[19:15:45] I/protractor - Type <tab> to see a list of locator strategies.
[19:15:45] I/protractor - Use the `list` helper function to find elements by strategy:
[19:15:45] I/protractor - e.g., list(by.binding('')) gets all bindings.
[19:15:45] I/protractor -
module.js:557
throw err;
^
Error: Cannot find module '_debugger'
at Function.Module._resolveFilename (module.js:555:15)
at Function.Module._load (module.js:482:25)
at Module.require (module.js:604:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/usr/local/lib/node_modules/protractor/built/debugger/debuggerCommons.js:1:82)
at Module._compile (module.js:660:30)
at Object.Module._extensions..js (module.js:671:10)
at Module.load (module.js:573:32)
at tryModuleLoad (module.js:513:12)
at Function.Module._load (module.js:505:3)
[19:15:45] I/local - Shutting down selenium standalone server.
MB-219751:~ olekh$
Error: Cannot find module '_debugger'
ãOSXãäœéšããŠããŸãã
ãã®å·ã¯ã»ãŒ1幎åããçºè¡ãããŠããŸãã ãŸã é²æ©ã¯ãããŸãããïŒ
@ajklotzãŸã ããŒã7ã§ã®ã¿æ©èœããããšã確èªã§ããŸããèŠçŽ ãšã¯ã¹ãããŒã©ãŒã䜿çšããããã«ã nvmã䜿çšããŠããŒãã®ããŒãžã§ã³ãåãæ¿ããŠããŸãã ããã¯èŠçã§ãããããŸããããŸãïŒ
@ajklotz @monkpit @mraibleããŒã8以éã§å®è¡ã§ããå Žåã¯ã次ã®ããšãè©ŠããŠã¿ãããšããå§ãããŸãã
SELENIUM_PROMISE_MANAGER: false,
ãprotractor.conf.jsã«è¿œå ããŸãdebugger
é¢æ°ã䜿çšããchrome inspectorã䜿çšããŠãããã°ããŸãïŒ https ïŒ ç§ã¯èªåã®å床åšãã¹ãã§ãããè¡ãããããæ©èœããããšã確èªããŸããã
@ajklotz @monkpit @mraibleããã¯ãå床åšãã¹ããasync / awaitã䜿çšããããã«å€æããäŸã§ãïŒ https ïŒ
Promiseãè¿ããã®ã¯ãã¹ãŠã次ã®ããã«ãã®åã«await
ã貌ãä»ããŸãã
.click()
.browser.wait()
.browser.get()
.getText()
é¢æ°ã«await
åŒã³åºããããå Žåãé¢æ°ã®ã·ã°ããã£ã®åã«async
ãå¿
èŠã§ãã
async
ãŠé¢æ°ãåŒã³åºãå Žåã¯ã await
ã«ããå¿
èŠããããŸãã
ãã°ããæéãããããŸãããäžåºŠå®è¡ãããšæ©èœããŸãã
@rodrigcç§ã®ãã¹ããšãªã¢ã¯ãã§ã«async / awaitã䜿çšããŠããŸããããã®åé¡ã®ãã€ã³ãã¯ãã³ãã³ãã©ã€ã³ãããããŒã7ã䜿çšããªãéãprotractor --elementExplorer
ãæ©èœããªãããšã§ãã
FWIWã async/await
ãããªèšèªæ©èœã¯ãšã«ããç¡é¢ä¿ãªã¯ãã§ãã ãããããäžæçãªä¿®æ£ãšããŠã®ã¹ã¯ããã¯çã«ããªã£ãŠããŸãããå床åšã¯ãã®ã¹ã¿ã€ã«ãžã®äŸåãæå³ããŸããã
@monkpitã¯ããããªãã¯çµ¶å¯Ÿã«æ£ããã§ãã åé¡ã®æ ¹æ¬çãªåå ã¯ã次ã®è¡ã«ãããŸãïŒ https ïŒ _debugger
ã¢ãžã¥ãŒã«ãã€ã³ããŒããããŸãã node8ã§ã¯äœ¿çšã§ããŸããã ãããã£ãŠã elementExplorer
ãå«ãã debuggerCommons.js
ã䜿çšãããã®ã¯ãã¹ãŠnode8ã§ã¯æ©èœããŸããã
ãããã£ãŠãnode8以éã䜿çšããŠå床åšã§ãããã°ããå Žåã¯ã async/await
ã䜿çšããŠã https ïŒ ã debug.md
å€ããããã°æ©èœã¯æ©èœããŸããã
ä¿®æ£ãããªããïŒåé¡ãããŸãããåé¿çã䜿çšã§ããŸãïŒãããŒã8以éã䜿çšããããã«æŽæ°ãããŸãïŒãããåé¡ãããŸããïŒã ããããç§ã¯äœããã®åœ¢ã§å ¬åŒã®åçãèŠãããšæã£ãŠããŸãã
@monkpit
çãã¯@qiyiggã®ãã®ã³ã¡ã³ãã«ãããšæããŸãã
å床åšãããã¬ãŒ/ãšã¯ã¹ãããŒã©ãŒã®å ŽåãããŒã8ã§ã¯ãµããŒãããªãããšã«ããŸãã...
@qiyiggãšè©±ãããšãã«èãã
ä»ã®ãšããããã®åé¡ã解決ããŸãã ããã¯ãŸã è°è«ã®äœå°ããããŸãã
@qiyigg chrome inspectorãšnode8ã§æ°ããdebugger
ã䜿ãå§ããŸããããããŸãæ©èœããŸãã
å床åšããŒã ã¯ã debuggerCommon.js
ãéæšå¥šãšããŠäœ¿çšããå€ããããã°ã³ãŒãã®ããã¥ã¡ã³ãã®ããŒã¯ä»ããéå§ã§ããŸããïŒ @monkpitã«åæããŸããã³ãŒããnode8ã§æ©èœããªãå Žåãç¶æ³ãå°ãæ··ä¹±ããŸãããéæšå¥šãšããŠããŒã¯ãããŠããŸããã æçµçã«ããã®å€ããããã°ã³ãŒãã¯ãnode8ã§ä¿®æ£ãããªãå Žåã¯ãåé€ããå¿
èŠããããŸãã
ãããã°ããã¥ã¡ã³ããèŠããšããããã¬ãŒãããŒã8ã§æ©èœããªãããšã¯ãã§ã«èª¬æããŸããã
https://github.com/angular/protractor/blob/master/docs/debugging.md#enabled -control-flow
ã泚ïŒå床åšãããã¬ãŒãšèŠçŽ ãšã¯ã¹ãããŒã©ãŒã¯Node.js8以éã§ã¯äœ¿çšã§ããŸããã
èŠããŠããã¹ãããšã®1ã€ã¯ããã¹ãŠã®äººãNode 8+ã䜿çšããŠããããã§ã¯ãªãããããã¬ãŒãéæšå¥šã§ãããšã¯èšããããã¹ãŠã®äººã«async / awaitã®äœ¿çšã匷å¶ããããšã¯ã§ããŸããïŒãã ããGoogleå ã§äœ¿çšããŸãïŒã
ã©ããããNode8 +ãšasync / awaitã«ç§»è¡ããããšã«ã¯å€ãã®å©ç¹ããããæçµçã«ã¯ããã«ç§»è¡ããå¿ èŠããããŸãããæ¢åã®ã³ãŒãã®å€ããå€æŽããå¿ èŠããããããç°¡åãªäœæ¥ã§ã¯ãããŸããã ç§ãã¡ã¯ã°ãŒã°ã«å ã§ããã«åãçµãã§ããã移è¡ïŒç§»è¡ããŒã«ã§ããïŒã«ã€ããŠããå€ãã®çµéšãèç©ããããšåªããŠããããããæçµçã«ã°ãŒã°ã«å€ã®ãŠãŒã¶ãŒã«ã圹ç«ã€ããšãé¡ã£ãŠããŸãã
ç§ãã¡ãä»ã§ããããšã¯ããã®ãšã©ãŒãããæ確ã«ããããšã ãšæããŸããããšãã°ãäŸå€ãã¹ããŒããŸããããšã©ãŒïŒã¢ãžã¥ãŒã« '_debugger'ãèŠã€ãããŸãããã®ä»£ããã«èŠçŽ ãšã¯ã¹ãããŒã©ãŒ/ãããã¬ãŒãããŒã8以éã§ãµããŒããããŠããŸãããPRã¯éåžžã«é«ããªããŸããæè¿ããŸããã
@qiyiggãã®èŠåã倪åã§ãã¹ãŠå€§æåã«ããããšããå§ãããŸãã èšèãå€ãã®ã§ããã®ããŒãžãèŠã€ããã®ã¯å°ãé£ããã§ãã
intellijã䜿çšããŠãã¹ããå®è¡ã§ãããããæ°ãããããã¬ãŒã«æ¬åœã«æºè¶³ããŠããŸãã ããã¯èŠçŽ ãšã¯ã¹ãããŒã©ãŒïŒç§ã¯ããã奜ãã§ããïŒãããã¯ããã«åªããŠããŸãããIDEã䜿çšããŠãã¹ãããããã°ããããšã¯å€§ããªåå©ã§ãã
@qiyiggç§ã¯å€§èŠæš¡ãªãããã¯ã·ã§ã³ãã³ã¿ãŒã補é ããŠããäŒç€Ÿã§åããŠããŸãã ãã¹ãŠã®UIãAngularã䜿çšããããã«å€æŽããããïŒäžæ³ïŒïŒãUI E2Eãã¹ãã«å床åšã䜿çšããããšã«ããŸããïŒãããäžæ³ã§ãïŒã ãããã®E2Eãã¹ããšã¯å¥ã«ãå®éã«å®è¡ãããŠããã·ã¹ãã ã§æ©èœããå®éã®ãšã³ãããŒãšã³ãã®ãã¹ãããããŸãã ãã®ãã¹ãã·ã¹ãã ã®ãã¹ãŠã®ãã¹ãã±ãŒã¹ã¯ãMicrosft TFSãã¹ããã¬ãŒã ã¯ãŒã¯ã§æå®ãããŠãããDSLã䜿çšããŠããããèšè¿°ããŸãã ãã®DSLã¯ãã€ã³ã¿ã©ã¯ãã£ãã«éå§ãããå床åšïŒã€ãŸããèŠçŽ ãšã¯ã¹ãããŒã©ãŒïŒãä»ããŠUIçšã«äœæããããŒãžãªããžã§ã¯ããèªã¿èŸŒã¿ããããã®ã¡ãœãããåŒã³åºããŠãã¹ããå®è¡ããŸãã
ãããŸã§ã®ãšããããããã®ãã¹ãã¯äœåããããå®éã«ã¯ããŠãŒã¶ãŒãšããŠãå®è¡ãããŸãã ãã®äŒè©±ããç§ãç解ããŠããã®ã¯ãèŠçŽ ãšã¯ã¹ãããŒã©ãŒãæ°ããããŒããšãšãã«ãããããããããšã§ãïŒãããŠãAngularãã¢ããã°ã¬ãŒãããã«ã¯æ°ããããŒããå¿ é ã§ãïŒã ããã¯ãçªç¶ããã¹ãããŒã¹å šäœãæ©èœããªããªãããšãæå³ããŸãã
async / waitã§å€æŽãååŸããããããµããŒãããããã«ããŒãžãªããžã§ã¯ããæããã«æžãçŽããŸãããå床åšã³ãã³ãããªã¢ãŒãã§æ¿å ¥ããå®éã®ä»£æ¿æ段ã¯ãããŸããããïŒ ç§ã¯åžžã«ããããã¬ãŒãã®ã¿ãåŒã³åºãããã¹ããã«åæ Œããå¿ èŠãããã次ã«chromeãšçŽæ¥éä¿¡ããŠããŒãžãªããžã§ã¯ãã®ã³ãã³ããåŒã³åºãã次ã®ããããã¬ãŒãåŒã³åºããå®è¡ããå¿ èŠããããŸãã whileã«ãŒãã§ã
ãããã®ãããªã·ããªãªã¯ãµããŒããããŠããŸããã§ãããïŒ åœŒãã¯ããã§ã¯ãããŸãããïŒ ãŸãã¯ãäœãã足ããªãã ãã§ãã...ç§ã«ãšã£ãŠããã¹ã/ã³ãŒãã®ãããã°ãšã©ãŒã¯ããªã¢ãŒãã§ãã¹ãã³ãã³ããæ瀺ããããšãšã¯ãŸã£ããç°ãªããŸãã åŸè ã¯ãèŠçŽ ãšã¯ã¹ãããŒã©ãŒã容æã«ããããã«äœ¿çšããããã®ã§ã:)
å°ãªããšãç§ã®çŸåšã®è§£æ±ºçãå ±æããããã«ãç§ã¯ãã®ãã¹ããäœæããŸãããããã¯ãå床åšã§å®è¡ããå¯äžã®ã·ã¹ãã ãã¹ãã§ãïŒCompletableFutureã¯æããã«ãã«ããŒã¯ã©ã¹ã§ãïŒã
jasmine.DEFAULT_TIMEOUT_INTERVAL = 3600000; // arbitrary large timeout
(global as any).systemTestsDone = new CompletablePromise<void>();
describe('TestHelper', () => {
it('should provide a way to interactively run tests', async () => {
await (global as any).systemTestsDone;
});
});
node --inspect .\node_modules\protractor\bin\protractor .\systemTests\protractor.conf.js
ãã®ãã¹ãã¯ããã¹ãä»æ§ãšããŒãžãªããžã§ã¯ãéã®ããªããžãšããŠæ©èœããïŒCïŒïŒWSã¯ã©ã€ã¢ã³ãã«æ¥ç¶ããŠããéãå®è¡ãç¶ããŸãã 次ã«ããã®ããªããžã¯ãã©ãŠã¶ã«ããŒãžãªããžã§ã¯ããããŒãããããã«æ瀺ãããã¹ãã®å®è¡ãéå§ããŸãã
ãã¡ããããã©ãŠã¶ã«éä¿¡ããæåŸã®ã³ãã³ãã¯
global.systemTestsDone.complete()
ãã¹ããæ£åžžã«å®äºããããã«ããŸãã ããã¯æ¬åœã«ã²ã©ãããšã§ã¯ãªããšæããŸããå¯äžã®å¥åŠãªããšã¯ãã€ã³ã¿ã©ã¯ãã£ãã¢ãŒãã«å ¥ãã«ã¯ãã¹ããæªçšããªããã°ãªããªããšããããšã§ãã ããå€ãã®äººããã®ãããªæ©èœãæ¬ ããŠããå Žåã¯ãå床åšã«å床å«ããããšããå§ãããŸãã devtoolsãããã³ã«å šäœãæå³ããã®ã§ã¯ãªããããšãã°ãChromeãŸãã¯ããžã¥ã¢ã«ã¹ã¿ãžãªã³ãŒãã®ã³ã³ãœãŒã«ããèŠçŽ ãšã¯ã¹ãããŒã©ãŒããšããŠäœ¿çšããŠããéãå床åšãå®è¡ãããŸãŸã«ãããªãã·ã§ã³ãæå³ããŸãã
@vikermanãè¿œå ããŸããããã¯ãå床åšã®ãã®ãåŒãç¶ããŸãã
@vikermanäžèšã®ã³ã¡ã³ãããæ©èœãªã¯ãšã¹ããè¡ãå¿ èŠããããŸããïŒ
èŠããã«ãå床åšã«å
¥ãããã®ã¯ïŒ --elementExplorer
ã¯æè¿ã®node.jsããŒãžã§ã³ã§ã¯æ©èœããªããªã£ãããïŒãå床åšãèµ·åããã¹ããã¯ãã¡ã€ã«ãç¡èŠããæåã®ã¡ãœããåŒã³åºããŸã§å®è¡ãç¶ããã¢ãŒãã§ãã ïŒ protractor.exit()
ãããªãã®ïŒïŒã node --inspect
ã䜿çšããŠãã®ã¢ãŒãã§å床åšãèµ·åããããã€ãã®ããŒãžãªããžã§ã¯ããããŒãããå€éšãã¹ãã©ã³ããŒããããã¬ãããã³ã«ã«æ¥ç¶ããŠãã€ã³ã¿ã©ã¯ãã£ãã«ãã¹ããå®è¡ã§ããŸãã
誰ãããããä¿®æ£ããã°ãããã¯æ¬åœã«è¯ãã§ãããã ç§ã¯çŸåšãåé¿çãšããŠnvmã䜿çšããŠããŸãã
nvmã䜿çšããŠããŒã7.10.1ãã€ã³ã¹ããŒã«ããããããelementExplorerãèµ·åããŸãã
å°ãäžå®å
šãªåé¿çã§ãããä»ã®ãšããã¯æ©èœããŸã
ãããæ©èœãããããã«ããŒãv6ã«ããŠã³ã°ã¬ãŒãããŸããããããŒã6ãAngular 6以éã§ãµããŒããããŠããªããããAngular6ã¢ããªãå®è¡ã§ããŸããã Angularã¯ããŒã> = 8.9.0ãã¿ãŒã²ããã«ããŠããããã§ãã
2ã€ã®ããŒãžã§ã³ã®ããŒããå®è¡ããå¿ èŠãªãã«å床åšREPLãååŸããããã«åŸãããšãã§ããè¯ãåé¿çã¯ãããŸããïŒ
ã³ã³ãœãŒã«ã§ãåããšã©ãŒãçºçããŸãã ç§ã¯ããã«äžãããããããã®æ瀺ã«åŸã£ãŠããŸã
https://github.com/angular/protractor/blob/master/docs/debugging.md#enabled -control-flow
ããããããã§ãåããšã©ãŒãçºçããŠããŸãð
ã§ã¯ãããã§browser.pauseïŒïŒ/ browser.debuggerïŒïŒã¯çµããã§ããïŒ å¶åŸ¡ãããŒããé¢ããŠããŒããããã¬ãŒã䜿çšããå¿
èŠãããããã§ãã
https://github.com/angular/protractor/blob/master/docs/debugging.md
NVMã䜿çšããŠããŒãããŒãžã§ã³7.10.1ã«åãæ¿ãããšãbrowser.pauseïŒïŒã®åé¡ãä¿®æ£ãããŸããã
async / awaitãåé²ã§ããããã¬ãŒã¯ãã€ã³ãã䜿çšããŠãã¹ãããããã°ããããã«Webstormã䜿çšããããšã¯å®å
šã«ã·ãŒã ã¬ã¹ã§ããããšãç解ããŠããŸãããelementExplorerããªãããšã¯ã elementorããã±ãŒãžã§ã®æ¡åŒµããã䜿çšæ³ã§ãããããŒããã€ã³ã¿ã©ã¯ãã£ãã«ãã¹ãããããã®æ¥œããæ¹æ³ã§ããããã¹ãå
šäœãæåããå®è¡ãã代ããã«ãïŒãªã ãããã¯ã¹å
ã®ïŒãªã³ã¶ãã©ã€ã§ã³ãŒããå®è¡ããŸãã
nodejs 8以éã®ç¹å®ã®ãããã°ããã»ã¹ã§ã¯ãã€ã³ã¹ãã¯ã¿ãŒããã¬ãŒã¯ãã€ã³ãã§äžæåæ¢ããŠããéãã³ã³ãœãŒã«ããã®ã³ãã³ãã¯promiseã解決ããŸãããããã¯çŽæã«åããŸãããããã¯ãã¹ãŠãæžã蟌ã¿ã«è²»ããããæéããããã«å¢å ããããšãæå³ããŸãããããã°ãã¹ããããã³åºã䜿çšãããŠããæ©èœã®åªå€±ïŒãã®ã¹ã¬ããã§ã®å¿çã®æ°ã«ããïŒã
å床åšã®å€ãelementExploreræ©èœã®ä»£ããã«ãªãäºå®ã¯ãããŸããïŒ
@ woppa684ææ¡ã¯ç§ã«ãšã£ãŠããŸãæ©èœããŠããŸãã @ woppa684ã«æè¬ããŸãã repl-awaitãããããŒã10+ã«ç§»åããŸããïŒã³ã³ãœãŒã«ã§åŸ ã€ããšãã§ããŸãïŒ
åç §çšã«ãã¹ãŠã®èšå®ãã¡ã€ã«ãè¿œå ããŸãããããŸãããã°ã誰ãã«åœ¹ç«ã¡ãŸãã
import { LoginPage } from './src/pages/login.po';
import { AppPage } from './src/pages/app.po';
import { SwitchProfileSideSheet } from './src/side-sheets/switch-profile-side-sheet.po';
import { sel } from '../src/testing/get-component';
const login = new LoginPage();
const app = new AppPage();
const switchProfileSideSheet = new SwitchProfileSideSheet();
// add my own page objects to the global object so I can use them interactively.
global['sel'] = sel;
global['po'] = {
login,
app,
switchProfileSideSheet,
};
(global as any).systemTestsDone = new Promise(function(_resolve, _reject) {
global['finishInteractiveDebug'] = _resolve;
});
describe('TestHelper', () => {
it('should provide a way to interactively run tests', async () => {
await (global as any).systemTestsDone;
});
});
"e2e-interactive": "node --experimental-repl-await --inspect-brk ./node_modules/.bin/protractor ./e2e/protractor.interactive.conf",
// Protractor configuration file, see link for more information
// https://github.com/angular/protractor/blob/master/lib/config.ts
// standard protractor config
const baseConfig = require('./protractor.conf');
const configCopy = Object.assign({}, baseConfig.config);
const oneDayInMilliSeconds = 1000 * 60 * 60 * 24;
// set timeout to a huge number
// so it's not an issue when we pause in the debugger
configCopy.allScriptsTimeout = oneDayInMilliSeconds;
configCopy.jasmineNodeOpts.defaultTimeoutInterval = oneDayInMilliSeconds;
// just load our interactive specs
configCopy.specs = ['./interactive.e2e.ts'];
console.log('interactive config', configCopy);
exports.config = configCopy;
ç§ã䜿çšããŠbrowser.sleep(100000)
ã®ä»£ããã«browser.pause()
æãåèã«ãªãã³ã¡ã³ã
inspect APIãŸãã¯ä»ã®ã¢ãããŒãã®ããããã§ãããåã³æ©èœãããããã®ããŒã ããã®èšç»ã¯ãããŸããïŒ