Last active
December 17, 2015 03:39
-
-
Save mikegehard/5545181 to your computer and use it in GitHub Desktop.
Test file and errors encountered when trying to run two browser based tests in the same Play test file.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package test.features | |
import org.specs2.mutable.Specification | |
import play.api.test.{Helpers, FakeApplication, WithBrowser} | |
import java.util.concurrent.TimeUnit | |
import play.api.db.DB | |
import slick.session.Database | |
import slick.jdbc.StaticQuery | |
import Database.threadLocalSession | |
import models.{BetaInvitationRequests, BetaInvitationRequest} | |
class BetaEmailSubmissionSpec extends Specification { | |
val additionalConfig = Map( | |
"db.default.url" -> "postgres://user:password@localhost/databaseName" | |
) | |
val app = FakeApplication(additionalConfiguration = additionalConfig) | |
"submitting emails" should { | |
"only allow email to be entered once" in new WithBrowser(webDriver = Helpers.FIREFOX, app = app) { | |
// TODO: Refactor this out somewhere common so you can share it | |
Database.forDataSource(DB.getDataSource()).withSession { | |
StaticQuery.updateNA("TRUNCATE beta_invitation_requests").execute() | |
} | |
browser.goTo("/") | |
browser.$("input[type=email]").text("[email protected]") | |
browser.click("input[type=submit]") | |
browser.await.atMost(5, TimeUnit.SECONDS).until("[data-behavior=alert].success").hasText("Thank you for your interest. We will be in touch.") | |
browser.goTo("/") | |
browser.$("input[type=email]").text("[email protected]") | |
browser.click("input[type=submit]") | |
browser.await.atMost(5, TimeUnit.SECONDS).until("[data-behavior=alert].error").hasText("This email has already been submitted.") | |
} | |
} | |
"confirming invitation request" should { | |
"mark invitation request as confirmed" in new WithBrowser(webDriver = Helpers.FIREFOX, app = app) { | |
// TODO: Refactor this out somewhere common so you can share it | |
Database.forDataSource(DB.getDataSource()).withSession { | |
StaticQuery.updateNA("TRUNCATE beta_invitation_requests").execute() | |
} | |
BetaInvitationRequests.create( | |
new BetaInvitationRequest(email = "[email protected]", confirmed = false) | |
) | |
browser.goTo("/betaInvitationRequest/mike%40example.com/confirm") | |
browser.pageSource.contains("Beta Invitation Confirmed") | |
BetaInvitationRequests.forEmail("[email protected]") must beSome.which(_.confirmed) | |
} | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package test.features | |
import org.specs2.mutable.Specification | |
import play.api.test.{Helpers, FakeApplication, WithBrowser} | |
import java.util.concurrent.TimeUnit | |
import play.api.db.DB | |
import slick.session.Database | |
import slick.jdbc.StaticQuery | |
import Database.threadLocalSession | |
import models.{BetaInvitationRequests, BetaInvitationRequest} | |
class BetaEmailSubmissionSpec extends Specification { | |
val additionalConfig = Map( | |
"db.default.url" -> "postgres://user:password@localhost/databaseName" | |
) | |
"submitting emails" should { | |
"only allow email to be entered once" in new WithBrowser(webDriver = Helpers.FIREFOX, app = FakeApplication(additionalConfiguration = additionalConfig)) { | |
// TODO: Refactor this out somewhere common so you can share it | |
Database.forDataSource(DB.getDataSource()).withSession { | |
StaticQuery.updateNA("TRUNCATE beta_invitation_requests").execute() | |
} | |
browser.goTo("/") | |
browser.$("input[type=email]").text("[email protected]") | |
browser.click("input[type=submit]") | |
browser.await.atMost(5, TimeUnit.SECONDS).until("[data-behavior=alert].success").hasText("Thank you for your interest. We will be in touch.") | |
browser.goTo("/") | |
browser.$("input[type=email]").text("[email protected]") | |
browser.click("input[type=submit]") | |
browser.await.atMost(5, TimeUnit.SECONDS).until("[data-behavior=alert].error").hasText("This email has already been submitted.") | |
} | |
} | |
"confirming invitation request" should { | |
"mark invitation request as confirmed" in new WithBrowser(webDriver = Helpers.FIREFOX, app = FakeApplication(additionalConfiguration = additionalConfig)) { | |
// TODO: Refactor this out somewhere common so you can share it | |
Database.forDataSource(DB.getDataSource()).withSession { | |
StaticQuery.updateNA("TRUNCATE beta_invitation_requests").execute() | |
} | |
BetaInvitationRequests.create( | |
new BetaInvitationRequest(email = "[email protected]", confirmed = false) | |
) | |
browser.goTo("/betaInvitationRequest/mike%40example.com/confirm") | |
browser.pageSource.contains("Beta Invitation Confirmed") | |
BetaInvitationRequests.forEmail("[email protected]") must beSome.which(_.confirmed) | |
} | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[info] Loading global plugins from /Users/mike/.sbt/plugins | |
[info] Loading project definition from /Users/mike/workspace/scalaDev/playSites/retrospectr/project | |
[info] Set current project to retrospectr (in build file:/Users/mike/workspace/scalaDev/playSites/retrospectr/) | |
[info] play - Starting application default Akka system. | |
[info] play - Shutdown application default Akka system. | |
Configuration error: Configuration error[Cannot connect to database [default]] | |
at play.api.Configuration$.play$api$Configuration$$configError(Configuration.scala:80) | |
at play.api.Configuration.reportError(Configuration.scala:558) | |
at play.api.db.BoneCPPlugin$$anonfun$onStart$1.apply(DB.scala:251) | |
at play.api.db.BoneCPPlugin$$anonfun$onStart$1.apply(DB.scala:242) | |
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244) | |
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244) | |
at scala.collection.immutable.List.foreach(List.scala:309) | |
at scala.collection.TraversableLike$class.map(TraversableLike.scala:244) | |
at scala.collection.AbstractTraversable.map(Traversable.scala:105) | |
at play.api.db.BoneCPPlugin.onStart(DB.scala:242) | |
at play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:63) | |
at play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:63) | |
at scala.collection.immutable.List.foreach(List.scala:309) | |
at play.api.Play$$anonfun$start$1.apply$mcV$sp(Play.scala:63) | |
at play.api.Play$$anonfun$start$1.apply(Play.scala:63) | |
at play.api.Play$$anonfun$start$1.apply(Play.scala:63) | |
at play.utils.Threads$.withContextClassLoader(Threads.scala:18) | |
at play.api.Play$.start(Play.scala:62) | |
at play.core.TestApplication.<init>(ApplicationProvider.scala:66) | |
at play.api.test.TestServer.start(Selenium.scala:124) | |
at play.api.test.Helpers$.running(Helpers.scala:54) | |
at play.api.test.WithBrowser.around(Specs.scala:57) | |
at org.specs2.mutable.Around$class.delayedInit(Around.scala:12) | |
at play.api.test.WithBrowser.delayedInit(Specs.scala:45) | |
at test.features.BetaEmailSubmissionSpec$$anonfun$4$$anonfun$apply$2$$anon$2.<init>(BetaEmailSubmissionSpec.scala:38) | |
at test.features.BetaEmailSubmissionSpec$$anonfun$4$$anonfun$apply$2.apply(BetaEmailSubmissionSpec.scala:38) | |
at test.features.BetaEmailSubmissionSpec$$anonfun$4$$anonfun$apply$2.apply(BetaEmailSubmissionSpec.scala:38) | |
at org.specs2.specification.FragmentsBuilder$$anon$1.asResult(FragmentsBuilder.scala:134) | |
at org.specs2.specification.FragmentsBuilder$$anon$1.asResult(FragmentsBuilder.scala:133) | |
at org.specs2.execute.AsResult$.apply(Result.scala:238) | |
at org.specs2.specification.Example$$anonfun$apply$1.apply(Fragment.scala:141) | |
at org.specs2.specification.Example$$anonfun$apply$1.apply(Fragment.scala:141) | |
at org.specs2.specification.Example.execute(Fragment.scala:104) | |
at org.specs2.specification.FragmentExecution$$anonfun$1.apply(FragmentExecution.scala:52) | |
at org.specs2.specification.FragmentExecution$$anonfun$1.apply(FragmentExecution.scala:52) | |
at org.specs2.execute.ResultExecution$class.execute(ResultExecution.scala:22) | |
at org.specs2.execute.ResultExecution$.execute(ResultExecution.scala:76) | |
at org.specs2.specification.FragmentExecution$class.executeBody(FragmentExecution.scala:28) | |
at org.specs2.runner.TestInterfaceConsoleReporter.executeBody(TestInterfaceRunner.scala:125) | |
at org.specs2.specification.FragmentExecution$class.execute(FragmentExecution.scala:52) | |
at org.specs2.runner.TestInterfaceConsoleReporter.execute(TestInterfaceRunner.scala:125) | |
at org.specs2.specification.FragmentExecution$$anonfun$executeFragment$1$$anonfun$apply$1.apply(FragmentExecution.scala:35) | |
at org.specs2.specification.FragmentExecution$$anonfun$executeFragment$1$$anonfun$apply$1.apply(FragmentExecution.scala:35) | |
at org.specs2.control.Exceptions$class.catchAllOr(Exceptions.scala:54) | |
at org.specs2.control.Exceptions$.catchAllOr(Exceptions.scala:109) | |
at org.specs2.specification.FragmentExecution$$anonfun$executeFragment$1.apply(FragmentExecution.scala:35) | |
at org.specs2.specification.FragmentExecution$$anonfun$executeFragment$1.apply(FragmentExecution.scala:35) | |
at org.specs2.reporter.DefaultExecutionStrategy$$anonfun$org$specs2$reporter$DefaultExecutionStrategy$$executeSequence$1.apply(ExecutionStrategy.scala:99) | |
at org.specs2.reporter.DefaultExecutionStrategy$$anonfun$org$specs2$reporter$DefaultExecutionStrategy$$executeSequence$1.apply(ExecutionStrategy.scala:99) | |
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244) | |
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244) | |
at scala.collection.immutable.List.foreach(List.scala:309) | |
at scala.collection.TraversableLike$class.map(TraversableLike.scala:244) | |
at scala.collection.AbstractTraversable.map(Traversable.scala:105) | |
at org.specs2.reporter.DefaultExecutionStrategy$class.org$specs2$reporter$DefaultExecutionStrategy$$executeSequence(ExecutionStrategy.scala:99) | |
at org.specs2.reporter.DefaultExecutionStrategy$$anonfun$execute$1$$anonfun$2.apply(ExecutionStrategy.scala:43) | |
at org.specs2.reporter.DefaultExecutionStrategy$$anonfun$execute$1$$anonfun$2.apply(ExecutionStrategy.scala:41) | |
at scala.collection.TraversableOnce$$anonfun$foldLeft$1.apply(TraversableOnce.scala:144) | |
at scala.collection.TraversableOnce$$anonfun$foldLeft$1.apply(TraversableOnce.scala:144) | |
at scala.collection.GenTraversableViewLike$Mapped$$anonfun$foreach$2.apply(GenTraversableViewLike.scala:81) | |
at scala.collection.Iterator$class.foreach(Iterator.scala:727) | |
at scala.collection.AbstractIterator.foreach(Iterator.scala:1156) | |
at scala.collection.IterableViewLike$Transformed$class.foreach(IterableViewLike.scala:42) | |
at scala.collection.SeqViewLike$AbstractTransformed.foreach(SeqViewLike.scala:43) | |
at scala.collection.GenTraversableViewLike$Appended$class.foreach(GenTraversableViewLike.scala:99) | |
at scala.collection.SeqViewLike$$anon$2.foreach(SeqViewLike.scala:77) | |
at scala.collection.GenTraversableViewLike$Mapped$class.foreach(GenTraversableViewLike.scala:80) | |
at scala.collection.SeqViewLike$$anon$3.foreach(SeqViewLike.scala:78) | |
at scala.collection.TraversableOnce$class.foldLeft(TraversableOnce.scala:144) | |
at scala.collection.SeqViewLike$AbstractTransformed.foldLeft(SeqViewLike.scala:43) | |
at org.specs2.reporter.DefaultExecutionStrategy$$anonfun$execute$1.apply(ExecutionStrategy.scala:41) | |
at org.specs2.reporter.DefaultExecutionStrategy$$anonfun$execute$1.apply(ExecutionStrategy.scala:38) | |
at org.specs2.internal.scalaz.syntax.IdOps$class.$bar$greater(IdOps.scala:15) | |
at org.specs2.internal.scalaz.syntax.ToIdOps$$anon$1.$bar$greater(IdOps.scala:68) | |
at org.specs2.reporter.AllExporting$class.report(AllExporting.scala:15) | |
at org.specs2.runner.TestInterfaceConsoleReporter.report(TestInterfaceRunner.scala:125) | |
at org.specs2.runner.TestInterfaceRunner.runSpecification(TestInterfaceRunner.scala:61) | |
at org.specs2.runner.TestInterfaceRunner.run(TestInterfaceRunner.scala:54) | |
at sbt.ForkMain$Run.runTests(ForkMain.java:157) | |
at sbt.ForkMain$Run.run(ForkMain.java:169) | |
at sbt.ForkMain.main(ForkMain.java:84) | |
[info] BetaEmailSubmissionSpec | |
[info] | |
[info] submitting emails should | |
[info] + only allow email to be entered once | |
[info] | |
[info] confirming invitation request should | |
[error] ! mark invitation request as confirmed | |
[error] RuntimeException: Configuration error: Configuration error[Cannot connect to database [default]] (Helpers.scala:54) | |
[error] play.api.test.TestServer.start(Selenium.scala:128) | |
[error] play.api.test.Helpers$.running(Helpers.scala:54) | |
[error] play.api.test.WithBrowser.around(Specs.scala:57) | |
[error] play.api.test.WithBrowser.delayedInit(Specs.scala:45) | |
[error] test.features.BetaEmailSubmissionSpec$$anonfun$4$$anonfun$apply$2$$anon$2.<init>(BetaEmailSubmissionSpec.scala:38) | |
[error] test.features.BetaEmailSubmissionSpec$$anonfun$4$$anonfun$apply$2.apply(BetaEmailSubmissionSpec.scala:38) | |
[error] test.features.BetaEmailSubmissionSpec$$anonfun$4$$anonfun$apply$2.apply(BetaEmailSubmissionSpec.scala:38) | |
[error] play.api.Configuration$.play$api$Configuration$$configError(Configuration.scala:80) | |
[error] play.api.Configuration.reportError(Configuration.scala:558) | |
[error] play.api.db.BoneCPPlugin$$anonfun$onStart$1.apply(DB.scala:251) | |
[error] play.api.db.BoneCPPlugin$$anonfun$onStart$1.apply(DB.scala:242) | |
[error] play.api.db.BoneCPPlugin.onStart(DB.scala:242) | |
[error] play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:63) | |
[error] play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:63) | |
[error] play.api.Play$$anonfun$start$1.apply$mcV$sp(Play.scala:63) | |
[error] play.api.Play$$anonfun$start$1.apply(Play.scala:63) | |
[error] play.api.Play$$anonfun$start$1.apply(Play.scala:63) | |
[error] play.utils.Threads$.withContextClassLoader(Threads.scala:18) | |
[error] play.api.Play$.start(Play.scala:62) | |
[error] play.core.TestApplication.<init>(ApplicationProvider.scala:66) | |
[error] play.api.test.TestServer.start(Selenium.scala:124) | |
[error] play.api.test.Helpers$.running(Helpers.scala:54) | |
[error] play.api.test.WithBrowser.around(Specs.scala:57) | |
[error] play.api.test.WithBrowser.delayedInit(Specs.scala:45) | |
[error] test.features.BetaEmailSubmissionSpec$$anonfun$4$$anonfun$apply$2$$anon$2.<init>(BetaEmailSubmissionSpec.scala:38) | |
[error] test.features.BetaEmailSubmissionSpec$$anonfun$4$$anonfun$apply$2.apply(BetaEmailSubmissionSpec.scala:38) | |
[error] test.features.BetaEmailSubmissionSpec$$anonfun$4$$anonfun$apply$2.apply(BetaEmailSubmissionSpec.scala:38) | |
[error] Configuration error[Cannot connect to database [default]] | |
[error] play.api.Configuration$.play$api$Configuration$$configError(Configuration.scala:80) | |
[error] play.api.Configuration.reportError(Configuration.scala:558) | |
[error] play.api.db.BoneCPPlugin$$anonfun$onStart$1.apply(DB.scala:251) | |
[error] play.api.db.BoneCPPlugin$$anonfun$onStart$1.apply(DB.scala:242) | |
[error] play.api.db.BoneCPPlugin.onStart(DB.scala:242) | |
[error] play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:63) | |
[error] play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:63) | |
[error] play.api.Play$$anonfun$start$1.apply$mcV$sp(Play.scala:63) | |
[error] play.api.Play$$anonfun$start$1.apply(Play.scala:63) | |
[error] play.api.Play$$anonfun$start$1.apply(Play.scala:63) | |
[error] play.utils.Threads$.withContextClassLoader(Threads.scala:18) | |
[error] play.api.Play$.start(Play.scala:62) | |
[error] play.core.TestApplication.<init>(ApplicationProvider.scala:66) | |
[error] play.api.test.TestServer.start(Selenium.scala:124) | |
[error] play.api.test.Helpers$.running(Helpers.scala:54) | |
[error] play.api.test.WithBrowser.around(Specs.scala:57) | |
[error] play.api.test.WithBrowser.delayedInit(Specs.scala:45) | |
[error] test.features.BetaEmailSubmissionSpec$$anonfun$4$$anonfun$apply$2$$anon$2.<init>(BetaEmailSubmissionSpec.scala:38) | |
[error] test.features.BetaEmailSubmissionSpec$$anonfun$4$$anonfun$apply$2.apply(BetaEmailSubmissionSpec.scala:38) | |
[error] test.features.BetaEmailSubmissionSpec$$anonfun$4$$anonfun$apply$2.apply(BetaEmailSubmissionSpec.scala:38) | |
[info] | |
[info] | |
[info] Total for specification BetaEmailSubmissionSpec | |
[info] Finished in 11 seconds, 986 ms | |
[info] 2 examples, 0 failure, 1 error | |
[info] | |
[error] Error: Total 2, Failed 0, Errors 1, Passed 1, Skipped 0 | |
[error] Error during tests: | |
[error] test.features.BetaEmailSubmissionSpec | |
java.lang.RuntimeException: Tests unsuccessful | |
at scala.sys.package$.error(package.scala:27) | |
at scala.Predef$.error(Predef.scala:123) | |
at sbt.Tests$.showResults(Tests.scala:192) | |
at sbt.Defaults$$anonfun$inputTests$2$$anonfun$apply$18$$anonfun$apply$19.apply(Defaults.scala:373) | |
at sbt.Defaults$$anonfun$inputTests$2$$anonfun$apply$18$$anonfun$apply$19.apply(Defaults.scala:373) | |
at scala.Function1$$anonfun$compose$1.apply(Function1.scala:49) | |
at scala.Function1$$anonfun$compose$1.apply(Function1.scala:49) | |
at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:41) | |
at sbt.std.Transform$$anon$5.work(System.scala:71) | |
at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:232) | |
at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:232) | |
at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:18) | |
at sbt.Execute.work(Execute.scala:238) | |
at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:232) | |
at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:232) | |
at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:160) | |
at sbt.CompletionService$$anon$2.call(CompletionService.scala:30) | |
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) | |
at java.util.concurrent.FutureTask.run(FutureTask.java:138) | |
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439) | |
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) | |
at java.util.concurrent.FutureTask.run(FutureTask.java:138) | |
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) | |
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) | |
at java.lang.Thread.run(Thread.java:680) | |
[error] (test:test-only) Tests unsuccessful | |
[error] Total time: 15 s, completed May 8, 2013 8:26:51 PM |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment