Previously, the only way to run the Mocha tests (in 'test.*.js') is to write a web page to wrap them (or use a provided one), and then load that file in a browser. This commit introduces a series of files to allow you to run the Mocha tests from the command line instead. Normally, Mocha tests can be run from the command line anyway. However, since this project was designed to work in web browsers and not node, the code doesn't contain the proper `require` calls, nor does it contain the proper `module.exports` declarations. Additionally, some of the code is dependent on having a browser environment. To overcome these issues, a headless browser environment is used. The command file introduced in the commit, `run_from_console.js`, can use one of two environments: ZombieJS, a pure-javascript headless browser simulator, or SpookyJS/CasperJS/PhantomJS, an actually WebKit-based environment. Because the environment-dependent code is separated out in to different files ('run_from_console.zombie.js' and 'run_from_console.casper.js'), the program can be safely used if only one of the supported environments is installed. Additionally, the command will automatically generate HTML and inject the required tests if there is no pre-existing HTML file (although you can still use pre-existing HTML files if you want to). The required NPM modules for the base program are: - commander - ansi - mocha (must be installed locally for the HTML files to use) - chai (must be installed locally for the HTML files to use) - temp For Zombie, you need: - zombie - q For Casper, you need: - casperjs (must be installed locally in order to work properly) - phantomjs - phantom - spooky The command itself can be invoked as $ node run_from_console.js -t html_files or $ node run_from_console.js -t js_test_files -i js_required_files In both cases, the 'files' options should be a comma-separated list of files. The first case runs pre-existing HTML files. The second case generates HTML files to run the specified Mocha tests, and injects the requirements specified as well. Additionally, there are extra arguments that apply to both forms: '-a' can be used to print all test results, not just the failures, '-c' may be used to force color to be enabled (when outputting to a pipe, such as when `less -R` is in use), and '-e' is used to set the environment. Use the '-h' or '--help' options to see a detailed description of all options, and their long-form versions. |
||
---|---|---|
debian | ||
docs | ||
images | ||
include | ||
tests | ||
utils | ||
.gitignore | ||
.gitmodules | ||
LICENSE.txt | ||
README.md | ||
favicon.ico | ||
vnc.html | ||
vnc_auto.html |
README.md
noVNC: HTML5 VNC Client
Description
noVNC is a HTML5 VNC client that runs well in any modern browser including mobile browsers (iPhone/iPad and Android).
Many companies/projects have integrated noVNC including Ganeti Web Manager, OpenStack, OpenNebula, and LibVNCServer. See the Projects and Companies wiki page for a more complete list with additional info and links.
News/help/contact
Notable commits, announcements and news are posted to @noVNC
If you are a noVNC developer/integrator/user (or want to be) please join the noVNC discussion group
Bugs and feature requests can be submitted via github issues. If you are looking for a place to start contributing to noVNC, a good place to start would be the issues that are have marked as "patchwelcome".
If you want to show appreciation for noVNC you could donate to a great non-profits such as: Compassion International, SIL, Habitat for Humanity, Electronic Frontier Foundation, Against Malaria Foundation, Nothing But Nets, etc. Please tweet @noVNC if you do.
Features
- Supports all modern browsers including mobile (iOS, Android)
- Supported VNC encodings: raw, copyrect, rre, hextile, tight, tightPNG
- WebSocket SSL/TLS encryption (i.e. "wss://") support
- 24-bit true color and 8 bit colour mapped
- Supports desktop resize notification/pseudo-encoding
- Local or remote cursor
- Clipboard copy/paste
- Clipping or scolling modes for large remote screens
- Easy site integration and theming (3 example themes included)
- Licensed under the MPL 2.0
Screenshots
Running in Chrome before and after connecting:
See more screenshots here.
Browser Requirements
-
HTML5 Canvas (with createImageData): Chrome, Firefox 3.6+, iOS Safari, Opera 11+, Internet Explorer 9+, etc.
-
HTML5 WebSockets: For browsers that do not have builtin WebSockets support, the project includes web-socket-js, a WebSockets emulator using Adobe Flash. iOS 4.2+ has built-in WebSocket support.
-
Fast Javascript Engine: this is not strictly a requirement, but without a fast Javascript engine, noVNC might be painfully slow.
-
See the more detailed browser compatibility wiki page.
Server Requirements
Unless you are using a VNC server with support for WebSockets connections (such as x11vnc/libvncserver, QEMU, or PocketVNC), you need to use a WebSockets to TCP socket proxy. There is a python proxy included ('websockify').
Quick Start
-
Use the launch script to start a mini-webserver and the WebSockets proxy (websockify). The
--vnc
option is used to specify the location of a running VNC server:./utils/launch.sh --vnc localhost:5901
-
Point your browser to the cut-and-paste URL that is output by the launch script. Enter a password if the VNC server has one configured. Hit the Connect button and enjoy!
Other Pages
-
Encrypted Connections. How to setup websockify so that you can use encrypted connections from noVNC.
-
Advanced Usage. Starting a VNC server, advanced websockify usage, etc.
-
Integrating noVNC into existing projects.
-
Troubleshooting noVNC problems.
Authors/Contributors
-
Core team:
- Joel Martin
- Samuel Mannehed (Cendio)
- Peter Åstrand (Cendio)
- Solly Ross (Red Hat / OpenStack)
-
Notable contributions:
- UI and Icons : Chris Gordon
- Original Logo : Michael Sersen
- tight encoding : Michael Tinglof (Mercuri.ca)
-
Included libraries:
- web-socket-js : Hiroshi Ichikawa (github.com/gimite/web-socket-js)
- as3crypto : Henri Torgemane (code.google.com/p/as3crypto)
- base64 : Martijn Pieters (Digital Creations 2), Samuel Sieb (sieb.net)
- jsunzip : Erik Moller (github.com/operasoftware/jsunzip),
- tinflate : Joergen Ibsen (ibsensoftware.com)
- DES : Dave Zimmerman (Widget Workshop), Jef Poskanzer (ACME Labs)