The ScreenshotBuilder currently operates on one image. Every graphics operation is run directly onto the image, therefore losing the original screenshot. While this behaviour is expected and works well for normal screenshotting operations it breaks down when doing screenshot tests. It would be useful if the image were to be seperated into two different layers:
Screenshot layer contains the taken screenshot
Annotation layer contains all the annotations made by the ScreenshotBuilder
These layers can then be saved individually or merged together into one final annotated screenshot.
This is done by adding a new subclass of ScreenshotBuilder - called DiagnosticScreenshotBuilder - which keeps the source screenshot and the annotations separate. This DiagnosticScreenshotBuilder is then used in all screenshotting tests, effectively replacing the normal ScreenshotBuilder for screenshot testing.