From 6061901ee9a954f84f0243d7eefbc63269e66848 Mon Sep 17 00:00:00 2001 From: ByeongUk Choi Date: Mon, 8 May 2023 18:26:21 +0900 Subject: [PATCH] Add info about empty Kino outputs (#1899) --- lib/livebook_web/live/app_live.ex | 4 +++ test/livebook_web/live/app_live_test.exs | 34 ++++++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 test/livebook_web/live/app_live_test.exs diff --git a/lib/livebook_web/live/app_live.ex b/lib/livebook_web/live/app_live.ex index ecd409a45..8305739c5 100644 --- a/lib/livebook_web/live/app_live.ex +++ b/lib/livebook_web/live/app_live.ex @@ -119,6 +119,10 @@ defmodule LivebookWeb.AppLive do input_values={output_view.input_values} /> +
+ This deployed notebook is empty. Deployed apps only render Kino outputs. + Ensure you use Kino for interactive visualizations and dynamic content. +
diff --git a/test/livebook_web/live/app_live_test.exs b/test/livebook_web/live/app_live_test.exs new file mode 100644 index 000000000..68b8c32ed --- /dev/null +++ b/test/livebook_web/live/app_live_test.exs @@ -0,0 +1,34 @@ +defmodule LivebookWeb.AppLiveTest do + use LivebookWeb.ConnCase, async: true + + import Phoenix.LiveViewTest + + alias Livebook.Session + + test "render guidance when Kino output is empty", %{conn: conn} do + session = start_session() + + Session.subscribe(session.id) + + slug = Livebook.Utils.random_short_id() + app_settings = %{Livebook.Notebook.AppSettings.new() | slug: slug} + Session.set_app_settings(session.pid, app_settings) + + Session.set_notebook_name(session.pid, "My app #{slug}") + Session.deploy_app(session.pid) + + assert_receive {:operation, {:add_app, _, _, _}} + assert_receive {:operation, {:set_app_registered, _, _, true}} + + {:ok, view, _} = live(conn, ~p"/apps/#{slug}") + + assert render(view) =~ + "This deployed notebook is empty. Deployed apps only render Kino outputs." + end + + defp start_session() do + {:ok, session} = Livebook.Sessions.create_session() + on_exit(fn -> Session.close(session.pid) end) + session + end +end