wintermeyer

wintermeyer

TDD - Open `left` in a browser

Wenn I run a test which assert html_response(conn, 200) =~ something but fails I get the HTML code of the left side of the test displayed in the terminal. But since it can be a very long on complex webpage that often doesn’t help me a lot (very hard to read through it in the terminal).

Is there a way to fire up a web browser with that code or to put it in the clipboard?

$ mix test
.....

  1) test GET / (FeriendatenWeb.VacationSlugControllerTest)
     test/feriendaten_web/controllers/vacation_slug_controller_test.exs:6
     Assertion with =~ failed
     code:  assert html_response(conn, 200) =~ "Sommerferien 2029"
     left:  "<!DOCTYPE html>\n<html lang=\"de\">\n  <head>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <meta name=\"csrf-token\" content=\"I1VVFRFvKAE4TFEOGgwHPDQJPF46AD8Hm1aEs0oWVt4yic4cG0Y4V1Pj\">\n    <title>\nSommerferien Hessen\n    </title> [...]

Marked As Solved

codeanpeace

codeanpeace

Yeah, that would be nice to have. I remember how the screenshot helpers would often come in handy when testing Ruby on Rails apps.

To copy it your clipbaord, you could do something like this:

describe "index" do
  test "lists all posts", %{conn: conn} do
    conn = get(conn, ~p"/posts")

    port = Port.open({:spawn, "pbcopy"}, []) # pbcopy for mac, xsel for linux, etc.
    true = Port.command(port, html_response(conn, 200))
    true = Port.close(port)

    # assert html_response(conn, 200) =~ "Listing Posts"
  end
end

Also Liked

katafrakt

katafrakt

LiveView has open_browser function. You cannot use it directly, because it expects a view or element as an input, not an HTML string, but perhaps you can use it as an inspiration to write your custom browser opening function.

This is also why I’m not exactly a fan of this kind of testing - checking if X is a substring of a very long HTML string. Perhaps it’s better to parse the string with Floki and look for an exact element. Then you would at least know if the problem is that the element does not exist or maybe it exists, but has a different value.

Where Next?

Popular in Questions Top

nobody
Hi! In PHP: $_SERVER[‘SERVER_ADDR’] - in Elixir? Searched the docs for ip address and the web, no good results. Thanks!
New
minhajuddin
I have seen a lot of code which picks the first element from a list using Enum.at(0) instead of List.first. Is there a reason why people ...
New
lastday4you
I wanted to check elixir version in phoenix because i found that my elixir is 1.5 but when i use Enum.chunk_by it said the function is un...
New
Lily
In templates/appointment/index.html.eex: &lt;%= for appointment &lt;- @appointments do %&gt; &lt;tr&gt; &lt;td&gt;&lt;%= appoi...
New
joeerl
Hello again - after a longish gap I’ve decided I really must dig into Elixir and see what’s been happening here - so I have a few questio...
New
belgoros
I’m not a pro in using Regex and can’t figure out why the following behaviour happens, especially if we take into account the difference ...
New
Harrisonl
We have an ECS cluster with 4 services, where each task joins a single cluster, via discovery ECS discovery service. Currently when I de...
New

Other popular topics Top

jononomo
For some reason my phoenix channels are working for me in my local dev environment, but as soon as I deploy via Docker, I get a 403 error...
New
Darmani72
If I have a post route which an argument: post /my_post_route/:my_param1, MyController.my_post_handler How would get the post params ...
New
sergio_101
I am VERY much an elixir newbie. I have taken one elixir course and one phoenix course on Udemy. During that course, I saw the instructor...
New
shijith.k
I am trying to start a new phoenix project with elixir 1.9, but mix phx.new does not work. It says that ** (Mix) The task "phx.new" could...
New
SoCreat
i’m a new one to elixir which editor can i use vs code? or atom? Thanks! :smiley:
New
JorisKok
I have a server on AWS, and was running a load test using artillery. When looking at the Phoenix dashboard I see the Ports going to 100% ...
New

We're in Beta

About us Mission Statement