Параллельно запускайте WebApp и API для выполнения тестов e2e - PullRequest
1 голос
/ 09 июля 2020

У меня есть SPA и REST Api в одном репозитории в разных .csproj. Когда я хочу отладить приложение, мне нужно вручную запустить SPA и Rest API с помощью команды do tnet run (или IIS Express в VS). Даже если кодовая база полностью изолирована между веб-приложением и api, нет необходимости разделять репозиторий. Потому что, даже если они находятся на совершенно другой кодовой базе, интерфейс вряд ли привязан к API.

SPA и API локально размещены в разных доменах:

  • A vue. js. Net Core SPA размещен на https://localhost: 5000 (в рабочей среде app.mysite.com)
  • A. Net Core 3.1 API Остальное размещено на https://localhost: 5001 (в производстве api.mysite.com)

Теперь я хотел бы запустить автоматические c сквозные тесты в WebApp, используя любую среду тестирования e2e (возможно, TestCafe или что-то еще. ..). Для автоматизации тестов перед развертыванием я использую Azure Devops CI.

Вот мой текущий процесс CI:

Сборка

  • Сборка проекта API
  • Модульный тест проекта API
  • Сборка проекта WebApp
  • Модульный тест проекта WebApp
  • Упаковка в артефакты как API, так и WebApp

Выпуск (стадия) - Автоматически c после сборки

  • Выполнение миграции базы данных и т. Д. c ...
  • Publi sh API и веб-приложение для промежуточной Azure Приложение Сервис

Выпуск (Производство) (Вручную)

  • Выполнение миграции базы данных и т.д. c ...
  • Publi sh API и WebApp в производство Azure Служба приложений

Я настроил API следующим образом, чтобы он использовал поддельную базу данных для целей тестирования в среде «Тест»:

if (Environment.IsTest())
{
  var serviceProvider = new InMemoryDatabaseRoot();
  services.AddDbContext<MyDbContext>(options => options.UseInMemoryDatabase("MyDb", serviceProvider));
}

Теперь я хотел бы знать, существует ли одна команда npm для запуска веб-приложения и API бок о бок в тестовой среде и когда оба сервера готовы, запускаем тесты e2e. В каждой документации по фреймворкам e2e tests я не нашел способа добиться этого. В большинстве случаев тесты выполняются только в веб-приложении.

...