package com.github.andreptb.fitnesse.plugins;
import org.openqa.selenium.Keys;
import com.github.andreptb.fitnesse.util.FitnesseMarkup;
import fitnesse.plugins.PluginException;
import fitnesse.plugins.PluginFeatureFactoryBase;
import fitnesse.testsystems.slim.tables.SlimTableFactory;
/**
* Plugin factory registers selenium table type
*/
public class SeleniumPluginFeatureFactory extends PluginFeatureFactoryBase {
/**
* Utility to process FitNesse markup so can be used by Selenium WebDriver
*/
private FitnesseMarkup fitnesseMarkup = new FitnesseMarkup();
/**
* SeleniumScriptTable registering
*
* @param slimTableFactory Instance responsible for registering slim tables
*/
@Override
public void registerSlimTables(SlimTableFactory slimTableFactory) throws PluginException {
slimTableFactory.addTableType(SeleniumScriptTable.TABLE_KEYWORD, SeleniumScriptTable.class);
registerSpecialKeysVariables();
}
/**
* Registers selenium {@link Keys} as system properties, so can be used by wiki pages as ${KEY_XXX}
*/
private void registerSpecialKeysVariables() {
for (Keys key : Keys.values()) {
this.fitnesseMarkup.registerKeyboardSpecialKey(key.name(), key.toString());
}
}
}