Add Node smoke tests for @xterm/headless package
Verify CJS and ESM bundles load, accept writes, expose buffer API, resize, and dispose. Add npm run test-headless-node script. Co-authored-by: Daniel Imms <Tyriar@users.noreply.github.com>
This commit is contained in:
co-authored by
Daniel Imms
parent
584954b4fb
commit
07bdaf8767
@@ -0,0 +1,39 @@
|
||||
/**
|
||||
* Smoke test: @xterm/headless loads and runs in Node.js (require).
|
||||
*/
|
||||
const { strictEqual } = require('node:assert');
|
||||
const { Terminal } = require('./lib-headless/xterm-headless.js');
|
||||
|
||||
function writeSync(term, data) {
|
||||
return new Promise(resolve => term.write(data, resolve));
|
||||
}
|
||||
|
||||
function lineEquals(term, index, text) {
|
||||
strictEqual(term.buffer.active.getLine(index).translateToString(true), text);
|
||||
}
|
||||
|
||||
(async () => {
|
||||
const term = new Terminal({ cols: 80, rows: 24, allowProposedApi: true });
|
||||
strictEqual(term.cols, 80);
|
||||
strictEqual(term.rows, 24);
|
||||
|
||||
await writeSync(term, 'hello from node');
|
||||
lineEquals(term, 0, 'hello from node');
|
||||
|
||||
await writeSync(term, 'foo');
|
||||
await writeSync(term, 'bar');
|
||||
await writeSync(term, '文');
|
||||
lineEquals(term, 0, 'hello from nodefoobar文');
|
||||
|
||||
term.resize(60, 15);
|
||||
strictEqual(term.cols, 60);
|
||||
strictEqual(term.rows, 15);
|
||||
|
||||
term.dispose();
|
||||
strictEqual(term._core._store.isDisposed, true);
|
||||
|
||||
console.log('headless package (CJS): load, write, buffer, resize, dispose OK');
|
||||
})().catch(err => {
|
||||
console.error(err);
|
||||
process.exit(1);
|
||||
});
|
||||
@@ -0,0 +1,29 @@
|
||||
/**
|
||||
* Smoke test: @xterm/headless loads and runs in Node.js (ESM + CJS).
|
||||
*/
|
||||
import { createRequire } from 'node:module';
|
||||
import { strictEqual } from 'node:assert';
|
||||
|
||||
const require = createRequire(import.meta.url);
|
||||
|
||||
function writeSync(term, data) {
|
||||
return new Promise(resolve => term.write(data, resolve));
|
||||
}
|
||||
|
||||
function lineEquals(term, index, text) {
|
||||
strictEqual(term.buffer.active.getLine(index).translateToString(true), text);
|
||||
}
|
||||
|
||||
const { Terminal: TerminalEsm } = await import('./lib-headless/xterm-headless.mjs');
|
||||
const termEsm = new TerminalEsm({ cols: 80, rows: 24 });
|
||||
await writeSync(termEsm, 'esm ok');
|
||||
lineEquals(termEsm, 0, 'esm ok');
|
||||
termEsm.dispose();
|
||||
|
||||
const { Terminal: TerminalCjs } = require('./lib-headless/xterm-headless.js');
|
||||
const termCjs = new TerminalCjs({ cols: 40, rows: 10 });
|
||||
await writeSync(termCjs, 'cjs ok');
|
||||
lineEquals(termCjs, 0, 'cjs ok');
|
||||
termCjs.dispose();
|
||||
|
||||
console.log('headless package: ESM and CJS load, write, and buffer read OK');
|
||||
@@ -72,6 +72,8 @@
|
||||
"prepackage-headless": "npm run esbuild-package-headless-only",
|
||||
"package-headless": "webpack --config ./webpack.config.headless.js",
|
||||
"postpackage-headless": "node ./bin/package_headless.js",
|
||||
"test-headless-node": "node headless/test-node-load.cjs && node headless/test-node-load.mjs",
|
||||
"pretest-headless-node": "npm run build && npm run esbuild-package-headless-only && webpack --config ./webpack.config.headless.js",
|
||||
"prepublishOnly": "npm run package"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
Reference in New Issue
Block a user