Designing automation layer

Adapting screenplay pattern

code in terms of intention (when knowing more about intention) refactor the domain-specific API (when knowing more about underlying technology)

Driver

reusing the composition root

Separate start method

Fake adapters

They include port-specific setup and assertions.

Create a new fake adapter per each call.

Using fakes

For threads and e.g. databases - simpler objects with partially defined behavior

Actors

Where do assertions go? into the actors or context?

How to manage per-actor context (e.g. each actor has its own sent & received messages stored)

These are not actors as in actor model

Data builders

nesting builders, builders as immutable objects.