Мои тесты Jest проходят, но рабочий процесс действий Github не завершается.
Вот мой main.yaml.
name: Jest Unit Tests
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [14.x, 16.x]
mongodb-version: ['4.2', '4.4', '5.0']
steps:
- uses: actions/checkout@v3
- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- name: Start MongoDB
uses: supercharge/[email protected]
with:
mongodb-version: ${{ matrix.mongodb-version }}
- run: npm ci
- run: npm run workflow
env:
CI: true
Нужно ли мне исправлять мой файл yaml?
посмотреть тесты можно здесь: github.com/DAT-Cash/datweave/tree/main/tests
Получается, что проблемы с Github связаны с асинхронными процессами. Несмотря на то, что тесты пройдены, из Jest все еще выполнялись асинхронные операции, поэтому действия Github по умолчанию не завершаются.
Исправьте это, добавив --forceExit
, чтобы принудительно завершить тест, и --detectOpenHandles
, чтобы увидеть, какие асинхронные операции все еще выполняются.
Добавил их в мои package.json
скрипты.
"scripts": {
"local-test": "jest --watchAll",
"workflow": "jest --forceExit --detectOpenHandles",
"start": "node server.js",
"dev": "nodemon server.js"
},
Для тех, кто плохо знаком с действиями Github, файл yaml в моем исходном посте вызывает npm run workflow
в конце, что является сценарием в моем package.json
.
См. https://jestjs.io/docs/cli для получения дополнительной информации о параметрах Jest.
Да, именно эту проблему я и имел в виду. Обратите внимание: когда вы говорите, что действия Github по умолчанию не завершаются, на самом деле это node. В действиях github мы просто запускаем указанную вами командную строку и ждем ее выхода с кодом возврата.
Обычно это означает, что процесс не завершается или какой-то фоновый процесс не завершается. поэтому, пока он выполняет все тесты и выводит результаты, базовый процесс узла не завершается. иногда не замечаешь в интерактивной оболочке. Трудно сказать, не глядя на сами тесты.