Has anyone by any chance using WSL tried to use open_browser
in your tests?
I’ve heard one could do something like open_browser(lv, &System.cmd("wslview", [&1]))
. But I have no idea how to make WSL or Elixir know how to open my default browser.
Has anyone gone through this and have been victorious?
Thanks!
Not referring to tests in particular, but on WSL, you can run applications “on the Windows side”, such as cmd.exe
. cmd.exe
allows you to provide a shell command.
In Bash for example, you can do something like this:
cmd.exe /C "start https://elixirforum.com/"
# or
cmd.exe /C "start $( echo "https://jwt.ms/#access_token=${access_token}" )"
In Elixir, this might be a start:
System.cmd("cmd.exe", ["/C", "start https://elixirforum.com/"])
However, escaping stuff the right way can always be ‘difficult’ (https://flatt.tech/research/posts/batbadbut-you-cant-securely-execute-commands-on-windows/)
1 Like
I had some success with this:
def open_browser_wsl(view) do
Phoenix.LiveViewTest.open_browser(view, fn html_unix_path ->
{wsl_path, 0} = System.cmd("wslpath", ["-aw", html_unix_path])
cmd_args = ["/C", "start", String.trim_trailing(wsl_path), "/C", "bash"]
System.cmd("cmd.exe", cmd_args)
end)
end
1 Like
Nice this one worked!
The only problem is adding this function every time I need to open the browser
Will keep it in a notepad!
Good one! Kinda the same path I was trying with System.cmd
Just add a helper to your ConnCase
Otherwise, one of you should consider contributing this to PhoenixTest if it’s universal enough (I had to look up what WSL is so I don’t know anything here, but I did do some work around open_browser for that lib).
Do your test files have a line like this:
use MyAppWeb.ConnCase
?
If so, you can just write the function in test/support/conn_case.ex
and then it will be available in all your live view tests.
Ah, yes. This. I am saying the same thing.
I do not know if it is universal at all. It worked for me, one day. That’s all.
After that, all bets are off
I guarantee nothing!
Life is chaos!
That’s the function we would need to “contribute” to: phoenix_test/lib/phoenix_test/open_browser.ex at main · germsvel/phoenix_test · GitHub
Actually it’s a good idea to contribute, but I still know too little about what’s really going on behind it to contribute, so I’m gonna do some homework and… who knows, right?