switch to rake task and gh-pages hosting the readme

This commit is contained in:
John Bintz 2011-05-17 07:47:42 -04:00
parent aa11f442bc
commit ed7d6a9378
3 changed files with 23 additions and 97 deletions

View File

@ -2,102 +2,8 @@
Run your specs at sonic boom speed! No pesky reload button or page rendering slowdowns!
## Introduction
This gem works with projects that have used the [Jasmine gem](https://github.com/pivotal/jasmine-gem) to
create a `jasmine.yml` file that defines what to test. The runner loads that
`jasmine.yml` file and executes the tests defined within in a Qt WebKit widget, displaying the results
to the console and setting the exit code to one of the following:
* 0 for success
* 1 for spec run failure
* 2 for spec run success, but `console.log` was called during the run
`console.log` works, too, so you can run your specs side-by-side in a browser if you're so inclined. It
serializes whatever you're passing in as as JSON string, so objects that are cyclical in nature will not
serialize. If anyone has a good solution for this, please suggest and/or fork'n'fix.
## Installation
`gem install jasmine-headless-webkit` or use Bundler.
Installation requires Qt 4.7. See [senchalabs/examples](https://github.com/senchalabs/examples) and [my fork
of examples](https://github.com/johnbintz/examples) for more information on the QtWebKit runner.
Tested in the following environments:
* Mac OS X 10.6, with MacPorts Qt and Nokia Qt.mpkg
* Kubuntu 10.10
Let me know via a message or in the Issues section if it works on your setup and it's not listed!
## Usage
jasmine-headless-webkit [options] [list of spec files to run]
Current supported options:
* `-c`/`--colors` enables color output
* `--no-colors` disables color output
* `--keep` preserves the temporary HTML document if an error occurs in testing
* `-j`/`--jasmine-config` sets the `jasmine.yml` file to load *(defaults to `spec/javascripts/support/jasmine.yml`)*
If provided, only the requested spec files will be executed. Otherwise, all matching specs will be run.
These options can also be placed into a `.jasmine-headless-webkit` file in your project root, or into a
`.jasmine-headless-webkit` file in your home directory. Project level options override global options.
### CoffeeScript Support
`jasmine-headless-webkit` brings in the `coffee-script` gem and compiles & injects all CoffeeScript into the
generated HTML page. All you need to do is configure your `jasmine.yml` file to look for .coffee files:
src_files:
- app/assets/javascripts/**/*.coffee
spec_files:
- **/*[sS]pec.coffee
*(This will probably make it difficult to test your code in an official Jasmine server for now. You can try
[a technique like this](https://github.com/jbaudanza/rack-asset-compiler/blob/master/examples/jasmine_config.rb) for compiling CoffeeScript when it's requested from the server
or use [this fork of jasmine-gem](https://github.com/johnbintz/jasmine-gem/tree/coffeescript-inline-support) which
is thoroughly untested.)*
You will get line numbers on compile errors, but not logic errors. This is a CoffeeScript thing, and they're working on it. :)
### JavaScript Dialogs
You can call `alert()` and `confirm()` in your code. `alert()` will print the message to the console, and
`confirm()` will always return true. There's no way right now to respond to `confirm()`, so it's best to
mock that call:
spyOn(window, 'confirm').andReturn(false);
### Autotest Integration
`jasmine-headless-webkit` can integrate with Autotest. Your `jasmine.yml` file needs to be in the default
path, and you have to be ready to use a very alpha implementation of the feature. If used with RSpec 2,
Jasmine tests run after RSpec tests.
You need to create a `.jasmine-headless-webkit` file in your project root for this integration
to work.
`jasmine-headless-webkit` provides two new hooks: `:run_jasmine` and `:ran_jasmine` for before and after the
Jasmine specs have run. This is a good place to do things like re-package all your assets using
[Jammit](http://documentcloud.github.com/jammit/):
Autotest.add_hook(:run_jasmine) do |at|
system %{jammit}
end
### Server Interaction
`jasmine-headless-webkit` works the same as if you create an HTML file, manually load the Jasmine library and
your code & tests into the page, and open that page in a browser. Because of this, there's no way to handle
server interaction with your application or with a Jasmine server. If you need to test server interaction,
do one of the following:
* Stub your server responses using [Sinon.JS](http://sinonjs.org/)
* Use [PhantomJS](http://www.phantomjs.org/) against a running copy of a Jasmine server, instead of this project
http://johnbintz.github.com/jasmine-headless-webkit/ has the most up-to-date information on using
this project. You can see the source of that site on the gh-pages fork.
## License

View File

@ -1,7 +1,7 @@
module Jasmine
module Headless
module Webkit
# Your code goes here...
end
end
end

View File

@ -0,0 +1,20 @@
module Jasmine
module Headless
class Task
attr_accessor :colors, :keep_on_error, :jasmine_config
def initialize(name = 'jasmine:headless')
@colors = false
@keep_on_error = false
@jasmine_config = nil
yield self if block_given?
desc 'Run Jasmine specs headlessly'
task name do
system %{jasmine-headless-webkit #{@colors ? "-c" : "--no-colors"} #{@keep_on_error ? "--keep" : ""} #{@jasmine_config ? "-j #{@jasmine_config}" : ""}}
end
end
end
end
end