PLEASE PATCH SOURCE CODE IF YOU FEEL THIS USEFUL.
** Problem:
I create two WebTesters with different "User-Agent" set using
getTestContext().setUserAgent(custom_user_agent_N),
I found that the later "custom_user_agent_2" will override first "custom_user_agent_1", thus WebTester.gotoPage() return unexpected HTMLs for specified User-Agnet.
** Solution:
This is because when creating WebClient, is pass same -static- instance of BrowserVersion.FIREFOX_24, so that bv.setUserAgent() would always override the string used before.
I changed the code with '.clone()' appended, it solves!
In [HtmlUnitTestingEngineImpl.java]:
protected WebClient createWebClient() {
BrowserVersion bv;
if (testContext.getUserAgent() != null) {
// ORIGINAL :
// bv = BrowserVersion.FIREFOX_24;
// MODIFIED by randy827@gmail.com :
bv = BrowserVersion.FIREFOX_24.clone();
bv.setUserAgent(testContext.getUserAgent());
} else {
bv = defaultBrowserVersion; // use default (which includes a full UserAgent string)
}
if (getTestContext().getProxyHost() != null && getTestContext().getProxyPort() > 0) {
// Proxy configuration
return new WebClient(bv, getTestContext().getProxyHost(), getTestContext().getProxyPort());
} else {
return new WebClient(bv);
}
}
Patch applied, thanks