My understanding is that SlimerJS support in CasperJS is currently experimental (CasperJS 1.1.0-beta1, SlimerJS 0.8). And there are differences between the SlimerJS and CasperJS APIs.
Before I found this out, I assumed that the ultimate goal of CasperJS was to be a single framework that could run the same script against either Gecko (with SlimerJS) or WebKit (with PhantomJS), and I wouldn't need to "learn" Slimer or Phantom.
It now looks like there is limited abstraction, in which case I might as well use each underlying frameworks directly. Is the point that some abstraction is better than none, and things are likely to improve?
I am not asking for an opinion on "which framework is better right now" or "is CasperJS good enough". I want to understand the (documented, possibly aspirational) goals of CasperJS.
From https://github.com/casperjs/casperjs/issues/1905 :
The original goals of CasperJS is make it easier for navigation and testing. Although it is great to be able to harmonize across different browser, in practice it is really hard.
...
If something you want to be done can be done directly and easily using the browser automation engine [SlimerJS or PhantomJS], then that's great and it is better to do that. If there are complicated steps of code and you find that CasperJS's API simplifies some of the hard work for you, then you can consider using CasperJS.