Easily start and stop an X Virtual Frame Buffer from your node app
npm install xvfb-tsA TypeScript library for easily managing X Virtual Frame Buffer (Xvfb) processes in Node.js applications. Perfect for headless GUI testing with tools like Puppeteer, Playwright, or Selenium.
``bash`
npm install xvfb-ts
- Linux/Unix system with Xvfb installed
- Node.js >= 20.17.0
`typescript
import { Xvfb } from 'xvfb-ts';
const xvfb = new Xvfb();
// Start the virtual display
await xvfb.start();
// Run your headless GUI tests here
// e.g., launch a browser, run Electron app, etc.
// Clean up when done
await xvfb.stop();
`
`typescript`
interface XvfbOptions {
displayNum?: number; // X display number (default: auto-assigned >= 99)
reuse?: boolean; // Reuse existing display (default: false)
timeout?: number; // Startup timeout in ms (default: 500)
silent?: boolean; // Suppress stderr output (default: false)
xvfb_args?: string[]; // Additional Xvfb arguments (default: [])
}
- start() - Start the Xvfb process (returns Promisestop()
- - Stop the Xvfb process (returns Promisedisplay()
- - Get the display string (e.g., ":99")
`typescript
import { Xvfb } from 'xvfb-ts';
const xvfb = new Xvfb({ displayNum: 88 });
await xvfb.start();
console.log(Display: ${xvfb.display()}); // :88
await xvfb.stop();
`
`typescript
const xvfb = new Xvfb({
displayNum: 99,
reuse: true
});
await xvfb.start(); // Won't fail if :99 already exists
`
`typescript
const xvfb = new Xvfb({
xvfb_args: ['-screen', '0', '1024x768x24']
});
await xvfb.start();
`
`typescript``
try {
await xvfb.start();
// Your code here
} catch (error) {
console.error('Failed to start Xvfb:', error.message);
} finally {
await xvfb.stop();
}