url-decorator
Обзор
Используйте плагин url-decorator, чтобы автоматически дополнять урлы в testplane-тестах нужными query-параметрами.
Установка
npm install -D url-decorator
Настройка
Необходимо подключить плагин в разделе plugins
конфига testplane
:
module.exports = {
plugins: {
"url-decorator": {
enabled: true,
url: {
query: [
{
name: "text",
value: "foo",
},
// другие query- параметры...
],
},
},
// другие плагины testplane...
},
// другие настройки testplane...
};
Расшифровка параметров конфигурации
Параметр | Тип | По умолчанию | Описание |
enabled | Boolean | true | Включить / отключить плагин. |
url | Object | N/A | Объект с описанием query-параметров, которые должны добавляться к каждому урлу в тесте. |
enabled
Включить или отключить плагин. По умолчанию: true
.
url
Параметр url
представляет собой объект с полем query
, значением которого может быть как массив, так и объект.
- query как массив
- query как объект
module.exports = {
plugins: {
'url-decorator': {
enabled: true,
url: {
query: [
{
name: '<param-1>', // укажите имя query-параметра
value: '<param-1-value>', // укажите значение query-параметра
mode: 'concat', // или 'override'
browsers: /.*/ // по умолчанию: для всех браузеров
},
{
name: '<param-2>', // укажите имя query-параметра
value: '<param-2-value>', // укажите значение query-параметра
mode: 'concat', // или 'override'
browsers: /.*/ // по умолчанию: для всех браузеров
},
// остальные query-параметры...
]
}
},
// другие плагины testplane...
},
// другие настройки testplane...
};
module.exports = {
plugins: {
'url-decorator': {
enabled: true,
url: {
query: {
'<param-1>': { // укажите имя query-параметра
value: '<param-1-value>', // укажите значение query-параметра
mode: 'concat', // или 'override'
browsers: /.*/ // по умолчанию: для всех браузеров
},
'<param-2>': { // укажите имя query-параметра
value: '<param-2-value>', // укажите значение query-параметра
mode: 'concat', // или 'override'
browsers: /.*/ // по умолчанию: для всех браузеров
},
// остальные query-параметры...
}
},
},
// другие плагины testplane...
},
// другие настройки testplane...
};
Здесь query-параметр — это объект со следующими полями:
Параметр | Тип | По умолчанию | Описание |
name | String | N/A | Имя query-параметра. Если query задается как объект, то это поле не указывается, так как сам ключ является именем query-параметра. |
value | String или Number или Array | N/A | Значение query-параметра. |
mode | String | "concat" | Режим объединения параметров: concat или override. |
browsers | String или RegExp или Array | N/A | Список браузеров, к которым будет применен query-параметр. |
name
Имя query-параметра. Если query
задается как объект, то это поле не указывается, так как сам ключ является именем query-параметра.
value
Значение query-параметра. Может задаваться как строка, число или массив строк и/или чисел.
mode
Режим объединения параметров. Возможны 2 значения: concat
(склеивать параметры) и override
(перетирать параметры). По умолчанию: concat
.
Режим concat
Например:
- вы хотите добавить query-параметр
nick
, который уже есть в урле вашего тестаhttp://localhost/test/?nick=bilbo
; - при этом вы не хотите, чтобы дополнительное значение параметра
nick
перетерло то значение, что уже есть в урле.
В этом случае вам нужно указать для параметра mode: 'concat'
или вообще не указывать mode
(воспользовавшись режимом по умолчанию):
url: {
query: [
{
name: "nick",
value: "torin",
mode: "concat", // или можно вообще не указывать mode, так как по умолчанию mode = 'concat'
},
];
}
Тогда результирующим урлом в тесте будет: http://localhost/test/?nick=bilbo&nick=torin
.
Также вы можете указать в значении value
массив значений для параметра nick
:
url: {
query: [
{
name: "nick",
value: ["torin", "gloin"],
mode: "concat", // или можно вообще не указывать mode, так как по умолчанию mode = 'concat'
},
];
}
Тогда результирующим урлом в тесте будет: http://localhost/test/?nick=bilbo&nick=torin&nick=gloin
.
Режим override
Если же вы хотите перетереть параметр nick
, то нужно установить режим override
:
url: {
query: [
{
name: "nick",
value: "torin",
mode: "override",
},
];
}
Тогда результирующим урлом в тесте будет: http://localhost/test/?nick=torin
.
browsers
Браузер или список браузеров, или паттерн регулярного выражения для браузеров, к которым нужно применять заданные query-параметры. Если параметр browsers
не указан, то query-параметры будут применяться для всех браузеров.
Ниже приведены прим еры задания параметра browsers
всеми способами:
- строка
- массив строк
- regexp
- массив regexp / строк
url: {
query: [
{
name: 'nick',
value: 'gloin',
browsers: 'firefox'
}
]
}
url: {
query: [
{
name: 'nick',
value: 'gloin',
browsers: ['firefox', 'chrome']
}
]
}
url: {
query: [
{
name: 'nick',
value: 'gloin',
browsers: /ie-\d+/ //ie-8, ie-9, ie-10, ...
}
]
}
url: {
query: [
{
name: 'nick',
value: 'gloin',
browsers: [/ie-\d+/, 'firefox']
}
]
}
Передача параметров через CLI
HERMIONEURL_QUERY*
Чтобы передать дополнительные query-параметры, можно воспользоваться переменными окружения следующего вида:
HERMIONE_URL_QUERY_<имя query-параметра>
Например, в вашем тесте открывается урл http://localhost/test/?tool=testplane
, а вы хотите добавить к урлу query-параметр text
со значением ololo
с помощью переменной окружения:
HERMIONE_URL_QUERY_TEXT=ololo testplane ...
После этого в вашем тесте будет открываться урл вида: http://localhost/test/?tool=testplane&text=ololo
.
HERMIONE_URL_CUSTOM_QUERIES
Если среди ваших query-параметров есть параметры, которые нельзя выразить в виде переменной окружения (например, foo-bar
), то вы можете добавить эти параметры через переменную окружения HERMIONE_URL_CUSTOM_QUERIES
.
В качестве значения используйте строку вида <query-param-1>=<value-1>;<query-param-2>=<value-2>;
.
Например:
HERMIONE_URL_CUSTOM_QUERIES='foo-bar=baz;qux=1' testplane ...
Тогда в вашем тесте будет открываться урл вида: http://localhost/test/?foo-bar=baz&qux=1
.
Переменные окружения имеют более высокий приоритет, чем значения соответствующих переменных в конфиге плагина.