mcdcorp / opentest

Open source test automation tool for web applications, mobile apps and APIs
https://getopentest.org
MIT License
446 stars 107 forks source link
api framework mobile test web

:toc:

= OpenTest

OpenTest is a free and open source functional test automation tool for web applications, mobile apps and APIs.

== Why another test automation tool? We know there's a lot of stuff out there already, both established commercial products and open source projects. We looked for the proper tool for a long time, and gave a fair try to quite a few of them, with results that did not exactly meet our expectations. We were looking for a tool that we could standardize on, that would allow us to unify the test automation efforts across multiple internal and external teams with various sizes, skill sets, budgets and geographic locations. This tool would have to incorporate the latest best practices in the industry and, ideally, be released under an open source license so we can eliminate lengthy processes and reduce costs. Given these considerations, as well as other requirements, we decided that building from scratch was the responsible choice.

OpenTest aims to offer all the features of a modern test automation tool while following a set of healthy principles. We are aiming to democratize functional test automation and create a great community that is empowered to build upon itself. While nothing in life is perfect and no piece of software is ever complete, we promise that every feature that went into this product was thoroughly thought out and carefully implemented to achieve the best balance between power and flexibility on one side, and usability on the other.

== Features

(and we had to skip a lot of really cool features to keep this brief)

== Installation Prerequisites: https://nodejs.org/en/[Node.js 8] or greater; https://java.com/en/download/[Java runtime 8] or greater.

Install from npm:

npm install opentest -g

Video tutorial: https://getopentest.org/docs/installation.html (recorded on Windows)

== Quick start

. Create a directory named "opentest" in your home directory to use as a playground for this guide, and cd into that directory. +

cd ~
mkdir opentest
cd opentest

NOTE: On Windows, use md instead of mkdir.

. Run the command below +

opentest quick-start

+ You should now have these files and directories in your current path: +

server
└── server.yaml

actor1
└── actor.yaml

test-repo
├── macros
│   └── ...
├── scripts
│   └── ...
├── templates
│   └── ...
└── tests
    └── ...

+ The server and the actor1 directories are going to be used as the working directories for the OpenTest server and test actor, respectively. The test-repo directory is a sample test repository that demonstrates some basic features of OpenTest.

. Open a new terminal window, cd to the server's working directory and start the OpenTest server: +

cd ~/opentest/server
opentest server

+ The OpenTest server (aka the sync server) is a Node.js application who's main functions are to orchestrate test execution and to provide a web-based UI.

. Open a new terminal window, cd to the actor's working directory and start the test actor: +

cd ~/opentest/actor1
opentest actor

+ The test actor is a Java application that runs on the system under test and executes test steps as instructed by the sync server.

. Open a web browser and navigate to http://localhost:3000.

. From the menu, select Session > Create Session From Template. Select the template Quick start tests and click Create session. Wait a few seconds and refresh your browser to view the result of the test session.

== High-level architecture There are three components to OpenTest:

.OpenTest high-level architecture image::https://user-images.githubusercontent.com/5209882/34263230-63d8e87c-e634-11e7-83d8-a98b806681f4.png[OpenTest high-level architecture]

{zwsp} +

== License OpenTest is open source software released under the http://www.opensource.org/licenses/mit-license[MIT license].

== Contributing

Unless you explicitly state otherwise, any contribution intentionally submitted by you for inclusion in this repository shall be licensed as above, without any additional terms or conditions.

For more information please see the https://github.com/mcdcorp/opentest/blob/master/.github/CONTRIBUTING.md[contributing guidelines] document.

== Thanks