Testing & Development
Pure HTML, CSS, and JavaScript on the front end, plus a single stdlib-only Node server. No framework, no bundler, no package manager. Edit any file and refresh.
Running the tests
node --test
Runs the test suite with Node's built-in test runner — no dependencies needed (Node 18+). Covers:
test/server.test.js—sanitizeName/uniqueName,buildColsFromFiles, thesaveData/loadDataround trip (includingglobals.json) against a temporary data directory (the realdata/is never touched),getCliArgparsing, andfindMockMatch/startMockServer/stopMockServer/mockStatustest/server-http.test.js—/api/data,/api/save,/api/proxy//api/proxy-stream, mock/webhooks endpoints, the WebSocket and MCP stdio relays, OAuth2 callback handling, and static file serving, against a real server instancetest/protocols-e2e.test.js— end-to-end coverage of GraphQL bodies, OAuth2 token acquisition/refresh, SSE streaming, and the MCP Streamable HTTP transport, against a realserver.jsinstance plus small local upstream serverstest/monitors.test.js—/api/monitorsCRUD,/api/monitors/runactually executing a saved collection, andGET /docsrendering with credential redactiontest/send.test.js,test/collections.test.js,test/request.test.js,test/runner.test.js,test/curl.test.js— frontend logic, each run in a sandboxed copy of the global-scope JS
Run node --test --experimental-test-coverage for a coverage report (covers server.js; the sandboxed frontend tests aren't included in coverage instrumentation).
No build step
There's genuinely nothing to build. All JS files share the global browser scope and are loaded as plain <script> tags in index.html — no modules, no imports, no exports, no transpilation. Load order matters; state.js comes first and app.js last. Edit any file, refresh the page, done.