A comparison of front-end functional testing frameworks