0.0.2-beta.1 • Published 24 days ago

@spec-box/sync v0.0.2-beta.1

Weekly downloads
-
License
MIT
Repository
-
Last release
24 days ago

@spec-box/sync

В этом репозитории находится command line утилита для выгрузки информации о функциональных требованиях, хранящейся в файлах проекта, во внешнюю базу функциональных требований. Информация о функциональных требованиях должна храниться в yml файлах в формате, описанном ниже.

Быстрый старт

  1. Установите пакет @spec-box/sync из внешнего npm
    npm i @spec-box/sync --registry=https://registry.npmjs.org -D
  2. Создайте конфигурационный файл .tms.json:
    {
        "api": {
            "host": "http://localhost:5059",
            "project": "id"
        },
        "yml": {
            "files": [
                "tests/unit/**/*.unit.testpalm.yml"
            ]
        }
    }
  3. Запустите выгрузку
    npx spec-box sync

Формат yml

Каждый yml файл описывает функциональные требования отдельной фичи (целостного функционального блока) проекта. Для фичи указываются: уникальный код (по которму можно сослатсья на нее), название, дополнительная мета-информация (атрибуты) и список функциональных требований, объединенных в группы.

Пример описания ФТ в yml файле:

feature: Главная страница   # понятное для человека название фичи
code: home-page             # уникальный (в пределах проекта) код фичи, по которому можно на не ссылаться

# список функциональных требований (утверждений о продукте), объединенных в группы
specs-unit:
  Промо-блок:
    - assert: Отображается "карусель" со слайдами
    - assert: Для каждого слайда отображается заголовок, описание и фото, значения которых пришли с бэкенда

  Блок корзины:
    - assert: Отображается количество и общая стоимость товаров в корзине
    - assert: Отображается кнопка "Оформить заказ", при нажати пользователь переходит на страницу оформления заказа

# список атрибутов фичи
definitions:
  priority:
    - normal
  component:
    - common # для одного атрибута можно указать несколько значений
    - ui

Автоматическое определение признака isAutomated

Вместе с информацией о функциональных требованиях можно выгружать информацию о том, что их проверка автоматизирована. Определение автоматизированных ФТ выполняется автоматически, на основе информации об отчете jest в формате json. Отчет о выполнении тестов можно сформировать, запустив jest с параметром --json, например:

jest --json --outputFile=jest-report.json

Чтобы добавить в выгрузку ФТ информацию из отчета jest, добавьте в корень конфигурационного файла секцию "jest":

{
    // ...
    "jest": {
        // путь к файлу с отчетом о выполнении тестов
        "reportPath": "jest-report.json",

        // сегменты идентификатора для сопоставления автотестов с ФТ
        "keys": ["featureTitle", "groupTitle", "assertionTitle"]
    }

Для каждого ФТ, описанного в yml файлах проекта, будет сформирован уникальный идентификатор на основе поля "keys". Если в отчете jest есть тест, полное имя которого совпадает с идентификатором ФТ, то считается, что проверка этого ФТ — автоматизирована.

Например, если в проекте есть yml файл с содержимым, указанным выше и поле "keys" в разделе "jest" конфигурационного файла имеет значение ["featureTitle", "groupTitle", "assertionTitle"], то указанный ниже тест будет сопоставлен с ФТ "Отображается количество и общая стоимость товаров в корзине":

describe('Главная страница', () => {
    describe('Блок корзины', () => {
        test('Отображается количество и общая стоимость товаров в корзине', () => {
            // ...
        });
    });
});

В качестве частей идентификатора допустимо указывать следующие значения:

  • "featureTitle" — название фичи
  • "featureCode" — уникальный код фичи
  • "groupTitle" — название группы ФТ
  • "assertionTitle" — название ФТ
  • "filePath" — путь к yml файлу, относительно корня проекта
  • "fileName" — название yml файла без расширения (от начала до первого символа .)
  • @<attribute> — значение указанного атрибута (идентификатор значения)
  • $<attribute> — значение указанного атрибута (человеко-понятное название)

Формат конфига

Ниже указаны все возможные параметры конфигурационного файла:

{
    "projectPath": "/aaa/bbb", // путь к корневой папке проекта, опционально
    // настройки выгрузки
    "api": {
        "host": "http://localhost:5059",
        "project": "id"
    },
    "yml": {
        // настройки хранения в проекте информации о функциональных требоваинях в yml
        "files": [
            "tests/unit/**/*.unit.testpalm.yml"
        ],
        // список доступных атрибутов и их значений с человеко-понятными названиями
        "attributes": [
            {
                "code": "example",
                "title": "Пример атрибута",
                "values": [
                    {
                        "code": "aaa",
                        "title": "Тестовое значение"
                    },
                    // ...
                ]
            },
            // ...
        ]
    },
    // настройки для сопоставления ФТ с отчетами jest
    "jest": {
        "reportPath": "jest-report.json", // путь к файлу с отчетом о выполнении тестов
        "keys": [ //
            "featureTitle",
            "$sub-component",
            "groupTitle",
            "assertionTitle"
        ]
    }
}

TODO

  • логирование и обработка ошибок
  • формирование кода по конфигу
0.0.2-beta.19

24 days ago

0.0.2-beta.18

1 month ago

0.0.2-beta.14

3 months ago

0.0.2-beta.16

3 months ago

0.0.2-beta.13

6 months ago

0.0.2-beta.12

6 months ago

0.0.2-beta.11

6 months ago

0.0.2-beta.10

6 months ago

0.0.2-beta.9

7 months ago

0.0.2-beta.8

7 months ago

0.0.2-beta.7

7 months ago

0.0.2-beta.6

7 months ago

0.0.2-beta.5

8 months ago

0.0.2-beta.4

8 months ago

0.0.2-beta.3

8 months ago

0.0.2-beta.2

8 months ago

0.0.2-beta.1

8 months ago