Доброго времени суток. Есть вопрос по кроссбраузерному тестированию. Сам я еще не сталкивался по работе с подобной задачей, но для себя, понимая что такая задача рано или поздно встанет, бывало, задумывался. Как только встает вопрос кроссбраузерности, так сразу везде встречаешь упоминания SauceLab или Selenium Grid. К чему пока пришел сам, опишу ниже, а вопрос топика в следующем: насколько описанный мною ниже подход имеет право на жизнь, возможно кто-то может указать на принципиальные недостатки, которые я смогу выявить только в процессе реализации на гипотетическом проекте.
Берется стандартный метод для объявления вебдрайвера, принимающий в себя String как триггер для определения требуемого драйвера:
public static void runDriver(String browser) {
if (browser.equals("chrome")) {
System.setProperty("webdriver.chrome.driver", "C:\\Selenium\\chromedriver.exe");
driver = new ChromeDriver();
} else if (browser.equals("firefox")) {
driver = new FirefoxDriver();
} else if (browser.equals("ie")) {
System.setProperty("webdriver.ie.driver", "C:\\Selenium\\IEDriverServer.exe");
driver = new InternetExplorerDriver();
}
}
и стандартный data-driven test:
import Common.TestHelper;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import java.util.Arrays;
import java.util.Collection;
@RunWith(Parameterized.class)
public class CrossbrowserDdt {
private String browser;
@Parameterized.Parameters
public static Collection testData() {
return Arrays.asList(new Object[][]{
{"chrome"},
{"firefox"},
{"ie"}
});
}
public CrossbrowserDdt(String browser) {
this.browser = browser;
}
@Test
public void multipleTests() {
TestHelper.runDriver(browser);
TestHelper.quit();
}
}
Таким образом каждый тест будет прогоняться три раза, по очереди в каждом из браузеров. Достаточно просто и удобно на первый взгляд, как по-мне. Какие потенциальные проблемы вижу я.
Во-первых, возможны проблемы с версионностью и доступностью драйверов и прочие environmental issues на удаленном сервере, не всегда возможно им управлять и иметь оперативный доступ, обращаться к вебдрайверу в облаке наверное проще. Никакого IE на линуксовом сервере само собой не будет.
Во-вторых отчетность. Подобные тесты будут помечены в репорте как ‘someTestName[0]’, ‘someTestName[1]’, ‘someTestName[2]’. И хоть последовательность всегда будет идентичной - 0 - всегда хром, 1 - всегда мозилла и 2 - всегда эксплорер, все-таки встанет задача эту информацию как-то более приемлемо группировать.
В-третьих, что-то было в голове, но вылетело. В общем буду благодарен за полезные советы.