Программный интерфейс Gemini (в разработке)
С помощью модуля 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(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.children.forEach(function(suite) {
console.log(suite.name);
});
});
Набор (Suite-объект)
Наборы обладают следующими свойствами:
id
– уникальный идентификатор набора. Генерируется автоматически про загрузке набора.name
– название набора.children
– массив дочерних наборов.states
– массивState
-объектов, определенных в наборе.
Состояние (State-объект)
State-объекты обладают следующими свойствами:
name
– имя состояния;
Методы объекта:
shouldSkip(browser)
– возвращаетtrue
, если подразумевается, что состояние будет пропущено браузером. Браузер указывается в формате WebDriver:
state.shouldSkip({browserName: 'firefox', version: '25.0'});
Сбор эталонных изображений
Для сбора эталонных изображений используется
метод gemini.gather(paths, options)
, где paths
– это массив путей к файлам
и папкам, откуда запускаются тестовые наборы.
Параметры:
-
reporters
– массив инструментов создания отчёта. Каждый элемент массива может быть представлен или строкой (используется встроенный инструментарий создания отчетов), или reporter-функцией (для создания нестандартных отчетов). -
grep
– регулярное выражение для фильтрации запускаемых тестовых наборов. По умолчанию, запускаются все тесты. Если данный параметр передан, запускаются только наборы с названиями, соответствующими заданному паттерну. -
browsers
— массив идентификаторов браузеров, в которых должны быть запущены тесты. По умолчанию, тесты запускаются во всех браузерах, указанных в файле настроек.
В результате возвращает promise
, соответствующий объекту со следующими
ключами:
-
total
– полное число выполненных тестов; -
skipped
– число пропущенных тестов; -
errored
– число тестов, выполненных с ошибками.
В случае критической ошибки promise
отклоняется.
Выполнение тестов
Для запуска тестов используется метод
gemini.test(paths, options)
, где paths
– это массив путей к файлам
и папкам, откуда запускаются тестовые наборы.
Параметры:
-
reporters
– массив инструментов создания отчёта. Каждый элемент массива может быть представлен или строкой (используется встроенный инструментарий создания отчетов), или reporter-функцией (для создания нестандартных отчетов). -
tempDir
– директория для хранения временных изображений (текущего состояния). По умолчанию создаётся новая временная папка. -
grep
– регулярное выражение для фильтрации запускаемых тестовых наборов. По умолчанию, запускаются все тесты. Если данный параметр передан, запускаются только наборы с названиями, соответствующими заданному паттерну. -
browsers
— массив идентификаторов браузеров, в которых должны быть запущены тесты. По умолчанию, тесты запускаются во всех браузерах, указанных в файле настроек.
В результате возвращает 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
– возвращает список идентификаторов всех браузеров, используемых для тестов.
События
Экземпляр gemini
генерирует несколько событий, которые могут использоваться
внешними скриптами или плагинами:
-
startRunner
- генерируется перед стартом командыgather
илиtest
. Если из обработчика события возвращаетсяpromise
, выполнение тестов будет отложено до его разрешения. -
endRunner
- генерируется после окончания командыgather
илиtest
.