test/support/hooks/live_view.ex

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