Best SeLion code snippet using com.paypal.selion.internal.platform.grid.SeleniumGridListener.isSeLionAnnotatedTestClass
Source:SeleniumGridListener.java
...82 return;83 }84 // For non-session sharing, we only allow our annotation(s) on @Test methods.85 // When this condition is true, we allow the session be created.86 if (!method.isTestMethod() && !isSeLionAnnotatedTestClass(method)) {87 return;88 }89 // For session sharing, we only allow our annotation on the class.90 // In this case the session can only be created in the @Test with the highest priority (first test, smallest91 // number) or in a @BeforeClass92 if (isSeLionAnnotatedTestClass(method)) {93 if (!isValidBeforeCondition(method)) {94 return;95 }96 // For session sharing, we need to ensure @Test methods are priority based.97 if (method.isTestMethod()) {98 // we need to ensure each @Test method is annotated99 if (isLowPriority(method)) {100 // For session sharing tests, Need to create new session only for Test (Web or Mobile) with101 // highest priority (first test, smallest number) in the class.102 testSessionSharingRules(method);103 } else {104 return;105 }106 }107 }108 // Abort if there is already an instance of AbstractTestSession at this point.109 if (Grid.getTestSession() != null) {110 return;111 }112 AbstractTestSession testSession = TestSessionFactory.newInstance(method);113 Grid.getThreadLocalTestSession().set(testSession);114 InvokedMethodInformation methodInfo = TestNGUtils.getInvokedMethodInformation(method, testResult);115 testSession.initializeTestSession(methodInfo);116 if (!(testSession instanceof BasicTestSession)) {117 // BasicTestSession are non selenium tests. So no need to start the Local hub.118 try {119 LocalGridManager.spawnLocalHub(testSession);120 } catch (NoClassDefFoundError e) {121 logger.log(Level.SEVERE, "You are trying to run a local server but are missing Jars. Do you have "122 + "SeLion-Grid and Selenium-Server in your CLASSPATH?", e);123 // No sense in continuing ... SELENIUM_RUN_LOCALLY is a global config property124 System.exit(1); // NOSONAR125 }126 }127 } catch (Exception e) { // NOSONAR128 if (e instanceof RuntimeException) {129 throw e;130 }131 // convert the checked exception into a runtime exception.132 throw new RuntimeException(e.getMessage(), e);133 }134 logger.exiting();135 }136 private boolean isSeLionAnnotatedTestClass(IInvokedMethod method) {137 Class<?> cls = method.getTestMethod().getInstance().getClass();138 final boolean isWebTestClass = cls.getAnnotation(WebTest.class) != null;139 final boolean isMobileTestClass = cls.getAnnotation(MobileTest.class) != null;140 return isMobileTestClass || isWebTestClass;141 }142 private boolean isValidBeforeCondition(IInvokedMethod method) {143 if (method.isTestMethod()) {144 return true;145 }146 return method.getTestMethod().isBeforeClassConfiguration();147 }148 private void testSessionSharingRules(IInvokedMethod method) {149 Test t = method.getTestMethod().getInstance().getClass().getAnnotation(Test.class);150 if (t != null && t.singleThreaded()) {151 if (!isPriorityUnique(method)) {152 throw new IllegalStateException(153 "All the session sharing test methods within the same class should have a unique priority.");154 } else {155 return;156 }157 }158 throw new IllegalStateException(159 "Session sharing test should have a class level @Test annotation with the property singleThreaded = true defined.");160 }161 private boolean isLowPriority(IInvokedMethod method) {162 int low = method.getTestMethod().getPriority();163 for (ITestNGMethod test : method.getTestMethod().getTestClass().getTestMethods()) {164 // ensures all test methods have the @Test annotation. Throw exception if that's not the case165 if (!isAnnotatedWithTest(test.getConstructorOrMethod().getMethod())) {166 throw new IllegalStateException(167 "Session sharing requires all test methods to define a priority via the @Test annotation.");168 }169 if (test.getEnabled() && test.getPriority() < low) {170 return false;171 }172 }173 Test t = method.getTestMethod().getConstructorOrMethod().getMethod().getAnnotation(Test.class);174 // If there is an existing session and the test method has a DP then don't create a session175 // For a data driven test method with the first data the session must be created176 // Hence return true if currentInvocationCount is 1 otherwise utilize the same session177 // by returning false178 int currentInvocationCount = method.getTestMethod().getCurrentInvocationCount();179 if (!t.dataProvider().isEmpty()) {180 return currentInvocationCount == 0;181 }182 return true;183 }184 private boolean isHighPriority(IInvokedMethod method) {185 if (!isAnnotatedWithTest(method)) {186 // Abort. There will already be an exception thrown in isLowPriority for this case.187 return true;188 }189 int high = method.getTestMethod().getPriority();190 for (ITestNGMethod test : method.getTestMethod().getTestClass().getTestMethods()) {191 if (test.getEnabled() && test.getPriority() > high) {192 return false;193 }194 }195 Test t = method.getTestMethod().getConstructorOrMethod().getMethod().getAnnotation(Test.class);196 // For a test method with a data provider197 if (!(t.dataProvider().isEmpty())) {198 int currentInvocationCount = method.getTestMethod().getCurrentInvocationCount();199 int parameterInvocationCount = method.getTestMethod().getParameterInvocationCount();200 // If the data set from the data provider is exhausted201 // It means its the last method with the data provider- this is the exit condition202 return (currentInvocationCount == parameterInvocationCount);203 }204 return true;205 }206 private boolean isAnnotatedWithTest(IInvokedMethod method) {207 return isAnnotatedWithTest(method.getTestMethod().getConstructorOrMethod().getMethod());208 }209 private boolean isAnnotatedWithTest(Method method) {210 Test t = method.getAnnotation(Test.class);211 return t != null;212 }213 private boolean isPriorityUnique(IInvokedMethod method) {214 // Logic to check priorities of all test methods are unique. This is used in Session Sharing.215 Set<Integer> check = new HashSet<Integer>();216 int length = method.getTestMethod().getTestClass().getTestMethods().length;217 int expectedSize = 0;218 for (int i = 0; i < length; i++) {219 //ignore @Test(enabled = false) methods220 if (!method.getTestMethod().getTestClass().getTestMethods()[i].getEnabled()) {221 continue;222 }223 check.add(method.getTestMethod().getTestClass().getTestMethods()[i].getPriority());224 expectedSize += 1;225 if (check.size() != expectedSize) {226 return false;227 }228 }229 return true;230 }231 /**232 * Executes when test case is finished<br>233 * 234 * Identify if webtest wants to have session open, otherwise close session<br>235 * <b>sample</b><br>236 * @webtest(browser="*firefox", <b>keepSessionOpen = true</b>)<br>237 * Analyzes failure if any238 * 239 * @see org.testng.IInvokedMethodListener#afterInvocation(org.testng.IInvokedMethod, org.testng.ITestResult)240 * 241 */242 @Override243 public void afterInvocation(IInvokedMethod method, ITestResult testResult) {244 logger.entering(new Object[] { method, testResult });245 try {246 if (ListenerManager.isCurrentMethodSkipped(this)) {247 logger.exiting(ListenerManager.THREAD_EXCLUSION_MSG);248 return;249 }250 // Abort at this point, if there is no AbstractTestSession instance.251 if (Grid.getTestSession() == null) {252 return;253 }254 // For non-session sharing, we only allow our annotation(s) on @Test methods.255 // When this condition is true, we allow the session to be closed.256 if (!method.isTestMethod() && !isSeLionAnnotatedTestClass(method)) {257 return;258 }259 // For session sharing, we only allow our annotation on the class.260 // In this case the session can only be closed in the @Test with the lowest priority (last test, biggest261 // number) or in an @AfterClass262 if (isSeLionAnnotatedTestClass(method)) {263 if (!isValidAfterCondition(method)) {264 return;265 }266 if (method.isTestMethod() && hasValidAfterCondition(method)) {267 return;268 }269 if (method.isTestMethod() && !isHighPriority(method)) {270 // For session sharing tests, Need to close session only for Test (Web or Mobile) with highest271 // priority (last test) in the class.272 return;273 }274 }275 // let's attempt to capture a screenshot in case of failure from Selenium or SeLion PageObject276 // or when there was an assertion failure....
isSeLionAnnotatedTestClass
Using AI Code Generation
1import com.paypal.selion.SeLionGridConstants;2import com.paypal.selion.annotations.WebTest;3import com.paypal.selion.configuration.Config;4import com.paypal.selion.configuration.Config.ConfigProperty;5import com.paypal.selion.configuration.ConfigManager;6import com.paypal.selion.configuration.ConfigManagerImpl;7import com.paypal.selion.configuration.ConfigManagerInternal;8import com.paypal.selion.configuration.ConfigManagerInternalFactory;9import com.paypal.selion.configuration.ConfigPropertyHolder;10import com.paypal.selion.configuration.Configuration;11import com.paypal.selion.configuration.ConfigurationManager;12import com.paypal.selion.configuration.ConfigurationManagerFactory;13import com.paypal.selion.configuration.EnvironmentPropertyHolder;14import com.paypal.selion.configuration.Property;15import com.paypal.selion.configuration.PropertyConfig;16import com.paypal.selion.configuration.PropertyConfig.ConfigPropertyHolder;17import com.paypal.selion.configuration.PropertyConfig.PropertyHolder;18import com.paypal.selion.configuration.PropertyConfig.PropertyValueHolder;19import com.paypal.selion.configuration.PropertyConfig.PropertyValueHolder.PropertyValue;20import com.paypal.selion.configuration.PropertyConfig.PropertyValueHolder.PropertyValue.PropertyValueType;21import com.paypal.selion.configuration.PropertyConfig.PropertyValueHolder.PropertyValue.PropertyValueType.PropertyValueDataType;22import com.paypal.selion.configuration.PropertyConfig.PropertyValueHolder.PropertyValue.PropertyValueType.PropertyValueDataType.PropertyValueDataFormat;23import com.paypal.selion.configuration.PropertyHolderFactory;24import com.paypal.selion.configuration.PropertyReader;25import com.paypal.selion.configuration.PropertyReaderFactory;26import com.paypal.selion.configuration.PropertyReaderInternal;27import com.paypal.selion.configuration.PropertyReaderInternalFactory;28import com.paypal.selion.configuration.PropertyReaderInternalFactory.PropertyReaderType;29import com.paypal.selion.configuration.PropertyReaderTypeFactory;30import com.paypal.selion.configuration.PropertyReaderTypeFactory.PropertyReaderTypeInternal;31import com.paypal.selion.configuration.PropertyReaderTypeInternalFactory;32import com.paypal.selion.configuration.PropertyReaderTypeInternalFactory.PropertyReaderTypeInternalInternal;33import com.paypal.selion.configuration.PropertyReaderTypeInternalInternalFactory;34import com.paypal.selion.configuration.RuntimeConfig;35import com.paypal.selion.configuration.RuntimeConfig.ConfigPropertyHolder;36import com.paypal.selion.configuration.RuntimeConfig.PropertyHolder;37import com.paypal.selion.configuration.RuntimeConfig.PropertyValueHolder;38import com.paypal.selion.configuration.RuntimeConfig.PropertyValueHolder.PropertyValue;39import com.paypal.selion.configuration.RuntimeConfig.PropertyValueHolder.PropertyValue.PropertyValueType;40import com.paypal
isSeLionAnnotatedTestClass
Using AI Code Generation
1import java.io.File;2import org.apache.commons.io.FileUtils;3import org.testng.TestNG;4import org.testng.annotations.Test;5import com.paypal.selion.configuration.Config;6import com.paypal.selion.configuration.Config.ConfigProperty;7import com.paypal.selion.internal.platform.grid.SeleniumGridListener;8import com.paypal.selion.platform.grid.Grid;9public class IsSeLionAnnotatedTestClassTest {10 public void testIsSeLionAnnotatedTestClass() throws Exception {11 Config.setConfigProperty(ConfigProperty.SELENIUM_HOST, "localhost");12 Config.setConfigProperty(ConfigProperty.SELENIUM_PORT, "4444");13 Config.setConfigProperty(ConfigProperty.GRID_CONFIG, "src/test/resources/gridconfig/SeLionConfig.json");14 Config.setConfigProperty(ConfigProperty.SELENIUM_TIMEOUT_INTERVAL, "1000");15 Config.setConfigProperty(ConfigProperty.SELENIUM_RETRY_COUNT, "0");16 Config.setConfigProperty(ConfigProperty.SELENIUM_RETRY_INTERVAL, "0");17 Config.setConfigProperty(ConfigProperty.SELENIUM_HUB_STARTUP_TIMEOUT, "30000");18 Config.setConfigProperty(ConfigProperty.SELENIUM_NODE_STARTUP_TIMEOUT, "30000");19 Config.setConfigProperty(ConfigProperty.SELENIUM_BROWSER_TIMEOUT, "30000");20 Config.setConfigProperty(ConfigProperty.SELENIUM_PAGE_LOAD_TIMEOUT, "30000");21 Config.setConfigProperty(ConfigProperty.SELENIUM_IMPLICIT_WAIT_TIMEOUT, "30000");22 Config.setConfigProperty(ConfigProperty.SELENIUM_EXPLICIT_WAIT_TIMEOUT, "30000");23 Config.setConfigProperty(ConfigProperty.SELENIUM_WAIT_FOR_ELEMENT_TIMEOUT, "30000");24 Config.setConfigProperty(ConfigProperty.SELENIUM_WAIT_FOR_PAGE_TIMEOUT, "30000");25 Config.setConfigProperty(ConfigProperty.SELENIUM_WAIT_FOR_JAVASCRIPT_TIMEOUT, "30000");26 Config.setConfigProperty(ConfigProperty.SELENIUM_ELEMENT_LOCATOR_TIMEOUT, "30000");27 Config.setConfigProperty(ConfigProperty.SELENIUM_ELEMENT_LOCATOR_CACHE_TIMEOUT, "30000");28 Config.setConfigProperty(ConfigProperty.SELENIUM_ELEMENT_LOCATOR_CACHE_SIZE, "30000");29 Config.setConfigProperty(ConfigProperty.SELENIUM_WEBDRIVER_LOGGING_LEVEL, "INFO");30 Config.setConfigProperty(ConfigProperty.SELENIUM_WEBDRIVER_LOGGING_ENABLED, "true");31 Config.setConfigProperty(Config
isSeLionAnnotatedTestClass
Using AI Code Generation
1import java.io.File;2import java.io.IOException;3import java.lang.reflect.Method;4import java.util.ArrayList;5import java.util.List;6import java.util.Map;7import java.util.Set;8import java.util.logging.Level;9import java.util.logging.Logger;10import org.apache.commons.io.FileUtils;11import org.apache.commons.lang.StringUtils;12import org.openqa.grid.common.RegistrationRequest;13import org.openqa.grid.internal.Registry;14import org.openqa.grid.internal.RemoteProxy;15import org.openqa.grid.internal.TestSession;16import org.openqa.grid.internal.listeners.Prioritizer;17import org.openqa.grid.internal.listeners.RegistrationListener;18import org.openqa.grid.selenium.proxy.DefaultRemoteProxy;19import org.openqa.grid.web.Hub;20import org.openqa.selenium.remote.DesiredCapabilities;21import com.paypal.selion.annotations.WebTest;22import com.paypal.selion.configuration.Config;23import com.paypal.selion.configuration.Config.ConfigProperty;24import com.paypal.selion.internal.platform.grid.browsercapabilities.DefaultCapabilitiesBuilder;25import com.paypal.selion.internal.platform.grid.browsercapabilities.SeLionCapabilityHelper;26import com.paypal.selion.internal.platform.grid.browsercapabilities.SeLionCapabilityType;27import com.paypal.selion.internal.platform.grid.browsercapabilities.SeLionCapabilities;28import com.paypal.selion.internal.platform.grid.browsercapabilities.SeLionCapabilityHelper.CapabilityType;29import com.paypal.selion.internal.platform.grid.browsercapabilities.SeLionCapabilityHelper.NodeType;30import com.paypal.selion.logger.SeLionGridLogger;31import com.paypal.selion.pojos.SeLionGridConstants;32import com.paypal.selion.utils.ConfigParser;33public class SeleniumGridListener implements RegistrationListener, Prioritizer {34 private static final Logger LOGGER = SeLionGridLogger.getLogger();35 private static final String SELENIUM_GRID_LISTENER = "SeleniumGridListener";36 private static final String NODE_CONFIG_FILE = "nodeConfigFile";37 public void beforeRegistration(RegistrationRequest request) {38 if (isAlreadyRegistered(request)) {39 return;40 }41 updateCapabilities(request);42 }43 public void afterRegistration(RemoteProxy proxy) {
isSeLionAnnotatedTestClass
Using AI Code Generation
1import com.paypal.selion.internal.platform.grid.SeleniumGridListener;2import org.testng.ITestContext;3import org.testng.annotations.Test;4public class TestClass {5 public void testMethod() {6 System.out.println("Test method");7 }8 public void testMethod2() {9 System.out.println("Test method 2");10 }11 public void testMethod3() {12 System.out.println("Test method 3");13 }14 public void testMethod4() {15 System.out.println("Test method 4");16 }17 public void testMethod5() {18 System.out.println("Test method 5");19 }20 public void testMethod6() {21 System.out.println("Test method 6");22 }23 public String toString() {24 return "TestClass";25 }26 public boolean equals(Object o) {27 if (this == o) return true;28 if (o == null || getClass() != o.getClass()) return false;29 TestClass testClass = (TestClass) o;30 return toString().equals(testClass.toString());31 }32 public int hashCode() {33 return toString().hashCode();34 }35 public static void main(String[] args) {36 ITestContext context = new TestClass();37 SeleniumGridListener listener = new SeleniumGridListener();38 listener.onStart(context);39 }40}
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!!