Skip to content

Latest commit

 

History

History
293 lines (222 loc) · 10.7 KB

url-decorator.md

File metadata and controls

293 lines (222 loc) · 10.7 KB

@testplane/url-decorator

Обзор

Используйте плагин @testplane/url-decorator, чтобы автоматически дополнять урлы в testplane-тестах нужными query-параметрами.

Установка

npm install -D @testplane/url-decorator

Настройка

Необходимо подключить плагин в разделе plugins конфига testplane:

module.exports = {
    plugins: {
        '@testplane/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 как массив

module.exports = {
    plugins: {
        '@testplane/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...
};

query как объект

module.exports = {
    plugins: {
        '@testplane/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 всеми способами:

строка

url: {
    query: [
        {
            name: 'nick',
            value: 'gloin',
            browsers: 'firefox'
        }
    ]
}

массив строк

url: {
    query: [
        {
            name: 'nick',
            value: 'gloin',
            browsers: ['firefox', 'chrome']
        }
    ]
}

regexp

url: {
    query: [
        {
            name: 'nick',
            value: 'gloin',
            browsers: /ie-\d+/  //ie-8, ie-9, ie-10, ...
        }
    ]
}

массив regexp / строк

url: {
    query: [
        {
            name: 'nick',
            value: 'gloin',
            browsers: [/ie-\d+/, 'firefox']
        }
    ]
}

Передача параметров через CLI

TESTPLANE_URL_QUERY_*

Чтобы передать дополнительные query-параметры, можно воспользоваться переменными окружения следующего вида:

TESTPLANE_URL_QUERY_<имя query-параметра>

Например, в вашем тесте открывается урл http://localhost/test/?tool=testplane, а вы хотите добавить к урлу query-параметр text со значением ololo с помощью переменной окружения:

TESTPLANE_URL_QUERY_TEXT=ololo testplane ...

После этого в вашем тесте будет открываться урл вида: http://localhost/test/?tool=testplane&text=ololo.

TESTPLANE_URL_CUSTOM_QUERIES

Если среди ваших query-параметров есть параметры, которые нельзя выразить в виде переменной окружения (например, foo-bar), то вы можете добавить эти параметры через переменную окружения TESTPLANE_URL_CUSTOM_QUERIES.

В качестве значения используйте строку вида <query-param-1>=<value-1>;<query-param-2>=<value-2>;.

Например:

TESTPLANE_URL_CUSTOM_QUERIES='foo-bar=baz;qux=1' testplane ...

Тогда в вашем тесте будет открываться урл вида: http://localhost/test/?foo-bar=baz&qux=1.

⚠️ Переменные окружения имеют более высокий приоритет, чем значения соответствующих переменных в конфиге плагина.