defmodule ExshomeTest.Hooks.LiveView do @moduledoc """ Custom hooks for setting up tests. """ alias ExshomeTest.TestRegistry alias Phoenix.LiveView.Socket def on_mount(:default, _params, _session, %Socket{} = socket) do owner_pid = case socket do %Socket{parent_pid: parent_pid} when not is_nil(parent_pid) -> TestRegistry.get_parent(socket.parent_pid) %Socket{private: %{connect_info: %{owner_pid: owner_pid}}} -> owner_pid _ -> nil end not_rendered_in_owner_process = owner_pid != self() valid_owner_pid = owner_pid && not_rendered_in_owner_process valid_owner_pid && TestRegistry.allow(owner_pid, self()) {:cont, socket} end end