Skip to main content
SDK предоставляет программные API, которые позволяют собирать, разворачивать, устанавливать и удалять ваше приложение из тестового кода. В сочетании с Vitest и типизированными клиентами API вы можете писать интеграционные тесты, которые проверяют, что ваше приложение работает сквозным образом на реальном сервере Twenty.

Использование пакетов npm

Вы можете устанавливать и использовать любые пакеты npm в своём приложении. И логические функции, и компоненты фронтенда собираются с помощью esbuild, который встраивает все зависимости в выходной файл — каталоги node_modules во время выполнения не нужны.

Установка пакета

Затем импортируйте его в своём коде:
src/logic-functions/fetch-data.ts
То же самое работает для компонентов фронтенда:
src/front-components/chart.tsx

Как работает бандлинг

Этап сборки использует esbuild для создания одного самодостаточного файла на каждую логическую функцию и на каждый компонент фронтенда. Все импортированные пакеты встроены в бандл. Логические функции выполняются в среде Node.js. Встроенные модули Node (fs, path, crypto, http и т. д.) доступны и не требуют установки. Компоненты фронтенда выполняются в Web Worker. Встроенные модули Node недоступны — доступны только браузерные API и пакеты npm, работающие в браузерной среде. В обеих средах доступны как предварительно предоставленные модули twenty-client-sdk/core и twenty-client-sdk/metadata — они не включаются в бандл, а подставляются сервером во время выполнения.

Настройка

Приложение, созданное скэффолдером, уже включает Vitest. Если вы настраиваете его вручную, установите зависимости:
Создайте vitest.config.ts в корне вашего приложения:
vitest.config.ts
Создайте файл инициализации, который проверяет доступность сервера перед запуском тестов:
src/__tests__/setup-test.ts

Программные API SDK

Подпуть twenty-sdk/cli экспортирует функции, которые можно вызывать напрямую из тестового кода: Каждая функция возвращает объект результата с success: boolean и либо data, либо error.

Написание интеграционного теста

Полный пример, который собирает, разворачивает и устанавливает приложение, а затем проверяет, что оно появляется в рабочем пространстве:
src/__tests__/app-install.integration-test.ts

Запуск тестов

Убедитесь, что ваш локальный сервер Twenty запущен, затем:
Или в режиме наблюдения во время разработки:

Проверка типов

Вы также можете запустить проверку типов для своего приложения без запуска тестов:
Это запускает tsc --noEmit и сообщает о любых ошибках типов.

CI с GitHub Actions

Скэффолдер генерирует готовый к использованию рабочий процесс GitHub Actions в .github/workflows/ci.yml. Он автоматически запускает ваши интеграционные тесты при каждом пуше в main и в pull request’ах. Рабочий процесс:
  1. Извлекает ваш код
  2. Поднимает временный сервер Twenty с помощью экшена twentyhq/twenty/.github/actions/spawn-twenty-docker-image
  3. Устанавливает зависимости с помощью yarn install --immutable
  4. Запускает yarn test с TWENTY_API_URL и TWENTY_API_KEY, переданными из выходных данных экшена
.github/workflows/ci.yml
Вам не нужно настраивать секреты — экшен spawn-twenty-docker-image запускает эфемерный сервер Twenty прямо в раннере и выводит данные для подключения. Секрет GITHUB_TOKEN предоставляется GitHub автоматически. Чтобы закрепить конкретную версию Twenty вместо latest, измените переменную окружения TWENTY_VERSION в начале рабочего процесса.