How to use generateManualExecutionTable method of org.cerberus.servlet.crud.testexecution.ReadTestCaseExecutionByTag class

Best Cerberus-source code snippet using org.cerberus.servlet.crud.testexecution.ReadTestCaseExecutionByTag.generateManualExecutionTable

Source:ReadTestCaseExecutionByTag.java Github

copy

Full Screen

...137 jsonResponse.put("table", generateTestCaseExecutionTable(appContext, testCaseExecutions, statusFilter, countryFilter, testCaseLabelScopeList, fullList));138 }139 // Table that contain the list of testcases and corresponding executions140 if (outputReport.isEmpty() || outputReport.contains("table")) {141 jsonResponse.put("manualExecutionList", generateManualExecutionTable(appContext, testCaseExecutions, statusFilter, countryFilter));142 }143 // Executions per Function (or Test).144 if (outputReport.isEmpty() || outputReport.contains("testFolderChart")) {145 jsonResponse.put("testFolderChart", generateTestFolderChart(testCaseExecutions, Tag, statusFilter, countryFilter));146 }147 // Global executions stats per Status148 if (outputReport.isEmpty() || outputReport.contains("statsChart")) {149 jsonResponse.put("statsChart", generateStats(request, testCaseExecutions, statusFilter, countryFilter, true));150 }151 // BugTracker Recap152 if (outputReport.isEmpty() || outputReport.contains("bugTrackerStat")) {153 jsonResponse.put("bugTrackerStat", generateBugStats(request, testCaseExecutions, statusFilter, countryFilter));154 }155 // Labels Stats156 if (outputReport.isEmpty() || outputReport.contains("labelStat")) {157 jsonResponse.put("labelStat", generateLabelStats(appContext, request, testCaseExecutions, statusFilter, countryFilter, testCaseLabelScopeList));158 }159 if (!outputReport.isEmpty()) {160 //currently used to optimize the homePage161 if (outputReport.contains("totalStatsCharts") && !outputReport.contains("statsChart")) {162 jsonResponse.put("statsChart", generateStats(request, testCaseExecutions, statusFilter, countryFilter, false));163 }164 //currently used to optimize the homePage165 if (outputReport.contains("resendTag")) {166 jsonResponse.put("tag", Tag);167 }168 }169 Tag mytag = tagService.convert(tagService.readByKey(Tag));170 if (mytag != null) {171 JSONObject tagJSON = convertTagToJSONObject(mytag);172 jsonResponse.put("tagObject", tagJSON);173 jsonResponse.put("tagDuration", (mytag.getDateEndQueue().getTime() - mytag.getDateCreated().getTime()) / 60000);174 }175 answer.setItem(jsonResponse);176 answer.setResultMessage(answer.getResultMessage().resolveDescription("ITEM", "Tag Statistics").resolveDescription("OPERATION", "Read"));177 jsonResponse.put("messageType", answer.getResultMessage().getMessage().getCodeString());178 jsonResponse.put("message", answer.getResultMessage().getDescription());179 jsonResponse.put("sEcho", echo);180 response.getWriter().print(jsonResponse.toString());181 } catch (ParseException ex) {182 LOG.error("Error on main call : " + ex, ex);183 } catch (CerberusException ex) {184 LOG.error("Error on main call : " + ex, ex);185 } catch (JSONException ex) {186 LOG.error("Error on main call : " + ex, ex);187 } catch (Exception ex) {188 LOG.error("Error on main call : " + ex, ex);189 }190 }191 private JSONObject testCaseExecutionToJSONObject(TestCaseExecution testCaseExecution) throws JSONException {192 JSONObject result = new JSONObject();193 result.put("ID", String.valueOf(testCaseExecution.getId()));194 result.put("QueueID", String.valueOf(testCaseExecution.getQueueID()));195 result.put("Test", JavaScriptUtils.javaScriptEscape(testCaseExecution.getTest()));196 result.put("TestCase", JavaScriptUtils.javaScriptEscape(testCaseExecution.getTestCase()));197 result.put("Environment", JavaScriptUtils.javaScriptEscape(testCaseExecution.getEnvironment()));198 result.put("Start", testCaseExecution.getStart());199 result.put("End", testCaseExecution.getEnd());200 result.put("Country", JavaScriptUtils.javaScriptEscape(testCaseExecution.getCountry()));201 result.put("RobotDecli", JavaScriptUtils.javaScriptEscape(testCaseExecution.getRobotDecli()));202 result.put("ManualExecution", JavaScriptUtils.javaScriptEscape(testCaseExecution.getManualExecution()));203 if (testCaseExecution.getExecutor() != null) {204 result.put("Executor", JavaScriptUtils.javaScriptEscape(testCaseExecution.getExecutor()));205 }206 result.put("ControlStatus", JavaScriptUtils.javaScriptEscape(testCaseExecution.getControlStatus()));207 result.put("ControlMessage", JavaScriptUtils.javaScriptEscape(testCaseExecution.getControlMessage()));208 result.put("Status", JavaScriptUtils.javaScriptEscape(testCaseExecution.getStatus()));209 result.put("NbExecutions", String.valueOf(testCaseExecution.getNbExecutions()));210 result.put("previousExeId", testCaseExecution.getPreviousExeId());211 if (testCaseExecution.getPreviousExeStatus() != null) {212 result.put("previousExeControlStatus", JavaScriptUtils.javaScriptEscape(testCaseExecution.getPreviousExeStatus()));213 }214 if (testCaseExecution.getQueueState() != null) {215 result.put("QueueState", JavaScriptUtils.javaScriptEscape(testCaseExecution.getQueueState()));216 }217 List<JSONObject> testCaseDep = new ArrayList<>();218 if (testCaseExecution.getTestCaseExecutionQueueDepList() != null) {219 for (TestCaseExecutionQueueDep tce : testCaseExecution.getTestCaseExecutionQueueDepList()) {220 JSONObject obj = new JSONObject();221 obj.put("test", tce.getDepTest());222 obj.put("testcase", tce.getDepTestCase());223 testCaseDep.add(obj);224 }225 }226 result.put("TestCaseDep", testCaseDep);227 return result;228 }229 private JSONObject getStatusList(HttpServletRequest request) {230 JSONObject statusList = new JSONObject();231 try {232 statusList.put("OK", ParameterParserUtil.parseStringParam(request.getParameter("OK"), "off"));233 statusList.put("KO", ParameterParserUtil.parseStringParam(request.getParameter("KO"), "off"));234 statusList.put("NA", ParameterParserUtil.parseStringParam(request.getParameter("NA"), "off"));235 statusList.put("NE", ParameterParserUtil.parseStringParam(request.getParameter("NE"), "off"));236 statusList.put("WE", ParameterParserUtil.parseStringParam(request.getParameter("WE"), "off"));237 statusList.put("PE", ParameterParserUtil.parseStringParam(request.getParameter("PE"), "off"));238 statusList.put("FA", ParameterParserUtil.parseStringParam(request.getParameter("FA"), "off"));239 statusList.put("CA", ParameterParserUtil.parseStringParam(request.getParameter("CA"), "off"));240 statusList.put("QU", ParameterParserUtil.parseStringParam(request.getParameter("QU"), "off"));241 statusList.put("QE", ParameterParserUtil.parseStringParam(request.getParameter("QE"), "off"));242 } catch (JSONException ex) {243 LOG.error("Error on getStatusList : " + ex, ex);244 }245 return statusList;246 }247 private JSONObject getCountryList(HttpServletRequest request, ApplicationContext appContext) {248 JSONObject countryList = new JSONObject();249 try {250 IInvariantService invariantService = appContext.getBean(InvariantService.class);251 for (Invariant country : invariantService.readByIdName("COUNTRY")) {252 countryList.put(country.getValue(), ParameterParserUtil.parseStringParam(request.getParameter(country.getValue()), "off"));253 }254 } catch (JSONException | CerberusException ex) {255 LOG.error("Error on getCountryList : " + ex, ex);256 }257 return countryList;258 }259 private JSONObject generateTestCaseExecutionTable(ApplicationContext appContext, List<TestCaseExecution> testCaseExecutions, JSONObject statusFilter, JSONObject countryFilter, List<TestCaseLabel> testCaseLabelList, boolean fullList) {260 JSONObject testCaseExecutionTable = new JSONObject();261 LinkedHashMap<String, JSONObject> ttc = new LinkedHashMap<>();262 LinkedHashMap<String, JSONObject> columnMap = new LinkedHashMap<>();263 for (TestCaseExecution testCaseExecution : testCaseExecutions) {264 try {265 String controlStatus = testCaseExecution.getControlStatus();266 String previousControlStatus = testCaseExecution.getPreviousExeStatus();267 // We check is Country and status is inside the fitered values.268 if (statusFilter.get(controlStatus).equals("on") && countryFilter.get(testCaseExecution.getCountry()).equals("on")) {269 JSONObject executionJSON = testCaseExecutionToJSONObject(testCaseExecution);270 String execKey = testCaseExecution.getEnvironment() + " " + testCaseExecution.getCountry() + " " + testCaseExecution.getRobotDecli();271 String testCaseKey = testCaseExecution.getTest() + "_" + testCaseExecution.getTestCase();272 JSONObject execTab = new JSONObject();273 JSONObject ttcObject = new JSONObject();274 if (ttc.containsKey(testCaseKey)) {275 // We add an execution entry into the testcase line.276 ttcObject = ttc.get(testCaseKey);277 execTab = ttcObject.getJSONObject("execTab");278 execTab.put(execKey, executionJSON);279 ttcObject.put("execTab", execTab);280 // Nb Total Executions281 Integer nbExeTot = (Integer) ttcObject.get("NbExe");282 nbExeTot += testCaseExecution.getNbExecutions();283 ttcObject.put("NbExe", nbExeTot);284 // Nb Total Executions285 Integer nbRetryTot = (Integer) ttcObject.get("NbRetry");286 nbRetryTot += testCaseExecution.getNbExecutions() - 1;287 ttcObject.put("NbRetry", nbRetryTot);288 // Nb Total Usefull Executions289 Integer nbExeUsefullTot = (Integer) ttcObject.get("NbExeUsefull");290 nbExeUsefullTot++;291 ttcObject.put("NbExeUsefull", nbExeUsefullTot);292 // Nb Total Usefull Executions in QU or OK status293 Integer nbExeTmp;294 if (isToHide(controlStatus, previousControlStatus)) {295 nbExeTmp = (Integer) ttcObject.get("NbExeUsefullToHide");296 ttcObject.put("NbExeUsefullToHide", ++nbExeTmp);297 }298 if (isNotBug(controlStatus)) {299 nbExeTmp = (Integer) ttcObject.get("NbExeUsefullOK");300 ttcObject.put("NbExeUsefullOK", ++nbExeTmp);301 }302 if (isBug(controlStatus)) {303 nbExeTmp = (Integer) ttcObject.get("NbExeUsefullHasBug");304 ttcObject.put("NbExeUsefullHasBug", ++nbExeTmp);305 }306 if (isPending(controlStatus)) {307 nbExeTmp = (Integer) ttcObject.get("NbExeUsefullIsPending");308 ttcObject.put("NbExeUsefullIsPending", ++nbExeTmp);309 }310 } else {311 // We add a new testcase entry (with The current execution).312 ttcObject.put("test", testCaseExecution.getTest());313 ttcObject.put("testCase", testCaseExecution.getTestCase());314 ttcObject.put("shortDesc", testCaseExecution.getDescription());315 ttcObject.put("status", testCaseExecution.getStatus());316 ttcObject.put("application", testCaseExecution.getApplication());317 if (testCaseExecution.getApplicationObj() != null && testCaseExecution.getApplicationObj().getBugTrackerUrl() != null318 && !"".equals(testCaseExecution.getApplicationObj().getBugTrackerUrl()) && testCaseExecution.getTestCaseObj().getBugs() != null) {319 ttcObject.put("AppBugURL", testCaseExecution.getApplicationObj().getBugTrackerUrl());320 }321 boolean testExist = ((testCaseExecution.getTestCaseObj() != null) && (testCaseExecution.getTestCaseObj().getTest() != null));322 if (testExist) {323 ttcObject.put("priority", testCaseExecution.getTestCaseObj().getPriority());324 ttcObject.put("comment", testCaseExecution.getTestCaseObj().getComment());325 ttcObject.put("bugs", testCaseExecution.getTestCaseObj().getBugsActive());326 } else {327 ttcObject.put("function", "");328 ttcObject.put("priority", 0);329 ttcObject.put("comment", "");330 ttcObject.put("bugs", new JSONArray());331 }332 // Flag that report if test case still exist.333 ttcObject.put("testExist", testExist);334 // Adding nb of execution on retry.335 ttcObject.put("NbRetry", (testCaseExecution.getNbExecutions() - 1));336 // Adding nb of execution on retry.337 ttcObject.put("NbExe", (testCaseExecution.getNbExecutions()));338 // Nb Total Usefull Executions339 ttcObject.put("NbExeUsefull", 1);340 // Nb Total Usefull Executions in QU or OK status341 if (isToHide(controlStatus, previousControlStatus)) {342 ttcObject.put("NbExeUsefullToHide", 1);343 } else {344 ttcObject.put("NbExeUsefullToHide", 0);345 }346 // Nb Total Usefull Executions in QU or OK status347 if (isNotBug(controlStatus)) {348 ttcObject.put("NbExeUsefullOK", 1);349 } else {350 ttcObject.put("NbExeUsefullOK", 0);351 }352 // Nb Total Usefull Executions in QU or OK status353 if (isBug(controlStatus)) {354 ttcObject.put("NbExeUsefullHasBug", 1);355 } else {356 ttcObject.put("NbExeUsefullHasBug", 0);357 }358 // Nb Total Usefull Executions in QU or OK status359 if (isPending(controlStatus)) {360 ttcObject.put("NbExeUsefullIsPending", 1);361 } else {362 ttcObject.put("NbExeUsefullIsPending", 0);363 }364 execTab.put(execKey, executionJSON);365 ttcObject.put("execTab", execTab);366 /**367 * Iterate on the label retrieved and generate HashMap368 * based on the key Test_TestCase369 */370 LinkedHashMap<String, JSONArray> testCaseWithLabel = new LinkedHashMap<>();371 for (TestCaseLabel label : testCaseLabelList) {372 if (Label.TYPE_STICKER.equals(label.getLabel().getType())) { // We only display STICKER Type Label in Reporting By Tag Page..373 String key = label.getTest() + "_" + label.getTestcase();374 JSONObject jo = new JSONObject().put("name", label.getLabel().getLabel()).put("color", label.getLabel().getColor()).put("description", label.getLabel().getDescription());375 if (testCaseWithLabel.containsKey(key)) {376 testCaseWithLabel.get(key).put(jo);377 } else {378 testCaseWithLabel.put(key, new JSONArray().put(jo));379 }380 }381 }382 ttcObject.put("labels", testCaseWithLabel.get(testCaseExecution.getTest() + "_" + testCaseExecution.getTestCase()));383 }384 ttc.put(testCaseExecution.getTest() + "_" + testCaseExecution.getTestCase(), ttcObject);385 JSONObject column = new JSONObject();386 column.put("country", testCaseExecution.getCountry());387 column.put("environment", testCaseExecution.getEnvironment());388 column.put("robotDecli", testCaseExecution.getRobotDecli());389 columnMap.put(testCaseExecution.getRobotDecli() + "_" + testCaseExecution.getCountry() + "_" + testCaseExecution.getEnvironment(), column);390 }391 TreeMap<String, JSONObject> bugMap = new TreeMap<>();392 HashMap<String, Boolean> bugMapUniq = new HashMap<>();393 int nbTOCLEAN = 0;394 int nbPENDING = 0;395 int nbTOREPORT = 0;396 // building Bug Status.397 for (Map.Entry<String, JSONObject> entry : ttc.entrySet()) {398 JSONObject val = entry.getValue();399 JSONArray bugA = new JSONArray(val.getString("bugs"));400 int nbBug = bugA.length();401 if (nbBug > 0) {402 for (int i = 0; i < nbBug; i++) {403 bugMapUniq.put(bugA.getJSONObject(i).getString("id"), true);404 String key = bugA.getJSONObject(i).getString("id") + "#" + val.getString("test") + "#" + val.getString("testCase");405 if (bugMap.containsKey(key)) {406 JSONObject bugO = bugMap.get(key);407 } else {408 JSONObject bugO = new JSONObject();409 bugO.put("test", val.getString("test"));410 bugO.put("testCase", val.getString("testCase"));411 bugO.put("bug", bugA.getJSONObject(i).getString("id"));412 bugO.put("NbExeUsefullHasBug", val.getInt("NbExeUsefullHasBug"));413 bugO.put("testExist", val.getBoolean("testExist"));414 bugO.put("NbExeUsefull", val.getInt("NbExeUsefull"));415 bugO.put("NbExeUsefullIsPending", val.getInt("NbExeUsefullIsPending"));416 if (val.getInt("NbExeUsefullIsPending") > 0) {417 bugO.put("status", "STILL RUNNING...");418 nbPENDING++;419 } else {420 if (val.getInt("NbExeUsefull") == val.getInt("NbExeUsefullOK")) {421 bugO.put("status", "TO CLEAN");422 nbTOCLEAN++;423 }424 }425 bugMap.put(key, bugO);426 }427 }428 } else {429 if (val.getInt("NbExeUsefullHasBug") > 0) {430 String key = val.getString("test") + "#" + val.getString("testCase");431 JSONObject bugO = new JSONObject();432 bugO.put("test", val.getString("test"));433 bugO.put("testCase", val.getString("testCase"));434 bugO.put("bug", "");435 bugO.put("NbExeUsefullHasBug", val.getInt("NbExeUsefullHasBug"));436 bugO.put("testExist", val.getBoolean("testExist"));437 bugO.put("NbExeUsefull", val.getInt("NbExeUsefull"));438 bugO.put("NbExeUsefullIsPending", val.getInt("NbExeUsefullIsPending"));439 bugO.put("status", "TO REPORT...");440 nbTOREPORT++;441 bugMap.put(key, bugO);442 }443 }444 }445 JSONObject bugRes = new JSONObject();446 bugRes.put("bugSummary", bugMap.values());447 bugRes.put("nbTOREPORT", nbTOREPORT);448 bugRes.put("nbPENDING", nbPENDING);449 bugRes.put("nbTOCLEAN", nbTOCLEAN);450 bugRes.put("nbBugs", bugMapUniq.size());451 testCaseExecutionTable.put("bugContent", bugRes);452 // Now loading only necessary records to final structure (filtering testcase that have all usefull executions OK of QU).453 if (fullList) {454 testCaseExecutionTable.put("tableContent", ttc.values());455 testCaseExecutionTable.put("iTotalRecords", ttc.size());456 testCaseExecutionTable.put("iTotalDisplayRecords", ttc.size());457 } else {458 LinkedHashMap<String, JSONObject> newttc = new LinkedHashMap<>();459 for (Map.Entry<String, JSONObject> entry : ttc.entrySet()) {460 String key = entry.getKey();461 JSONObject val = entry.getValue();462 if ((val.getInt("NbExeUsefullToHide") != val.getInt("NbExeUsefull")) // One of the execution of the test case has a status <> QU and OK463 || (val.getJSONArray("bugs").length() > 0) // At least 1 bug has been assigned to the testcase.464 ) {465 newttc.put(key, val);466 }467 }468 testCaseExecutionTable.put("tableContent", newttc.values());469 testCaseExecutionTable.put("iTotalRecords", newttc.size());470 testCaseExecutionTable.put("iTotalDisplayRecords", newttc.size());471 }472 Map<String, JSONObject> treeMap = new TreeMap<>(columnMap);473 testCaseExecutionTable.put("tableColumns", treeMap.values());474 } catch (JSONException ex) {475 LOG.error("Error on generateTestCaseExecutionTable : " + ex, ex);476 } catch (Exception ex) {477 LOG.error("Error on generateTestCaseExecutionTable : " + ex, ex);478 }479 }480 return testCaseExecutionTable;481 }482 // We hide is status is QU of OK and there were no previous execution.483 private boolean isToHide(String controlStatus, String previousControlStatus) {484 return (controlStatus.equals(TestCaseExecution.CONTROLSTATUS_QU) && (StringUtil.isNullOrEmpty(previousControlStatus))485 || controlStatus.equals(TestCaseExecution.CONTROLSTATUS_OK));486 }487 private boolean isPending(String controlStatus) {488 return (controlStatus.equals(TestCaseExecution.CONTROLSTATUS_QU) || controlStatus.equals(TestCaseExecution.CONTROLSTATUS_WE) || controlStatus.equals(TestCaseExecution.CONTROLSTATUS_PE));489 }490 private boolean isBug(String controlStatus) {491 return (controlStatus.equals(TestCaseExecution.CONTROLSTATUS_FA) || controlStatus.equals(TestCaseExecution.CONTROLSTATUS_KO));492 }493 private boolean isNotBug(String controlStatus) {494 return (controlStatus.equals(TestCaseExecution.CONTROLSTATUS_OK) || controlStatus.equals(TestCaseExecution.CONTROLSTATUS_QE));495 }496 private JSONObject generateManualExecutionTable(ApplicationContext appContext, List<TestCaseExecution> testCaseExecutions, JSONObject statusFilter, JSONObject countryFilter) {497 JSONObject manualExecutionTable = new JSONObject();498 HashMap<String, JSONObject> manualExecutions = new HashMap<>();499 int totalManualExecution = 0;500 int totalManualWEExecution = 0;501 for (TestCaseExecution testCaseExecution : testCaseExecutions) {502 try {503 String controlStatus = testCaseExecution.getControlStatus();504 boolean isManual = StringUtil.parseBoolean(testCaseExecution.getManualExecution());505 // We check is Country and status is inside the fitered values.506 if ((countryFilter.has(testCaseExecution.getCountry())) && (countryFilter.get(testCaseExecution.getCountry()).equals("on"))) {507 if (isManual) {508 totalManualExecution++;509 String executor = "NoExecutorDefined";510 if (!StringUtil.isNullOrEmpty(testCaseExecution.getExecutor())) {511 executor = testCaseExecution.getExecutor();512 }513 if (manualExecutions.containsKey(executor)) {514 JSONObject executorObj = manualExecutions.get(executor);515 JSONArray array = (JSONArray) executorObj.get("executionList");516 array.put(testCaseExecution.getId());517 JSONArray arrayWE = (JSONArray) executorObj.get("executionWEList");518 if (controlStatus.equals(TestCaseExecution.CONTROLSTATUS_WE)) {519 arrayWE.put(testCaseExecution.getId());520 }521 executorObj.put("executionList", array);522 executorObj.put("executionWEList", arrayWE);523 executorObj.put("executor", executor);524 manualExecutions.put(executor, executorObj);525 } else {526 JSONObject executorObj = new JSONObject();527 JSONArray array = new JSONArray();528 array.put(testCaseExecution.getId());529 JSONArray arrayWE = new JSONArray();530 if (controlStatus.equals(TestCaseExecution.CONTROLSTATUS_WE)) {531 arrayWE.put(testCaseExecution.getId());532 }533 executorObj.put("executionList", array);534 executorObj.put("executionWEList", arrayWE);535 executorObj.put("executor", executor);536 manualExecutions.put(executor, executorObj);537 }538 if (controlStatus.equals(TestCaseExecution.CONTROLSTATUS_WE)) {539 totalManualWEExecution++;540 }541 }542 }543 JSONArray array = new JSONArray();544 for (Map.Entry<String, JSONObject> entry : manualExecutions.entrySet()) {545 Object key = entry.getKey();546 JSONObject val = entry.getValue();547 array.put(val);548 }549 manualExecutionTable.put("perExecutor", array);550 manualExecutionTable.put("totalExecution", totalManualExecution);551 manualExecutionTable.put("totalWEExecution", totalManualWEExecution);552 } catch (JSONException ex) {553 LOG.error("Error on generateManualExecutionTable : " + ex, ex);554 } catch (Exception ex) {555 LOG.error("Error on generateManualExecutionTable : " + ex, ex);556 }557 }558 return manualExecutionTable;559 }560 private JSONObject generateTestFolderChart(List<TestCaseExecution> testCaseExecutions, String tag, JSONObject statusFilter, JSONObject countryFilter) throws JSONException {561 JSONObject jsonResult = new JSONObject();562 Map<String, JSONObject> axisMap = new HashMap<>();563 String globalStart = "";564 String globalEnd = "";565 long globalStartL = 0;566 long globalEndL = 0;567 String globalStatus = "Finished";568 for (TestCaseExecution testCaseExecution : testCaseExecutions) {569 String key;...

