venomnert

venomnert

Front End Testing using Elixir

Contenxt:

My current company’s ecommerce website is on Drupal 7. I am trying to find a way (excuse) to use Elixir more in my workplace. In order to achieve this, I was thinking of creating a front end testing tool using Elixir.

My Question:

  1. Has anyone here created a front end testing tool using Elixir which tests a website on a re-occuring bases?
  2. Is this a good idea? Should I abandon Elixir for front end testing and stick to something like cypress?

Most Liked

ityonemo

ityonemo

Hound works very well for this. I am currently deploying hound against a django bff that runs in front of a django backend and it was incredibly effective at demonstrating that the elixir replacement backend that I wrote is an effective substitute that doesn’t die after long term burn in testing.

I can’t compare it to anything else (it’s been ages since I used capybara) but I wrote a repeating test and having it be a supervised process in elixir meant I didn’t have to nail down all corner cases (also my tests called out other services like ssh to confirm side effects), if it crashed the tests would restart from a safe state

I tried wallaby, but there were simply a few things that couldn’t trigger as reliably as hound does, so I stuck with hound, even though it’s imperative syntax is less to my liking. I got used to it though.

benwilson512

benwilson512

Author of Craft GraphQL APIs in Elixir with Absinthe

We tried both out and ended up going with Wallaby. The experimental chrome driver has been working out great for us!

tme_317

tme_317

There is Wallaby also… both Hound and Wallaby work well for automated E2E browser testing.

ityonemo

ityonemo

Yes, 100%. At work I replaced a python backend with elixir (I’m coming for the python frontend next) and tested that it worked by running a user story continuously using hound for one week in our staging/lab environment (against the python frontend). Discovered several errors, and since deploying to prod there have been zero backend errors.

ityonemo

ityonemo

As a protip, if you do this, BEAM supervised restarts are key and I found that I needed to System.cmd(“killall”, [“chromedriver”]) on each restart, because I found that chromedriver could become helplessly lost in the face of our high-latency python frontend that doesn’t handle conflicting state very well, but that’s another story altogether.

Where Next?

Popular in Questions Top

Brian
What is the proper way to load a module from a file in to IEX? In the python world, doing something like this pretty standard: from ....
New
gshaw
What is the idiomatic way of matching for not nil in Elixir? E.g., First way: defp halt_if_not_signed_in(conn, signed_in_account) when...
New
tduccuong
Hi, is there any work on GUI with Elixir, that is similar to Electron/Javascript? My idea is to bundle Phoenix and BEAM into a single se...
New
polypush135
As many of you may have realized by now (sorry for all the posts here) I’ve been working on a db problem where I’m trying to aggregate a ...
New
lk-geimfari
What is most correct way to open, read and parse JSON file with poison? For example if we have example.json file in root of some projec...
New
fayddelight
I tried installing elixir 1.11.2 erlang 23.3.4 via asdf in my zsh shell. Enabled the versions locally and globally. When I list them ...
New
baxterw3b
Hi guys, i’m new in the Elixir world, and i have to say, that i love it! i’m having some problem to understand anonymous functions with ...
New
hpopp
To simplify some tasks at work, I wrote and published this package yesterday. It’s a simple macro that enables Access behaviour on struct...
New
sabri
Can someone explain the settings of pool_size of Ecto in config file? and what is the recommend size? Thanks
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

Other popular topics Top

srinivasu
How to handle excepions in elixir? Suppose i have A, B, C ,D, E modules. and each module has get() function. A.get() method will call th...
New
Tee
can someone please explain to me how Enum.reduce works with maps
New
bsollish-terakeet
Credo is smart enough to check for (something like) this: assert length(the_list) == 0 with this response: Checking if an enum is empt...
New
jerry
Good day to you all. I have been struggling to get a query involving like and ilike to work. Can anyone assist me on this, please? pro...
New
New
chrismccord
This release brings a number of exciting features, including integration with the new Phoenix LiveDashboard and Phoenix LiveView. There h...
New
Patoshizzle
After calling mix ecto.create I get this error: 17:00:32.162 [error] GenServer #PID<0.412.0> terminating ** (Postgrex.Error) FATAL...
New
josevalim
Hi everyone, One of the features added to Elixir early on to help integration with Erlang code was the idea of overridable function defi...
New
Qqwy
Original source of discussion: This topic on the Pragmatic Programmers' Functional Web Development with Elixir, OTP, and Phoenix forum. ...
New
siddhant3030
Hi, I have to write a raw query for one of my project. But till now I have used ecto queries and don’t have much experience writing raw ...
New

We're in Beta

About us Mission Statement