package agilpizza.internal;

import org.openqa.selenium.server.SeleniumServer;
import org.testng.annotations.AfterSuite;
import org.testng.annotations.BeforeSuite;

public class SeleniumTestCase {
	protected static SmartSelenium sel;
	protected static final String SERVER_HOST;
	protected static final String BROWSER;
	protected static final String URL;
	protected static final String CONTEXTO;
	static {
		// Ideal é funcionar o *firefox. Se falhar, ou tente outra opção abaixo
		// ou configure o .bashrc como diz no LEIAME adicionando a linha:
		// export
		// LD_LIBRARY_PATH=/usr/lib/iceweasel/:/usr/lib/iceweasel/plugins:/usr/lib/mozilla
		// -firefox/plugins:${LD_LIBRARY_PATH}
		BROWSER = System.getProperty("browser", "*firefox");
		// BROWSER = System.getProperty("browser", "*firefox
		// /usr/lib/firefox/firefox-bin");
		// BROWSER = System.getProperty("browser", "*custom
		// /usr/lib/iceweasel/iceweasel-bin");
		// BROWSER = System.getProperty("browser", "*cursom
		// /usr/lib/iceweasel/firefox-bin");
		// Alterar para a porta onde o Tomcat está sendo executado
		URL = System.getProperty("url", "http://localhost:8080/");
		// Nao precisa alterar
		CONTEXTO = System.getProperty("contexto", "/AgilPizza");
		SERVER_HOST = System.getProperty("server", "localhost");
		sel = new SmartSelenium(SERVER_HOST, SeleniumServer.DEFAULT_PORT,
				BROWSER, URL);
	}

	/**
	 * Cria uma instancia do Selenium, abre o browser.
	 * 
	 * @param serverHost
	 *            serverHost
	 * @param browserStartCommand
	 *            browserStartCommand
	 * @param browserUrl
	 *            browserUrl
	 * @param context
	 *            context
	 * @throws Exception
	 *             Caso ocorra algum problema ao abrir o browser ou ao fazer o
	 *             login.
	 */
	// @Parameters({"serverHost", "browserStartCommand", "browserUrl",
	// "context"})
	@BeforeSuite(alwaysRun = true)
	// @BeforeClass
	public static void start() throws Exception {
		try {
			sel.start();
		} catch (Exception e) {
			e.printStackTrace();
			stop();
			throw e;
		}
	}

	/**
	 * Fecha o browser.
	 * 
	 * @throws Exception
	 *             Falha ao fechar o browser.
	 */
	@AfterSuite(alwaysRun = true)
	// @AfterClass
	public static void stop() throws Exception {
		if (sel != null) {
			sel.stop();
			sel = null;
		}
	}

	@Override
	public String toString() {
		return "SERVER_HOST: " + SERVER_HOST + "\n" + "BROWSER: " + BROWSER
				+ "\n" + "URL: " + URL + "\n" + "CONTEXTO: " + CONTEXTO + "\n";
	}
}
