I found the solution to get this working. The problem was that any of the @Before codes were getting picked up in a random order. It wasn't based on the assumption that a @Before without parameters will be executed before @Before("myTag").
So the trick is to assign order parameter (in @Before) some value. The default order that gets assigned to @Before is 10000. So, if we define the order value explicitly, it should work.
So basically, my code for initializer could look like:
@Before(order=1)
public void initLoginPage() throws Exception {
getBrowserDimension();
setBrowserCapabilities();
init(getApplicationUrl());
}
That solved my problem