axelson

axelson

Scenic Core Team

ElixirConf 2019: UI Testing is Ruff; Hound Can Help - Vanessa Lee

by @girlsleuth

Whether you call it UI testing, End-to-End Testing, End-to-User Testing, or Acceptance Testing–it is often an intensely manual and time-consuming process. An Elixir library, Hound, can carry some of the load through browser automation. Browser automation means that I can automate my user interactions — clicks, fill inputs, file uploads, selecting options, radio buttons, etc. Hound tests saved me days of manual end-user testing on a project, and I want to share those benefits with you.

In addition, I found that using property-based testing principles with Hound amplifies the benefits. With the recent publication of Fred Herbert’s Property-Based Testing with PropEr, Erlang, and Elixir: Find Bugs Before Your Users Do, I have been more determined than ever to increase my understanding of property-based testing and incorporate it in my applications.

I recently had to rewrite in Elixir & Phoenix an internal credit card processing application I originally wrote in PHP in 2000. The original code had very few tests. This project provided the perfect opportunity to incorporate property-based testing in my acceptance tests. As Fred Herbert says, “Property-based testing is not a replacement for all testing, just a new tool that can often improve results.” Property-based testing gets us closer to knowing more of what he refers to as the “unknown unknowns”

I want to share that experience using examples from my recent experiences as well as by using an application I wrote specifically to show off the spectacular benefits of Hound. I will demonstrate an overview of Hound, Hound’s helpers, and StreamData. Hound, together with Elixir’s StreamData, allows us to achieve St. Bernard-level peace of mind. They can rescue us from the anxiety of failing QA and future code changes.

View all threads tagged with hound
View all threads tagged with property-based-testing
View all elixirconf2019 talks

Where Next?

Popular in Talks Top

axelson
ElixirConf 2017 - Cajoling the Bird: How we squeezed more out of Phoenix PubSub- Simon Zelazny Grindr is a m...
New
axelson
ElixirConf 2017 - Working with legacy databases in Ecto - @geo Often when starting an Elixir or Phoenix proj...
New
LostKobrakai
After having watched the talk I'm wondering if this would also be a good opportunity to gather examples / tips about how to prevent or mi...
New
axelson
ElixirConf 2017 - Streaming Video with Elixir - @johnwahba Running a video stream is challenging. You can’t ...
New
ElixirConf
ElixirConf: ElixirConf 2023 - Charlie Holtz - Building AI Apps with Elixir Comments welcome! View the <span class="hashtag-icon-placehol...
New
New
axelson
ElixirConf 2017 - Live APIs with GraphQL Subscriptions - @bruce and @benwilson512 APIs have gone live with G...
New
axelson
ElixirConf 2017 - Phoenix after 100000 lines - Renan Ranelli Given phoenix’s rise in popularity, the interne...
New
axelson
ElixirConf 2017 - Elixir Power Tracing - Gabi Zuniga Tracing is a technique for tracking events during a pro...
New
New

Other popular topics Top

chrismccord
Phoenix 1.4.0 released Phoenix 1.4 is out! This release ships with exciting new features, most notably with HTTP2 support, improved deve...
688 30048 115
New
peerreynders
Manning 2016 Halloween weekend sale via Deal of the Day Friday, October 28 - Half off all MEAPs - code WM102816LT Saturday, October 29 ...
326 29600 154
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
fireproofsocks
I’m working on defining a simple Ecto schema for a table (in PostGres), but I don’t see where I can define a column as NOT NULL. Conside...
New
myronmarston
The Elixir Typespec docs show the following syntax for keyword lists in typespecs: # ... | [key: type] # keyword lis...
New
danschultzer
None of the current solutions worked well for me, so I went ahead and built a user management system from scratch. This project took far...
548 27727 240
New
chensan
I have a User schema with a :from_id field set to type :string: defmodule TweetBot.Repo.Migrations.CreateUsers do use Ecto.Migration ...
New
chrisalley
ExUnit now has describe blocks which is a welcome addition coming from RSpec. In the docs, it states that nested hierarchies of describe ...
New
9mm
I am constructing a JSON object (map) and I need to conditionally set a field. I’m trying to write proper elixir-way code… and I’m at a l...
New
AstonJ
by Lance Halvorsen Elixir and Phoenix are generating tremendous excitement as an unbeatable platform for building modern web application...
460 27162 124
New

We're in Beta

About us Mission Statement