幸ãã«ç»å£ã®ãã£ã³ã¹ãããã ããã®ã§ãKaigi on Rails 2023ã«ç¾å°åå ãã¦ãã¾ããã
E2E testing on Rails 2023 by Yusuke Iwaki - Kaigi on Rails 2023
2å¹´åã®ãã·ã¹ãã ãã¹ã解åå¦ãã¨ããçºè¡¨ã®ç¶ç·¨çãªä½ç½®ã¥ãã§ãRailsã®E2Eãã¹ããåãå·»ãæè¡ã®è§£èª¬ã«å¾¹ããçºè¡¨ã§ããã
èªåã®çºè¡¨ã®ã¹ã¿ã¤ã«ã¨ãã¦ããâ¯â¯ããããããããâ³â³ã©ã¤ãã©ãªä½¿ãã¨ããããç³»ã®çºè¡¨ã«ã¯ããããªãã¨ããã¡ãã£ã¨ãããã ããããããã¨ã¯ããä»åã®çºè¡¨ã¯æãæãã¨ãPlaywrightæé«ã ãããã£ã¡ãããããã«ãªã£ã¦ãã¾ãã®ã§ã注ææ·±ãã¹ãã¼ãªã¼å±éãç·´ã£ã¦æ¬çªã«æã¿ã¾ããã
- Node.jsãã¼ã¹ã®ãã¹ãã©ã³ãã¼ã話ãå¿ ç¶æ§
- Railsã§ä½ãããã幸ãã«ãªããããï¼ã®å®ç¾©
- ãã¤ã¯ããããããããªãã¦ãã1åã ãä»çµã¿ãä½ãã°ãããã ã¨ããçºè¦ã®å°åº
ãªã©ãªã©ãçã£ããã¤ã³ãã«ã¤ãã¦ã¯ãã£ããä¼ããããããªã¼ã¨æã£ã¦ãã¾ãã
ãã£ã½ãã§ãDEMOã®ã³ã³ãã³ãã®ç·´ç¿ä¸è¶³ã§ãä¸é¨ãããã¨ãå¿ãã¦ãã¾ããªã©ãããã³ã°ãããwãç¾å°éå¬ã®é¢ç½ãã»é£ãããæ¹ãã¦å®æãã¾ããã
ï¼ã¦ããããããã°ãªã¢ã«ç»å£ãããåãã¦ã ãèªå...ãGinza railsãKaigi on Rails 2021ããªã³ã©ã¤ã³éå¬ã§èªå® ãã話ãã¦ããã ã
Kaigi on Railsãå¼ã£å¼µã @okuramasafumi ãããããã³å®è¡å§å¡ã®çæ§ã«ã¯æ¬å½ã«æè¬ã§ããRailsã«ãããã®ããã¨ã³ã¸ãã¢ãéã¾ãå ´ã«åå ãã¦ç»å£ã§ãããã¨ã¯ã¨ã³ã¸ãã¢ã¨ãã¦æ¬å½ã«è³ç¦ã®æéã§ããã
ã¨ããããç»å£ã¾ã§ã«ãã£ããã¨ãå½æ¥ã®ãã¨ããªã©ãªã©ãå¿ããªãããã«æ¸ãçãã¦ãããã¨æãã¾ããï¼ãã¶ã誰ã®åèã«ããªããªãwï¼
ç»å£ãã¿ã決ããã¾ã§
ä»åã¯ãããããããªãã®åçã«ãªãããã¨æãã2ã¤ãã¿ãåºããã
ãã¾ãã¾E2E testingã®ã»ããéã£ã¦ãã¾ã£ããã¨ããã®ãæ£ç´ãªã¨ããã§ãå®ã¯ããä¸ååºãã¦ãããã¿ï¼Railsã§ä½ã£ã¦ãã¾ã£ããã®ãRailsãããªãSinatraã¸ç§»è¡ããç³»ã®ã話ï¼ã®ã»ãã渾身ã®ãã¿ã§ã¯ãã£ãã
ããã¯ãããã©ããã§ã¾ãçºè¡¨ããã¨ãã¦ãã¾ãä¸ã®ä¸ã®æå¾ ã¨ããããå°ããã¤ã³ãã¨ãã¦ã¯E2Eãã¹ããªãã ããªã¼ã¨ããäºæ ãå¯ãã¦ããE2E testing on Rails 2023ãã®æºåãé²ãããã¨ã«ããã
ç»å£ãã¿ã®æ·±æã1 - Playwrightã«è©³ãããªã
æºåæéã¯2ã¶æãããã®ã§ãã¨ããããæåã«ãã£ããã¨ã¯ãPlaywrightãã¹ãã©ã³ãã¼ã®ã³ã³ãµã«ãã£ã³ã°è½åãä¸ãããã¨ãä¸èº«ãç¥ããã©ãããã¦ã¼ã¹ã±ã¼ã¹ã§ã©ããªæ©è½ã使ãã¹ããã詳ãããªããã¨ãï¼ã¯ã£ãããã£ã¦Railsã¯ä½ãé¢ä¿ããªãwï¼
ã¨ããããæ¥æ¬ã§äºçªç®ãããã«Playwrightãã¹ãã©ã³ãã¼ã«è©³ãã人ã«ãªã£ã¦Kaigi on Rails 2023ã«è¨ãã
— Yusuke Iwaki (@yi01imagination) 2023å¹´8æ27æ¥
ãã ãããããã£ãã®ã«ã¯ãã¡ããçç±ãä¸å¿ãã£ã¦ãPlaywrightãã¹ãã©ã³ãã¼ã¯ä¸ã®ä¸ã®ã¤ã±ã¤ã±QAããï¼ããããã¢ã¼ãªã¼ã¢ããã¿ã¼ï¼ãã¯ãã¨ä½¿ãå§ãã¦ããã«ãããªããã§ã¼ãºã§ããããããã¨æ¬¡ã®æ³¢ããã£ã¦ãããããããªãããããªãã¨Playwrightãã¹ãã©ã³ãã¼ã®ä½ãåãã£ãã®ãï¼ã¨ãã話ã«ããªããã¤ã¾ããç¾æç¹ã«ããã¦Playwrightã ãããããé¨åã¨ãNode.jsãã¼ã¹ã®ãã¹ãã©ã³ãã¼å ¨è¬ã¨ãã¦ã®å©ç¹ã¨ãã¹ã¤ã«æè¡ã¹ã¿ãã¯é¢ä¿ãªããã©Playwrightã§ã¯å©ç¨ããããæ©è½ã¨ããªã©åãã¦èãã¦ããå¿ è¦ãããã
Playwrightã¯å ¬å¼ã®åç»ããããéçºãã¦ã人ãããªãããããã¨ç´¹ä»ãã¦ããã¦ããã®ã§ãã¾ãã¯ãããçã£ç«¯ããè¦ã¦ãããã¨ã«ããã
ã¡ã¢ã¯ãããªãããã§Googleã®ã¡ã¢ã«ã
1.14ãã1.37ã¾ã§ã2å¹´åã®ã¢ãããã¼ããã¨ããããè³å ã«å©ãè¾¼ãã§ã次ã¸ã
ç»å£ãã¿ã®æ·±æã2 - å¿ ç¶æ§ãæããããã¹ãã¼ãªã¼ã®ç·´ãä¸ã
ãããçµæ§æéãããã¨ãããKeynote触ãå§ããã¨ããã ãã§æéãããã£ã¦ãã¾ãã®ã§ãä»åãApple Pencilã«æè³ããã¦iPadã§ã²ãããææ¸ãã¡ã¢ã§ä½ã£ã¦ãã£ãã
Kaigi on Railsã®30åçºè¡¨ã®ã¹ã©ã¤ãã®ã¹ãã¼ãªã¼ç·´ãããã«ApplePencil2ã«ä»ããæè³ãããã©ããã£ã±ãææ¸ãã¯æé«ã ãªãããã¦Pencilå代ãã使ããããäºä»£ç®ãæ¶ãã´ã ãããã«ã¿ããã§å¤ããããã®ã¯è¯ã
— Yusuke Iwaki (@yi01imagination) 2023å¹´9æ24æ¥
ãããªæãã§ãå³ã§èª¬æãã¹ãé¨åã¨ãæç« ããã£ã¼ãã§èª¬æãã¹ãé¨åã¨ãããããè³å æ´çãæã£ãã
8å²ãããä½ã£ãã¨ããã§ããªããããããããããªã£ã¦ãéè¨ãã¾ãè²ã ï½
ä»äºã®æ¹ãããããå¿ããã£ãã®ã§ã空ãæéã§ã¡ã¢ã空ãæéã§ã¡ã¢ã空ãæéã§ã¡ã¢ãã£ã¦æãã§ãã¿ãä½ãä¸ãã¦ããã¾ããã
ã¹ã©ã¤ãã®ææ°çãªé²æã§ããã¨ã8/21ã®ç»å£ç¢ºå®ãã10/21ã¾ã§2ã¶æã«ããã0æww
Kaigi on Railsã¾ã§ãã¨äºã¶æããã¸ã§æºåããããã°ãäºå¹´åãããã ã£ããã©ããæãã«èª¬æããããã®è³æã¨ãã¹ããµã¤ããã£ã±ãä½ãã®ã§æå¤ã¨ä»äºãã大å¤ãªã®ã
— Yusuke Iwaki (@yi01imagination) 2023å¹´8æ27æ¥
Kaigi on Railsã®çºè¡¨æºåã®é²æ0%ãªã®ã§æµç³ã«ãã®é±æ«å°ãæ¬è °å ¥ãã¦è¨ç»ç«ã¦ã
— Yusuke Iwaki (@yi01imagination) 2023å¹´9æ16æ¥
Kaigi on Railsã®è©±ããã¿ã¯æ¦ãåºã¾ãã¤ã¤ãããã©ããµã³ãã«ã³ã¼ããã¹ã©ã¤ããé²æã¼ãã§æµç³ã«ãã°ããªã¼ã
— Yusuke Iwaki (@yi01imagination) 2023å¹´10æ21æ¥
iPadã§ã®è³å æ´çã¡ã¢ã®å¹æã«ããã60æè¿ãKeynoteè³æãã»ã¼ã»ã¼ä¸æ©ã§æ¸ãä¸ããã®ã§ããw
ã¨ããããKaigi on Rails 2023ã®ã¹ã©ã¤ããèåããªããå®æãå¯ããã
— Yusuke Iwaki (@yi01imagination) 2023å¹´10æ25æ¥
ç»å£ã®åç
ã¾ãããªã«ãããDEMOã®æºåä¸è¶³ã§ãããç¦ã£ã¦ãVSCodeã®Playwrightæ¡å¼µæ©è½ã®èµ·åæ¹æ³ãå¿ãã¦ãã¾ãã¨ãã大失æ ã
ã¨ã¯ããã§ãPlaywrightã®ä¾¿å©ãã100%ä¼ãããã¨ããNode.jsã®ãã¹ãã©ã³ãã¼ã主æµã«ãªã£ã¦ãã¦ããã¨ããäºå®ã¥ãããå§ããã¹ãã¼ãªã¼å±éã«ãããDEMOã®æ··ä¹±ãå¤å°ãã£ã¦ããå ¨ä½ã®ã¹ãã¼ãªã¼ç解ã«ã¯å¤§ããªæ¯éãåºãªãã£ãã®ãä¸å¹¸ä¸ã®å¹¸ãã
Shift + Command + Pã§ã³ãã³ããã¬ãããåºãã¨ãæ¬æ¥ã¯ Focus on Playwright viewãåºã¦ããã¾ãããã¯ãã ã£ããã ãã©ããªããæ¬çªã§ãã£ã¦ãåºãªãã£ããã ããªã¼ã»ã»ã»ã»å¿ 殺åèµ·åãå¿ è¦ã ã£ããã ãããã»ã»ã»ãã£ã±ãããããw
ç»å£çºè¡¨ã®ã¨ãã«æãããã¨
ä»åãç¾å°ã®çºè¡¨ã§ãç¾å ´ã®æ§åãè¦ãªããåããã®ãæ¬å½ã«ããã£ãã
2å¹´åã¯ãªã³ã©ã¤ã³éå¬ã§åç»ã¯äºååé²ã ã£ããã¨ããããæ®ãç´ããã§ããæå¼·ã®ã¡ãªããã¯ãã£ããã©ããã£ã±ãåé¿ã®ãªããªãã§åãç¶ããªãã¨ãããªãè¾ããçµæ§ãã£ãã
ä»åã¯ãONKãããããæ¹ãæååã§ãã£ã¡ãã¦ã³ã¦ã³èãã¦ããã¦ãããããã¹ãæ¸ãã¦ã¾ãããï¼ã¿ãããªææããªã¢ã«ã¿ã¤ã ã«ãã£ã¼ãããã¯å¾ãããããæ°åçã«ã¯ããªãæé«ãªçºè¡¨ã ã£ããã¨ã³ã¸ãã¢ãªã³ã°ã®ã«ã³ãã¡ã¬ã³ã¹ã¯ãããããªãã£ã¡ãï¼
çºè¡¨è³æ
ã¡ãã£ã¨Twitterã«å ±æããã¿ã¤ãã³ã°ãéããã¦ãç´åã®æ¹ã®çºè¡¨ã«åããã¦ãã¾ã£ãã®ãåçã
ãµã³ãã«ã³ã¼ããªã©
ãããã£ã¨å ±æããããã¦ã¾ããw
DEMOãµã¤ãã¯ããâ
Railsã¨ãã¦å調ããããã«ä½ããªãã¨ãããªãé¨åã¯ãããã£ã¦ã¨ããã§ç´¹ä»ãã¦ããã®ã¯ããã¡ããGemã«ãã¦ãã¦ãããâ
ãã²ä½µãã¦è¦ã¦ã»ããåç»
Playwrightä½è ã®ä¸äººããããªãPlaywrightãã¹ãã©ã³ãã¼ãä½ã£ãã®ããèªã£ã¦ãããã®ããçµæ§å°è±¡çã§ãã
èªåãã¹ãé¢ä¿ãªãããã²ã¿ããªè¦ã¦ã¿ãã¨ããã§ãã
ã¾ã¨ã
åé ã«ãæ¸ããããã«ãRailsã«ãããã®ããã¨ã³ã¸ãã¢ãéã¾ãå ´ã«åå ãã¦ç»å£ã§ãããã¨ã¯ã¨ã³ã¸ãã¢ã¨ãã¦æ¬å½ã«è³ç¦ã®æéã§ãããã¾ãæ¥å¹´ãããããæºåããã