import supertest from 'supertest'; import { execFile } from 'child_process'; import { readFileSync } from 'fs'; import { setTimeout as sleep } from 'node:timers/promises'; describe('babelmark responder app', function () { let app; const PORT = 5005; const request = supertest('http://127.0.0.1:' + PORT); before(async () => { app = execFile( 'node', [ '../support/babelmark-responder.mjs' ], { cwd: new URL('.', import.meta.url), env: Object.assign({}, process.env, { PORT: PORT }) } ); // Wait until app bind port for (let i = 0; i < 50; i++) { try { await request.get('/').expect(200); break; } catch (e) {} await sleep(100); } }); it('ping root', () => { return request .get('/') .expect(200) .expect(//i); }); it('do request', () => { const version = JSON.parse(readFileSync(new URL('../package.json', import.meta.url))).version; return request .get('/?text=foo') .expect(200) .expect({ html: '

foo

\n', name: 'markdown-it', version }); }); after(() => { if (app) app.kill(); }); });