Lets get the terms straight: collapse = "short and add show more button", "expand" = "press show more button", "collapsed" = "post that has a show more button", "expanded" = "post that has no show more button anymore".

I think a timeout is about the worst solution, I just cleared almost all "wait for / wait x" stuff from the cucumber suite, lets not introduce such stuff into the application code. So the other proper solution I see here is registering a callback on the collection for the stream for when a new item is inserted, iirc backbone does provide those, check if it's a preview and then expand the post. I'm not sure how we collapse posts but we'd need to make sure this happens after the fact. So I'd still prefer to check if the post is a preview when collapsing it. I had no problem with adding an attribute to indicate that, the server side would never have to see that anyway or could just ignore it.