Как захватывать изображения и прикреплять их к отчетам Cucumber (Jenkins) с помощью Selenium Hub, Node и Remote Webdriver? - PullRequest
0 голосов
/ 29 мая 2019

В настоящее время я запускаю свои тесты автоматизации в облаке, используя экземпляр Ubuntu.

Экземпляр Ubuntu имеет запущенный экземпляр Jenkins, а также Selenium Hub и Node.Кажется, что снимки экрана не сохраняются в builds \ 3 \ cucumber-html-reports \ embeddings в системе Ubuntu, однако в системе Windows эта проблема не существует.

В настоящее время я добавил приведенную ниже логику для захвата и прикрепления изображений к отчетам Jenkins Cucumber, однако в настоящее время изображения не прикрепляются к отчетам:

@After
public void after(Scenario scenario) {
    if (scenario.isFailed()) {
        try {
            WebDriver augmentedDriver = new Augmenter().augment(getDriver());
            byte[] s = ((TakesScreenshot)augmentedDriver).getScreenshotAs(OutputType.BYTES);
            scenario.embed(s, "image/png");

Пример отчета (создан в JenkinsОбратите внимание, что при локальном запуске тестов изображения сохраняются и прикрепляются к отчетам.enter image description here

Ответы [ 2 ]

0 голосов
/ 31 мая 2019

У меня нет прямого ответа на проблему с Ubuntu.Но попробуйте добавить путь к захваченным изображениям в отчет об огурцах в виде HTML-ссылок.

@After
public void after(Scenario scenario){
   if (scenario.isFailed()) {
        try {
            WebDriver augmentedDriver = new Augmenter().augment(getDriver());
            File path = ((TakesScreenshot)augmentedDriver).getScreenshotAs(OutputType.FILE);
            FileUtils.copyFile(path,new File(localRepoPath));
            String html = "<html><body><a href=\">" + localRepoPath + "\"> screenshot </a></body></html>";
            scenario.embed(html.getBytes(), "text/html");
       }catch(Exception e){
          // Do Something
       }
  }        
}
0 голосов
/ 29 мая 2019

Если это не сработает, то вы можете подумать о нижеследующем способе прикрепления снимка экрана, чтобы сообщить о Дженкинсе.

Крючки выглядят как показано ниже -

@After
    public void afterScenario(Scenario scenario){
        try{
            if(scenario.isFailed()){
                ExtentTestManager.addScreenShotsOnFailure();
    // More code goes here....       

Способ захвата изображения - пожалуйста, настройте путь в соответствии с вашими потребностями.

public static void addScreenShotsOnFailure() {
    i = i + 1;
    File scrFile = ((TakesScreenshot) DriverManager.getDriver()).getScreenshotAs(OutputType.FILE);

    Date d = new Date();
    SimpleDateFormat formatter = new SimpleDateFormat("E dd MMM HH:mm:ss z yyyy");  
    String strDate = formatter.format(d);
    screenshotName = strDate.replace(":", "_").replace(" ", "_") + "_"+i+".jpg";

    try {
        FileUtils.copyFile(scrFile, new File(System.getProperty("user.dir") + "/target/extent-report/" + screenshotName));
    } catch (IOException e) {
        e.printStackTrace();
    }
}
...