Конфигурация Gemini

Конфигурационный файл Gemini .gemini.yml находится в корне проекта.

Пример содержимого файла со всеми доступными настройками выглядит следующим образом (на практике вам понадобится указать всего лишь несколько специфичных для вашего проекта опций):

rootUrl: https://example.com/root
gridUrl: http://webdriber.example.com
desiredCapabilities:
  commonThing: value
calibrate: false
tolerance: 3.5
strictComparison: false
httpTimeout: 5000
screenshotsDir: './screens'
windowSize: 1600x1080
sessionsPerBrowser: 2
suitesPerSession: 100
retry: 3

browsers:
  chrome-latest:
    desiredCapabilities:
      version: "37.0"
      browserName: chrome
      platform: LINUX

  firefox-latest:
    rootUrl: https://example.com/special-for-ff
    screenshotsDir: './ff-screens'
    calibrate: true
    desiredCapabilities:
      version: "31.0"
      browserName: firefox
      platform: LINUX

sets:
  ff:
    files:
     - gemini/ff
    browsers:
     - firefox-latest
  chrome:
    files:
     - gemini/chrome
    browsers:
     - chrome-latest

system:
  projectRoot: ../project
  sourceRoot: ../project/src
  plugins:
    teamcity: true
  debug: true
  parallelLimit: 3
  diffColor: '#ff0000'
  referenceImageAbsence: 'error'
  coverage:
    enabled: true
    exclude:
     - libs/**
     - "*.blocks/**/*.tests/blocks/**"
     - "*.blocks/**/*.tests/*.blocks/**"
    html: false

Системные настройки

В секции system перечисляются глобальные настройки gemini. Опции из этой секции нельзя задать побраузерно.

  • projectRoot – корневой каталог проекта. Относительно этого каталога будут назначены все относительные пути в других настройках и опциях. По умолчанию, это каталог, в котором расположен конфигурационный файл.

  • sourceRoot – папка, в которой располагаются исходные файлы. Локальные исходные файлы будут использованы для построения отчета о покрытии при использовании source map в том случае, если не удастся скачать их с тестируемого URL. По умолчанию, совпадает с projectRoot.

  • plugins - список используемых плагинов в формате имяПлагина: опции. Пример:

yaml plugins: teamcity: true saucelabs: username: user password: pass

Каждый плагин — это установленный npm пакет с именем gemini-имяПлагина.

  • debug – включить отладочный вывод в терминал.

  • parallelLimit – число браузеров, запускаемых gemini параллельно. По умолчанию запускаются все, но иногда (например, при использовании облачных сервисов вроде Sauce Labs) это число необходимо контролировать.

  • diffColor – определяет цвет выделения различий между изображениями. Задаётся в #RRGGBB-формате. По умолчанию, magenta (#FF00FF).

  • referenceImageAbsence – считать отсутствие эталонного шаблона предупреждением (warning) или ошибкой (error). По-умолчанию ошибка (error).

  • coverage - gemini может собирать статистику покрытия CSS-кода тестами. Вы можете получить отчет о покрытии даже если используете препроцессоры и минификаторы, поскольку инструмен поддерживает source maps. В этой секции несколько настроек:

  • enabled - установите в значение true для включения сбора покрытия.

  • exclude – массив путей или glob-масок, которые следуют исключить из отчета о покрытии. Например:

    yaml system: coverage: exclude: - libs/** - path/to/some.css -

  • html - установите в значения false чтобы не генерировать html-отчет и использовать только JSON.

Настройки браузеров

Эти настройки определяют конфигурацию каждого используемого для тестов браузера. Каждая опция может быть задана одним из двух способов:

  1. В корневой секции конфигурационного файла. При этом она будет влиять на все используемые браузеры.

  2. Внутри секции browsers. В этом случае, опция влияет только на конкретный браузер и перезаписывает значение, заданное в корневой секции.

Формат секции browsers:

browsers:
  <browser-id>:
    <setting>: <value>
    <setting>: <value>

Значение <browser-id> используется для идентификации браузера в отчётах и в именах файлов скриншотов.

Список бразуерных настроек:

  • rootUrl (обязательный параметр) – корневой адрес вашего веб-сайта. Целевые адреса ваших тестов будут назначены относительно корневого URL.

  • gridUrl (обязательный параметр) – адрес WebDriver, используемого для создания скриншотов. По умолчанию http://localhost:4444/wd/hub.

  • desiredCapabilities - требования к WebDriver. Значение, заданное для конкретного бразуеры будет объединено со значением из корневой секции вместо перезаписи.

  • calibrate - нужно ли данному бразуеру выполнять процедуру калибровки. Эта процедура позволяет корректно захватить изображение, даже если текущая реализация WebDriver захватывает интерфейс бразуера вместе с содержимым страницы. Включено по умолчанию. Если вы уверены, что используемому вами драйверу не нужна эта процедура, установите значение опции в false.

  • httpTimeout - время ожидания HTTP-запросов к WebDriver в миллисекундах. По умолчанию, используется значение, заданное сервером.

  • screenshotsDir – каталог для хранения файлов со снимками экрана, указанный относительно projectRoot. По умолчанию – gemini/screens.

  • tolerance - определяет предельно допустимое различие между цветами по метрике CIEDE2000. Используется только в нестрогом режиме. По умолчанию равно 2.3, этого должно хватить для большинства случаев. Увеличение глобального значения не рекомендуется, предпочтительнее задать порог для отдельных наборов или состояний.

  • strictComparison – считать тест провальным в случае любого рода ошибки. По умолчанию, только заметные различия считаются провалом теста.

  • windowSize – размеры окна браузера. Например, 1600x1200. Если не задано, размер окна зависит от конкретного драйвера.

  • sessionPerBrowser - количество сессий WebDriver, запускаемых параллельно для конкретного браузера. По умолчанию 1. Установите большее значение для ускорения тестов.

  • suitesPerSession - максимальное количество тестовых наборов, выполняемых в одной сессии WebDriver. При достижении лимита старая сессия закрыавется и запускается новая. По умолчанию .inf (нет ограничений). Установите меньшее значение, если вы испытываете проблемы со стабильностью браузера или драйвера.

  • retry – максимальное количество перезапусков упавшего с критической ошибкой теста. Если не задано, то упавшие тесты не будут перезапущены (значение по умолчанию — 0).

Тестовые наборы

Тестовые наборы предоставляют возможность связать тесты с определенными браузерами.

Формат секции sets:

sets:
  <set-name>:
    files:
     - <dir-with-test-files>
     ...
    browsers:
     - <browser-id-to-test-in>
     ...
  • files - список файлов с тестами или директорий с файлами. Пути должны задаваться относительно корня проекта. По-умолчанию директория gemini. Значение может быть строкой, если указывается только один файл или директория.

  • browsers - список идентификаторов браузеров, в которых должны запускаться тесты, указанные в секции files. По-умолчанию - все браузеры.

Если не задано ни одного тестового набора, до будет создан тестовый набор all со всеми значениями, заданными по-умолчанию.

Переопределение настроек

Все параметры могут быть переопределены аргументами командной строки или переменными окружения согласно следующим приоритетам:

  • Аргумент командной строки имеет наивысший приоритет. Он переопределяет переменную окружения и значение в конфигурационном файле.

  • Переменная окружения – вторая по приоритету. Она переопределяет значение, заданное в конфигурационном файле.

  • Значение в конфигурационном файле – последнее по приоритету.

  • Если не задан ни один из указанных параметров, используется значение по умолчанию.

Чтобы переопределить настройку при помощи аргумента командной строки, преобразуйте полный путь к опции в --kebab-case. Например, если вы хотите запустить тесты на другом корневом адресе, выполните:

gemini test --root-url http://example.com

Чтобы сохранить скриншоты для IE9 в другую директорию (подразумевается, что в конфигурационном файле есть браузер с идентификатором ie9):

gemini gather --browsers-ie9-screenshots-dir ./ie9-screens

Чтобы переопределить настройку при помощи переменной окружения, преобразуйте полный путь к опции в camel_case и добавьте префикс gemini_. Предыдущие примеры могут быть переписаны с использованием переменных окружения:

gemini_root_url=http://example.com gemini test
gemini_browsers_ie9_screenshots_dir=./ie9-screens gemini gather