Screenplay is a *software design pattern* and accompanying library code which helps developers write reusable logic for [Behaviour Driven Development] (BDD) tests. It's [most useful for integration and acceptance testing]. When applied to *web application testing*, Screenplay is essentially a refinement of the [Page Object Pattern]. The Screenplay libraries are used as [plugins to a testing framework], such as [SpecFlow] (recommended) or [NUnit]. Test logic is written and composed using [Screenplay's building blocks], which in-turn control the system/software under test. As well as improving the reusability of test logic, Screenplay also produces [detailed reports] from the test execution. These reports, which may be converted into a number of formats, provide a step-by-step breakdown of what happened in the scenario, allowing quick diagnosis of failures. [Behaviour Driven Development]: https://en.wikipedia.org/wiki/Behavior-driven_development [most useful for integration and acceptance testing]: WhereScreenplayIsUseful [plugins to a testing framework]: ScreenplayInTheTestingStack [Screenplay's building blocks]: MakeupOfAScreenplayTest [NUnit]: http://nunit.org/ [SpecFlow]: http://specflow.org/ [detailed reports]: GettingReports [Page Object Pattern]: https://martinfowler.com/bliki/PageObject.html ## Tutorial: Your first test There are two step-by-step tutorials available for writing your first Screenplay tests: * [Read the NUnit tutorial] * [Read the SpecFlow tutorial] ## Reference Once you have the basics, [the Screenplay reference] provides more information about how specific APIs are used. [Read the NUnit tutorial]: NUnitTutorial [Read the SpecFlow tutorial]: SpecFlowTutorial [the Screenplay reference]: ScreenplayReference