Testing a stream reset

Hi everyone!

I am running into a problem writing a test for resetting a stream in an event. I expect that resetting a stream would remove the previously inserted elements, but it seems that it does not.

It works fine when manually testing in the browser, so this seems to be an issue with my test itself or with LiveViewTest.

I wrote a failing test here: Demonstrate stream reset on patch · phoenixframework/phoenix_live_view@98f0568 · GitHub

Does anyone have an idea what the problem might be?

1 Like

I’m running into the same problem testing some filters in a list backed by stream/4. did you manage to solve your issue @nmk ?

I will skip this test for now and subscribe to this topic (and, if I find a solution, I’ll come back here to share :slightly_smiling_face:)

This is not completely resolved AFAIK. I write a fix for the original bug I encountered - Fix stream reset when patching by nmk · Pull Request #2656 · phoenixframework/phoenix_live_view · GitHub - which was merged to master and found its way to subsequent releases.

A few days later I ran into a similar situation and compressed it into a yet another reproduction which was failing at the time at least: Stream is not reset in handle_params on patch · Issue #2629 · phoenixframework/phoenix_live_view · GitHub

Unfortunately I have not had time to look into this in more detail.

I think there aren’t many people testing LiveView (streams) outside of e2e tests involving a real browser. If I have understood the code correctly, the Elixir test client has to emulate quite a lot of what the JS part of LiveView does. It is inevitable that the two implementations would drift apart sometimes. That is why in this case we have failing tests for code which works as intended in the browser.