Рубрики
Без рубрики

Визуальная автоматизация с помощью Applitools

Цель этой статьи – рассмотреть, как мы можем интегрировать платформу Applitools для добавления AI / ML в нашу… С тегами applitools, визуальное тестирование, selenium, java.

Цель этой статьи – рассмотреть, как мы можем интегрировать платформу Applitools для добавления AI/ML в наши существующие функциональные тесты веб-интерфейса.

Введение в Applitools

Applitools – это “еще один” инструмент, который вы можете использовать в сочетании с Selenium для обработки сложных визуальных типов тестирования, которые вам необходимо выполнить, и оставьте тестирование более функционального типа инструментам, которые предназначены для этого, таким как Selenium. Applitools предоставляет простую в использовании платформу для просмотра визуальных различий между экранами, которые могут обрабатывать различные конфигурации, которые мы рассмотрим позже (например, порт просмотра, типы устройств и т.д.). Он обеспечивает интеграцию с несколькими тестовыми фреймворками и языками программирования, чтобы любая команда могла адаптироваться к своим потребностям.

Интеграция Applitools с тестовыми фреймворками

Существует множество SDK для большинства языков программирования, которые позволяют вам делать снимки и загружать их для визуальной проверки в Applitools. Мы рассмотрим, как начать с интеграции в тестовый проект на базе Java.

Зависимости и SDK

В разделе управления зависимостями maven добавьте следующие зависимости:

 
   
       com.applitools
       eyes-selenium-java3
       ${eyes-java3.version}
   
   
       com.applitools
       eyes-images-java3
       ${eyes-java3.version}
    
 

Перед началом выполнения любого теста selenium нам необходимо инициализировать объекты Eyes и Eyes Runner, чтобы получать изображения в рамках наших тестов.

Пример инициализации бегуна:

 EyesRunner runner;
        if (visualGrid) {
            LOG.info("Applitools: Running on Visual Grid");
            runner = new VisualGridRunner(concurrency);
        } else {
            LOG.info("Applitools: Running on Classic Runner");
            runner = new ClassicRunner();
        }
        Configuration config = new Configuration();
        config.addBrowser(1920, 1080, BrowserType.CHROME)
                .addBrowser(1920, 1080, BrowserType.FIREFOX)
                .addDeviceEmulation(DeviceName.iPhone_X, ScreenOrientation.PORTRAIT)
                .setApiKey(apiKey)
                .setBatch(batch)
                .setMatchLevel(!matchLevel.isEmpty() ? MatchLevel.valueOf(matchLevel) : MatchLevel.LAYOUT);

Давайте рассмотрим аргументы приведенного выше примера. Сначала нам нужно установить тип бегуна, и в настоящее время Applitools поддерживает два варианта:

  • Classic Runner : Applitools обработает изображения, сделанные в вашем локальном исполняемом браузере/устройстве
  • Visual Grid Runner : Applitools дает вам возможность отправлять изображения и обрабатывать их в различных типах конфигураций (браузеры/устройства), масштабируя ваши тесты на разных платформах, охватывая больше визуальных контрольных точек. Далее у нас есть Ключ API , который предоставляется пользователем-администратором платформы. Пакет можно использовать для установки имени пакета, которое будет использоваться для хранения тестов для этого бегуна, и, наконец, Уровня соответствия , который является типом проверок, которые будут использоваться для сравнения контрольных точек.

Applitools Eyes может протестировать пользовательский интерфейс на 4 различных уровнях сравнения: Точный (Уровень Соответствия.ТОЧНОЕ) – сравнение пикселей с пикселями, не рекомендуется.

Строгий (Уровень Соответствия. STRICT) – Strict сравнивает все, включая содержимое (текст), шрифты, макет, цвета и положение каждого из элементов. Строгий знает, что нужно игнорировать изменения рендеринга, которые не видны человеку. Строгий – рекомендуемый уровень соответствия при выполнении регрессионных тестов в одном браузере/операционной системе (strict не предназначен для кроссбраузерного сравнения).

Содержание (Уровень Соответствия. CONTENT) – Content работает аналогично Strict, за исключением того факта, что он игнорирует цвета.

Макет (Соответствует Уровню. LAYOUT) – Layout, как следует из его названия, сравнивает макеты (т.е. структуру) базового и фактического изображений. Он проверяет выравнивание и относительное положение всех элементов на странице, таких как: кнопки, меню, текстовые области, абзацы, изображения и столбцы. Он игнорирует изменения содержимого, цвета и других стилей между страницами.

Теперь давайте посмотрим, как инициализировать экземпляр Eyes

Eyes eyes = new Eyes(runner);
eyes.setConfiguration(config);
eyes.setForceFullPageScreenshot(true);
eyes.setStitchMode(StitchMode.CSS);
eyes.setWaitBeforeScreenshots(2000);
eyes.setLogHandler(new FileLogger("target/eyes.log", true, true));

Теперь, когда мы инициализировали наши глаза перед нашим тестом, мы действительно можем перейти на страницу с selenium, взять базовое изображение со страницы и отправить его в Applitools.

log.info("Start Visual Check From Applitools");
int matchTimeout = 10000;// in milli seconds
if (!eyes.getIsOpen()) {
    eyes.open(driver, "VisualTest","TestName");
}
    eyes.checkWindow(matchTimeout, "ScreenshotName");
}

С помощью приведенных выше команд мы создаем новый тест и отправляем изображение страницы в Applitools для визуального сравнения.

Получение результатов от Applitools

Сначала нам нужно закрыть экземпляр eyes после завершения выполнения теста с помощью

boolean testFailed = result.getStatus() == ITestResult.FAILURE;
if (!testFailed) {
      eyes.closeAsync();
     } else {
      eyes.abortAsync();
     }
}

Это завершает последовательность контрольных точек, а затем асинхронно ожидает результатов тестирования.

Теперь мы можем получить результаты, позвонив:

TestResultsSummary allTestResults = runner.getAllTestResults(false);
for (TestResultContainer result1 : allTestResults) {
    Throwable ex = result1.getException();
    TestResults result = result1.getTestResults();
    if (result == null) {
    LOG.info("No test results information available\n");
    } else {
String resultReport = String.format("URL = %s, AppName = %s, testname = %s, Browser = %s,OS = %s, viewport = %dx%d, matched = %d,mismatched = %d, missing = %d,aborted = %s\n", result.getUrl(),
 result.getAppName(),
 result.getName(),
 result.getHostApp(),
 result.getHostOS(),
 result.getHostDisplaySize().getWidth(),
 result.getHostDisplaySize().getHeight(),
 result.getMatches(),
 result.getMismatches(),
 result.getMissing(),
 (result.isAborted() ? "aborted" : "no"));
 LOG.info("Applitools Results: " + resultReport);
}

Таким образом, таким образом, мы можем получать результаты и публиковать их на наших платформах отчетов о тестировании.

Интеграция Applitools CI/CD

Чтобы просмотреть результаты тестирования непосредственно на вашем сервере Jenkins CI, вам сначала необходимо установить плагин Applitools Jenkins.

Затем нам нужно добавить следующий раздел в ваш этап конвейера Дженкинса для запуска визуальных тестов:

node {
     stage('Visual Tests') { 
         Applitools() {
               sh 'mvn clean test'
         }
     }
}

После этого результаты будут доступны во встроенном iframe в Jenkins:

Оригинал: “https://dev.to/giannispapadakis/visual-automation-with-applitools-2b6n”