All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.seleniumtests.core.runner.cucumber.CustomCucumberPropertiesProvider Maven / Gradle / Ivy

There is a newer version: 5.1.15
Show newest version
package com.seleniumtests.core.runner.cucumber;

import java.util.Map;

import org.apache.commons.lang3.StringUtils;
import org.testng.xml.XmlTest;

import com.seleniumtests.core.SeleniumTestsContextManager;
import com.seleniumtests.customexception.CustomSeleniumTestsException;

import io.cucumber.core.options.Constants;
import io.cucumber.testng.CucumberPropertiesProvider;

public class CustomCucumberPropertiesProvider implements CucumberPropertiesProvider {

	Map parameters; 
	
	public CustomCucumberPropertiesProvider(XmlTest xmlTest) {
		
		String cucumberPkg = SeleniumTestsContextManager.getGlobalContext().getCucmberPkg();
    	if (cucumberPkg == null) {
    		throw new CustomSeleniumTestsException("'cucumberPackage' parameter is not set in test NG XML file (inside  tag), "
    				+ "set it to the root package where cucumber implementation resides");
    	}
		
		// use parameters from XML
		parameters = xmlTest.getAllParameters();
		
		String glue = "classpath:" + cucumberPkg.replace(".", "/");
		if (!cucumberPkg.startsWith("com.seleniumtests")) {
			glue += ",classpath:com/seleniumtests/core/runner/cucumber";
        }
		
		parameters.put(Constants.PLUGIN_PUBLISH_QUIET_PROPERTY_NAME, "true");
		parameters.put(Constants.GLUE_PROPERTY_NAME, glue);
		parameters.put(Constants.ANSI_COLORS_DISABLED_PROPERTY_NAME, "true"); // force monpochrome
		
		String tags = SeleniumTestsContextManager.getThreadContext().getCucumberTags().replace(" AND ", " and "); // for compatibility with old format
		if (!tags.trim().isEmpty()) {
			parameters.put(Constants.FILTER_TAGS_PROPERTY_NAME, tags);
		}
		
		if (!SeleniumTestsContextManager.getThreadContext().getCucumberTests().isEmpty()) {
			parameters.put(Constants.FILTER_NAME_PROPERTY_NAME, StringUtils.join(SeleniumTestsContextManager.getThreadContext().getCucumberTests(), "|"));
		}
		// Handle special regex character '?'
		parameters.computeIfPresent(Constants.FILTER_NAME_PROPERTY_NAME, (k, v) -> v != null ? v.replace("?", "\\?"): null); 
		
		parameters.put(Constants.FEATURES_PROPERTY_NAME, SeleniumTestsContextManager.getFeaturePath());
	}
	
	@Override
	public String get(String key) {
		return parameters.get(key);
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy