é座Rails#22ã§ã®çºè¡¨è³æã§ãã https://ginza-rails.connpass.com/event/176491/

Rails ã«ã¯ system test (spec) ã¨å¼ã°ãããCapybara ã使ã£ãèªåãã©ã¦ã¶ãã¹ãã®ä»çµã¿ãåãã£ã¦ãã¾ããããã¯ã¨ã¦ã便å©ã§å¼·åãªãã¹ãã§ã¯ããã¾ãããããã¦ä¸è½ã§ã¯ããã¾ãããå®è¡æéãé·ããªããã¡ã§ããããã¹ãã³ã¼ãéãå¤ããªãã¡ã³ããã³ã¹ã大å¤ã§ãã Rubyâ¦
ç®æ¬¡ å¯¾å¿ Pull RequestInstall selenium-webdriverChange Capybara.javascript_driverInstall chromedriver On MacOSOn CircleCIOn TravisCIåèãªã³ã¯Railsã®Capybaraã使ã£ãE2Eãã¹ã(feature spec)ããã®åº¦ãpoltergeistããHeadless Chromeã«ä¹ãæãã¦ã¿ãã®ã§ãã®ã¨ãã®ã¡ã¢ã å¯¾å¿ Pull Requestä»å対å¿ããPull Requestã¯ãã¡ãã Use headless Chrome instead of PhantomJS(poltergeist) by toshimaru · Pull Request #211 · toshimaru/RailsTwitterClone · GitHub æã£ããããå·®åã¯ã³ã³ã
ããã«ã¡ã¯ãã¡ããã¢ã®Ruby(Rails)åããæä¼ããã¦ãã@willnetã§ããæè¿ã¯åè²ã¦ã«å¿ãããã¦ãã¾ã ð¶ å æ¥ãã¡ããã¢ã§å©ç¨ãã¦ããcapybaraã®javascript driverãpoltergeistããheadless chrome(selenium-webdriver)ã«ç§»è¡ãã¾ãããdriverãå¤æ´ããã«ããã£ã¦æ¢åã®ãã¹ãã³ã¼ããããã¤ãä¿®æ£ããå¿ è¦ããã£ãã®ã§ãããã§å¾ãå¦ã³ãå ±æãããã¨æãã¾ãã ãªã移è¡ããã®ã ããæ°å¹´ãRailsã§ã¨ã³ããã¼ã¨ã³ãã®ãã¹ããæ¸ãã¨ãã«ã¯poltergeistã使ããã¨ããã®ãããã¡ã¯ãã¹ã¿ã³ãã¼ãã ã£ãã¯ãã§ãããã以åã¯ã¿ããªcapybara-webkitã使ã£ã¦ãã¾ããããpoltergeistã¯ããã¯ã¨ã³ãã«PhantomJSã使ã£ã¦ãããQtã«ä¾åãã¦ããcapybara-webkitã¨æ¯ã¹ã¦ãã«ãã
ããã«ã¡ã¯ãæè¡é¨ éçºåºç¤ã°ã«ã¼ãã®è«¸æ©ã§ãã ã¯ãã¯ãããã§ã¯æ¨ä»ã®å¤ãã®Webä¼æ¥ã¨åãããã«ãGitHub Enterpriseã®Pull Requestã使ã£ãã³ã¼ãã¬ãã¥ã¼ãåºç¯ã«å®æ½ãã¦ãã¾ããããããã¡ã®ã³ã¼ãã¬ãã¥ã¼ã§ã¯ãã½ã¼ã¹ã³ã¼ãã®åé¢ã«ã¨ã©ã¾ããããµã¼ãã¹ã®æ©è½ã¨ãã¦é åçãã©ããããä¿å®æ§ãå«ããè¨è¨ãé©åãã¨ãã£ãè°è«ã«çºå±ãããã¨ãè¯ãããã¾ãã ãããã¯ãããªãªãã§è©±é¡ã«ä¸ãã£ããç¾å¨æå»ãã®æ±ãããã«é¢ããè¨è¨ã®è©±ãæ¸ãã¾ãã èæ¯ ãµã¼ãã¹ãéçºã»éå¶ãã¦ããæã ã«ã¯ãæé帯ã«ãã£ã¦åºãåããããç¹å®ã®æéã®ã¿ã«è¡¨ç¤ºãããã³ã³ãã³ããããããããã¾ãã ãã®ãã³ã«ãããã¤ãç´ãã¨ããã®ã¯ã¤ããã®ã§(ç¹ã«24:00ã«åºãªããªãã³ã³ãã³ããªã©)ãªãã¨ãããããªãã¾ãããä¸æ¹ã§æéå¼ã®ã³ã³ãã³ãã¯ãã®æã«ãªãã¾ã§ã¡ããã¨åãã¦ããã確証ãåããªãã®ã§æãã§ãã
CircleCIä¸ã§Capybara, Poltergeist, PhantomJSãå©ç¨ãããã¹ããMouseEventFailed失æããåé¡ã解æ¶ããã 以ä¸ã®ãããªæ§æã®Railsã¢ããªãCircleCIä¸ã§ãã«ãããã¨ãCapybara::Poltergeist::MouseEventFailedã¨ããä¾å¤ãçºçãã¦ãã¹ãã失æããã±ã¼ã¹ããã£ãã Rails 4.2.x RSpec 3.4.x Capybara 2.6.2 Poltergeist 1.9.0 PhantomJS 2.1.1 (CircleCIã®ããã¸ã§ã¯ãè¨å®ã§Ubuntu 14.04 (Trusty) containerãå©ç¨ããããã«è¨å®ãã¦ããå¿ è¦ãã) ãã®æã失æã®åå ã¨ãªã£ã¦ãããã¹ãã³ã¼ãã¯ã click_link 'æ¥æ¬èªã®ã©ãã«' ã®ãããªãã®ã 調æ»ã®ããã«CircleCIã«SSHã§æ¥ç¶ãã
ãã¹ãå®è¡ä¸ã«ããä»ã£ã¦ã©ããªç¶æ ãªãã ã£ãï¼ãã¨ç¥ããããã¨ãããã¾ãã ããã§å½¹ã«ç«ã¤ã®ãlaunchyã¨ããgemã§ãã https://www.ruby-toolbox.com/projects/launchy 使ãæ¹ launchyãã¤ã³ã¹ãã¼ã« Gemfile group :test do gem 'launchy', '2.4.2' end $ bundle install --without production specãã¡ã¤ã«ãè¨è¿° describe "Top page" do it "should have 'home page'" do visit '/static_pages/home' # ãã©ã¦ã¶ã§éã save_and_open_page page.should have_content('home page') end ããã便å©ã§ãã
ä¸ãããåããããã«ããã¼ã¸ã®èªã¿è¾¼ã¿ãå®äºããåã«ããã¹ãã§ãªã³ã¯æ¢ããå§ããã®ã«ãé¢ããããCapybaraã¯åªé ã«ã¤ã³ã¿ã©ã¯ã·ã§ã³ãå¦çãã¦ãã¾ãã ããããCapybaraããããã®éåæã®åé¡ãå¦çãã¦ãããã«ãããããããæåããã失æãããããä¸è²«æ§ã®ãªããã¹ãã«ãã¨ãç°¡åã«é¥ã£ã¦ãã¾ãã®ã¯ãªããªã®ã§ãããã 競åç¶æ ã®æ°ãæå°éã«æãã¦ãCapybara APIãæ£ãã使ç¨ããã«ã¯ãããã¤ãã®ã³ããããã¾ãã æåã«é©åããã¨ã¬ã¡ã³ããè¦ã¤ãã æªãä¾ first(".active").click ã¾ã ãã¼ã¸ã«.activeè¦ç´ ããªãå ´åãfirstã¯nilãè¿ããã¯ãªãã¯ã¯å¤±æãã¾ãã è¯ãä¾ # å®å ¨ã«ä¸è´ãããã®ã欲ããå ´å find(".active").click # ãã åã«æåã®è¦ç´ ãã»ããã ãã®å ´å find(".active", match: :first
ã¯ããã« ã¿ãªããããã«ã¡ã¯ï¼ ãã®è¨äºã¯ãå¿ è¦æå°éã®åªåã§æ大éå®æ¦ã§ä½¿ããç¥èãæä¾ããRSpecå ¥éè¨äºããç¥ãã¦ã使ããRSpecå ¥éãã®ç¬¬4åã§ãã ä»åã¯Capybaraã使ã£ããã£ã¼ãã£ã¹ããã¯ã«ã¤ãã¦èª¬æãã¾ãã ãã ããä»ã¾ã§ã®è¨äºã¨ã¯ç°ãªãããã£ã¼ãã£ã¹ããã¯ã®ã¤ããããããCapybaraã®ä½¿ãæ¹ãã«éç¹ãç½®ãã¾ãã ãªããªããåå人ã®çµé¨ãããã£ã¦ããã£ã¼ãã£ã¹ããã¯ã§å°ãã®ã¯ããã®ãã©ã¦ã¶ã®æä½ã£ã¦ãã©ããã£ã¦ã³ã¼ãã§è¡¨ç¾ããã®ï¼ï¼ãã¨ããã±ã¼ã¹ã大åã ããã§ãã ãã以å¤ã¯ç¬¬1åï½ç¬¬3åã®å 容ããã®ã¾ã¾å¿ç¨ã§ããã®ã§ãç¹ã«ããã£ã¼ãã£ã¹ããã¯ã ããå°ããã¨ãããã¨ã¯ãªãã¨æãã¾ãã ä»åã¯èª¬æãã主ãªé ç®ã¯ä»¥ä¸ã®éãã§ãã ãã£ã¼ãã£ã¹ããã¯ã®åºæ¬ ãã¼ã¸ã®ç§»åãç»é¢ã®ã¯ãªãã¯ããã©ã¼ã ã®æä½ãªã© ç»é¢ããã©ã¼ã ã®æ¤è¨¼ ç»é¢ã®æä½ãæ¤è¨¼ã®å¿ç¨ãã¯ãã㯠ãã®ä»
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
å¦çãå®è¡ä¸ã§ã
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}