С помощью модуля gemini/api
вы можете программно использовать Gemini в скриптах или плагинах инструментов сборки.
Для начала создайте объект Gemini со следующей конфигурацией:
var Gemini = require('gemini/api');
var gemini = new Gemini({
projectRoot: '/path/to/project',
gridUrl: 'http://example.com/grid'
...
});
new Gemini(filePath)
загружает конфигурацию из YAML-файла по заданному пути;new Gemini(filePath, overrides)
загружает конфигурацию из YAML-файла и переопределяет её свойства, используя значения, указанные вoverrides
;new Gemini(options)
создаёт конфигурационный файл согласно заданным параметрам (подробнее о конфигурации). ПолеprojectRoot
обязательно должно быть заполнено.
Получить значения параметров можно с помощью свойства gemini.config
:
var Gemini = require('gemini/api'),
gemini = new Gemini('/path/to/config');
console.log(gemini.config.rootUrl);
Функция gemini.readTests(paths)
позволяет прочитать все тесты, расположенные по указанным путям, в составе одного мета-набора. Здесь paths
– массив файлов и папок, содержащих Gemini-тесты.
По умолчанию поиск тестов проводится в папке $projectRoot/gemini
.
Функция возвращает объект promise
, разрешаемый в единый корневой набор, родительский для всех наборов верхнего уровня.
Пример функции вывода названий всех наборов, расположенных на верхнем уровне:
var Gemini = require('gemini/api'),
gemini = new Gemini('/path/to/config');
gemini.readTests()
.done(function(root) {
root.chidlren.forEach(function(suite) {
console.log(suite.name);
});
});
Наборы обладают следующими свойствами:
id
– уникальный идентификатор набора. Генерируется автоматически про загрузке набора.name
– название набора.children
– массив дочерних наборов.states
– массивState
-объектов, определенных в наборе.
State-объекты обладают следующими свойствами:
name
– имя состояния;
Методы объекта:
shouldSkip(browser)
– возвращаетtrue
, если подразумевается, что состояние будет пропущено браузером. Браузер указывается в формате WebDriver:
state.shouldSkip({browserName: 'firefox', version: '25.0'});
Для сбора эталонных изображений используется метод gemini.gather(paths, options)
, где paths
– это массив путей к файлам и папкам, откуда запускаются тестовые наборы.
Параметры:
reporters
– массив инструментов создания отчёта. Каждый элемент массива может быть представлен или строкой (используется встроенный инструментарий создания отчетов), или reporter-функцией (для создания нестандартных отчетов).grep
– регулярное выражение для фильтрации запускаемых тестовых наборов. По умолчанию, запускаются все тесты. Если данный параметр передан, запускаются только наборы с названиями, соответствующими заданному паттерну.
В результате возвращает promise
, соответствующий объекту со следующими ключами:
total
– полное число выполненных тестов;skipped
– число пропущенных тестов;errored
– число тестов, выполненных с ошибками.
В случае критической ошибки promise
отклоняется.
Для запуска тестов используется метод gemini.test(paths, options)
, где paths
– это массив путей к файлам и папкам, откуда запускаются тестовые наборы.
Параметры:
reporters
– массив инструментов создания отчёта. Каждый элемент массива может быть представлен или строкой (используется встроенный инструментарий создания отчетов), или reporter-функцией (для создания нестандартных отчетов).tempDir
– директория для хранения временных изображений (текущего состояния). По умолчанию создаётся новая временная папка.grep
– регулярное выражение для фильтрации запускаемых тестовых наборов. По умолчанию, запускаются все тесты. Если данный параметр передан, запускаются только наборы с названиями, соответствующими заданному паттерну.
В результате возвращает promise
, соответствующий объекту со следующими ключами:
total
– полное число выполненных тестов;skipped
– число пропущенных тестов;errored
– число тестов, выполненных с ошибками;passed
– число успешно пройденных тестов;failed
– число проваленных тестов.
В случае критической ошибки promise
отклоняется.
gemini.getScreenshotPath(suite, stateName, browserId)
– возвращает путь к эталонному изображению указанного состояния, для указанного браузера.- устаревший метод
gemini.buildDiff(referencePath, currentPath, diffPath)
– создаёт diff-изображение между файлами, указанными вreferencePath
иcurrentPath
, и сохраняет результат по путиdiffPath
. Предпочтительно использование методаsaveDiffTo(path)
у объекта с резултатми теста, передаваемого в обработчик событияendTest
. gemini.getBrowserCapabilites(browserId)
– возвращает свойства WebDriver для указанногоbrowserId
.gemini.browserIds
– возвращает список идентификаторов всех браузеров, используемых для тестов.