diff --git a/jvm/src/test/scala/cs214/webapp/AppSuite.scala b/jvm/src/test/scala/cs214/webapp/AppSuite.scala
index 635e934a61f414378425b0ac3825036951afbf96..6d0abf90f0e3fcb7d6e41056c2a2a3bcdc57a4f2 100644
--- a/jvm/src/test/scala/cs214/webapp/AppSuite.scala
+++ b/jvm/src/test/scala/cs214/webapp/AppSuite.scala
@@ -30,10 +30,10 @@ object PingPongSuite:
       override val eventFormat = StringWire
       override val viewFormat = StringWire
 
-    override def init(clients: Seq[UserId]): String = ""
+    override def init(clients: Seq[UserId]): String = "hello"
     override def project(state: String)(userId: UserId): Pong = state
     override def transition(state: String)(userId: UserId, event: Ping): Try[Seq[Action[State]]] = Try:
-      Seq(Action.Render(state))
+      Seq(Action.Render(event))
 
     WebServer.register(PingPong)
 
@@ -88,9 +88,20 @@ class WebSocketSuite extends PingPongSuite:
       .response(asWebSocketAlways(body))
       .send(backend)
 
-  test("ws: The server sends a welcome message over web sockets"):
+  test("ws: The ping server sends a welcome message over web sockets"):
     withServer: server ?=>
       val inst = createInstance(USER_IDS)
       withWs(inst.instanceId): ws =>
-          val initial = decodeActions(ws.receiveText())
-          assertEquals(initial, Seq(Action.Render("")))
+        val initial = decodeActions(ws.receiveText())
+        assertEquals(initial, Seq(Action.Render("hello")))
+
+  test("ws: The ping server echoes events"):
+    withServer: server ?=>
+      val inst = createInstance(USER_IDS)
+      withWs(inst.instanceId): ws =>
+            ws.receiveText()
+            time:
+              for i <- 0 to 1000 do
+                ws.sendText(app.wire.eventFormat.encode(i.toString).toString)
+                val resp = decodeActions(ws.receiveText())
+                assertEquals(resp, Seq(Action.Render(i.toString)))