Rubas

Rubas

Current Challenge

When testing LiveViews that use assign_async, we can’t really operate on the async data.

  • render_async(view) waits for async operations but only returns the html

  • All the other render_* test functions (render_click, render_patch, etc.) can not be used in combination with async content

Problem

  • We can’t use render_patch and then assert on async data that loads after navigation
  • We can’t use render_click on elements that appear in async-loaded content

Solution

I’m not sure yet what the most elegant way to solve this is …

Showing Posts 1 to 2

LostKobrakai

LostKobrakai

What’s the problem with just returning HTML? The LV test api is not a functional API. view includes a pid, which is what most apis talk to, so you don’t need to get a new view back everywhere.

Rubas

Rubas OP

You are right. I missed something here.

This works

      # Navigate to appointments list
      {:ok, view, _html} = live(conn, ~q"/:locale/user/appointments")

      # Navigate to first appointment
      render_patch(view, ~q"/:locale/user/appointments/123")

      # Wait for async data to load and render
      html1 = render_async(view)

      # Verify first appointment data
      assert html1 =~ "Location One"
      assert html1 =~ "123-456"
      assert html1 =~ "John Doe"

      # Navigate directly to second appointment
      render_patch(view, ~q"/:locale/user/appointments/456")

      # Wait for async data to load and render
      html2 = render_async(view)

      # Verify second appointment data
      assert html2 =~ "Location Two"
      assert html2 =~ "789-012"
      assert html2 =~ "Jane Smith"

      # Ensure first appointment data is no longer present
      refute html2 =~ "Location One"
— All posts loaded —

Where Next? Top

Trending in Proposals: Ideas Top

Other Trending Topics Top

GenericJam
Edit: 2026 May 15 - This post is archived. Mob is alive!! Main docs: mob v0.7.11 — Documentation A bit of explanation for the slightly c...
New
JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
marciok
Hi there! We created Gust: A task orchestrator inspired by Airflow. For those who have never heard about Aiflow, it’s a Python-based wor...
New
mhanberg
Hi everyone! The first release candidate for the Expert language server project is now available! We’ve published a press release detai...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews