One of the new features in SproutCore v1.10.0 was a PhantomJS unit test
runner. It allowed us to automate SproutCore’s own framework unit tests,
giving us awesome continuous integration support right in GitHub via the
great Travis-CI service.
If you use CoreTest, SproutCore’s built-in (QUnit-like) unit test
framework, then you can also use this to run your own tests from the command
line – meaning you can automate it, and hook it up to your own CI
scaffolding. It’s impossible to overstate the impact that continuous,
automatic unit testing has on the quality and stability of your codebase.
You will need to have PhantomJS installed before using the test runner. Full
instructions for this can be found here.
You will also need to track down SproutCore’s installed location in order
to run its test runner script. If you’ve got a copy checked out into your
The Frozen Canuck is at it again. This time with I think the first public
explanation of how to build a custom view with the new SC.View class. Notice
that SproutCore 1.0 views are built using a simple render() method where you
generate HTML. It’s a really easy API and it just so happens to be
extremely fast, especially in IE where DOM manipulation is very expensive.
Check it: Creating a Simple Custom View in SproutCore: Part1
HTML5 drag and drop in Firefox 3.5:
With Firefox 3.5 all the major browsers (including IE!) support native drag
and drop. The SC.Drag interface in SproutCore was designed from the
beginning to follow the same protocols. That means once someone SC.Drag to
use native drag events, all your SproutCore-drag code will automatically work
between browser windows and applications without you making any changes to
One of the coolest parts of the new SproutCore View layer is its ability to
use aspect-based programming to add behaviors to views.
Aspect-based programming is built on the premise that often objects that
don’t follow from the same class hierarchy may in fact need similar
This is especially true in GUI programming when designers come to you and say
something like “I came up with this new widget - it looks kind of like a
progress bar but it acts like a button when you click on it”.
In SproutCore, you capture these common behaviors in a “mixin”. A mixin
is just a colle... (more)
In my last post I introduced event delegation in SproutCore and the basics of
how to handle events. In this post I’m going to build on this foundation
to show you how you can add event handlers to drag a view around the window.*
Introducing the Mouse Events
As I noted in the first post, SproutCore recognizes several different types
of mouse events. Most of these events are essentially the same events sent
by most browsers, though some differ significantly in order to give you
Remember that to listen for events, you just need to add a method to your
view with t... (more)