SaveTest — ДокументацияSaveTest — Документация Сайт
Руководство пользователя
Руководство администратора
Установка и разработка
Руководство пользователя
Руководство администратора
Установка и разработка
  • Установка и разработка

    • Установка и разработка
    • Быстрый старт
    • Установка
    • Обновление
    • Домен и SSL — Nginx (опционально)
    • Разработка плагинов парсеров
    • savetest-cli
Сайт

savetest-cli

savetest-cli - CLI-утилита для загрузки результатов автотестов из CI/CD в SaveTest.

Утилита:

  • упаковывает каталог allure-results в ZIP;
  • загружает архив в SaveTest;
  • создает новый тест-ран или дозагружает результаты в существующий.

Требование: Python 3.8+.

Установка

pip install savetest-cli

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

  1. Сформируйте allure-results после прогона тестов.
  2. Упакуйте результаты.
  3. Передайте параметры подключения через переменные окружения.
  4. Выполните загрузку.
savetest zip_report ./allure-results

export SAVETEST_HOST=https://savetest.example.com
export SAVETEST_TOKEN=sat_xxxxxxxxxxxxxxxx
export SAVETEST_PROJECT_ID=42
export SAVETEST_BRANCH=main

savetest upload --test-run-name "Smoke $(date +%Y-%m-%d)"

После успешного импорта CLI выводит ссылку на тест-ран.

Примечание

Для импорта нужен ZIP с allure-results, а не готовый HTML-отчет allure-report.

Разметка автотестов (@allure.testcase, @allure.tms, @allure.id) описана в разделе Автотесты.

Команды

savetest zip_report <PATH>

Упаковывает директорию с Allure-результатами в ZIP.

По умолчанию вложения (скриншоты, видео, *-attachment.*) не включаются - архив получается меньше и загружается быстрее.

ОпцияПо умолчаниюОписание
PATH—Путь к allure-results
--output, -oallure-results.zipВыходной ZIP
--include-attachmentsвыкл.Включить вложения
savetest zip_report ./allure-results
savetest zip_report ./allure-results --output report.zip
savetest zip_report ./allure-results --include-attachments

Совет

Отключайте вложения для регулярных nightly/регрессионных прогонов, если важнее скорость загрузки.

savetest upload

Загружает ZIP в SaveTest по частям и по умолчанию ожидает завершения импорта.

Переменные окружения

ПеременнаяОбязательнаНазначение
SAVETEST_HOSTдаURL SaveTest, например https://savetest.example.com
SAVETEST_TOKENдаAPI-токен пользователя
SAVETEST_PROJECT_IDдаID проекта
SAVETEST_BRANCHнетВетка Git
SAVETEST_TEST_RUN_IDнетID существующего тест-рана
SAVETEST_TEST_RUN_NAMEнетИмя нового тест-рана
SAVETEST_INCLUDE_ATTACHMENTSнетtrue - включить вложения

Остальные поля тест-рана (description, version, revision, test-object, epic, configuration) можно передавать флагами savetest upload или соответствующими переменными окружения.

Основные опции

ОпцияПо умолчаниюОписание
--zip-file, -zallure-results.zipПуть к ZIP
--include-attachmentsfalseВключить вложения в ZIP
--chunk-size50Размер чанка в МБ
--wait / --no-wait--waitЖдать завершения импорта
--timeout3600Таймаут ожидания в секундах
--poll-interval1.5Интервал опроса в секундах

Параметры подключения (host, token, project-id, branch) и поля тест-рана (test-run-name, test-run-id, description, version, revision, test-object, epic, configuration) можно передавать как флагами, так и через переменные окружения.

Примеры

savetest upload --branch main --test-run-name "Regression $(date +%Y-%m-%d)"

# Новый тест-ран с метаданными
savetest upload \
  --branch main \
  --test-run-name "Smoke $(date +%Y-%m-%d)" \
  --epic-name "Release 2.4"

# Добавить описание и версию
savetest upload \
  --branch main \
  --test-run-name "Nightly $(date +%Y-%m-%d)" \
  --version "2.4.0" \
  --description "Nightly smoke on staging"

# Дозагрузка в существующий тест-ран
savetest upload --branch main --test-run-id 17

# Другой ZIP с вложениями, без ожидания импорта
savetest upload --zip-file full-report.zip --include-attachments --no-wait

Инфо

--no-wait полезен в CI, если не нужно ждать финальный статус импорта в рамках текущего job.

Получение API-токена

  1. Войдите в SaveTest и откройте Профиль -> API-токены.
  2. Создайте токен и скопируйте значение (sat_...).
  3. Сохраните токен в секретах CI (Jenkins Credentials, GitLab CI/CD Variables, GitHub Secrets).

Подробнее о токенах - в разделе Профиль пользователя.

Настройка в Jenkins

Добавьте токен в Jenkins -> Manage Jenkins -> Credentials (тип: Secret text, ID: savetest-token).

pipeline {
    agent any

    parameters {
        string(name: 'SAVETEST_HOST',        defaultValue: '', description: 'URL SaveTest')
        string(name: 'SAVETEST_PROJECT_ID',  defaultValue: '', description: 'ID проекта')
        string(name: 'SAVETEST_BRANCH',      defaultValue: '', description: 'Ветка Git')
        string(name: 'SAVETEST_TEST_RUN_ID', defaultValue: '', description: 'ID тест-рана (пусто = новый)')
        booleanParam(name: 'INCLUDE_ATTACHMENTS', defaultValue: false, description: 'Вложения в ZIP')
    }

    stages {
        stage('Upload to SaveTest') {
            steps {
                withCredentials([string(credentialsId: 'savetest-token', variable: 'SAVETEST_TOKEN')]) {
                    sh '''
                        pip install savetest-cli

                        savetest zip_report "${WORKSPACE}/allure-results" \
                            $([ "${INCLUDE_ATTACHMENTS}" = "true" ] && echo "--include-attachments")

                        savetest upload \
                            --host "${SAVETEST_HOST}" \
                            --project-id "${SAVETEST_PROJECT_ID}" \
                            --branch "${SAVETEST_BRANCH}" \
                            --test-run-name "Jenkins ${JOB_NAME} #${BUILD_NUMBER}" \
                            $( [ -n "${SAVETEST_TEST_RUN_ID}" ] && echo "--test-run-id ${SAVETEST_TEST_RUN_ID}" ) \
                            $( [ "${INCLUDE_ATTACHMENTS}" = "true" ] && echo "--include-attachments" )
                    '''
                }
            }
        }
    }
}

SAVETEST_TOKEN передается через withCredentials и не выводится в лог сборки.

Подробнее о логике импорта и сопоставления - в разделе Автотесты.

Назад
Разработка плагинов парсеров