yesodでselenium webdriverを使ったテストを行いたい
yesodでselenium webdriverを使ったテストを行いたいです.
以下のようなテストは動作しました.
it "webdriverのロードチェック" $ do
title <- liftIO $ runSession (def :: WDConfig) $ do
openPage "https://google.co.jp"
getTitle
assertEq "title" "Google" title
その後,とりあえずlocalhost:3000
にアクセスするテストを書いてみたのですが,そんなサーバはないということで接続できず失敗してしまいます.
approotはlocalhost:3000
にしているのですが…
テスト中のURLを知りたいと思ってgetUrlRender
を使ってputStrLn
してみようと思いましたが型が意味不明になって諦めました.
コメントだと文字数超過になってしまうのでこちらに追記します.
失敗するテストケースを以下に追記します.
Home.hs
は
getHomeR :: Handler Html
getHomeR = do
defaultLayout $ do
setTitle "HOME"
$(widgetFile "home")
HomeSpec.hs
は
spec :: Spec
spec = withApp $ do
it "webdriverのロードチェック" $ do
title <- liftIO $ runSession (def :: WDConfig) $ do
openPage $ "http://localhost:3000"
t <- getTitle
closeSession
return t
assertEq "title" "HOME" title
になっていて,実際ブラウザは起動するのですが,サーバーに接続できませんというエラーが出てくる状態です.
エラーは以下のようになっております.
test/Handler/HomeSpec.hs:8:
1) Handler.Home webdriverのロードチェック
uncaught exception: FailedCommand (FailedCommand UnknownError
Session: SessionId "18939a04-1e84-4f18-8eea-46418d5d4f60" at "127.0.0.1":4444
org.openqa.selenium.WebDriverException: Reached error page: about:neterror?e=connectionFailure&u=http%3A//localhost%3A3000/&c=UTF-8&f=regular&d=localhost%3A3000%20%E3%81%AE%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%B8%E3%81%AE%E6%8E%A5%E7%B6%9A%E3%82%92%E7%A2%BA%E7%AB%8B%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93%E3%81%A7%E3%81%97%E3%81%9F%E3%80%82
Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'
System info: host: 'Unknown', ip: 'Unknown', os.name: 'Linux', os.arch: 'amd64', os.version: '4.9.16-gentoo', java.version: '1.8.0_131'
Driver info: org.openqa.selenium.firefox.FirefoxDriver
Capabilities [{moz:profile=/tmp/rust_mozprofile.DDlePRCG2AFm, rotatable=false, timeouts={implicit=0.0, pageLoad=300000.0, script=30000.0}, pageLoadStrategy=normal, platform=ANY, proxy=Proxy(system), specificationLevel=0.0, moz:accessibilityChecks=false, acceptInsecureCerts=false, browserVersion=54.0, platformVersion=4.9.16-gentoo, moz:processID=19730.0, browserName=firefox, javascriptEnabled=true, platformName=linux}]
Session ID: 2930f19c-906e-4841-9f1c-ce7e11cfa73a
sun.reflect.NativeConstructorAccessorImpl.newInstance0 (NativeConstructorAccessorImpl.java:-2)
sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:62)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45)
java.lang.reflect.Constructor.newInstance (Constructor.java:423)
org.openqa.selenium.remote.http.W3CHttpResponseCodec.createException (W3CHttpResponseCodec.java:150)
org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode (W3CHttpResponseCodec.java:115)
org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode (W3CHttpResponseCodec.java:45)
org.openqa.selenium.remote.HttpCommandExecutor.execute (HttpCommandExecutor.java:164)
org.openqa.selenium.remote.service.DriverCommandExecutor.execute (DriverCommandExecutor.java:82)
org.openqa.selenium.remote.RemoteWebDriver.execute (RemoteWebDriver.java:637)
org.openqa.selenium.remote.RemoteWebDriver.get (RemoteWebDriver.java:364)
sun.reflect.NativeMethodAccessorImpl.invoke0 (NativeMethodAccessorImpl.java:-2)
sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke (Method.java:498)
org.openqa.selenium.support.events.EventFiringWebDriver$2.invoke (EventFiringWebDriver.java:104)
com.sun.proxy.$Proxy4.get (:-1)
org.openqa.selenium.support.events.EventFiringWebDriver.get (EventFiringWebDriver.java:163)
org.openqa.selenium.remote.server.handler.ChangeUrl.call (ChangeUrl.java:40)
org.openqa.selenium.remote.server.handler.ChangeUrl.call (ChangeUrl.java:25)
java.util.concurrent.FutureTask.run (FutureTask.java:266)
org.openqa.selenium.remote.server.DefaultSession$1.run (DefaultSession.java:176)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:617)
java.lang.Thread.run (Thread.java:748)
)