livebook/test/livebook_web/live/learn_live_test.exs
2023-10-24 19:15:30 +02:00

31 lines
1 KiB
Elixir

defmodule LivebookWeb.LearnLiveTest do
use LivebookWeb.ConnCase, async: true
import Phoenix.LiveViewTest
test "link to introductory notebook correctly creates a new session", %{conn: conn} do
{:ok, view, _} = live(conn, ~p"/learn")
assert {:error, {:live_redirect, %{to: to}}} =
view
|> element(~s{#welcome-to-livebook a}, "Open notebook")
|> render_click()
assert to =~ "/sessions/"
# Note that this LV page is huge and the simulated rendering in
# LV tests is not heavily optimized. This LV receives events from
# concurrent tests (such as hub creation) and rendering is a big
# bottleneck, to the point where calling render(view) times out.
# That's why we only assert on the dead render HTML.
{:ok, _view, html} = live(conn, to)
assert html =~ "Welcome to Livebook"
close_session_by_path(to)
end
defp close_session_by_path("/sessions/" <> session_id) do
{:ok, session} = Livebook.Sessions.fetch_session(session_id)
Livebook.Session.close(session.pid)
end
end