This is getting back every now and then, may be I'll post something on my blog about this...
The solution we have adopted in my company is to run the tests multiple times, each time using a different browser. We switch the browser using Spring profiles, but a an environment property will do as well. We are using Maven Failsafe Plugin to run Cucumber, but if you run directly or in any other way it will do as well.
We have a few tests we know are not applicable to certain browsers, in that cases we use Cucumber tags to annotate the scenario to not be run on unsupported browsers (like @ie-fail for IE unsafe tests) and we have a separate set of stepdefs for mobile UI (desktop and mobile packages) with scenarios not applicable to one or the other tagged accordingly (@mobile-only @desktop-only)
So our runs are like
java JUnitWrapper -Dselenium.driver=Firefox -Dcucumber.tags=~@firefox-fail,~@mobile-only -Dglue=foo.bar.desktop.* // to run dekstop tests on firefox
java JUnitWrapper -Dselenium.driver=Chrome -Dcucumber.tags=~@chrome-fail,~@desktop-only -Dglue=foo.bar.mobile.* // to run mobile tests on chrome
Does it make sense?