How to use Messager class of com.qaprosoft.carina.core.foundation.utils package

Best Carina code snippet using com.qaprosoft.carina.core.foundation.utils.Messager

Source:AbstractTestListener.java Github

copy

Full Screen

...44import com.qaprosoft.carina.core.foundation.retry.RetryCounter;45import com.qaprosoft.carina.core.foundation.utils.Configuration;46import com.qaprosoft.carina.core.foundation.utils.Configuration.Parameter;47import com.qaprosoft.carina.core.foundation.utils.DateUtils;48import com.qaprosoft.carina.core.foundation.utils.Messager;49import com.qaprosoft.carina.core.foundation.utils.ParameterGenerator;50import com.qaprosoft.carina.core.foundation.utils.R;51import com.qaprosoft.carina.core.foundation.utils.SpecialKeywords;52import com.qaprosoft.carina.core.foundation.utils.StringGenerator;53import com.qaprosoft.carina.core.foundation.utils.naming.TestNamingUtil;54import com.qaprosoft.carina.core.foundation.webdriver.DriverPool;55import com.qaprosoft.carina.core.foundation.webdriver.Screenshot;56import com.qaprosoft.carina.core.foundation.webdriver.device.DevicePool;5758@SuppressWarnings("deprecation")59public class AbstractTestListener extends TestArgsListener60{61	private static final Logger LOGGER = Logger.getLogger(AbstractTestListener.class);6263	protected static ThreadLocal<TestResultItem> configFailures = new ThreadLocal<TestResultItem>();6465	private void startItem(ITestResult result, Messager messager)66	{6768		String test = TestNamingUtil.getCanonicalTestName(result);69		test = TestNamingUtil.associateTestInfo2Thread(test, Thread.currentThread().getId());7071		String deviceName = getDeviceName();72		messager.info(deviceName, test, DateUtils.now());73	}7475	private void passItem(ITestResult result, Messager messager)76	{77		String test = TestNamingUtil.getCanonicalTestName(result);7879		String deviceName = getDeviceName();8081		messager.info(deviceName, test, DateUtils.now());8283		EmailReportItemCollector84				.push(createTestResult(result, TestResultType.PASS, null, result.getMethod().getDescription()));85		result.getTestContext().removeAttribute(SpecialKeywords.TEST_FAILURE_MESSAGE);8687		TestNamingUtil.releaseTestInfoByThread();88	}8990	private String failItem(ITestResult result, Messager messager)91	{92		String test = TestNamingUtil.getCanonicalTestName(result);9394		String errorMessage = getFailureReason(result);95		96		takeScreenshot(result, "TEST FAILED - " + errorMessage);97		98		String deviceName = getDeviceName();99100		// TODO: remove hard-coded text101		if (!errorMessage.contains("All tests were skipped! Analyze logs to determine possible configuration issues."))102		{103			messager.info(deviceName, test, DateUtils.now(), errorMessage);104			if (!R.EMAIL.getBoolean("fail_full_stacktrace_in_report") && result.getThrowable() != null105					&& result.getThrowable().getMessage() != null106					&& !StringUtils.isEmpty(result.getThrowable().getMessage()))107			{108				EmailReportItemCollector.push(createTestResult(result, TestResultType.FAIL,109						result.getThrowable().getMessage(), result.getMethod().getDescription()));110			} else111			{112				EmailReportItemCollector.push(createTestResult(result, TestResultType.FAIL, errorMessage, result113						.getMethod().getDescription()));114			}115		}116117		result.getTestContext().removeAttribute(SpecialKeywords.TEST_FAILURE_MESSAGE);118		TestNamingUtil.releaseTestInfoByThread();119		return errorMessage;120	}121122	private String failRetryItem(ITestResult result, Messager messager, int count, int maxCount)123	{124		String test = TestNamingUtil.getCanonicalTestName(result);125126		String errorMessage = getFailureReason(result);127		128		takeScreenshot(result, "TEST FAILED - " + errorMessage);129		130		String deviceName = getDeviceName();131132		messager.info(deviceName, test, String.valueOf(count), String.valueOf(maxCount), errorMessage);133134		result.getTestContext().removeAttribute(SpecialKeywords.TEST_FAILURE_MESSAGE);135		TestNamingUtil.releaseTestInfoByThread();136		return errorMessage;137	}138139	private String skipItem(ITestResult result, Messager messager)140	{141		String test = TestNamingUtil.getCanonicalTestName(result);142143		String errorMessage = getFailureReason(result);144		if (errorMessage.isEmpty())145		{146			// identify is it due to the dependent failure or exception in before suite/class/method147			String[] methods = result.getMethod().getMethodsDependedUpon();148149			// find if any parent method failed/skipped150			boolean dependentMethod = false;151			String dependentMethodName = "";152			for (ITestResult failedTest : result.getTestContext().getFailedTests().getAllResults())153			{154				for (int i = 0; i < methods.length; i++)155				{156					if (methods[i].contains(failedTest.getName()))157					{158						dependentMethodName = failedTest.getName();159						dependentMethod = true;160						break;161					}162				}163			}164165			for (ITestResult skippedTest : result.getTestContext().getSkippedTests().getAllResults())166			{167				for (int i = 0; i < methods.length; i++)168				{169					if (methods[i].contains(skippedTest.getName()))170					{171						dependentMethodName = skippedTest.getName();172						dependentMethod = true;173						break;174					}175				}176			}177178			if (dependentMethod)179			{180				errorMessage = "Test skipped due to the dependency from: " + dependentMethodName;181			} else182			{183				// Try to find error details from last configuration failure in this thread184				TestResultItem resultItem = getConfigFailure();185				if (resultItem != null)186				{187					errorMessage = resultItem.getFailReason();188				}189			}190		}191192		String deviceName = getDeviceName();193194		messager.info(deviceName, test, DateUtils.now(), errorMessage);195196		EmailReportItemCollector197				.push(createTestResult(result, TestResultType.SKIP, errorMessage, result.getMethod().getDescription()));198199		result.getTestContext().removeAttribute(SpecialKeywords.TEST_FAILURE_MESSAGE);200		TestNamingUtil.releaseTestInfoByThread();201		return errorMessage;202	}203	204	private void skipAlreadyPassedItem(ITestResult result, Messager messager)205	{206		String test = TestNamingUtil.getCanonicalTestName(result);207		String deviceName = getDeviceName();208		messager.info(deviceName, test, DateUtils.now());209	}210211	private String getDeviceName()212	{213		String deviceName = DevicePool.getDevice().getName();214		String deviceUdid = DevicePool.getDevice().getUdid();215216		if (!deviceName.isEmpty() && !deviceUdid.isEmpty())217		{218			deviceName = deviceName + " - " + deviceUdid;219		}220221		return deviceName;222	}223	224	private void afterConfiguration(ITestResult result) {225		//register configuration step as test artifact226		String test = TestNamingUtil.getCanonicalTestName(result);227		Artifacts.add("LOG-" + test, ReportContext.getTestLogLink(test));228		Artifacts.add("DEMO-" + test, ReportContext.getTestScreenshotsLink(test));229		TestNamingUtil.releaseTestInfoByThread();230	}231232	@Override233	public void beforeConfiguration(ITestResult result)234	{235		// startItem(result, Messager.CONFIG_STARTED);236		// // do failure test cleanup in this place as right after the test237		// // context doesn't have up-to-date information.238		// // This context cleanup is required to launch dependent steps if parent method pass from Nth retry!239		removeIncorrectlyFailedTests(result.getTestContext());240		241		242		// added 3 below lines to be able to track log/screenshots for before suite/class/method actions too243		TestNamingUtil.releaseTestInfoByThread();244		String test = TestNamingUtil.getCanonicalTestName(result);245		TestNamingUtil.associateCanonicTestName(test);246		247		super.beforeConfiguration(result);248	}249250	@Override251	public void onConfigurationSuccess(ITestResult result)252	{253		afterConfiguration(result);254		// passItem(result, Messager.CONFIG_PASSED);255		super.onConfigurationSuccess(result);256	}257258	@Override259	public void onConfigurationSkip(ITestResult result)260	{261		afterConfiguration(result);262		// skipItem(result, Messager.CONFIG_SKIPPED);263		super.onConfigurationSkip(result);264	}265266	@Override267	public void onConfigurationFailure(ITestResult result)268	{269		afterConfiguration(result);		270		// failItem(result, Messager.CONFIG_FAILED);271		// String test = TestNamingUtil.getCanonicalTestName(result);272		// closeLogAppender(test);273274		String errorMessage = getFailureReason(result);275		takeScreenshot(result, "CONFIGURATION FAILED - " + errorMessage);276		277		TestResultItem resultItem = createTestResult(result, TestResultType.FAIL, errorMessage,278				result.getMethod().getDescription());279		setConfigFailure(resultItem);280281		super.onConfigurationFailure(result);282	}283284	@Override285	public void onStart(ITestContext context)286	{287		String uuid = StringGenerator.generateNumeric(8);288		ParameterGenerator.setUUID(uuid);289290		ReportContext.getBaseDir(); // create directory for logging as soon as possible291292		/*293		 * //dropbox client initialization if (!Configuration.get(Parameter.DROPBOX_ACCESS_TOKEN).isEmpty()) {294		 * dropboxClient = new DropboxClient(Configuration.get(Parameter.DROPBOX_ACCESS_TOKEN)); }295		 */296		super.onStart(context);297	}298299	@Override300	public void onTestStart(ITestResult result)301	{302		super.onTestStart(result);303304		if (!result.getTestContext().getCurrentXmlTest().getTestParameters()305				.containsKey(SpecialKeywords.EXCEL_DS_CUSTOM_PROVIDER) &&306				result.getParameters().length > 0) // set parameters from XLS only if test contains any parameter at307													// all)308		{309			if (result.getTestContext().getCurrentXmlTest().getTestParameters()310					.containsKey(SpecialKeywords.EXCEL_DS_ARGS))311			{312				DSBean dsBean = new DSBean(result.getTestContext());313				int index = 0;314				for (String arg : dsBean.getArgs())315				{316					dsBean.getTestParams().put(arg, (String) result.getParameters()[index++]);317				}318				result.getTestContext().getCurrentXmlTest().setParameters(dsBean.getTestParams());319320			}321		}322		// obligatory reset any registered canonical name because for ALREADY_PASSED methods we can't do this in323		// onTestSkipped method324		TestNamingUtil.releaseTestInfoByThread();325		String test = TestNamingUtil.getCanonicalTestName(result);326		RetryCounter.initCounter(test);327328		startItem(result, Messager.TEST_STARTED);329330		TestNamingUtil.associateCanonicTestName(test);331	}332333	@Override334	public void onTestSuccess(ITestResult result)335	{336		passItem(result, Messager.TEST_PASSED);337338		// TestNamingUtil.releaseTestInfoByThread();339		super.onTestSuccess(result);340	}341342	@Override343	public void onTestFailure(ITestResult result)344	{345		String test = TestNamingUtil.getTestNameByThread();346		347		// String test = TestNamingUtil.getCanonicalTestName(result);348		int count = RetryCounter.getRunCount(test);349		int maxCount = RetryAnalyzer.getMaxRetryCountForTest();350		LOGGER.debug("count: " + count + "; maxCount:" + maxCount);351352		IRetryAnalyzer retry = result.getMethod().getRetryAnalyzer();353		if (count < maxCount && retry == null)354		{355			LOGGER.error("retry_count will be ignored as RetryAnalyzer is not declared for "356					+ result.getMethod().getMethodName());357		}358359		if (count < maxCount && retry != null && !Jira.isRetryDisabled(result))360		{361			TestNamingUtil.decreaseRetryCounter(test);362			failRetryItem(result, Messager.RETRY_RETRY_FAILED, count, maxCount);363		} else364		{365			failItem(result, Messager.TEST_FAILED);366			closeLogAppender(test);367		}368369		// TestNamingUtil.releaseTestInfoByThread();370		super.onTestFailure(result);371	}372373	@Override374	public void onTestSkipped(ITestResult result)375	{376		// TODO: improve later removing duplicates with AbstractTest377		// handle Zafira already passed exception for re-run and do nothing. maybe return should be enough378		if (result.getThrowable() != null && result.getThrowable().getMessage() != null379				&& result.getThrowable().getMessage().startsWith(SpecialKeywords.ALREADY_PASSED))380		{381			// [VD] it is prohibited to release TestInfoByThread in this place.!382			skipAlreadyPassedItem(result, Messager.TEST_SKIPPED_AS_ALREADY_PASSED);383			return;384		}385386		// handle AbstractTest->SkipExecution387		if (result.getThrowable() != null && result.getThrowable().getMessage() != null388				&& result.getThrowable().getMessage().startsWith(SpecialKeywords.SKIP_EXECUTION))389		{390			// [VD] it is prohibited to release TestInfoByThread in this place.!391			return;392		}393394		skipItem(result, Messager.TEST_SKIPPED);395		// TestNamingUtil.releaseTestInfoByThread();396		super.onTestSkipped(result);397	}398399	@Override400	public void onFinish(ITestContext context)401	{402		removeIncorrectlyFailedTests(context);403		// printContextTestsSummary(context);404		super.onFinish(context);405	}406407	/**408	 * When the test is restarted this method cleans fail statistics in test context.
...

Full Screen

Full Screen

Messager

Using AI Code Generation

copy

Full Screen

1import com.qaprosoft.carina.core.foundation.utils.messager.Messager;2import com.qaprosoft.carina.core.foundation.utils.messager.Messager.MessagerType;3import org.testng.Assert;4import org.testng.annotations.Test;5public class MessagerTest {6    public void testMessager() {7        Messager messager = new Messager(MessagerType.INFO, "Test message");8        Assert.assertEquals(messager.getMessage(), "Test message");9    }10}

Full Screen

Full Screen

Messager

Using AI Code Generation

copy

Full Screen

1Messager messager = new Messager();2messager.info("This is an info message");3messager.fail("This is a fail message");4messager.pass("This is a pass message");5messager.warn("This is a warn message");6messager.error("This is an error message");7Messager messager = new Messager();8messager.info("This is an info message");9messager.fail("This is a fail message");10messager.pass("This is a pass message");11messager.warn("This is a warn message");12messager.error("This is an error message");13Messager messager = new Messager();14messager.info("This is an info message");15messager.fail("This is a fail message");16messager.pass("This is a pass message");17messager.warn("This is a warn message");18messager.error("This is an error message");19Messager messager = new Messager();20messager.info("This is an info message");21messager.fail("This is a fail message");22messager.pass("This is a pass message");23messager.warn("This is a warn message");24messager.error("This is an error message");25Messager messager = new Messager();26messager.info("This is an info message");27messager.fail("This is a fail message");28messager.pass("This is a pass message");29messager.warn("This is a warn message");30messager.error("This is an error message");31Messager messager = new Messager();

Full Screen

Full Screen

Messager

Using AI Code Generation

copy

Full Screen

1import com.qaprosoft.carina.core.foundation.utils.messager.Messager;2public class MessagerSample {3    public static void main(String[] args) {4        Messager.sendMessage("Hello, this is sample message!");5    }6}7package com.qaprosoft.carina.demo;8import org.testng.Assert;9import org.testng.annotations.Test;10import com.qaprosoft.carina.core.foundation.utils.messager.Messager;11import com.qaprosoft.carina.core.foundation.webdriver.decorator.ExtendedWebElement;12import com.qaprosoft.carina.core.gui.AbstractPage;13import com.qaprosoft.carina.demo.gui.components.NewsItem;14import com.qaprosoft.carina.demo.gui.pages.HomePage;15public class SampleTest extends AbstractTest {16    public void testHomePage() {17        HomePage homePage = new HomePage(getDriver());18        homePage.open();19        Assert.assertTrue(homePage.isPageOpened(), "Home page is not opened!");20        NewsItem newsItem = homePage.getNews().get(2);21        String title = newsItem.getTitle();22        Messager.sendMessage("News item title: " + title);23        AbstractPage newsItemDetailsPage = newsItem.openNewsDetailsPage();24        String detailsPageTitle = newsItemDetailsPage.getTitle();25        Messager.sendMessage("News item details page title: " + detailsPageTitle);

Full Screen

Full Screen

Messager

Using AI Code Generation

copy

Full Screen

1Messager messager = new Messager(driver);2messager.sendMessage("Your message");3messager.sendImage("Your Image path");4messager.sendImage("Your Image path", "Image caption");5Messager messager = new Messager(driver);6messager.sendMessage("Your message");7messager.sendImage("Your Image path");8messager.sendImage("Your Image path", "Image caption");9Messager messager = new Messager(driver);10messager.sendMessage("Your message");11messager.sendImage("Your Image path");12messager.sendImage("Your Image path", "Image caption");13Messager messager = new Messager(driver);14messager.sendMessage("Your message");15messager.sendImage("Your Image path");16messager.sendImage("Your Image path", "Image caption");17Messager messager = new Messager(driver);18messager.sendMessage("Your message");19messager.sendImage("Your Image path");20messager.sendImage("Your Image path", "Image caption");

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.

Run Carina automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Most used methods in Messager

Test Your Web Or Mobile Apps On 3000+ Browsers

Signup for free

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful