Software engineering has many design patterns, including Adaptors, Abstract Factories, Decorators etc. Test automation, as a branch of software engineering, can use same patterns but has also its own design patterns, to name a few:
- Page Object - wraps an HTML page, or fragment, with an application-specific API, allowing you to manipulate page elements without digging around in the HTML.
- Screenplay - originally invented to address limitations of Page Object pattern: an Actor have Abilities to perform certain Tasks composed of Actions that interact with Elements of a Screen
- Features and Testers - originally invented by Guava team to test collections: different implementations share similar Features, so one test (caller Tester) for a specific feature can be used to test multiply implementations. It can be used to verify output of end-to-end scenarios as well.
What are other design patterns specific to automating tests?
I am thinking more of design patterns related to object-oriented programming, describing relations between classes and interfaces.