Skip to content

Latest commit

 

History

History
327 lines (246 loc) · 12.9 KB

File metadata and controls

327 lines (246 loc) · 12.9 KB

CLI Reference — accellens

Версия: 0.1.0 (MVP) Дата: 10 ноября 2025

CLI предназначен для локальных запусков сканов, интеграции в CI/CD и работы с отчётами. Реализован на Node.js 24.13.0 LTS (Commander + tsup).


Установка

npm install -g @accellens/cli
# или
pnpm dlx @accellens/cli@latest

Аутентификация:

accellens login --api-url https://api.accellens.dev --token <PERSONAL_TOKEN>

Конфиг сохраняется в ~/.config/accellens/config.json.


Команды

Команда Назначение Основные параметры
accellens login Аутентификация CLI --api-url, --token
accellens scan Веб-скан страницы/набора URL --project, --urls, --format
accellens report Загрузка отчёта <scan-id>, --format, --output
accellens logout Очистка локальных токенов

accellens login

accellens login --api-url https://api.accellens.dev --token <PERSONAL_TOKEN>
  • Валидирует токен и сохраняет конфигурацию.
  • Для CI лучше использовать переменные окружения (ACCELLENS_TOKEN).

accellens scan

Запускает веб-скан.

accellens scan https://example.com \
  --project mysite \
  --auth basic:user:pass \
  --selector "#app-container" \
  --click ".modal-close" \
  --output run.json

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

  • --project <slug> (обязательно) — slug проекта.
  • --urls <file> — файл со списком URL (по одному на строку).
  • --format json|pdf|sarif — формат результата (по умолчанию: json).
  • --output <file> — путь для сохранения результата.
  • --timeout <ms> — таймаут в миллисекундах (по умолчанию: 300000).
  • --sse — слушать прогресс в реальном времени через SSE.
  • --label <tag> — добавить тег к запуску (можно использовать несколько раз).
  • --save-config — сохранить конфигурацию сканирования в .accellensrc.

Авторизация

  • --auth <strategy> — стратегия авторизации:
    • basic:username:password — HTTP Basic Authentication
    • header:HeaderName:HeaderValue — кастомный заголовок
    • form — авторизация через форму (требует дополнительные параметры)

Для form-based авторизации:

  • --auth-login-url <url> — URL страницы логина (обязательно).
  • --auth-username-field <selector> — селектор поля username (обязательно).
  • --auth-password-field <selector> — селектор поля password (обязательно).
  • --auth-submit-button <selector> — селектор кнопки отправки формы (опционально).
  • --auth-username <username> — username для формы (или ACCELLENS_AUTH_USERNAME).
  • --auth-password <password> — password для формы (или ACCELLENS_AUTH_PASSWORD).

Безопасность: Credentials можно хранить в переменных окружения. Не коммитьте .accellensrc с credentials в git.

Область сканирования

  • --selector <selector> — CSS или XPath селектор для сканирования части страницы:
    • CSS: #app-container, .widget-content, div.main > section
    • XPath: //div[@id='app'], //div[@class='content']
  • --include-iframes — включить iframe в сканирование.
  • --exclude <selector> — исключить элементы из сканирования (можно использовать несколько раз).

User Interactions

  • --click <selector> — кликнуть по элементу перед сканированием (можно использовать несколько раз).
  • --fill <selector:value> — заполнить поле перед сканированием (можно использовать несколько раз).
  • --wait-for <selector> — ожидать появления элемента перед сканированием.
  • --scroll — автоматически прокрутить страницу перед сканированием.
  • --interaction-file <path> — файл с JSON/YAML сценарием user flow.

Пример user flow файла (user-flow.json):

{
  "name": "Login and navigate",
  "steps": [
    { "type": "click", "selector": ".login-button" },
    { "type": "wait", "selector": "#login-form", "timeout": 5000 },
    { "type": "type", "selector": "#username", "value": "user@example.com" },
    { "type": "type", "selector": "#password", "value": "password123" },
    { "type": "click", "selector": "#submit" },
    { "type": "wait", "selector": ".dashboard", "timeout": 10000 },
    { "type": "scroll" }
  ]
}

