Automated end-to-end testing of web applications