Best Carina code snippet using com.qaprosoft.carina.core.foundation.listeners.CarinaListener.updateAppPath
Source:CarinaListener.java
...160 // make sure to update after moving to "com.zebrunner"161 LoggerConfig logger = config.getLoggerConfig("com.qaprosoft.carina.core");162 logger.setLevel(Level.getLevel(Configuration.get(Parameter.CORE_LOG_LEVEL)));163 }164 updateAppPath();165 166 setThreadCount(suite);167 168 if (Configuration.getPlatform().equalsIgnoreCase(SpecialKeywords.API)) {169 CurrentTestRun.setPlatform(SpecialKeywords.API);170 }171 String mobileApp = Configuration.getMobileApp();172 if (!mobileApp.isEmpty()) {173 // [VD] do not move into the static block as Zebrunner reporting need registered test run!174 Artifact.attachReferenceToTestRun("app", mobileApp);175 }176 // register app_version/build as artifact if available...177 Configuration.setBuild(Configuration.get(Parameter.APP_VERSION));178 179 String sha1 = Configuration.get(Parameter.GIT_HASH);180 if (!sha1.isEmpty()) {181 Label.attachToTestRun("sha1", sha1);182 }183 184 /*185 * To support multi-suite declaration as below we have to init test run labels at once only!186 * <suite-files>187 * <suite-file path="suite1.xml"/>188 * <suite-file path="suite2.xml"/>189 * </suite-files>190 */191 192 if (!this.isRunLabelsRegistered) {193 attachTestRunLabels(suite);194 this.isRunLabelsRegistered = true;195 }196 LOGGER.info("CARINA_CORE_VERSION: " + getCarinaVersion());197 }198 @Override199 public void onStart(ITestContext context) {200 LOGGER.debug("CarinaListener->OnTestStart(ITestContext context): " + context.getName());201 super.onStart(context);202 }203 @Override204 public void beforeConfiguration(ITestResult result) {205 LOGGER.debug("CarinaListener->beforeConfiguration");206 super.beforeConfiguration(result);207 // remember active test phase to organize valid driver pool manipulation208 // process209 if (result.getMethod().isBeforeSuiteConfiguration()) {210 TestPhase.setActivePhase(Phase.BEFORE_SUITE);211 }212 if(result.getMethod().isBeforeTestConfiguration()){213 TestPhase.setActivePhase(Phase.BEFORE_TEST);214 }215 if (result.getMethod().isBeforeClassConfiguration()) {216 TestPhase.setActivePhase(Phase.BEFORE_CLASS);217 }218 if (result.getMethod().isBeforeMethodConfiguration()) {219 TestPhase.setActivePhase(Phase.BEFORE_METHOD);220 }221 if (result.getMethod().isAfterMethodConfiguration()) {222 TestPhase.setActivePhase(Phase.AFTER_METHOD);223 }224 if (result.getMethod().isAfterClassConfiguration()) {225 TestPhase.setActivePhase(Phase.AFTER_CLASS);226 }227 if (result.getMethod().isAfterTestConfiguration()){228 TestPhase.setActivePhase(Phase.AFTER_TEST);229 }230 if (result.getMethod().isAfterSuiteConfiguration()) {231 TestPhase.setActivePhase(Phase.AFTER_SUITE);232 }233 }234 @Override235 public void onConfigurationFailure(ITestResult result) {236 LOGGER.debug("CarinaListener->onConfigurationFailure");237 super.onConfigurationFailure(result);238 }239 @Override240 public void onTestStart(ITestResult result) {241 LOGGER.debug("CarinaListener->onTestStart");242 TestPhase.setActivePhase(Phase.METHOD);243 // handle expected skip244 Method testMethod = result.getMethod().getConstructorOrMethod().getMethod();245 if (ExpectedSkipManager.getInstance().isSkip(testMethod, result.getTestContext())) {246 skipExecution("Based on rule listed above");247 }248 super.onTestStart(result);249 }250 @Override251 public void onTestSuccess(ITestResult result) {252 LOGGER.debug("CarinaListener->onTestSuccess");253 onTestFinish(result);254 super.onTestSuccess(result);255 }256 @Override257 public void onTestFailure(ITestResult result) {258 LOGGER.debug("CarinaListener->onTestFailure");259 String errorMessage = getFailureReason(result);260 takeScreenshot("TEST FAILED - " + errorMessage);261 onTestFinish(result);262 super.onTestFailure(result);263 }264 @Override265 public void onTestSkipped(ITestResult result) {266 LOGGER.debug("CarinaListener->onTestSkipped");267 String errorMessage = getFailureReason(result);268 takeScreenshot("TEST SKIPPED - " + errorMessage, false);269 onTestFinish(result);270 super.onTestSkipped(result);271 }272 private boolean hasDependencies(ITestResult result) {273 String methodName = result.getMethod().getMethodName();274 String className = result.getMethod().getTestClass().getName();275 // analyze all suite methods and return true if any of them depends on276 // existing method277 List<ITestNGMethod> methods = result.getTestContext().getSuite().getAllMethods();278 for (ITestNGMethod method : methods) {279 List<String> dependencies = Arrays.asList(method.getMethodsDependedUpon());280 if (dependencies.contains(methodName) ||281 dependencies.contains(className + "." + methodName)) {282 LOGGER.debug("dependency detected for " + methodName);283 return true;284 }285 }286 return false;287 }288 private void onTestFinish(ITestResult result) {289 try {290 // clear all kind of temporary properties291 R.CONFIG.clearTestProperties();292 R.TESTDATA.clearTestProperties();293 R.DATABASE.clearTestProperties();294 R.EMAIL.clearTestProperties();295 R.REPORT.clearTestProperties();296 R.ZAFIRA.clearTestProperties();297 LOGGER.debug("Test result is : " + result.getStatus());298 // result status == 2 means failure, status == 3 means skip. We need to quit driver anyway for failure and skip299 if ((automaticDriversCleanup && !hasDependencies(result)) || result.getStatus() == 2 || result.getStatus() == 3) {300 if (!Configuration.getBoolean(Parameter.FORCIBLY_DISABLE_DRIVER_QUIT)) {301 quitDrivers(Phase.BEFORE_METHOD, Phase.METHOD);302 }303 }304 attachTestLabels(result);305 } catch (Exception e) {306 LOGGER.error("Exception in CarinaListener->onTestFinish!", e);307 }308 }309 @Override310 public void onAfterClass(ITestClass testClass){311 LOGGER.debug("CarinaListener->onAfterClass(ITestClass testClass)");312 quitDrivers(Phase.BEFORE_CLASS);313 }314 @Override315 public void onFinish(ITestContext context) {316 LOGGER.debug("CarinaListener->onFinish(ITestContext context)");317 super.onFinish(context);318 // [SZ] it's still needed to close driver from BeforeClass stage.319 // Otherwise it could be potentially used in other test classes 320// quitDrivers(Phase.BEFORE_CLASS); already exited in onAfterClass() method321 quitDrivers(Phase.BEFORE_TEST);322 LOGGER.debug("CarinaListener->onFinish(context): " + context.getName());323 }324 @Override325 public void onFinish(ISuite suite) {326 LOGGER.debug("CarinaListener->onFinish(ISuite suite)");327 try {328 String browser = getBrowser();329 // String suiteName = getSuiteName(context);330 String title = getTitle(suite.getXmlSuite());331 TestResultType testResult = EmailReportGenerator.getSuiteResult(EmailReportItemCollector.getTestResults());332 String status = testResult.getName();333 title = status + ": " + title;334 String env = "";335 if (!Configuration.isNull(Parameter.ENV)) {336 env = Configuration.get(Parameter.ENV);337 }338 if (!Configuration.get(Parameter.URL).isEmpty()) {339 env += " - <a href='" + Configuration.get(Parameter.URL) + "'>" + Configuration.get(Parameter.URL)340 + "</a>";341 }342 ReportContext.getTempDir().delete();343 // EmailReportItemCollector.getTestResults());344 LOGGER.debug("Generating email report...");345 // Generate emailable html report using regular method346 EmailReportGenerator report = new EmailReportGenerator(title, env, Configuration.get(Parameter.APP_VERSION),347 browser, DateUtils.now(), EmailReportItemCollector.getTestResults(),348 EmailReportItemCollector.getCreatedItems());349 String emailContent = report.getEmailBody();350 // Store emailable report under emailable-report.html351 ReportContext.generateHtmlReport(emailContent);352 printExecutionSummary(EmailReportItemCollector.getTestResults());353 LOGGER.debug("Finish email report generation.");354 } catch (Exception e) {355 LOGGER.error("Exception in CarinaListener->onFinish(ISuite suite)", e);356 }357 }358 /**359 * Disable automatic drivers cleanup after each TestMethod and switch to controlled by tests itself.360 * But anyway all drivers will be closed forcibly as only suite is finished or aborted 361 */362 public static void disableDriversCleanup() {363 LOGGER.info("Automatic drivers cleanup will be disabled!");364 automaticDriversCleanup = false;365 }366 protected String getBrowser() {367 return Configuration.getBrowser();368 }369 protected String getTitle(XmlSuite suite) {370 String browser = getBrowser();371 if (!browser.isEmpty()) {372 browser = " " + browser; // insert the space before373 }374 String env = !Configuration.isNull(Parameter.ENV) ? Configuration.get(Parameter.ENV)375 : Configuration.get(Parameter.URL);376 String title = "";377 String app_version = "";378 if (!Configuration.get(Parameter.APP_VERSION).isEmpty()) {379 // if nothing is specified then title will contain nothing380 app_version = Configuration.get(Parameter.APP_VERSION) + " - ";381 }382 String suiteName = getSuiteName(suite);383 String xmlFile = getSuiteFileName(suite);384 title = String.format(SUITE_TITLE, app_version, suiteName, String.format(XML_SUITE_NAME, xmlFile), env, browser);385 return title;386 }387 private String getSuiteFileName(XmlSuite suite) {388 // TODO: investigate why we need such method and suite file name at all389 String fileName = suite.getFileName();390 if (fileName == null) {391 fileName = "undefined";392 }393 LOGGER.debug("Full suite file name: " + fileName);394 if (fileName.contains("\\")) {395 fileName = fileName.replaceAll("\\\\", "/");396 }397 fileName = StringUtils.substringAfterLast(fileName, "/");398 LOGGER.debug("Short suite file name: " + fileName);399 return fileName;400 }401 protected String getSuiteName(XmlSuite suite) {402 String suiteName = "";403 if (suite != null && !"Default suite".equals(suite.getName())) {404 suiteName = Configuration.get(Parameter.SUITE_NAME).isEmpty() ? suite.getName()405 : Configuration.get(Parameter.SUITE_NAME);406 } else {407 suiteName = Configuration.get(Parameter.SUITE_NAME).isEmpty() ? R.EMAIL.get("title")408 : Configuration.get(Parameter.SUITE_NAME);409 }410 return suiteName;411 }412 private void printExecutionSummary(List<TestResultItem> tris) {413 Messager.INFORMATION.info("**************** Test execution summary ****************");414 int num = 1;415 for (TestResultItem tri : tris) {416 String failReason = tri.getFailReason();417 if (failReason == null) {418 failReason = "";419 }420 if (!tri.isConfig()) {421 String reportLinks = !StringUtils.isEmpty(tri.getLinkToScreenshots())422 ? "screenshots=" + tri.getLinkToScreenshots() + " | " : "";423 reportLinks += !StringUtils.isEmpty(tri.getLinkToLog()) ? "log=" + tri.getLinkToLog() : "";424 Messager.TEST_RESULT.info(String.valueOf(num++), tri.getTest(), tri.getResult().toString(),425 reportLinks);426 }427 }428 }429 @Deprecated430 protected void putS3Artifact(String key, String path) {431 AmazonS3Manager.getInstance().put(Configuration.get(Parameter.S3_BUCKET_NAME), key, path);432 }433 @Deprecated434 protected S3Object getS3Artifact(String bucket, String key) {435 return AmazonS3Manager.getInstance().get(Configuration.get(Parameter.S3_BUCKET_NAME), key);436 }437 @Deprecated438 protected S3Object getS3Artifact(String key) {439 return getS3Artifact(Configuration.get(Parameter.S3_BUCKET_NAME), key);440 }441 @Deprecated442 protected void putAzureArtifact(String remotePath, String localPath) {443 AzureManager.getInstance().put(Configuration.get(Parameter.AZURE_CONTAINER_NAME), remotePath, localPath);444 }445 @Deprecated446 protected void getAzureArtifact(String bucket, String remotePath, File localPath) {447 AzureManager.getInstance().download(bucket, remotePath, localPath);448 }449 private static void updateAppPath() {450 451 String mobileAppPath = Configuration.getMobileApp();452 Matcher matcher = S3_BUCKET_PATTERN.matcher(mobileAppPath);453 LOGGER.debug("Analyzing if mobile app is located on S3...");454 if (matcher.find()) {455 mobileAppPath = updateS3AppPath(mobileAppPath);456 }457 matcher = AZURE_CONTAINER_PATTERN.matcher(mobileAppPath);458 LOGGER.debug("Analyzing if mobile app is located on Azure...");459 if (matcher.find()) {460 mobileAppPath = updateAzureAppPath(mobileAppPath);461 }462 463 matcher = APPCENTER_PATTERN.matcher(mobileAppPath);...
updateAppPath
Using AI Code Generation
1import com.qaprosoft.carina.core.foundation.listeners.CarinaListener;2import java.io.File;3public class UpdateAppPath {4public static void main(String[] args) {5CarinaListener listener = new CarinaListener();6listener.updateAppPath(new File("/path/to/apk"));7}8}
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!!