Table of Contents

Screenplay's capabilities

Screenplay follows an intuitive design

The logic of a Screenplay Performance or Task is obvious, to both programmers and non-programmers alike. Through use of static builders, Screenplay logic forms a fluent interface which is instantly readable. For example, this is a line of Screenplay-based code:

await Given(webster).WasAbleTo(AddAProductToTheirCartNamed("Blue widget"));

Screenplay promotes code reuse

Screenplay ruthlessly follows SOLID design principles, particularly SRP and OCP. The architecture of Performables permits unlimited levels of composition via Tasks.

Developers are also encouraged to use Personas to configure and manage the Actors which participate in a Screenplay.

Screenplay produces reports

Whenever a Screenplay executes, a record of what happened is saved in JSON format. This JSON file is computer-readable, but it may be converted to a human-readable report using the included utility.

Screenplay integrates with Testing frameworks

If you would like to use Screenplay as a test-authoring framework then you are in luck. Screenplay has integrations with testing frameworks, out of the box:

The community is encouraged to create and contribute additional integrations if they wish. The source code of the existing integrations, and the documentation website for your chosen test framework, are good places to start for writing a new integration.

Screenplay is extensible

Screenplay has two primary extension points, test-framework integrations (above) and Extensions. Extensions provide Screenplay with the capabilities to interact-with and automate additional technologies. Some extensions are provided already:

The community is encouraged to create and contribute additional extensions if they wish. Writing an extension is a matter of writing Ability, Action and Question classes, along with any appropriate Builders. The source code for the existing Extensions are a good place to start in learning how to create a new one.

Screenplay isn't limited to software testing

Whilst Screenplay is a popular pattern for automated testing, particularly web-browser-based testing, it doesn't have to be limited to that use-case. Screenplay may be invoked as a standalone process-automation tool. See the documentation of the ExecuteAsPerformanceAsync<T> method for information and examples for the recommended way to use Screenplay outside of a testing framework.