Liveview testing render changes before submitting form

LiveViews are GenServer’s under the hood

source

render_change is modifying the state of the live_view process and returns rendered result as a string to assert on if needed.

Once we got view via

{:ok, view, _html} = live(conn, ~p"/my_resource/#{id}/edit")

we should be able to

# modify the view (this will also return the resulting html so we can assert on its content if needed)
html = 
  view
  |> form("#my-form")
  |> render_change(%{some_key:  "some value"})

# now the state of the `view` is modified, so we can submit the form and try to follow redirect
view
|> form("#my-form")
|> render_submit()
|> follow_redirect(conn, ~p"/my_redirect_route")