Published on

My favorite web applications for development/testing practice

Authors

Whenever I need to do some 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 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

TodoMVC (TasteJS)

Public instance: https://todomvc.com

GitHub: https://github.com/tastejs/todomvc

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/

GitHub: https://github.com/saucelabs/the-internet

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/

GitHub: https://github.com/mwinteringham/restful-booker

Underlying technology: Node.js/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: -

GitHub: https://github.com/cypress-io/cypress-realworld-app

Underlying technology: Node.js/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/

GitHub: https://github.com/gothinkster/realworld

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.