Skip to content

Commit 66bdc33

Browse files
committed
Bug: Lack of exception trace (#732)
* Fix * Fix ProcessMonitor crashing when live view not alive * Add test for exception trace
1 parent da9d988 commit 66bdc33

File tree

3 files changed

+36
-6
lines changed

3 files changed

+36
-6
lines changed

lib/live_debugger/services/callback_tracer/gen_servers/trace_handler.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ defmodule LiveDebugger.Services.CallbackTracer.GenServers.TraceHandler do
152152
params <- %{execution_time: execution_time, type: type},
153153
{:ok, updated_trace} <- TraceActions.update_trace(trace, params),
154154
{:ok, ref} <- TraceActions.persist_trace(updated_trace, ref),
155-
:ok <- StateActions.maybe_save_state!(updated_trace),
155+
_ <- StateActions.maybe_save_state!(updated_trace),
156156
:ok <- TraceActions.publish_trace(updated_trace, ref) do
157157
{:noreply, delete_trace_record(state, trace_key)}
158158
else

lib/live_debugger/services/process_monitor/actions.ex

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,18 @@ defmodule LiveDebugger.Services.ProcessMonitor.Actions do
3535
def register_live_view_born!(state, pid, transport_pid) do
3636
Process.monitor(pid)
3737

38-
{:ok, components} = LiveViewDebug.live_components(pid)
39-
node_ids = Enum.map(components, &%Phoenix.LiveComponent.CID{cid: &1.cid})
40-
new_state = Map.put(state, pid, MapSet.new(node_ids))
38+
case LiveViewDebug.live_components(pid) do
39+
{:ok, components} ->
40+
node_ids = Enum.map(components, &%Phoenix.LiveComponent.CID{cid: &1.cid})
41+
new_state = Map.put(state, pid, MapSet.new(node_ids))
4142

42-
Bus.broadcast_event!(%LiveViewBorn{pid: pid, transport_pid: transport_pid})
43+
Bus.broadcast_event!(%LiveViewBorn{pid: pid, transport_pid: transport_pid})
4344

44-
new_state
45+
new_state
46+
47+
_ ->
48+
state
49+
end
4550
end
4651

4752
@spec register_live_view_died!(ProcessMonitor.state(), pid()) :: ProcessMonitor.state()

test/e2e/dead_view_mode_test.exs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,31 @@ defmodule LiveDebugger.E2E.DeadViewModeTest do
4545
|> assert_has(css("label.pointer-events-none", text: "Highlight"))
4646
end
4747

48+
@sessions 2
49+
feature "traces ended with exception are visible in dead view mode", %{
50+
sessions: [dev_app, debugger]
51+
} do
52+
LiveDebugger.Services.CallbackTracer.GenServers.TracingManager.ping!()
53+
LiveDebugger.API.SettingsStorage.save(:dead_view_mode, true)
54+
55+
dev_app
56+
|> visit(@dev_app_url)
57+
58+
debugger
59+
|> visit("/")
60+
|> click(first_link())
61+
|> click(global_callback_traces_button())
62+
|> click(clear_traces_button())
63+
|> click(toggle_tracing_button())
64+
65+
dev_app
66+
|> click(css("button[phx-click=\"crash\"]"))
67+
68+
debugger
69+
|> find(global_traces(count: 1))
70+
|> assert_has(css("summary.border-error-icon"))
71+
end
72+
4873
defp global_traces(opts), do: css("#global-traces-stream details", opts)
4974

5075
defp global_callback_traces_button(), do: css("button[aria-label=\"Icon globe\"]")

0 commit comments

Comments
 (0)