Whenever I need to do some test automation-related practice or POC, I need an appropriate application under test. There are a hundred different example applications out there, and it can be overwhelming to search for a good app, and not spend too much time on it. For that reason, I will share my top 5 most used sample web applications and briefly explain my decision.
What do I usually need?
The main reasons why I use these apps are:
- do a proof of concept for a certain test automation tool/plugin/approach
- create a simple CI pipeline that needs to build/test/deploy a realistic application
- get familiar with the certain software development tool or concepts through reverse engineering and modification of an existing application
Criteria that these applications need to fulfill:
- having the source code of the application – is the main criterion when I’m choosing an example app. This helps me understand the application that I’m using, I can control the data and avoid interference with other people (by deploying an app on my own), and I can make modifications to the app in order to adjust it to my needs or provoke certain behavior
- applications of various complexity – I don’t want to deploy an app for a half of day just to do a 15 minutes one method check
- besides UI, I often need an API and a database
Public instance: https://todomvc.com
Underlying technology: ~50 different frontend frameworks
When do I use it: Frontend related proofs-of-concept and prototyping. All implementations in different technologies are having public instance, and since the app is not having a backend it can be useful without the need to build a private instance.
The Internet (Saucelabs)
Public instance: http://the-internet.herokuapp.com
Underlying technology: Ruby/HTML/CSS
When do I use it: The official about section describes this application pretty well: An example application that captures prominent and ugly functionality found on the web. I’m using The Internet every time I need to experiment with iframes, large DOM, or specific HTML elements.
Restful booker (Mark Winteringham)
Public instance: https://restful-booker.herokuapp.com
Underlying technology: NodeJS/Express
When do I use it: When I need a CRUD restful API for tool testing or demos. It has intentionally built-in bugs that can serve very well for API testing practice.
Real World App (Cypress.io)
Public instance: –
Underlying technology: NodeJS/Express/React/lowdb
When do I use it: Simple but complete web application for e2e testing practice. Additionally, it provides various authentication methods (Auth0, Okta, Amazon Cognito, Google).
Realworld (Thinkster & various contributors)
Public instance: https://demo.realworld.io
All implementations: https://codebase.show/projects/realworld
Underlying technology: ~100 different variants of frontend/backend/DB frameworks
When do I use it: When I have specific requirements related to the application technology and I need an application that is as close as possible to some real app that I want to replicate in terms of complexity. Preparation of this application requires setting up of frontend, backend, routing and a database, so I do not recommend it for quick experiments.