package org.syftkog.web.test.framework; import java.util.HashSet; import java.util.Set; import org.testng.annotations.DataProvider; /** * * @author BenjaminLimb */ public class PropertiesDataProvider { /** * * @return */ @DataProvider(parallel = true) public static Object[][] getTestConfigurations() { Set<TestCaseParameters> configurationsToTest = getTestCaseParametersSet(); return DataProviderHelper.transformDataSetIntoSingleParameterDataProvider(configurationsToTest); } /** * * @return */ public static Set<TestCaseParameters> getTestCaseParametersSet() { try { Set<TestCaseParameters> returnSet = new HashSet<>(); String[] browserList = PropertiesRetriever.getString("propertiesDataProvider.browsersToTest", "ff").split(","); String[] languageList = PropertiesRetriever.getString("propertiesDataProvider.languagesToTest", "en").split(","); String[] windowDimensions = PropertiesRetriever.getString("propertiesDataProvider.windowDimensionsToTest", "").split(","); String environmentType = PropertiesRetriever.getString("propertiesDataProvider.environment", null); String authenticate = PropertiesRetriever.getString("propertiesDataProvider.authenticate", null); String experiments = PropertiesRetriever.getString("propertiesDataProvider.experiments", null); String auth_user = PropertiesRetriever.getString("propertiesDataProvider.authentication.username", null); String auth_pass = PropertiesRetriever.getString("propertiesDataProvider.authentication.password", null); String auth_key = PropertiesRetriever.getString("propertiesDataProvider.authentication.key", null); for (String browserVersionPlatformKey : browserList) { for (String languageCode : languageList) { for (String windowDimension : windowDimensions) { TestCaseParameters params = new TestCaseParameters(); params.setBrowserVersionPlatform(BrowserVersionPlatform.fromKey(browserVersionPlatformKey)); if (languageCode.length() > 1) { Language language = Language.getFromCode(languageCode); params.setLanguage(language); } if (windowDimension.toLowerCase().contains("x")) { params.setWindowSize(SeleniumHelperUtil.toDimension(windowDimension)); } if(experiments != null){ params.setExperiments(experiments); } if (environmentType != null) { try { Environment env = EnvironmentType.valueOf(environmentType.toUpperCase()).load(); params.setEnvironment(env); } catch (RuntimeException e) { throw new RuntimeException("Error initializing environment " + environmentType, e); } } if (authenticate != null) { params.setAuthenticate(authenticate.equalsIgnoreCase("true")); } if (auth_user != null) { Authentication auth = new Authentication(auth_user, auth_pass); auth.setKey(auth_key); params.setAuthentication(auth); } returnSet.add(params); } } } return returnSet; } catch (RuntimeException ex) { // Since the data provider doesn't have a good way to track exceptions that are thrown. Print anything that comes up to the console. ex.printStackTrace(); throw new RuntimeException(ex); } } }