15 Portable test automation with Serenity/JS
This chapter covers
- Designing the domain layer of a test automation system
- Design patterns supporting portable test automation
- Leveraging non-UI interactions with Blended Testing
- Test code encapsulation and reuse patterns
In chapter 14, you’ve learned how following the layered architecture pattern can support you in designing scalable test automation systems. You’ve also seen how introducing a specification layer can help you capture information about the business context, its rules, workflows, scenarios, as well as the actors interacting with the system and the goals they’re trying to accomplish.
In this chapter, we’ll continue to explore the idea of layering the architecture of our test automation system. We’ll investigate ways to reflect the concepts and vocabulary from the business domain in our test automation code. We’ll also study patterns that help to focus our implementation on modelling the business process and abstracting away the lower-level test integration tools.
In our exploration, we’ll identify Serenity/JS APIs that help to make our test code portable. You’ll also see how designing with portability in mind helps to create reusable test code. Test code that can be used in different contexts, and scale to support not only multiple test suites within your project, but also multiple teams across your organization.