RSS

Tag Archives: CocoonJS

How to start developing iOS & Android native apps with CocoonJS

CocoonJS is one of the mobile wrappers for HTML5 web apps in the market. The pro of it is web apps especially games developed with canvas can benefit for performance from binding the code to OpenGL ES. Web apps built with HTML DOM has to be modified to run in the WebView thus these kind of apps doesn’t gain performance by using CocoonJS platform.

This step by step tutorial tells you how to set up the environment to work with ImpactJS and CocoonJS. ImpactJS is a popular Javascript game engine which is also supported by appMobi. If you don’t need to use ImpactJS, skip step 1 & 3. If you don’t need to use CocoonJS extensions which supports iOS & Android device features, skip step 2 & 3.

1. Download ImpactJS. If you are wondering whether it worth the money or not you may have a look on its forum and Point of Impact.

2. Download [cocoon_CocoonJSExtensions](https://bitbucket.org/ludei/cocoon_cocoonjsextensions).

3. Setup the code with [opensource ImpactJS CocoonJS boilerplate](https://github.com/fragcastle/ImpactJS-CocoonJS-Example).

4. CocoonJS requires an index.html as the program entry. Add script references of CocoonJS extensions and ImpactJS to the index.html if you need them. Use javascript to create a <canvas> element for game contents to be hardware accelerated. Webviews can be loaded using CocoonJS.App.loadInTheWebView(htmlPath). The example with webview can be downloaded at [CocoonJS webview demo source](http://cocoonjsservice.ludei.com/cocoonjslaunchersvr/demo-list/).

5. Download and install CocoonJS Launcher App from the app store on your mobile device.

6. Once you load the CocoonJS Launcher App, there’s a “Demo” button to try official demos and a “Test” button to try your own app. Press “Test” and follow the steps to register CocoonJS. A detailed graphical registration step can be found at THE COCOONJS LAUNCHER APP.

7. After registration, you can test your app by putting your compressed app zip file through iTunes in the CocoonJS Launcher ( Make sure the index.html is located in your zip root. For Android users, see THE COCOONJS LAUNCHER APP ), or pointing the url to your zip or index.html which is faster for development.

Tutorials
==================

1. [COCOONJS DEVELOPMENT GUIDE](http://wiki.ludei.com/cocoonjs:devguide)
2. [Impactjs With Cocoonjs](http://fragcastle.com/tech/2012/12/31/impactjs-with-cocoonjs/)

 
2 Comments

Posted by on March 4, 2013 in Javascript

 

Tags: ,

BDD and test coverage measuring with Jasmine and JSCover tutorial

Jasmine
==================

[Jasmine](http://pivotal.github.com/jasmine/) is a popular BDD framework for Javascript programs. It’s a standalone framework and there are HTML reporter, console reporter, … and more to choose from. To test Javascript in CocoonJS platform we can use the console reporter.

To try Jasmine:

1. Download [Jasmine](https://github.com/pivotal/jasmine/downloads).

2. Unzip the downloaded Jasmine standalone package. You can either open the SpecRunner.html with browsers or place the files in a web server and visit the url.

The default demo uses HTML reporter. Here is an example html of using the console reporter:
Download additional reporters: [https://github.com/larrymyers/jasmine-reporters](https://github.com/larrymyers/jasmine-reporters)

<!DOCTYPE HTML>
<html>
<head>
  <title>Jasmine Spec Runner</title>

  <link rel="shortcut icon" type="image/png" href="test/lib/jasmine-1.3.1/jasmine_favicon.png">
  <link rel="stylesheet" type="text/css" href="test/lib/jasmine-1.3.1/jasmine.css">
  <script type="text/javascript" src="test/lib/jasmine-1.3.1/jasmine.js"></script>
  <script type="text/javascript" src="test/lib/jasmine-1.3.1/jasmine-html.js"></script>
  <script type="text/javascript" src="test/lib/jasmine.console_reporter.js"></script>

  <!-- include source files here... -->

  <!-- include spec files here... -->

  <script type="text/javascript">
    (function() {

      // HTML Reporter
      // var jasmineEnv = jasmine.getEnv();
      // jasmineEnv.updateInterval = 1000;

      // var htmlReporter = new jasmine.HtmlReporter();

      // jasmineEnv.addReporter(htmlReporter);

      // jasmineEnv.specFilter = function(spec) {
      //   return htmlReporter.specFilter(spec);
      // };

      // var currentWindowOnload = window.onload;

      // window.onload = function() {
      //   if (currentWindowOnload) {
      //     currentWindowOnload();
      //   }
      //   execJasmine();
      // };

      // function execJasmine() {
      //   jasmineEnv.execute();
      // }

      // Console Reporter
      jasmine.getEnv().addReporter(new jasmine.ConsoleReporter());
      jasmine.getEnv().execute();

    })();
  </script>

</head>

<body>
</body>
</html>

We can also use both reporters in the same spec runner page.

JSCover
==================

To measure the test coverage for our Javascript program we can use JSCover. Here’s a step by step guide to use JSCover in server mode:

1. Download [JSCover](http://tntim96.github.com/JSCover/).

2. Unzip the downloaded file and run example-server.sh.

Mac: In terminal, type “sh example-server.sh”

Windows: In cmd, type “example-server.sh”

3. Visit [demo page](http://localhost:8080/jscoverage.html?/index.html).

4. In the Browser tab of the page, type in the test code running url in the URL box and then click “Open in frame”. Note that the domain and port of the test url has to be the same as the JSCover page.

The default script in example-server.sh is

    java -jar target/dist/JSCover-all.jar -ws --branch --document-root=doc/example --report-dir=target

We can use –no-instrument to specify the url that not to be instrumented. For example:

    java -jar target/dist/JSCover-all.jar -ws --branch --document-root=doc/example --report-dir=test/report --no-instrument=test

You can find more detailed options at [JSCover manual](http://tntim96.github.com/JSCover/manual/manual.xml#serverMode).

Tutorial
==================

1. [JSCover Guide](http://lucaspaulger.com/code-quality/2013/01/07/JSCover-Guide/)

2. [JSCover manual](http://tntim96.github.com/JSCover/manual/manual.xml)

 
Leave a comment

Posted by on February 19, 2013 in Javascript

 

Tags: , , ,