Best Testsigma code snippet using com.testsigma.automator.utilities.ScreenCaptureUtil.ScreenCaptureUtil
Source:TestcaseStepRunner.java
...15import com.testsigma.automator.exceptions.AutomatorException;16import com.testsigma.automator.service.AddonService;17import com.testsigma.automator.service.ObjectMapperService;18import com.testsigma.automator.utilities.RuntimeDataProvider;19import com.testsigma.automator.utilities.ScreenCaptureUtil;20import com.testsigma.sdk.TestData;21import lombok.extern.log4j.Log4j2;22import org.apache.commons.io.FilenameUtils;23import org.apache.commons.lang3.ObjectUtils;24import org.apache.commons.lang3.RandomStringUtils;25import org.apache.commons.lang3.StringUtils;26import org.apache.commons.lang3.reflect.FieldUtils;27import org.apache.logging.log4j.ThreadContext;28import org.openqa.selenium.NoSuchSessionException;29import org.openqa.selenium.WebDriver;30import org.openqa.selenium.remote.UnreachableBrowserException;31import java.io.IOException;32import java.lang.reflect.InvocationTargetException;33import java.lang.reflect.Method;34import java.sql.Timestamp;35import java.util.*;36@Log4j237public abstract class TestcaseStepRunner {38 private static final String[] SKIP_SCREENSHOT_KEYWORDS = {"Close App", "Close all windows"};39 public static final String INVALID_SESSION = "The browser connection is lost. Either the browser is closed by the user or the connection is terminated.";40 public static final String BROWSER_UNREACHABLE = "The browser connection is lost. Either the browser is closed by the user or the connection is terminated. Session will be reset. ";41 protected String testPlanId;42 protected WorkspaceType workspaceType;43 protected Platform os;44 private ObjectMapperService objectMapperService;45 private AddonService addonService;46 public TestcaseStepRunner() {47 this.objectMapperService = new ObjectMapperService();48 }49 public TestcaseStepRunner(WorkspaceType workspaceType, Platform os) {50 this.testPlanId = EnvironmentRunner.getRunnerExecutionId();51 this.workspaceType = workspaceType;52 this.os = os;53 this.objectMapperService = new ObjectMapperService();54 this.addonService = AddonService.getInstance();55 }56 public Platform getOs() {57 return os;58 }59 private void populateThreadContextData(TestCaseStepEntity testCaseStepEntity) {60 ThreadContext.put("TEST_STEP", testCaseStepEntity.getId() + "");61 }62 private void resetThreadContextData() {63 ThreadContext.put("TEST_STEP", "");64 }65 public TestCaseStepResult run(TestCaseStepEntity testCaseStepEntity, TestCaseStepResult testCaseStepResult,66 Map<Long, TestCaseStepResult> testCaseStepResultMap, TestCaseResult testCaseResult,67 HashMap<Long, TestCaseStepResult> parentStatus, boolean failedToProcess,68 boolean isGroupStep, ScreenCaptureUtil screenCaptureUtil) {69 resetThreadContextData();70 populateThreadContextData(testCaseStepEntity);71 log.info("Executing step - " + testCaseStepEntity.getId());72 //TODO: check test data type and update value for run time data.73 //For all other types data ll be updated on server side74 ExecutionLabType executionLabType = EnvironmentRunner.getRunnerEnvironmentEntity().getExecutionLabType();75 TestPlanRunSettingEntity testPlanRunSettingEntity = EnvironmentRunner.getRunnerEnvironmentEntity().getTestPlanSettings();76 Long envRunId = EnvironmentRunner.getRunnerEnvironmentRunResult().getId();77 TestDeviceSettings testDeviceSettings = EnvironmentRunner.getRunnerEnvironmentEntity().getEnvSettings();78 testCaseStepResult.setEnvRunId(envRunId);79 testCaseStepResult.setTestCaseResultId(testCaseResult.getId());80 testCaseStepResult.setStartTime(new Timestamp(System.currentTimeMillis()));81 testCaseStepResult.setTestCaseId(testCaseStepEntity.getTestCaseId());82 testCaseStepResult.setStepGroupId(testCaseStepEntity.getStepGroupId());83 testCaseStepResult.setParentId(testCaseStepEntity.getParentId());84 testCaseStepResult.setConditionType(testCaseStepEntity.getConditionType());85 testCaseStepResult.setTestCaseStepType(testCaseStepEntity.getType());86 testCaseStepResult.setStepDetails(testCaseStepEntity.getStepDetails());87 testCaseStepResult.setAddonTestData(testCaseStepEntity.getAddonTestData());88 testCaseStepResult.setAddonElements(testCaseStepEntity.getAddonElements());89 testCaseStepResult.setWaitTime(testCaseStepEntity.getWaitTime());90 testCaseStepResult.setTestPlanRunSettingEntity(testPlanRunSettingEntity);91 testCaseStepResult.setPriority(testCaseStepEntity.getPriority());92 Map<String, String> envDetails = new HashMap<String, String>();93 envDetails.put("testcaseId", testCaseResult.getTestCaseId() + "");94 envDetails.put("iteration", testCaseResult.getTestDataSetName());95 envDetails.put("envRunId", envRunId + "");96 envDetails.put(EnvSettingsConstants.KEY_USERNAME, testDeviceSettings.getUserName());97 Integer pageTimeOut = testPlanRunSettingEntity.getPageTimeOut();98 if (pageTimeOut != null)99 envDetails.put(EnvSettingsConstants.PAGE_LOAD_TIMEOUT, testPlanRunSettingEntity.getPageTimeOut().toString());100 envDetails.put("jwtApiKey", testDeviceSettings.getJwtApiKey());101 if (testDeviceSettings.getEnvironmentParamId() != null) {102 envDetails.put(EnvSettingsConstants.KEY_ENVIRONMENT_PARAM_ID,103 testDeviceSettings.getEnvironmentParamId() + "");104 }105 ResultConstant status = ResultConstant.SUCCESS;106 if (testCaseStepEntity.getConditionType() != null &&107 (testCaseStepEntity.getConditionType() == ConditionType.CONDITION_ELSE) && !testCaseStepResult.getSkipExe()) {108 setConditionResult(testCaseStepEntity, testCaseStepResult, parentStatus);109 testCaseStepResult.setEndTime(new Timestamp(System.currentTimeMillis()));110 return testCaseStepResult;111 }112 try {113 TestCaseStepResult preReqResult = testCaseStepResultMap.get(testCaseStepEntity.getPreRequisite());114 boolean hasPreReq = (testCaseStepEntity.getPreRequisite() != null) && (testCaseStepEntity.getPreRequisite() > 0);115 if (hasPreReq) {116 log.debug("Test Step Prerequisite - " + testCaseStepEntity.getPreRequisite());117 log.debug("Test Step Prerequisite Result - " + objectMapperService.convertToJson(preReqResult));118 } else {119 log.debug("Test Step Has No Prerequisite");120 }121 boolean preReqFailed = hasPreReq && ((preReqResult == null) || (preReqResult.getResult() != ResultConstant.SUCCESS));122 boolean isRunning = ExecutionEnvironmentRunner.isRunning();123 boolean isStepGroup = (testCaseStepEntity.getStepGroupId() != null) && (testCaseStepEntity.getStepGroupId() > 0);124 if (!isRunning) {125 log.debug("Found execution environment / test case as stopped...skipping test case step execution");126 status = ResultConstant.STOPPED;127 testCaseStepResult.setMessage(AutomatorMessages.MSG_USER_ABORTED_EXECUTION);128 } else if (testCaseStepResult.getSkipExe()) {129 log.debug("Found execution skip flag to be set...setting appropriate message");130 status = ResultConstant.NOT_EXECUTED;131 testCaseStepResult.setMessage(testCaseStepResult.getSkipMessage());132 } else if (failedToProcess) {133 log.debug("Found failed to process to be set...setting appropriate message");134 status = ResultConstant.NOT_EXECUTED;135 testCaseStepResult.setMessage(testCaseStepResult.getSkipMessage());136 } else if (preReqFailed) {137 log.debug("Found prerequisite failed flag to be set...setting appropriate message");138 status = ResultConstant.FAILURE;139 testCaseStepResult.setMessage(AutomatorMessages.MSG_STEP_PRE_REQUISITE_FAILED);140 boolean skipExe = (testPlanRunSettingEntity.getOnStepPreRequisiteFail() == RecoverAction.Run_Next_Testcase);141 if (skipExe) {142 testCaseResult.setResult(status);143 testCaseResult.setMessage(AutomatorMessages.MSG_STEP_PRE_REQUISITE_FAILED);144 }145 testCaseStepResult.setSkipExe(skipExe);146 testCaseStepResult.setSkipMessage(AutomatorMessages.MSG_STEP_PRE_REQUISITE_FAILED);147 }148 if (testCaseStepEntity.getType() != null && testCaseStepEntity.getType() == TestStepType.FOR_LOOP) {149 log.debug("For loop execution starts:" + testCaseStepEntity.getId() + " With Iteration:" + testCaseStepEntity.getIteration());150 status = executeForLoop(testCaseStepEntity, testCaseStepResult, testCaseStepResultMap, testCaseResult, parentStatus,151 failedToProcess, screenCaptureUtil, status);152 } else if (testCaseStepEntity.getType() != null && testCaseStepEntity.getType() == TestStepType.WHILE_LOOP) {153 log.debug("While loop execution starts:" + testCaseStepEntity.getId());154 status = executeWhileLoop(testCaseStepEntity, testCaseStepResult,155 testCaseStepResultMap, testCaseResult, parentStatus,156 failedToProcess, screenCaptureUtil, status);157 } else if (isStepGroup) {158 log.debug("Step type is Step Group. Executing Test Component with ID - " + testCaseStepEntity.getStepGroupId());159 status = executeStepGroup(testCaseStepEntity, testCaseStepResult, testCaseStepResultMap, testCaseResult, parentStatus,160 failedToProcess, screenCaptureUtil, status);161 } else if (isRunning && !testCaseStepResult.getSkipExe() && !preReqFailed) {162 setTestDataValue(testCaseStepEntity, envDetails, testCaseResult, testCaseStepResult);163 testCaseStepResult.setElementDetails(testCaseStepEntity.getElementsMap());164 testCaseStepResult.setTestDataDetails(testCaseStepEntity.getTestDataMap());165 log.debug("Step type is normal. Executing normal Action step");166 execute(envDetails, testCaseStepResult, testCaseStepEntity, testCaseResult);167 ObjectMapper mapper = new ObjectMapper();168 mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);169 Map<String, Object> metadata = mapper.convertValue(testCaseStepEntity, Map.class);170 Map<String, Object> oldMetadata = mapper.convertValue(testCaseStepResult.getMetadata(), Map.class);171 oldMetadata.putAll(metadata);172 StepResultMetadataEntity metadataEntity = mapper.convertValue(oldMetadata, StepResultMetadataEntity.class);173 testCaseStepResult.setMetadata(metadataEntity);174 testCaseStepResult.getMetadata().setTestStep(testCaseStepEntity);175 takeScreenshot(workspaceType, testCaseStepEntity, testCaseStepResult,176 testPlanRunSettingEntity.getScreenshot(), screenCaptureUtil);177 if (testCaseStepEntity.getConditionType() != null && (testCaseStepEntity.getConditionType() != ConditionType.NOT_USED)) {178 setConditionResult(testCaseStepEntity, testCaseStepResult, parentStatus);179 status = (testCaseStepResult.getResult() != ResultConstant.SUCCESS) ? testCaseStepResult.getResult() : status;180 } else {181 status = (testCaseStepResult.getResult() != ResultConstant.SUCCESS) ? testCaseStepResult.getResult() : status;182 if ((status == ResultConstant.SUCCESS) && StringUtils.isBlank(testCaseStepResult.getMessage())) {183 testCaseStepResult.setMessage(AutomatorMessages.MSG_STEP_SUCCESS);184 } else if (StringUtils.isBlank(testCaseStepResult.getMessage())) {185 testCaseStepResult.setMessage(AutomatorMessages.MSG_STEP_FAILURE);186 }187 }188 log.debug("Test Step Result - " + status);189 }190 log.debug("Test Step Result [2] - " + status);191 boolean majorFailure = (status != ResultConstant.SUCCESS && status != ResultConstant.ABORTED) &&192 (testCaseStepEntity.getPriority() == TestStepPriority.MAJOR &&193 testPlanRunSettingEntity.getRecoveryAction() == RecoverAction.Run_Next_Testcase);194 boolean hasToAbortTestcase = (majorFailure && !isGroupStep && !isStepGroup);195 if (!testCaseStepResult.getSkipExe() && hasToAbortTestcase) {196 setFailedMessage(testCaseStepResult, testCaseResult, testCaseStepEntity.getStepDetails().getIgnoreStepResult());197 }198 //Add Loop level result199 if (testCaseStepEntity.getType() == TestStepType.BREAK_LOOP && status == ResultConstant.SUCCESS) {200 testCaseStepResult.setIsBreakLoop(true);201 } else if (testCaseStepEntity.getType() == TestStepType.CONTINUE_LOOP && status == ResultConstant.SUCCESS) {202 testCaseStepResult.setIsContinueLoop(true);203 }204 } catch (UnreachableBrowserException e) {205 status = ResultConstant.FAILURE;206 testCaseStepResult.setErrorCode(com.testsigma.automator.constants.ErrorCodes.BROWSER_CLOSED);207 testCaseStepResult.setMessage(String.format(BROWSER_UNREACHABLE));208 } catch (NoSuchSessionException e) {209 status = ResultConstant.FAILURE;210 testCaseStepResult.setMessage(String.format(INVALID_SESSION));211 } catch (Exception e) {212 log.error(e.getMessage(), e);213 status = ResultConstant.FAILURE;214 testCaseStepResult.setErrorCode(com.testsigma.automator.constants.ErrorCodes.UNKNOWN_PROBLEM);215 if(testCaseStepResult.getMessage()==null)216 testCaseStepResult.setMessage(e.getMessage());217 }218 resetThreadContextData();219 testCaseStepResult.setResult(status);220 testCaseStepResult.setEndTime(new Timestamp(System.currentTimeMillis()));221 log.debug("Finished Executing Test Case Step - " + testCaseStepResult.getTestCaseStepId());222 return testCaseStepResult;223 }224 protected ResultConstant executeStepGroup(TestCaseStepEntity testCaseStepEntity, TestCaseStepResult testCaseStepResult,225 Map<Long, TestCaseStepResult> testCaseStepResultMap, TestCaseResult testCaseResult,226 HashMap<Long, TestCaseStepResult> parentStatus, boolean failedToProcess,227 ScreenCaptureUtil screenCaptureUtil, ResultConstant currentStatus) throws Exception {228 executeGroup(testCaseStepEntity, testCaseStepResult, testCaseStepResultMap, testCaseResult, parentStatus, failedToProcess, screenCaptureUtil);229 if (testCaseStepEntity.getConditionType() != null && (testCaseStepEntity.getConditionType() != ConditionType.NOT_USED)) {230 setConditionResult(testCaseStepEntity, testCaseStepResult, parentStatus);231 }232 ResultConstant status = (testCaseStepResult.getResult() != ResultConstant.SUCCESS) ? testCaseStepResult.getResult() : currentStatus;233 if ((status == ResultConstant.SUCCESS)) {234 testCaseStepResult.setMessage(AutomatorMessages.MSG_STEP_GROUP_SUCCESS);235 } else if (StringUtils.isBlank(testCaseStepResult.getMessage())) {236 testCaseStepResult.setMessage(AutomatorMessages.MSG_STEP_GROUP_FAILURE);237 }238 return status;239 }240 protected ResultConstant executeForLoop(TestCaseStepEntity testCaseStepEntity, TestCaseStepResult forLoopResultObj,241 Map<Long, TestCaseStepResult> testCaseStepResultMap, TestCaseResult tresult,242 HashMap<Long, TestCaseStepResult> parentStatus, boolean failedToProcess,243 ScreenCaptureUtil screenCaptureUtil, ResultConstant currentStatus) throws Exception {244 log.debug("Step type is FOR_LOOP. Executing it:" + testCaseStepEntity);245 //In for loop , if there is a continue step encountered in prev iteration, we should not skip execution or loop.246 TestCaseStepResult previousLoopResultIfAny = testCaseStepResultMap.get(testCaseStepEntity.getId());247 if (previousLoopResultIfAny != null && previousLoopResultIfAny.getIsContinueLoop()) {248 forLoopResultObj.setSkipExe(false);249 } else if (previousLoopResultIfAny != null && previousLoopResultIfAny.getIsBreakLoop()) {250 forLoopResultObj.setSkipExe(true);251 }252 executeGroup(testCaseStepEntity, forLoopResultObj, testCaseStepResultMap, tresult, parentStatus, failedToProcess, screenCaptureUtil);253 //previous loop encountered a break ,We need to disable skipExe, else further testcases(After loop) will not be executed.254 if (previousLoopResultIfAny != null && previousLoopResultIfAny.getIsBreakLoop()) {255 forLoopResultObj.setIsBreakLoop(true);256 forLoopResultObj.setSkipExe(false);//If skip is true, execution will not be continued after the loop.257 forLoopResultObj.setResult(ResultConstant.SUCCESS);258 }259 forLoopResultObj.setIndex(testCaseStepEntity.getIndex());260 forLoopResultObj.setIteration(testCaseStepEntity.getIteration());261 forLoopResultObj.setTestDataProfileName(testCaseStepEntity.getTestDataProfileName());262 ResultConstant status = (currentStatus.getId() < forLoopResultObj.getResult().getId()) ? forLoopResultObj.getResult() : currentStatus;263 if ((forLoopResultObj.getResult() == ResultConstant.SUCCESS)) {264 forLoopResultObj.setMessage(AutomatorMessages.getMessage(AutomatorMessages.MSG_ITERATION_SUCCESS, testCaseStepEntity.getIndex()));265 } else if (StringUtils.isBlank(forLoopResultObj.getMessage())) {266 forLoopResultObj.setMessage(AutomatorMessages.getMessage(AutomatorMessages.MSG_ITERATION_FAILURE, testCaseStepEntity.getIndex()));267 }268 return status;269 }270 protected ResultConstant executeWhileLoop(TestCaseStepEntity testcaseStep, TestCaseStepResult whileLoopResultObj, Map<Long, TestCaseStepResult> mapStepResult,271 TestCaseResult tresult, HashMap<Long, TestCaseStepResult> parentStatus,272 boolean failedToProcess, ScreenCaptureUtil screenCaptureUtil, ResultConstant currentStatus) throws Exception {273 Long envRunId = EnvironmentRunner.getRunnerEnvironmentRunResult().getId();274 log.debug("Executing while loop:" + testcaseStep);275 TestCaseStepEntity whileConditionStep = testcaseStep.getTestCaseSteps().get(0);276 List<TestCaseStepResult> whileLoopIterationResults = new ArrayList<>();277 boolean breakLoop = false;278 ResultConstant whileLoopResult = ResultConstant.SUCCESS;279 boolean conditionFailed = false;280 int noOfIterationsCompleted = 0;281 //Iterations loop, we are limiting max loop count to ActionConstants.WHILE_LOOP_MAX_LIMIT282 for (int i = 1; i <= NaturalTextActionConstants.WHILE_LOOP_MAX_LIMIT; i++) {283 if (breakLoop) {284 break;285 }286 TestCaseStepResult whileConditionStepResult = new TestCaseStepResult();287 whileConditionStepResult.setEnvRunId(envRunId);288 whileConditionStepResult.setTestCaseResultId(tresult.getId());289 whileConditionStepResult.setTestCaseStepId(whileConditionStep.getId());290 whileConditionStepResult.setSkipExe(whileLoopResultObj.getSkipExe());291 whileConditionStepResult.setSkipMessage(whileLoopResultObj.getSkipMessage());292 whileConditionStepResult.setParentResultId(whileLoopResultObj.getId());293 whileConditionStepResult.setTestCaseStepType(whileConditionStep.getType());294 whileConditionStepResult.setStepDetails(whileConditionStep.getStepDetails());295 whileConditionStepResult.setIndex(i);296 setScreenshotPathsForIteration(whileConditionStep, i);297 TestStepType type = whileConditionStep.getType();298 TestcaseStepRunner testcaseStepRunner = new TestcaseStepRunnerFactory().getRunner(workspaceType, os, type);299 testcaseStepRunner.run(whileConditionStep, whileConditionStepResult, mapStepResult, tresult, parentStatus, failedToProcess, false, screenCaptureUtil);300 if (whileConditionStepResult.getResult() != ResultConstant.SUCCESS) {301 whileConditionStepResult.setSkipExe(true);302 if (whileConditionStepResult.getResult() == ResultConstant.FAILURE) {303 whileConditionStepResult.setSkipMessage(String.format("%s<br>%s", AutomatorMessages.MSG_WHILE_CONDITION_FAILED, whileConditionStepResult.getMessage()));304 conditionFailed = true;305 }306 }307 mapStepResult.put(whileConditionStep.getId(), whileConditionStepResult);308 log.debug("While condition result :::: " + objectMapperService.convertToJson(whileConditionStepResult));309 executeGroup(whileConditionStep, whileConditionStepResult, mapStepResult, tresult, parentStatus, failedToProcess, screenCaptureUtil);310 //Update Iteration result to SUCCESS if break or continue is executed311 if (whileConditionStepResult.getIsBreakLoop() || whileConditionStepResult.getIsContinueLoop()) {312 whileConditionStepResult.setResult(ResultConstant.SUCCESS);313 }314 //If condition is passed, and while executing the group of steps inside condition, if there is a failure in group, parent status will be skipped315 if (whileConditionStepResult.getResult() == ResultConstant.SUCCESS && whileConditionStepResult.getSkipExe()) {316 whileLoopResult = ResultConstant.FAILURE;317 whileLoopResultObj.setSkipExe(true);318 }319 //While loop break condition.320 if (whileConditionStepResult.getIsBreakLoop() || whileConditionStepResult.getSkipExe()) {321 breakLoop = true;322 }323 whileLoopIterationResults.add(whileConditionStepResult);324 whileLoopResult = (whileLoopResult.getId() < whileConditionStepResult.getResult().getId()) ? whileConditionStepResult.getResult() : whileLoopResult;325 //If condition step is failed, we should not fail while loop status326 if (conditionFailed) {327 whileLoopResult = ResultConstant.SUCCESS;328 }329 noOfIterationsCompleted = i;330 }331 //Add all iteration results to parent LOOP step332 whileLoopResultObj.setStepResults(whileLoopIterationResults);333 if (whileLoopResultObj.getResult() == null) {334 whileLoopResultObj.setResult(whileLoopResult);335 }336 ResultConstant status = (currentStatus.getId() < whileLoopResultObj.getResult().getId()) ? whileLoopResultObj.getResult() : currentStatus;337 if ((whileLoopResultObj.getResult() == ResultConstant.SUCCESS)) {338 if (noOfIterationsCompleted == NaturalTextActionConstants.WHILE_LOOP_MAX_LIMIT) {339 status = ResultConstant.FAILURE;340 whileLoopResultObj.setResult(ResultConstant.FAILURE);341 whileLoopResultObj.setMessage(AutomatorMessages.MSG_WHILE_LOOP_ITERATIONS_EXHAUSTED);342 } else {343 whileLoopResultObj.setMessage(AutomatorMessages.MSG_WHILE_LOOP_SUCCESS);344 }345 } else if (whileLoopResultObj.getResult() == ResultConstant.FAILURE) {346 whileLoopResultObj.setMessage(AutomatorMessages.MSG_WHILE_LOOP_FAILURE);347 }348 return status;349 }350 protected void setScreenshotPathsForIteration(TestCaseStepEntity testStepEntity, int iterationNumber) {351 String key = String.format("%s_%s", iterationNumber, testStepEntity.getIndex());352 Map<String, String> conditionStepScreenshots = testStepEntity.getAdditionalScreenshotPaths();353 testStepEntity.setScreenshotPath(conditionStepScreenshots.get(key));354 if (testStepEntity.getTestCaseSteps() != null && testStepEntity.getTestCaseSteps().size() > 0) {355 for (TestCaseStepEntity childStep : testStepEntity.getTestCaseSteps()) {356 setScreenshotPathsForIteration(childStep, iterationNumber);357 }358 }359 }360 private void executeGroup(TestCaseStepEntity testcaseStep, TestCaseStepResult result, Map<Long, TestCaseStepResult> mapStepResult,361 TestCaseResult tresult, HashMap<Long, TestCaseStepResult> parentStatus,362 boolean failedToProcess, ScreenCaptureUtil ScreenCaptureUtil) throws Exception {363 ExecutionLabType exeType = EnvironmentRunner.getRunnerEnvironmentEntity().getExecutionLabType();364 TestPlanRunSettingEntity settings = EnvironmentRunner.getRunnerEnvironmentEntity().getTestPlanSettings();365 Long envRunId = EnvironmentRunner.getRunnerEnvironmentRunResult().getId();366 List<TestCaseStepResult> stepResults = new ArrayList<>();367 result.setStepResults(stepResults);368 ResultConstant status = ResultConstant.SUCCESS;369 Boolean skipExe = result.getSkipExe();370 String message = result.getSkipMessage();371 boolean isMajorStepGroupFailure =372 (testcaseStep.getPriority().equals(TestStepPriority.MAJOR) &&373 settings.getRecoveryAction() == RecoverAction.Run_Next_Testcase);374 boolean isStepGroup = (testcaseStep.getStepGroupId() != null && testcaseStep.getStepGroupId() > 0);375 boolean breakLoopStepExecuted = false;376 boolean continueLoopStepExecuted = false;377 for (TestCaseStepEntity childStep : testcaseStep.getTestCaseSteps()) {378 populateThreadContextData(childStep);379 log.debug("Executing group step:" + childStep.getId());380 if (breakLoopStepExecuted || continueLoopStepExecuted) {381 log.debug(String.format("Skip execution due to break/continue loop:stepGroupId=%s", childStep.getId()));382 skipExe = true;383 }384 TestCaseStepResult childStepResult = new TestCaseStepResult();385 childStepResult.setEnvRunId(envRunId);386 childStepResult.setTestCaseResultId(tresult.getId());387 childStepResult.setTestCaseStepId(childStep.getId());388 childStepResult.setSkipExe(skipExe);389 childStepResult.setSkipMessage(message);390 TestCaseStepResult parentResult = parentStatus.get(childStep.getParentId());391 childStepResult.setParentResultId(parentResult != null ? parentResult.getId() : null);392 childStepResult.setTestCaseStepType(childStep.getType());393 childStepResult.setStepDetails(childStep.getStepDetails());394 RunnerUtil util = new RunnerUtil();395 TestStepType type = childStep.getType();396 TestcaseStepRunner testcaseStepRunner = new TestcaseStepRunnerFactory().getRunner(workspaceType, os, type);397 boolean isFailure =398 (399 //this check is used to skip loop child steps check.400 //because loop step result is set only after loop is finished401 !util.isLoopSteps(isStepGroup, testcaseStep, childStep)402 && (util.canSkipNormalStep(parentResult, childStep, childStepResult)403 || util.canSkipIfElse(parentResult, childStep, childStepResult)404 || util.nestedConditionalStep(parentResult, childStep, childStepResult)405 || util.canSkipIfElseIf(parentResult, childStep, childStepResult)406 || util.canSkipElseIfElseIf(parentResult, childStep, childStepResult)407 || util.canSkipElseIfElse(parentResult, childStep, childStepResult)408 || util.canSkipIfCondition(parentResult, childStep, childStepResult)409 || util.canSkipForLoop(parentResult, childStep, childStepResult)))410 //This check for updating loop steps if loop parent is failed411 || util.canSkipForLoopTopSteps(isStepGroup, parentResult, testcaseStep, childStep, childStepResult);412 if (!skipExe && !failedToProcess && isFailure) {413 testcaseStepRunner.run(childStep, childStepResult, mapStepResult, tresult, parentStatus, false, isStepGroup, ScreenCaptureUtil);414 mapStepResult.put(childStep.getId(), childStepResult);415 stepResults.add(childStepResult);416 parentStatus.put(childStep.getId(), childStepResult);417 continue;418 }419 testcaseStepRunner.run(childStep, childStepResult, mapStepResult, tresult, parentStatus, failedToProcess, isStepGroup, ScreenCaptureUtil);420 mapStepResult.put(childStep.getId(), childStepResult);421 stepResults.add(childStepResult);422 log.debug("Result in Step Group :::: " + objectMapperService.convertToJson(childStepResult));423 if ((childStep.getConditionType() == null || childStep.getConditionType() == ConditionType.NOT_USED ||424 ConditionType.LOOP_FOR == (childStep.getConditionType()))&& (!childStep.getStepDetails().getIgnoreStepResult())) {425 status = (status.getId() < childStepResult.getResult().getId()) ? childStepResult.getResult() : status;426 }427 boolean isMajorStepFailure = isStepGroup && isStepGroupFailure(testcaseStep, childStep, childStepResult);428 if (!skipExe && isMajorStepFailure && isMajorStepGroupFailure) {429 result.setResult(ResultConstant.FAILURE);430 String majorMessage = new StringBuffer(AutomatorMessages.MSG_STEP_MAJOR_STEP_FAILURE)431 .append((childStepResult.getMessage() != null) ? childStepResult.getMessage() + "." : "")432 .append(AutomatorMessages.MSG_CHECK_FOR_MORE_DETAILS).toString();433 result.setMessage(majorMessage);434 setFailedMessage(childStepResult, tresult, testcaseStep.getStepDetails().getIgnoreStepResult());435 }436 skipExe = childStepResult.getSkipExe();437 message = childStepResult.getSkipMessage();438 //Set break loop and continue loop to group results439 if (childStepResult.getResult() == ResultConstant.SUCCESS440 && (childStepResult.getIsBreakLoop() || childStepResult.getIsContinueLoop())) {441 continueLoopStepExecuted = childStepResult.getIsContinueLoop();442 breakLoopStepExecuted = childStepResult.getIsBreakLoop();443 populateLoopConditionResult(result, childStepResult, testcaseStep);444 log.debug("Is Break loop step executed successfully:" + breakLoopStepExecuted);445 log.debug("Is Continue loop step executed successfully:" + continueLoopStepExecuted);446 }447 result.setSkipExe(skipExe);448 result.setSkipMessage(message);449 }450 if (result.getResult() == null) {451 result.setResult(status);452 }453 //If current loop encounters a continue OR current loop encountered a break.454 // We need to disable skipExe, else further testcases(After loop) will not be executed.455 if (result.getIsContinueLoop() || result.getIsBreakLoop()) {456 result.setSkipExe(false);//If skip is true, execution will not be continued after the loop.457 result.setResult(ResultConstant.SUCCESS);458 }459 resetThreadContextData();460 }461 protected void populateLoopConditionResult(TestCaseStepResult parentLoopResult, TestCaseStepResult childStepResult, TestCaseStepEntity parentLoopStep) {462 if (parentLoopStep.getConditionType() == ConditionType.LOOP_WHILE463 || parentLoopStep.getConditionType() == ConditionType.LOOP_FOR464 || parentLoopStep.getStepGroupId() != null) {465 if (childStepResult.getIsBreakLoop()) {466 parentLoopResult.setIsBreakLoop(childStepResult.getIsBreakLoop());467 } else if (childStepResult.getIsContinueLoop()) {468 parentLoopResult.setIsContinueLoop(childStepResult.getIsContinueLoop());469 }470 }471 }472 private void setFailedMessage(TestCaseStepResult result, TestCaseResult testCaseResult, Boolean ignoreStepResult) throws AutomatorException {473 result.setSkipExe(true);474 result.setSkipMessage(AutomatorMessages.MSG_STEP_MAJOR_STEP_FAILURE);475 if(!ignoreStepResult) {476 String majorMessage = AutomatorMessages.MSG_STEP_MAJOR_STEP_FAILURE +477 ((result.getMessage() != null) ? result.getMessage() : "") + " . " + AutomatorMessages.MSG_CHECK_FOR_MORE_DETAILS;478 testCaseResult.setMessage(majorMessage);479 testCaseResult.setResult(ResultConstant.FAILURE);480 }481 }482 private boolean isStepGroupFailure(TestCaseStepEntity testcaseStep, TestCaseStepEntity childStep,483 TestCaseStepResult childStepResult) {484 return childStep.getPriority() == TestStepPriority.MAJOR &&485 childStepResult.getResult() != null && !childStepResult.getResult().equals(ResultConstant.SUCCESS)486 && (testcaseStep.getConditionType() == null || !testcaseStep.getConditionType().equals(ConditionType.LOOP_FOR))487 && !childStep.getStepDetails().getIgnoreStepResult();488 }489 protected void setTestDataValue(TestCaseStepEntity step, Map<String, String> envDetails, TestCaseResult testCaseResult, TestCaseStepResult testCaseStepResult)490 throws AutomatorException, ClassNotFoundException, NoSuchMethodException, InstantiationException, IllegalAccessException, IOException, InvocationTargetException {491 if (step.getTestDataMap() == null)492 return;493 int index =0;494 Map<String, TestDataPropertiesEntity> testDataPropertiesEntityMap = step.getTestDataMap();495 for (Map.Entry<String, TestDataPropertiesEntity> entry : testDataPropertiesEntityMap.entrySet()) {496 TestDataPropertiesEntity testDataPropertiesEntity = entry.getValue();497 TestDataType testDataType = TestDataType.getTestDataType(ObjectUtils.defaultIfNull(testDataPropertiesEntity.getTestDataType(), "raw"));498 switch (testDataType) {499 case runtime:500 if (!step.getAction().startsWith("Store ")) {501 RuntimeDataProvider runtimeDataProvider = new RuntimeDataProvider();502 testDataPropertiesEntity.setTestDataValue(503 runtimeDataProvider.getRuntimeData(testDataPropertiesEntity.getTestDataValue()));504 }505 break;506 case random:507 testDataPropertiesEntity.setTestDataValue(RandomStringUtils.randomAlphanumeric(508 Integer.parseInt(testDataPropertiesEntity.getTestDataValue())));509 break;510 case function:511 if (!testDataPropertiesEntity.getDefaultDataGeneratorsEntity().getIsAddonFn()) {512 DefaultDataGeneratorsEntity testDataFunctionEntity = testDataPropertiesEntity.getDefaultDataGeneratorsEntity();513 DefaultDataGeneratorsExecutor testDataFunctionExecutor = new DefaultDataGeneratorsExecutor();514 testDataFunctionExecutor.setTestCaseResult(testCaseResult);515 testDataFunctionExecutor.setSettings(envDetails);516 testDataFunctionExecutor.setDefaultDataGeneratorsEntity(testDataFunctionEntity);517 String testDataValue = testDataFunctionExecutor.generate();518 testDataPropertiesEntity.setTestDataName(testDataPropertiesEntity.getTestDataValue());519 testDataPropertiesEntity.setTestDataValue(testDataValue);520 } else {521 setTestDataValueFromAddonTestDataFunction(step, index, testDataPropertiesEntity, testCaseStepResult);522 index++;523 }524 break;525 }526 step.setTestDataName(testDataPropertiesEntity.getTestDataName());527 step.setTestDataValue(testDataPropertiesEntity.getTestDataValue());528 }529 }530 private void setTestDataValueFromAddonTestDataFunction(TestCaseStepEntity testCaseStepEntity, int index, TestDataPropertiesEntity testDataPropertiesEntity, TestCaseStepResult testCaseStepResult) throws IOException, ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InstantiationException, InvocationTargetException {531 try {532 List<AddonPluginTestDataFunctionEntity> addonPluginTDFEntityList = testCaseStepEntity.getAddonPluginTDFEntityList();533 AddonPluginTestDataFunctionEntity entity = addonPluginTDFEntityList.get(index);534 String jarFilePath = addonService.checkAndDownloadJar(entity.getClassPath(), entity.getModifiedHash());535 Class<?> clazz = addonService.loadJarClass(jarFilePath, entity.getFullyQualifiedName(), false);536 Object instance = clazz.getDeclaredConstructor().newInstance();537 setTestDataParameter(instance, addonService, testDataPropertiesEntity);538 Method executeMethod = clazz.getDeclaredMethod("generate");539 executeMethod.setAccessible(true);540 TestData testData = (TestData) executeMethod.invoke(instance);541 testDataPropertiesEntity.setTestDataName(entity.getDisplayName());542 testDataPropertiesEntity.setTestDataValue(testData.getValue().toString());543 } catch (Exception e) {544 String message = StringUtils.isBlank(e.getMessage()) ? e.getCause().getMessage() : e.getMessage();545 if (message == null) {546 testCaseStepResult.setMessage("Teststep execution failed. No Additional message was available.");547 } else {548 testCaseStepResult.setMessage(message);549 }550 throw e;551 }552 }553 public void setTestDataParameter(Object instance, AddonService addonService, TestDataPropertiesEntity testDataPropertiesEntity) throws NoSuchMethodException, InstantiationException, IllegalAccessException, InvocationTargetException {554 Map<String, String> arguments = testDataPropertiesEntity.getDefaultDataGeneratorsEntity().getArguments();555 for (Map.Entry<String, String> entry : arguments.entrySet()) {556 String key = entry.getKey();557 String value = entry.getValue();558 Object testDataParameterInstance = addonService.getTestDataParameterInstance(value);559 FieldUtils.writeField(instance, key, testDataParameterInstance, true);560 log.info("Setting test data instance - " + testDataParameterInstance);561 }562 }563 private void takeScreenshot(WorkspaceType workspaceType, TestCaseStepEntity testcaseStep,564 TestCaseStepResult result, Screenshot option, ScreenCaptureUtil screenCaptureUtil) {565 TestDeviceSettings envSettings = EnvironmentRunner.getRunnerEnvironmentEntity().getEnvSettings();566 try {567 boolean takeScreenshot = false;568 String screenshotS3URL = testcaseStep.getScreenshotPath();569 if (option == Screenshot.NONE) {570 takeScreenshot = false;571 } else if (option == Screenshot.ALL_TYPES) {572 takeScreenshot = true;573 } else if ((option == Screenshot.FAILED_STEPS) && (result.getResult() != ResultConstant.SUCCESS)) {574 takeScreenshot = true;575 }576 int screenshotType = 0;577 if (testcaseStep.getAction() != null && testcaseStep.getAction().toLowerCase()578 .contains(AutomatorMessages.KEYWORD_SCREENSHOT.toLowerCase())) {...
Source:TestcaseRunner.java
...6import com.testsigma.automator.drivers.DriverManager;7import com.testsigma.automator.entity.*;8import com.testsigma.automator.exceptions.AutomatorException;9import com.testsigma.automator.service.ObjectMapperService;10import com.testsigma.automator.utilities.ScreenCaptureUtil;11import com.testsigma.automator.utilities.ScreenshotUploadTask;12import com.testsigma.automator.utilities.UploadThreadPool;13import lombok.extern.log4j.Log4j2;14import org.apache.commons.lang3.ObjectUtils;15import org.apache.commons.lang3.StringUtils;16import org.apache.logging.log4j.ThreadContext;17import java.sql.Timestamp;18import java.util.*;19@Log4j220public class TestcaseRunner {21 private static final String[] SKIP_GETURL = {"Close all windows", "Verify that the Alert is not present",22 "Verify that the Alert displays the message", "Click on Cancel button in the alert",23 "Click OK button in the alert", "Verify that an Alert with text", "Wait until an Alert is displayed in the current page", "Wait until the Alert currently displayed is absent"};24 public final int SAVE_BATCH_IMAGES = 10;25 protected TestDeviceEntity testDeviceEntity;26 protected EnvironmentRunResult environmentRunResult;27 protected TestPlanRunSettingEntity testPlanRunSettingEntity;28 protected TestDeviceSettings testDeviceSettings;29 protected String testPlanId;30 protected WorkspaceType workspaceType;31 protected TestCaseEntity testCaseEntity;32 protected TestCaseResult testCaseResult;33 protected Map<Long, TestCaseStepResult> mapStepResult;34 protected boolean skipExecution;35 protected String resultFailureMessage;36 public TestcaseRunner(TestCaseEntity testCaseEntity, TestCaseResult testCaseResult,37 Map<Long, TestCaseStepResult> mapStepResult, boolean skipExecution,38 String resultFailureMessage) {39 this.testDeviceEntity = EnvironmentRunner.getRunnerEnvironmentEntity();40 this.environmentRunResult = EnvironmentRunner.getRunnerEnvironmentRunResult();41 this.testPlanRunSettingEntity = testDeviceEntity.getTestPlanSettings();42 this.testDeviceSettings = testDeviceEntity.getEnvSettings();43 this.testPlanId = EnvironmentRunner.getRunnerExecutionId();44 this.workspaceType = testDeviceEntity.getWorkspaceType();45 this.testCaseEntity = testCaseEntity;46 this.testCaseResult = testCaseResult;47 this.mapStepResult = mapStepResult;48 this.skipExecution = skipExecution;49 this.resultFailureMessage = resultFailureMessage;50 }51 public void startSession() throws AutomatorException {52 DriverManager.getDriverManager(testDeviceEntity, testDeviceEntity.getWorkspaceType(), testDeviceSettings.getOs(),53 testCaseResult.getId(), DriverSessionType.TEST_CASE_SESSION);54 }55 public void endSession() throws AutomatorException {56 DriverManager driverManager = DriverManager.getDriverManager();57 if (driverManager != null) {58 driverManager.endSession();59 }60 }61 private void populateThreadContextData() {62 ThreadContext.put("TEST_CASE", testCaseEntity.getId() + "");63 ThreadContext.put("TEST_CASE_RESULT", testCaseResult.getId() + "");64 }65 private void resetThreadContextData() {66 ThreadContext.put("TEST_CASE", "");67 ThreadContext.put("TEST_CASE_RESULT", "");68 }69 public TestCaseResult run() throws Exception {70 resetThreadContextData();71 populateThreadContextData();72 log.info("Running testcase - " + testCaseEntity.getTestCaseName());73 if (testDeviceEntity.getCreateSessionAtCaseLevel()) {74 startSession();75 } else {76 restartCurrentSession();77 }78 environmentRunResult.setSessionCreatedOn(new Timestamp(System.currentTimeMillis()));79 ResultConstant result = ResultConstant.SUCCESS;80 List<TestCaseStepEntity> stepList = testCaseEntity.getTestSteps();81 List<TestCaseStepResult> testCaseStepsResult = new ArrayList<>();82 testCaseResult.setTestCaseStepResults(testCaseStepsResult);83 testCaseResult.setIsStepGroup(testCaseEntity.getIsStepGroup());84 testCaseResult.setDataDriven(testCaseEntity.getIsDataDriven());85 testCaseResult.setTestPlanResultId(testDeviceEntity.getExecutionRunId());86 testCaseResult.setTestCaseName(testCaseEntity.getTestCaseName());87 try {88 HashMap<Long, TestCaseStepResult> parentStatus = new HashMap<>();89 int currentIndex = 0;90 testCaseResult.setCurrentIndex(currentIndex);91 int lastStep = stepList.size() - 1;92 ScreenCaptureUtil screenCaptureUtil = new ScreenCaptureUtil(new ArrayList<>());93 for (int i = 0; i < stepList.size(); i++) {94 TestCaseStepEntity testCaseStepEntity = stepList.get(i);95 TestCaseStepResult testCaseStepResult = new TestCaseStepResult();96 testCaseStepResult.setTestCaseStepId(testCaseStepEntity.getId());97 testCaseStepResult.setSkipExe(skipExecution);98 testCaseStepResult.setSkipMessage(resultFailureMessage);99 /* if (!skipExecution && (workspaceType.equals(WorkspaceType.WebApplication) || workspaceType100 .equals(WorkspaceType.MobileWeb))) {101 url = getUrl();102 }*/103 boolean skipGetUrl = false;104 if (testCaseStepEntity.getAction() != null) {105 skipGetUrl = Arrays.asList(SKIP_GETURL).stream().filter(action -> testCaseStepEntity.getAction().contains(action)).count() > 0;106 }...
ScreenCaptureUtil
Using AI Code Generation
1import com.testsigma.automator.utilities.ScreenCaptureUtil;2import java.io.File;3import java.io.IOException;4import java.nio.file.Files;5import java.nio.file.Path;6import java.nio.file.Paths;7import java.util.Base64;8import java.util.HashMap;9import java.util.Map;10import java.util.logging.Level;11import java.util.logging.Logger;12import javax.imageio.ImageIO;13import org.openqa.selenium.OutputType;14import org.openqa.selenium.TakesScreenshot;15import org.openqa.selenium.WebDriver;16import org.openqa.selenium.remote.RemoteWebDriver;17import org.openqa.selenium.remote.RemoteWebElement;18import org.openqa.selenium.support.events.EventFiringWebDriver;19import org.testng.annotations.Test;20public class 2 {21 public void testScreenCaptureUtil() {22 WebDriver driver = null;23 String base64String = ScreenCaptureUtil.getBase64String(driver);24 System.out.println(base64String);25 }26}27import com.testsigma.automator.utilities.ScreenCaptureUtil;28import java.io.File;29import java.io.IOException;30import java.nio.file.Files;31import java.nio.file.Path;32import java.nio.file.Paths;33import java.util.Base64;34import java.util.HashMap;35import java.util.Map;36import java.util.logging.Level;37import java.util.logging.Logger;38import javax.imageio.ImageIO;39import org.openqa.selenium.OutputType;40import org.openqa.selenium.TakesScreenshot;41import org.openqa.selenium.WebDriver;42import org.openqa.selenium.remote.RemoteWebDriver;43import org.openqa.selenium.remote.RemoteWebElement;44import org.openqa.selenium.support.events.EventFiringWebDriver;45import org.testng.annotations.Test;46public class 3 {47 public void testScreenCaptureUtil() {48 WebDriver driver = null;49 String base64String = ScreenCaptureUtil.getBase64String(driver);50 System.out.println(base64String);51 }52}53import com.testsigma.automator.utilities.ScreenCaptureUtil;54import java.io.File;55import java.io.IOException;56import java.nio.file.Files;57import java.nio.file.Path;58import java.nio.file.Paths;59import java.util.Base64;60import java.util.HashMap;61import java.util.Map;62import java.util.logging.Level;63import java.util.logging.Logger;64import javax.imageio.ImageIO;65import org.openqa.selenium.OutputType;66import org.openqa.selenium
ScreenCaptureUtil
Using AI Code Generation
1import java.io.IOException;2import org.openqa.selenium.WebDriver;3import com.testsigma.automator.utilities.ScreenCaptureUtil;4public class ScreenCaptureUtilDemo {5public static void main(String[] args) throws IOException {6WebDriver driver = null;7ScreenCaptureUtil.captureScreen(driver, "c:\\temp\\screenshot.jpg");8}9}10import java.io.IOException;11import org.openqa.selenium.WebDriver;12import com.testsigma.automator.utilities.ScreenCaptureUtil;13public class ScreenCaptureUtilDemo {14public static void main(String[] args) throws IOException {15WebDriver driver = null;16ScreenCaptureUtil.captureScreen(driver, "c:\\temp\\screenshot.jpg");17}18}19import java.io.IOException;20import org.openqa.selenium.WebDriver;21import com.testsigma.automator.utilities.ScreenCaptureUtil;22public class ScreenCaptureUtilDemo {23public static void main(String[] args) throws IOException {24WebDriver driver = null;25ScreenCaptureUtil.captureScreen(driver, "c:\\temp\\screenshot.jpg");26}27}28import java.io.IOException;29import org.openqa.selenium.WebDriver;30import com.testsigma.automator.utilities.ScreenCaptureUtil;31public class ScreenCaptureUtilDemo {32public static void main(String[] args) throws IOException {33WebDriver driver = null;34ScreenCaptureUtil.captureScreen(driver, "c:\\temp\\screenshot.jpg");35}36}37import java.io.IOException;38import org.openqa.selenium.WebDriver;39import com.testsigma.automator.utilities.ScreenCaptureUtil;40public class ScreenCaptureUtilDemo {41public static void main(String[] args) throws IOException {42WebDriver driver = null;43ScreenCaptureUtil.captureScreen(driver, "c:\\temp\\screenshot.jpg");44}45}46import java.io.IOException;47import org.openqa.selenium.WebDriver;48import com.testsigma.automator.utilities.ScreenCaptureUtil;49public class ScreenCaptureUtilDemo {50public static void main(String[] args)
ScreenCaptureUtil
Using AI Code Generation
1import com.testsigma.automator.utilities.ScreenCaptureUtil;2import java.io.File;3import java.io.IOException;4import java.util.*;5import org.openqa.selenium.*;6import org.openqa.selenium.chrome.ChromeDriver;7import org.openqa.selenium.chrome.ChromeOptions;8import org.openqa.selenium.remote.DesiredCapabilities;9import org.openqa.selenium.remote.RemoteWebDriver;10import org.openqa.selenium.support.ui.ExpectedConditions;11import org.openqa.selenium.support.ui.WebDriverWait;12import org.testng.annotations.*;13import org.testng.Assert;14import org.testng.ITestResult;15import org.testng.annotations.AfterMethod;16import org.testng.annotations.BeforeMethod;17import org.testng.annotations.Test;18import org.testng.annotations.AfterClass;19import org.testng.annotations.BeforeClass;20import org.testng.annotations.BeforeTest;21import org.testng.annotations.AfterTest;22import org.testng.annotations.BeforeSuite;23import org.testng.annotations.AfterSuite;24public class 2 {25 private WebDriver driver;26 private String baseUrl;27 private boolean acceptNextAlert = true;28 private StringBuffer verificationErrors = new StringBuffer();29 public void setUp() throws Exception {30 System.setProperty("webdriver.chrome.driver", "C:\\Users\\user\\Downloads\\chromedriver.exe");31 driver = new ChromeDriver();32 driver.manage().window().maximize();33 driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);34 }35 public void testUntitledTestCase() throws Exception {36 driver.get(baseUrl + "/");37 driver.findElement(By.id("lst-ib")).clear();38 driver.findElement(By.id("lst-ib")).sendKeys("selenium");39 driver.findElement(By.name("btnG")).click();40 driver.findElement(By.linkText("Selenium - Web Browser Automation")).click();41 ScreenCaptureUtil.captureScreen(driver, "C:\\Users\\user\\Desktop\\ScreenShots\\", "Test");42 }43 public void tearDown(ITestResult result) throws Exception {44 if (result.getStatus() == ITestResult.FAILURE) {45 ScreenCaptureUtil.captureScreen(driver, "C:\\Users\\user\\Desktop\\ScreenShots\\", "Test");46 }47 driver.quit();48 String verificationErrorString = verificationErrors.toString();49 if (!"".equals(verificationErrorString)) {50 Assert.fail(verificationErrorString);51 }52 }53 private boolean isElementPresent(By by) {54 try {55 driver.findElement(by);56 return true;57 } catch (NoSuchElementException e
ScreenCaptureUtil
Using AI Code Generation
1import com.testsigma.automator.utilities.ScreenCaptureUtil;2public class ScreenCaptureUtilDemo {3 public static void main(String[] args) {4 ScreenCaptureUtil.captureScreen("screenshot");5 }6}7import com.testsigma.automator.utilities.ScreenCaptureUtil;8public class ScreenCaptureUtilDemo {9 public static void main(String[] args) {10 ScreenCaptureUtil.captureScreen("screenshot", "png");11 }12}13import com.testsigma.automator.utilities.ScreenCaptureUtil;14public class ScreenCaptureUtilDemo {15 public static void main(String[] args) {16 ScreenCaptureUtil.captureScreen("screenshot", "png", "C:\\Users\\testsigma\\Desktop\\");17 }18}19import com.testsigma.automator.utilities.ScreenCaptureUtil;20public class ScreenCaptureUtilDemo {21 public static void main(String[] args) {22 ScreenCaptureUtil.captureScreen("screenshot", "png", "C:\\Users\\testsigma\\Desktop\\", true);23 }24}25import com.testsigma.automator.utilities.ScreenCaptureUtil;26public class ScreenCaptureUtilDemo {27 public static void main(String[] args) {28 ScreenCaptureUtil.captureScreen("screenshot", "png", "C:\\Users\\testsigma\\Desktop\\", true, 100);29 }30}31import com.testsigma.automator.utilities.ScreenCaptureUtil;32public class ScreenCaptureUtilDemo {33 public static void main(String[] args) {34 ScreenCaptureUtil.captureScreen("screenshot", "png", "C:\\Users\\testsigma\\Desktop\\", true, 100, 100);35 }36}37import com.testsigma
ScreenCaptureUtil
Using AI Code Generation
1import com.testsigma.automator.utilities.ScreenCaptureUtil;2import java.io.IOException;3import java.io.File;4import java.io.IOException;5import java.util.Date;6import java.text.SimpleDateFormat;7import java.util.concurrent.TimeUnit;8import java.util.concurrent.TimeUnit;9import java.util.concurrent.TimeUnit;10import org.openqa.selenium.By;11import org.openqa.selenium.WebDriver;12import org.openqa.selenium.firefox.FirefoxDriver;13import org.openqa.selenium.support.ui.ExpectedConditions;14import org.openqa.selenium.support.ui.WebDriverWait;15import org.openqa.selenium.WebElement;16import org.openqa.selenium.OutputType;17import org.openqa.selenium.TakesScreenshot;18import org.openqa.selenium.support.ui.Select;19import java.util.List;20import java.util.ArrayList;21import java.util.Iterator;22import java.util.Set;23import java.util.concurrent.TimeUnit;24import org.openqa.selenium.JavascriptExecutor;25import org.openqa.selenium.interactions.Actions;26import org.openqa.selenium.support.ui.Select;27import org.openqa.selenium.support.ui.WebDriverWait;28import org.openqa.selenium.support.ui.ExpectedConditions;29import org.openqa.selenium.NoSuchElementException;30import org.openqa.selenium.WebDriverException;31import org.openqa.selenium.WebElement;32import java.util.concurrent.TimeUnit;33import jav
ScreenCaptureUtil
Using AI Code Generation
1import java.io.IOException;2import org.openqa.selenium.WebDriver;3import org.openqa.selenium.WebElement;4import org.openqa.selenium.chrome.ChromeDriver;5import org.openqa.selenium.chrome.ChromeOptions;6import com.testsigma.automator.utilities.ScreenCaptureUtil;7public class ScreenCaptureUtilTest {8public static void main(String[] args) throws IOException {9System.setProperty("webdriver.chrome.driver", "C:\\Users\\user\\Downloads\\chromedriver_win32\\chromedriver.exe");10ChromeOptions options = new ChromeOptions();11options.setHeadless(true);12WebDriver driver = new ChromeDriver(options);13WebElement searchBox = driver.findElement(By.name("q"));14ScreenCaptureUtil.captureScreenShot(searchBox, "C:\\Users\\user\\Desktop\\searchBox.png");15}16}17import java.io.IOException;18import org.openqa.selenium.WebDriver;19import org.openqa.selenium.WebElement;20import org.openqa.selenium.chrome.ChromeDriver;21import org.openqa.selenium.chrome.ChromeOptions;22import com.testsigma.automator.utilities.ScreenCaptureUtil;23public class ScreenCaptureUtilTest {24public static void main(String[] args) throws IOException {25System.setProperty("webdriver.chrome.driver", "C:\\Users\\user\\Downloads\\chromedriver_win32\\chromedriver.exe");26ChromeOptions options = new ChromeOptions();27options.setHeadless(true);28WebDriver driver = new ChromeDriver(options);29WebElement searchBox = driver.findElement(By.name("q"));30ScreenCaptureUtil.captureScreenShot(searchBox, "C:\\Users\\user\\Desktop\\searchBox.png");31}32}
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.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!