@admc
Introduction


 I’m beyond stoked to be here at JSCONF!!!
 I write JS at Sauce Labs
History

 Windmill - 2007

 Node.JS - Appears

 Soda - Node drives browsers!

 WebDriver - Starts talking about mobile

 JSDOM - Spurs headless



 Why can’t I run my JS blurb everywhere
 at once? (shower idea)
Breakdown


   What: Does my JavaScript work *THERE*?
   Why: The beauty of JS is the growing reach
   How: A Common JavaScript Execution API
Mantra
                Brittle




         Courtesy - @hugs
Browser Dance



DEMO
The Picture
Mobile


WebOS -- By the end of the week -- *DEMO*
Android -- Too slow, working on Android x86
IOS -- System proxy, need a launcher -- *DEMO*


Not checked into GH :-(
Using it!


 Install Node
 npm install jellyfish
 jellyfish shell/firefox/chrome
 browser.js("alert('test')", function(o){console.log(o)})
A Script!

 var assert = require('assert')
  , jellyfish = require('jellyfish');

 var zombie = jellyfish.createZombie();
 zombie.go("http://www.wikipedia.com")
   .js("document.title", function(o) {
     assert.equal(o.result,"Wikipedia")
   })
WebDriver

Could not drive WebDriver from Node
Created WD.js: “npm install wd”
Currently supports: get, execute, close
JSONWireProtocol is big, help me!
Thanks @automatedtester
https://github.com/admc/wd
Architecture


 Lightweight Node HTTP Proxy
 Environment Definitions
   Start, Stop, JS Eval
 Base API - JS, JSFile, JSUrl
Architecture Picture!
                                       Dispatch/Report

                 Proxy


                                                         Browsers




                   Run



                              DIspatch/Report
     Jellyfish


                                                         Headless
                                                         Services
                                                          Other

                Start/ Stop




     Node JS
DEMOS!


Parallel Sessions
Parallel Environments
Parallel Runs of Parallel Sessions and Environments
I’ve gone cross-eyed
Target Requirement

You can build a Jellyfish Environment Target (JET)
Javascript Eval API -- or HTTP Proxy support
Start, Stop
A little JS chops


Help me get every single one!
Reporting

 CouchDB
 One liner


 var jf = require(‘jellyfish’)
 ff = jellyfish.createFirefox(function(i) { i.couch(); })
The Future


More Environments! (ssh, x-node versions, fridge, car)
Simple plugin architecture
HTTPS
Windows?
Use Jellyfish for Good!           (not evil)




 Load Testing
 App Testing
 JavaScript Analysis
 Performance
 Up-voting pictures of yourself
The Point


I want to literally run my JavaScript everywhere!
You are all insanely talented
Help me make Jellyfish awesome
Write Shareable JS!

Tuesday May 3, 2011
Heaven and Hell: JavaScript Everywhere
Matthew Eernisse


(I bet his intro music is going to be Rush)
Q&A


http://www.jelly.io
https://github.com/admc/jellyfish
@getjelly

Jellyfish, JSCONF 2011

  • 1.
  • 2.
    Introduction I’m beyondstoked to be here at JSCONF!!! I write JS at Sauce Labs
  • 3.
    History Windmill -2007 Node.JS - Appears Soda - Node drives browsers! WebDriver - Starts talking about mobile JSDOM - Spurs headless Why can’t I run my JS blurb everywhere at once? (shower idea)
  • 4.
    Breakdown What: Does my JavaScript work *THERE*? Why: The beauty of JS is the growing reach How: A Common JavaScript Execution API
  • 5.
    Mantra Brittle Courtesy - @hugs
  • 6.
  • 7.
  • 8.
    Mobile WebOS -- Bythe end of the week -- *DEMO* Android -- Too slow, working on Android x86 IOS -- System proxy, need a launcher -- *DEMO* Not checked into GH :-(
  • 9.
    Using it! InstallNode npm install jellyfish jellyfish shell/firefox/chrome browser.js("alert('test')", function(o){console.log(o)})
  • 10.
    A Script! varassert = require('assert') , jellyfish = require('jellyfish'); var zombie = jellyfish.createZombie(); zombie.go("http://www.wikipedia.com") .js("document.title", function(o) { assert.equal(o.result,"Wikipedia") })
  • 11.
    WebDriver Could not driveWebDriver from Node Created WD.js: “npm install wd” Currently supports: get, execute, close JSONWireProtocol is big, help me! Thanks @automatedtester https://github.com/admc/wd
  • 12.
    Architecture Lightweight NodeHTTP Proxy Environment Definitions Start, Stop, JS Eval Base API - JS, JSFile, JSUrl
  • 13.
    Architecture Picture! Dispatch/Report Proxy Browsers Run DIspatch/Report Jellyfish Headless Services Other Start/ Stop Node JS
  • 14.
    DEMOS! Parallel Sessions Parallel Environments ParallelRuns of Parallel Sessions and Environments I’ve gone cross-eyed
  • 15.
    Target Requirement You canbuild a Jellyfish Environment Target (JET) Javascript Eval API -- or HTTP Proxy support Start, Stop A little JS chops Help me get every single one!
  • 16.
    Reporting CouchDB Oneliner var jf = require(‘jellyfish’) ff = jellyfish.createFirefox(function(i) { i.couch(); })
  • 17.
    The Future More Environments!(ssh, x-node versions, fridge, car) Simple plugin architecture HTTPS Windows?
  • 18.
    Use Jellyfish forGood! (not evil) Load Testing App Testing JavaScript Analysis Performance Up-voting pictures of yourself
  • 19.
    The Point I wantto literally run my JavaScript everywhere! You are all insanely talented Help me make Jellyfish awesome
  • 20.
    Write Shareable JS! TuesdayMay 3, 2011 Heaven and Hell: JavaScript Everywhere Matthew Eernisse (I bet his intro music is going to be Rush)
  • 21.