/******************************************************************************* * ATE, Automation Test Engine * * Copyright 2014, Montreal PROT, or individual contributors as * indicated by the @author tags or express copyright attribution * statements applied by the authors. All third-party contributions are * distributed under license by Montreal PROT. * * 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.bigtester.ate.reporter; import java.util.List; import java.util.Properties; import org.bigtester.ate.GlobalUtils; import org.bigtester.ate.constant.ReportMessage; import org.bigtester.ate.model.asserter.IExpectedResultAsserter; import org.bigtester.ate.model.casestep.IElementStep; import org.bigtester.ate.model.page.elementaction.ITestObjectAction; import org.bigtester.ate.model.page.elementfind.ITestObjectFinder; import org.bigtester.ate.model.page.page.MyWebElement; import org.bigtester.ate.model.testresult.TestStepResult; import org.openqa.selenium.WebElement; import org.testng.ITestResult; import org.testng.reporters.XMLStringBuffer; // TODO: Auto-generated Javadoc /** * This class TestStepsXMLReporter defines .... * * @author Peidong Hu * */ public final class TestStepsXMLReporterUtils { private TestStepsXMLReporterUtils() { } /** * Adds the test steps. * * @param xmlBuffer * the xml buffer * @param testResult * the test result */ public static void addTestSteps(XMLStringBuffer xmlBuffer, ITestResult testResult) { if (testResult.getAttribute(TestStepResult.STEPRESULTLIST) instanceof List<?>) { @SuppressWarnings("unchecked") List<TestStepResult> stepResults = (List<TestStepResult>) testResult .getAttribute(TestStepResult.STEPRESULTLIST); if (!stepResults.isEmpty()) { xmlBuffer.push(ATEXMLReporterConfig.TAG_STEPS); for (int i = 0; i < stepResults.size(); i++) { addStep(xmlBuffer, stepResults.get(i), i); } xmlBuffer.pop(); } } } /** * Adds the step. * * @param xmlBuffer * the xml buffer * @param tsr * the parameter * @param iCount * the i */ private static void addStep(XMLStringBuffer xmlBuffer, TestStepResult tsr, int iCount) { Properties attrs = new Properties(); attrs.setProperty(ATEXMLReporterConfig.ATTR_INDEX, String.valueOf(iCount)); attrs.setProperty(ATEXMLReporterConfig.ATTR_NAME, tsr.getStepName()); xmlBuffer.push(ATEXMLReporterConfig.TAG_STEP, attrs); xmlBuffer.push(ATEXMLReporterConfig.TAG_STEP_DESC); String stepReportMSG; if (tsr.getThisStep() instanceof IElementStep) { @SuppressWarnings("unchecked") MyWebElement<WebElement> mwe = (MyWebElement<WebElement>) ((IElementStep) tsr.getThisStep()).getMyWebElement(); ITestObjectAction<?> myEA = (ITestObjectAction<?>) mwe.getTestObjectAction(); if (null == myEA) { throw GlobalUtils .createNotInitializedException("test object action in test step."); } else { ITestObjectFinder<?> myEF = (ITestObjectFinder<?>) mwe.getTestObjectFinder(); stepReportMSG = tsr.getThisStep().getStepDescription() + ReportMessage.MSG_SEPERATOR + GlobalUtils.getTargetObject(myEA).getClass().getSimpleName() + " : \"" + myEA.getActionParametersLoggingValue() + "\" action on test object:" + GlobalUtils.getTargetObject(myEF).getClass().getSimpleName() + ": \"" + myEF.getFindingParametersLoggingValue() + "\""; } } else { stepReportMSG = tsr.getThisStep().getStepDescription(); } xmlBuffer.addCDATA(stepReportMSG); xmlBuffer.pop(); xmlBuffer.push(ATEXMLReporterConfig.TAG_STEP_RESULT); List<IExpectedResultAsserter> asserters = tsr.getThisStep().getExpectedResultAsserter(); if (!asserters.isEmpty()) { StringBuffer stepResultMSG = new StringBuffer(""); for (int i = 0; i < asserters .size(); i++) { stepResultMSG.append(asserters.get(i).getAssertReportMSG()); stepResultMSG.append("</br>"); // StepExecutionResult ser = tsr.getThisStep() // .getExpectedResultAsserter().get(i).getExecResult(); // StepExpectedResultValue serv = ser.getStepExpectedResultValue(); // if (serv != null) { // for (int index = 0; index < serv.getValue().size(); index++) { // if (ser.getActualResult().getResultSet() // .get(serv.getValue().get(index).getIdColumn()) != null) { // stepResultMSG.append(serv.getValue().get(index) // .getTestDataContext() // .getContextFieldValue()); // stepResultMSG.append(ReportMessage.MSG_SEPERATOR // + serv.getValue().get(index) // .getAssertPriority()); // stepResultMSG.append(ReportMessage.MSG_SEPERATOR // + serv.getValue().get(index) // .getElementFindBy()); // stepResultMSG.append(ReportMessage.MSG_SEPERATOR // + serv.getValue().get(index) // .getElementFindByValue()); // stepResultMSG.append(ReportMessage.MSG_SEPERATOR // + serv.getValue().get(index) // .getAssertProperty()); // stepResultMSG.append(ReportMessage.MSG_SEPERATOR // + serv.getValue().get(index) // .getAssertValue()); // stepResultMSG.append(ReportMessage.MSG_SEPERATOR // + ReportMessage.MSG_SEPERATOR // + ser.getActualResult() // .getResultSet() // .get(serv.getValue().get(index) // .getIdColumn())); // stepResultMSG.append(ReportMessage.MSG_SEPERATOR // + ReportMessage.MSG_SEPERATOR // + ser.getComparedResult() // .get(serv.getValue().get(index) // .getIdColumn()).toString()); // stepResultMSG.append('\n'); // } // } // stepResultMSG.append('\n'); // } } xmlBuffer.addCDATA(stepResultMSG.toString()); } xmlBuffer.pop(); xmlBuffer.pop(); } }