/* * Copyright 2012 ios-driver committers. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. */ package org.uiautomation.ios.grid; import org.json.JSONException; import org.json.JSONObject; import org.openqa.grid.internal.TestSession; import org.openqa.grid.internal.TestSlot; import org.openqa.grid.internal.utils.HtmlRenderer; import static org.openqa.grid.common.RegistrationRequest.APP; import static org.openqa.grid.common.RegistrationRequest.BROWSER; public class IOSHtmlRenderer implements HtmlRenderer { private IOSRemoteProxy proxy; public IOSHtmlRenderer(IOSRemoteProxy proxy) { this.proxy = proxy; } public String renderSummary() { StringBuilder builder = new StringBuilder(); builder.append("<fieldset>"); builder.append("<legend>").append(proxy.getClass().getSimpleName()).append("</legend>"); if (proxy.isRestarting()) { builder.append("<b>***RESTARTING***</b><br/>"); } builder.append("Listening on ").append(proxy.getRemoteHost()); if (proxy.getTimeOut() > 0) { int inSec = proxy.getTimeOut() / 1000; builder.append(". Test session time out after ").append(inSec).append(" sec."); } builder.append("<br>Supports up to <b>").append(proxy.getMaxNumberOfConcurrentTestSessions()) .append("</b> concurrent tests from : </u><br>"); for (TestSlot slot : proxy.getTestSlots()) { boolean simulator = Boolean.parseBoolean(slot.getCapabilities().get("simulator").toString()); if (simulator) { builder.append(slot.getCapabilities().containsKey(BROWSER) ? slot.getCapabilities().get( BROWSER) : slot.getCapabilities().get(APP)); } else { builder.append(slot.getCapabilities().get("device")).append(" [").append(slot.getCapabilities().get("sdkVersion")).append("]"); } TestSession session = slot.getSession(); try { if (slot.getCapabilities().containsKey("CFBundleExecutable")){ if (!slot.getCapabilities().get("CFBundleExecutable").toString().equalsIgnoreCase("MobileSafari")){ builder.append("<img src=\"" + proxy.getRemoteHost() + getIconUrl(slot) + "\" title=\"" + slot.getCapabilities().get("CFBundleExecutable") + "\" alt=\"" + slot.getCapabilities().get("CFBundleExecutable") + "\" height=\"30\" width=\"30\">"); } else { builder.append("<b> *safari* </b>"); } } } catch (JSONException ignored) { } if (simulator) { builder.append(" ").append(slot.getCapabilities().get("device_Alt")).append(" - ") .append(slot.getCapabilities().get("sdkVersion_Alt")).append(""); } builder.append(session == null ? " (free)" : "(busy, session " + session + ")"); builder.append("<br/>"); } builder.append("</fieldset>"); return builder.toString(); } private String getIconUrl(TestSlot slot) throws JSONException { JSONObject resources = (JSONObject) slot.getCapabilities().get("resources"); return resources.getString("CFBundleIconFile"); } }