|
11 | 11 | import com.perfecto.reportium.test.result.TestResult; |
12 | 12 | import org.apache.commons.lang3.StringUtils; |
13 | 13 | import org.apache.commons.lang3.tuple.Pair; |
| 14 | +import org.apache.http.client.utils.URIBuilder; |
14 | 15 | import org.openqa.selenium.HasCapabilities; |
15 | 16 | import org.openqa.selenium.JavascriptExecutor; |
16 | 17 | import org.openqa.selenium.WebDriver; |
17 | 18 |
|
18 | 19 | import java.util.*; |
19 | 20 | import java.util.logging.Logger; |
| 21 | +import java.net.URI; |
| 22 | +import java.net.URISyntaxException; |
20 | 23 |
|
21 | 24 | import static com.perfecto.reportium.model.util.ExecutionContextPopulator.EQUALS; |
22 | 25 |
|
@@ -218,8 +221,35 @@ public String getReportUrl() { |
218 | 221 | if (value == null) { |
219 | 222 | return null; |
220 | 223 | } |
| 224 | + |
| 225 | + try { |
| 226 | + String reportUrl = String.valueOf(value); |
| 227 | + URI originalUri = new URI(reportUrl); |
| 228 | + |
| 229 | + URIBuilder uriBuilder = new URIBuilder() |
| 230 | + .setScheme(originalUri.getScheme()) |
| 231 | + .setHost(originalUri.getHost()) |
| 232 | + .setPort(originalUri.getPort()) |
| 233 | + .setPath(originalUri.getPath()); |
| 234 | + |
| 235 | + // Parse and add query parameters - URIBuilder will encode them |
| 236 | + if (originalUri.getQuery() != null) { |
| 237 | + String[] pairs = originalUri.getQuery().split("&"); |
| 238 | + for (String pair : pairs) { |
| 239 | + String[] keyValue = pair.split("=", 2); |
| 240 | + if (keyValue.length == 2) { |
| 241 | + uriBuilder.addParameter(keyValue[0], keyValue[1]); |
| 242 | + } else { |
| 243 | + uriBuilder.addParameter(keyValue[0], ""); |
| 244 | + } |
| 245 | + } |
| 246 | + } |
| 247 | + |
| 248 | + return uriBuilder.build().toString(); |
221 | 249 |
|
222 | | - return String.valueOf(value); |
| 250 | + } catch (URISyntaxException e) { |
| 251 | + throw new ReportiumException("Failed to create report URL", e); |
| 252 | + } |
223 | 253 | } |
224 | 254 |
|
225 | 255 | private void executeScript(String script, Map<String, Object> params) { |
|
0 commit comments