Запустите тесты Jasmine (связанные с DOM/jquery и т. д.) через командную строку для CI.

У нас есть набор тестов Jasmine, которые успешно выполняются на локальном веб-сервере. https://www.npmjs.com/package/http-server.

Изображение успешного тестового запуска

Мы хотели бы запускать эти тесты из командной строки во время процесса сборки TeamCity, без запуска веб-сервера.

Открытие html-файла с помощью chrome с использованием флага --disable-web-security приводит к

Не удалось загрузить сценарий модуля: сервер ответил типом MIME, отличным от JavaScript, "". Строгая проверка типов MIME применяется для скриптов модулей в соответствии со спецификацией HTML.

Ошибка: не удалось загрузить скрипт модуля: сервер ответил типом MIME, отличным от JavaScript. Для скриптов модуля применяется строгая проверка типа MIME согласно спецификации HTML.

Вероятно, потому что скрипт ссылается на type="module" в файле SpecRunner.html.

<script src="../src/js/App/app.js" type="module"></script>

Тесты Jasmine связаны с DOM/jQuery, поэтому их нужно запускать в браузере. HTML-страница SpecRunner содержит ссылки на скрипты с type="module".

Как мы можем запустить эти тесты во время сборки TeamCity и провалить сборку, если есть какие-либо сбои тестов?

Спасибо.


person Alper    schedule 04.12.2019    source источник
comment
Поскольку при открытии локального html-файла веб-сервер не задействован, не знаю, как мы можем добавить тип mime. Может быть, нам стоит стиснуть зубы и запустить веб-сервер, запустить тесты в браузере, проверить сообщения консоли, чтобы увидеть, нет ли каких-либо сбоев в процессе сборки.   -  person Alper    schedule 05.12.2019


Ответы (1)


Вот мое решение. Мы уже используем jest для тестов реакции и jest docs говорят

Если вы используете Jasmine или похожий на Jasmine API (например, Mocha), Jest должен быть в основном совместим, что упрощает переход на него.

  1. npm установить Jest Puppeteer Jest-Puppeteer http-сервер

    • jest: To run the tests using Jasmine API
    • puppeteer: для запуска тестов в безголовом браузере Chrome
    • http-server: локальный веб-сервер для перехода на страницу запуска спецификации жасмина.
    • jest-puppeteer: настроить запуск локального сервера перед запуском тестов и последующую его остановку.
  2. Добавьте jest-puppeteer-config.json для запуска сервера, например этот

Jest Puppeteer интегрирует функциональность для запуска сервера при запуске набора тестов. Он автоматически закрывает сервер после завершения тестов.

  1. Добавьте тест jest-puppeteer, чтобы перейти на страницу Jasmine SpecRunner и подтвердить отсутствие сбоев.

  2. Обновите конфигурацию jest в документах.

  3. Создайте скрипт npm для запуска jest-теста, который, в свою очередь, запускает тесты Jasmine в браузере.

На этом этапе у вас должна быть возможность запускать браузерные тесты Jasmine из командной строки локально или на сервере сборки.

Вот скриншот, на котором показаны файлы и результаты тестового прогона как локально, так и в TeamCity.

package.json jest-config.js jest-puppeteer-config.js run-tests.js

Как мы можем запустить эти тесты во время сборки TeamCity и провалить сборку, если есть какие-либо сбои тестов?

Это решение позволило нам восстановить около сотни устаревших тестов Jasmine, связанных с браузером, как часть сборки с минимальными усилиями (не нужно было обновлять тесты).

Не стесняйтесь предлагать альтернативы.

person Alper    schedule 06.12.2019