I’ve been collating my thoughts on Page Objects and Abstraction Layers, particularly the implementation of them using Java.
I presented my initial thoughts at Let’s Test 2014 in a half day workshop. This could easily have been a full day workshop to allow for more experimentation with the different coding styles.
I released the slides to the tutorial on slideshare.
I confess to some nervousness about releasing the information since I don’t normally release the slides to tutorials and courses in case it cuts down on the value of running the tutorial or course again.
But, in this case, I don’t see enough information on the web about multiple Abstraction Layers and different ways of doing Page Objects, so I thought I’d throw my work out there, along with the supporting source code.
On a related note. I fronted a discussion at the Test Management Summit 2014 on Automation Abstractions. The slides for which were taken from the above presentation.
The aim for the slides and presentation is to demonstrate multiple approaches, so that people don’t just pick up the first ‘framework’ they see, or build ‘Page Objects’ without thinking through the modelling approaches open to them.
In the code and presentation I have examples of:
- Page Objects
- Page Objects that synchronize as slow loadable components
- Navigation separate from Page Objects
- Domain Objects
- DOM WebElement abstractions
- and more…
The code and slides demonstrate some of my biases.
The main point is that ‘none of these approaches are best’, and we make decisions when we build our automation. We should take responsibility for those decisions and experiment with what works best in our environment, with our coding skills, with our development standards, for our application.
I’ll expand this material in the future. But I hope it helps somewhat in its current form.
You might also find the slides for my BDD tutorial relevant since I discuss some of my thoughts on BDD and Domain Specific Languages as Abstraction Layers.