Документация
/

Тестирование и CI

Тестирование и CI

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

Зачем тестам отдельная сборка

Продвинутые защиты (VM Self Defending, VM Debug Protection, VM Domain Lock и их базовые аналоги selfDefending, debugProtection и domainLock) срабатывают и против ваших собственных агентов, средств автоматизации и отладчиков. Они могут остановить выполнение, выбросить посторонние ошибки или выдать неверные результаты. disableConsoleOutput глобально заменяет методы console пустыми функциями для всех скриптов на странице, а не только для обфусцированного, поэтому проверки на основе логов ничего не увидят. Запускайте функциональные тесты на отдельной тестовой сборке с выключенными функциями.

Конфигурация для функциональных тестов

Постройте тестовую конфигурацию на основе общих настроек и примените эти переопределения после выбора пресета. Они отключают VM- и базовые версии Self Defending, Debug Protection и Domain Lock, а также выключают disableConsoleOutput (пресеты Low, Medium и High его включают). Передавайте значения явно: если опустить опцию, её может включить пресет.

JavaScript

CI

Сначала запустите исходный код, затем прогоните обфусцированную тестовую сборку через те же проверки. Записывайте входные данные, фактические опции, версию обфускатора и предупреждения сборки, чтобы сбои можно было воспроизвести. Панель управления и ответы прямых запросов к API сообщают предупреждения и итоговую версию; пакет javascript-obfuscator сообщает версию в своём сообщении о ходе выполнения, но не сообщает предупреждения.

Когда функциональные проверки пройдены, сгенерируйте отдельный релизный артефакт с исходными продакшен-настройками. Проверьте именно этот артефакт в целевой среде выполнения, на разрешённом домене, без средств автоматизации и отладчиков, которые должны обнаруживать его защиты. Успешный прогон тестовой сборки не подтверждает работоспособность защищённого релиза.

Сборки через панель управления, пакет javascript-obfuscator (CLI или Node.js) и API используют одни и те же опции защиты. Тестирование через API использует обычные учётные данные и эндпоинт, и на него распространяются обычные лимиты использования. В CI храните тестовые и релизные результаты в разных путях и разворачивайте только релизный артефакт.

Если выполнение всё равно завершается ошибкой, см. Диагностика ошибок выполнения VM.