Дополнительные параметры

  • --proxy <url> — URL прокси-сервера (например, http://proxy:8080).
  • --proxy-username <username> — username для прокси.
  • --proxy-password <password> — password для прокси.
  • --headers <key=value> — кастомные HTTP заголовки (можно использовать несколько раз).
  • --viewport <size> — размер viewport (например, 1280x720).
  • --viewport-profile <profile> — профиль viewport: mobile, tablet, desktop, 4k, custom.
  • --disable-js — отключить JavaScript во время сканирования.
  • --locale <lang> — установить язык интерфейса (Accept-Language заголовок).

accellens report

accellens report <scan-id> --format pdf --output audit.pdf

Загружает отчёт по ID сканирования в различных форматах.

Параметры

  • <scan-id> (обязательно) — UUID сканирования (run ID).
  • --format <format> — формат отчёта: json, pdf, sarif (по умолчанию: json).
  • --output <file> — путь для сохранения файла. Если не указан, используется <scan-id>.<format>.
  • --open — открыть файл после загрузки (macOS/Linux).

Поддерживаемые форматы

JSON (--format json):

  • Полный JSON отчёт со всеми метаданными, статистикой и findings.

  • Удобен для программной обработки и интеграции с другими инструментами.

  • Пример:

    accellens report 01JBP8D8Q9M8K2E8V934A5GJ1C --format json --output report.json

PDF (--format pdf):

  • Профессионально оформленный PDF отчёт для презентации стейкхолдерам.

  • Включает Executive Summary, детальные findings с цветовой индикацией severity.

  • Поддерживает кастомные секции (через UI или API).

  • Пример:

    accellens report 01JBP8D8Q9M8K2E8V934A5GJ1C --format pdf --output audit-report.pdf

SARIF (--format sarif):

  • SARIF 2.1.0 формат для интеграции с CI/CD платформами.

  • Поддерживается GitHub Security, Azure DevOps, и другими инструментами.

  • Пример:

    accellens report 01JBP8D8Q9M8K2E8V934A5GJ1C --format sarif --output results.sarif

Примеры использования

# Загрузить JSON отчёт
accellens report 01JBP8D8Q9M8K2E8V934A5GJ1C --format json

# Загрузить PDF отчёт и открыть его
accellens report 01JBP8D8Q9M8K2E8V934A5GJ1C --format pdf --output report.pdf --open

# Загрузить SARIF для CI/CD интеграции
accellens report 01JBP8D8Q9M8K2E8V934A5GJ1C --format sarif --output results.sarif

Примечания

  • PDF отчёты генерируются асинхронно и могут занять некоторое время.
  • Все отчёты кэшируются на сервере для оптимизации производительности.
  • PDF ссылки действительны в течение 24 часов.

accellens logout

accellens logout

Удаляет сохранённые токены и конфиг.


Конфигурация

Глобальный config (~/.config/accellens/config.json):

{
  "apiUrl": "https://api.accellens.dev",
  "token": "...",
  "defaultProject": "mysite",
  "outputDir": "~/accellens/reports"
}

CLI поддерживает .accellensrc (YAML/JSON) в каталоге проекта.

Приоритет конфигурации

  1. Аргументы командной строки.
  2. Переменные окружения.
  3. .accellensrc в проекте.
  4. Глобальный конфиг (~/.config/accellens/config.json).

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

Переменная Назначение
ACCELLENS_API_URL Базовый URL API
ACCELLENS_TOKEN Токен по умолчанию (используется в CI)
ACCELLENS_PROJECT Проект по умолчанию
ACCELLENS_OUTPUT_DIR Каталог для сохранения отчётов
ACCELLENS_AUTH_USERNAME Username для авторизации (form-based auth)
ACCELLENS_AUTH_PASSWORD Password для авторизации (form-based auth)
ACCELLENS_LOCALE Язык интерфейса (Accept-Language)

Формат .accellensrc

apiUrl: https://api.accellens.dev
project: myshop
headers:
  - name: Authorization
    value: Bearer ${ACCELLENS_TOKEN}
scanDefaults:
  viewport: 1440x900
  waitFor: '#app-ready'
  viewportProfile: desktop
  locale: en-US
  disableJavaScript: false
  auth:
    type: basic
    credentials:
      username: ${ACCELLENS_AUTH_USERNAME}
      password: ${ACCELLENS_AUTH_PASSWORD}
  scanArea:
    selector: '#app-container'
    includeIframes: true
    excludeSelectors:
      - '.ads'
      - '.footer'
  interactions:
    - type: click
      selector: '.accept-cookies'
    - type: wait
      selector: '#app-ready'
      timeout: 5000
    - type: scroll
  proxy:
    server: http://proxy.example.com:8080
    username: ${PROXY_USERNAME}
    password: ${PROXY_PASSWORD}

Важно: Используйте переменные окружения для credentials. Не коммитьте файлы с паролями в git. Добавьте .accellensrc в .gitignore или используйте .accellensrc.example как шаблон.


Exit Codes

  • 0 — успех.
  • 1 — внутренняя ошибка CLI (невалидные аргументы).
  • 2 — API ошибка (см. сообщение).
  • 3 — timeout или отмена пользователем.

CI/CD пример (GitHub Actions)

- name: Run Accessibility Scan
  uses: accellens/github-action@v1
  with:
    project: mysite
    urls: ./urls.txt
    token: ${{ secrets.ACCELLENS_TOKEN }}

Debugging

  • ACCELLENS_DEBUG=1 — подробные логи.
  • --trace-network — логирует сетевые запросы.
  • Ошибки сохраняются в ~/.config/accellens/logs/{date}.log.

Roadmap CLI

Планируемые функции для будущих версий:

  • scan-mobile — сканирование мобильных приложений (Android/iOS)
  • runs list — список запусков проекта
  • runs status — статус конкретного запуска с watch mode
  • project create — создание проекта через CLI
  • project list — перечень доступных проектов
  • Интерактивные проверки (watch mode)
  • Upload локальных HTML/zip для офлайн-аудита
  • Интеграция с IDE (VSCode) через CLI server mode