Конфигурация 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
.
Настройки браузеров
Эти настройки определяют конфигурацию каждого используемого для тестов браузера. Каждая опция может быть задана одним из двух способов:
-
В корневой секции конфигурационного файла. При этом она будет влиять на все используемые браузеры.
-
Внутри секции
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