# Serenity/JS

[![npm version](https://badge.fury.io/js/serenity-js.svg)](https://badge.fury.io/js/serenity-js)
[![Build Status](https://travis-ci.org/jan-molak/serenity-js.svg?branch=master)](https://travis-ci.org/jan-molak/serenity-js)
[![Coverage Status](https://coveralls.io/repos/github/jan-molak/serenity-js/badge.svg)](https://coveralls.io/github/jan-molak/serenity-js)
[![Dependencies](https://david-dm.org/jan-molak/serenity-js.svg)](https://david-dm.org/jan-molak/serenity-js)
[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)

Serenity/JS is a node.js library designed to make acceptance and regression testing of modern web applications
faster, more collaborative and easier to scale.

Serenity/JS gives you:
* the scalability and expressiveness of the [Screenplay Pattern](https://github.com/jan-molak/serenity-js/blob/master/docs/screenplay-pattern.md),
* the power and visibility of [Serenity BDD](http://serenity-bdd.info/#/documentation)
[narrative reports](http://serenity-bdd.info/docs/serenity/#_detailed_description_of_aggregation_reports),
* an easy way to introduce and follow [SOLID design principles](https://en.wikipedia.org/wiki/SOLID_(object-oriented_design)),
* easy integration with popular test automation tools,
such as [Protractor](https://github.com/angular/protractor),
[Cucumber](https://github.com/cucumber/cucumber-js) and [Chai](http://chaijs.com/) (with more to come!)

Although Serenity/JS provides strong support for automating web tests using Protractor and Webdriver,
it works very effectively for non-web tests too! Those include tests that exercise web services or even call application code directly.

|           | Please note |
| --------- | ----------- |
| :warning: | Serenity/JS is a young project. This means that although it has a **very high test coverage**, follows **semantic versioning** and **you can use it straight away**, its structure and APIs might and most likely will change over the coming weeks as it matures to become `1.0`. Is that a problem? We hope not! The feedback from the Community will help us shape Serenity/JS to your needs. Together we can build the best acceptance testing library the JavaScript world has ever seen! ... or at least something useful :wink: |

## Introduction

[![Serenity/JS: Next Generation Acceptance Testing for Angular Apps](http://img.youtube.com/vi/YYgkFgBxEwc/0.jpg)](http://www.youtube.com/watch?v=YYgkFgBxEwc "Serenity/JS: Next Generation Acceptance Testing for Angular Apps")

## Tutorials

The below tutorials will help you get started with Serenity/JS and better understand the [Screenplay Pattern](docs/screenplay-pattern.md):

* **From scripts to Serenity**
    * [Introduction: Speaking the right language](https://github.com/jan-molak/serenity-js/blob/master/docs/from-scripts-to-serenity-introduction-speaking-the-right-language.md)
    * [Getting started: Writing what you'd like to read](https://github.com/jan-molak/serenity-js/blob/master/docs/from-scripts-to-serenity-getting-started-writing-what-you-would-like-to-read.md)
    * [Reporting: Making the tests speak for themselves](https://github.com/jan-molak/serenity-js/blob/master/docs/from-scripts-to-serenity-reporting-making-the-tests-speak-for-themselves.md)

## Getting Help

To ask about the usage and troubleshooting of Serenity/JS [post a **serenity-js** tagged question on StackOverflow](http://stackoverflow.com/questions/tagged/serenity-js).

## Your feedback matters!

Do you find Serenity/JS useful? Give it a star! &#9733;

Found a bug? Need a feature? Raise [an issue](https://github.com/jan-molak/serenity-js/issues?state=open)
or submit a pull request.

Have feedback? Let me know on twitter: [@JanMolak](https://twitter.com/JanMolak)

## License

Serenity/JS library is licensed under the [Apache-2.0](LICENSE.md) license.

If you're interested in a commercial license, training, support or bringing your team up to speed with modern software
development practices - [please get in touch](https://janmolak.com/about-the-author-e45e048661c#.kxqp57qn9).

----

_- [Jan Molak](https://janmolak.com) and the Serenity Team_
