I tend to use case classes for anything that carries plain data, as it makes it very easy to construct and deconstruct them.  In the case of WebDriverErrorDetails, it makes it really simple to write the JsonFormat, because of the generated apply method.