Я отвечу на это сам для любого в будущем, кто пытается решить ту же проблему, что и я.
Jest config имеет опции globalSetup
и globalTeardown
. Этот скрипт будет запущен один раз в начале всех тестов.
"jest": {
"globalSetup": "<rootDir>/jestGlobalSetup.js"
}
В узле вы можете использовать API child_process
для запуска сценариев оболочки из файла js. Я запустил мой как этот в моем установочном файле.
import { spawn } from 'child_process';
import cwd from 'cwd';
export default async function setup() {
process.stdout.write('Starting Server');
// Run this command in shell.
// Every argument needs to be a separate string in an an array.
const command = 'foreman';
const arguments = [
'start',
'-p',
'3000',
'-f',
'Procfile.test',
];
const options = {
shell: true,
cwd: cwd()
};
const server = spawn(
command,
arguments,
options,
);
// Then I run a custom script that pings the server until it returns a 200.
await serverReady();
}