https://github.com/quramy/nirvana-js
:zap: JavaScript file runner using Electron
https://github.com/quramy/nirvana-js
electron test-runner
Last synced: 4 months ago
JSON representation
:zap: JavaScript file runner using Electron
- Host: GitHub
- URL: https://github.com/quramy/nirvana-js
- Owner: Quramy
- License: mit
- Created: 2017-08-10T14:29:43.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2020-06-02T21:42:13.000Z (about 6 years ago)
- Last Synced: 2025-04-15T22:39:00.073Z (about 1 year ago)
- Topics: electron, test-runner
- Language: TypeScript
- Homepage:
- Size: 3.38 MB
- Stars: 9
- Watchers: 1
- Forks: 0
- Open Issues: 25
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 
[](https://circleci.com/gh/Quramy/nirvana-js)
[](https://badge.fury.io/js/nirvana-js)
[](https://greenkeeper.io/)
[](https://raw.githubusercontent.com/Quramy/nirvana-js/master/LICENSE)
JavaScript runner using Electron. It provides easy DOM manipulation with Node.js scripting :space_invader:.
## Getting started
```sh
$ npm -g istall electron nirvana-js
```
Then, write a script:
```js
// your-script.js
console.log(document.querySelector('body').innerHTML);
```
Finally exec the script with `nirvana` command :zap:
```sh
$ nirvana your-script.js
```
## Install
```sh
npm -g install electron nirvana-js
```
or
```sh
yarn global add electron nirvana-js
```
## Usage
```sh
nirvana [option] your-javascript.js [script2 script3 ...]
```
### CLI Options
- `c`, `config` : Configuration file path. See [Configuration File](#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:
```js
'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:
```js
const { screenshot } = require('nirvana-js');
function yourFunc() {
doSomething();
screenshot('my-capture.png');
}
```
### Interface
```typescript
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;
```
#### `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;`
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](#export-declare-function-exitcode-number-void).
#### 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.