Full Screen

Full Screen

generateManualExecutionTable

Using AI Code Generation

copy

Full Screen

1String tag = request.getParameter("Tag");2List<TestCaseExecution> listTCE = testCaseExecutionService.readByTag(tag);3StringBuilder table = new StringBuilder();4table.append("<table class=\"table table-striped table-bordered table-condensed table-hover\" id=\"testExecutionTable\">");5table.append("<thead>");6table.append("<tr>");7table.append("<th>Test</th>");8table.append("<th>TestCase</th>");9table.append("<th>Description</th>");10table.append("<th>Country</th>");11table.append("<th>Environment</th>");12table.append("<th>Browser</th>");13table.append("<th>Browser Version</th>");14table.append("<th>Platform</th>");15table.append("<th>Control Status</th>");16table.append("<th>Control Message</th>");17table.append("<th>Start</th>");18table.append("<th>End</th>");19table.append("<th>Duration</th>");20table.append("<th>Control Status</th>");21table.append("<th>Control Message</th>");22table.append("</tr>");23table.append("</thead>");24table.append("<tbody>");25for (TestCaseExecution testCaseExecution : listTCE) {26 table.append("<tr>");27 table.append("<td>").append(testCaseExecution.getTest()).append("</td>");28 table.append("<td>").append(testCaseExecution.getTestCase()).append("</td>");29 table.append("<td>").append(testCaseExecution.getDescription()).append("</td>");30 table.append("<td>").append(testCaseExecution.getCountry()).append("</td>");31 table.append("<td>").append(testCaseExecution.getEnvironment()).append("</td>");32 table.append("<td>").append(testCaseExecution.getBrowser()).append("</td>");33 table.append("<td>").append(testCaseExecution.getBrowserVersion()).append("</td>");34 table.append("<td>").append(testCaseExecution.getPlatform()).append("</td>");35 table.append("<td>").append(testCaseExecution.getControlStatus()).append("</td>");36 table.append("<td>").append(testCaseExecution.getControlMessage()).append("</td>");37 table.append("<td>").append(testCaseExecution.getStart()).append("</td>");38 table.append("<td>").append(testCaseExecution.getEnd()).append("</td>");39 table.append("<td>").append(test

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful