nirvana-js
TypeScript icon, indicating that this package has built-in type declarations

1.2.0 • Public • Published

Nirvana

CircleCI npm version Greenkeeper badge GitHub license

JavaScript runner using Electron. It provides easy DOM manipulation with Node.js scripting 👾.

Getting started

$ npm -g istall electron nirvana-js

Then, write a script:

// your-script.js
console.log(document.querySelector('body').innerHTML);

Finally exec the script with nirvana command ⚡️

$ nirvana your-script.js

Install

npm -g install electron nirvana-js

or

yarn global add electron nirvana-js

Usage

nirvana [option] your-javascript.js [script2 script3 ...]

CLI Options

  • c, config : Configuration file path. See Configuration File section at the below.
  • d, debug : Run debug mode. It's equivalent to --watch --show.
  • b, base-path : The root path location to be used to resolve from.
  • w, watch : Watch script files and reload window when they are changed.
  • v, verbose: Display debug logging messages.
  • q, quiet : Suppress logging messages.
  • init : Generate configuration file.
  • show : Whether to desplay browser windows.
  • custom-context-file: HTML context file path.
  • concurrency : How many windows Nirvana launches in parallel. Default 4.
  • noCaptureConsole : Suppress to capture logging message in browser.
  • noTimeout : Suppress closing browser window via timeout.

Configuration File

You can configure nirvana-js using a configuration JavaScript file. Executing nirvana --init the configuration file nirvana.conf.js is created. For example:

'use strict';
 
module.exports = {
  // scripts: ["a.js", "b.js"],       // Script files to run. Also glob syntax is available e.g. "*.spec.js"
  watch: false,                       // Watch script files and reload window when they are changed.
  concurrency: 4,                     // How many windows Nirvana launches in parallel.
  captureConsole: true,               // Whether to capture logging message in browser.
  // browserNoActivityTimeout: 2000,   // Time period to close window [msec]. If you not want timeout closing, set zero.
  // contextFile: "my-context.html",  // HTML context file.
  
  // Electron BrowserWindow constructor option
  // If you want detail see https://electron.atom.io/docs/api/browser-window/#new-browserwindowoptions.
  windowOption: {
    show: false,
    width: 800,
    height: 600,
    webPreferences: {
      // If you use custom preload script, load 'nirvana-js/preload' in your preload script.
      // preload: 'preload.js'
    },
  },
};

Client Utility Functions

In scripts to run on nirvana-js, some utility functions are available. For example:

const { screenshot } = require('nirvana-js');
 
function yourFunc() {
  doSomething();
  screenshot('my-capture.png');
}

Interface

export declare function isNirvana(): boolean;
export declare function getCurrentWindow(): Electron.BrowserWindow | undefined;
export declare function exit(code?: number): void;
export declare function screenshot(fname: string): Promise<void>;

export declare function isNirvana(): boolean;

Tell whether the platform is running on nirvana-js.

export declare function getCurrentWindow(): Electron.BrowserWindow | undefined;

Get the current browser window.

return A Electron's BrowserWindow object

export declare function exit(code?: number): void;

Close the current browser process immediately.

param code: Exit code.

export declare function screenshot(fname: string): Promise<void>;

Captures a snapshot of the current window.

param fname: The location of captured PNG file.

Tips

When is browserWindow closed ?

By default, nirvana-js's main process is capturing browser windows' logging events. And if no logging event occurs for a certain period of time(specified browserNoActivityTimeout), the main process closes the browser window. If you want to suppress timeout closing, set --no-timeout CLI option. Or set 0 to browserNoActivityTimeout in nivana.conf.js.

If you want to close browserWindows manually, you should call the exit function included client library.

How to run testing framework ?

It's so easy. See example/jasmine .

Capture CPU profile of Node.js script

Run with --debug and launch Chrome's devtools in the window, you can capture CPU profile or performance timeline of your Node.js script.

License

MIT. See license file under this repository.

Readme

Keywords

Package Sidebar

Install

npm i nirvana-js

Weekly Downloads

2

Version

1.2.0

License

MIT

Last publish

Collaborators

  • quramy