Skip to content

Instantly share code, notes, and snippets.

@mikegehard
Last active December 17, 2015 03:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mikegehard/5545181 to your computer and use it in GitHub Desktop.
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.
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("mike@example.com")
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("mike@example.com")
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 = "mike@example.com", confirmed = false)
)
browser.goTo("/betaInvitationRequest/mike%40example.com/confirm")
browser.pageSource.contains("Beta Invitation Confirmed")
BetaInvitationRequests.forEmail("mike@example.com") must beSome.which(_.confirmed)
}
}
}
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("mike@example.com")
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("mike@example.com")
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 = "mike@example.com", confirmed = false)
)
browser.goTo("/betaInvitationRequest/mike%40example.com/confirm")
browser.pageSource.contains("Beta Invitation Confirmed")
BetaInvitationRequests.forEmail("mike@example.com") must beSome.which(_.confirmed)
}
}
}
[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