qlive-rspec 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <Settings><!--This file was automatically generated by Ruby plugin.
3
+ You are allowed to:
4
+ 1. Remove rake task
5
+ 2. Add existing rake tasks
6
+ To add existing rake tasks automatically delete this file and reload the project.
7
+ --><RakeGroup description="" fullCmd="" taksId="rake" /></Settings>
data/README.md CHANGED
@@ -1,17 +1,19 @@
1
1
  # Qlive-Rspec
2
2
 
3
3
  Run qlive-rails qunit javascript tests headlessly alongside your normal rspec integration examples.
4
-
5
4
  This builds on the [qlive-rails](https://github.com/proxv/qlive-rails) gem. If you are using Ruby on Rails and rspec,
6
5
  this gem will let you run your qlive tests in both a browser and headlessly as an rspec example/test.
7
6
 
7
+
8
8
  Qlive-rspec has relatively heavy dependencies: virtual X11 frame buffer, headless webkit, capybara, and rspec.
9
9
  If this doesn't work for you, it should be possible to incorporate your qlive tests into other automated testing
10
10
  or continuous integration enviornments (eg, with a selenium-related library.)
11
11
 
12
12
 
13
13
 
14
- ## Installation
14
+ ## Headless Webkit
15
+
16
+
15
17
 
16
18
  * Install webkit-qt and xvfb on your system. Eg:
17
19
  <pre>sudo aptitude install libqt4-dev xvfb</pre>
@@ -41,17 +43,16 @@ note: See [capybara-webkit](https://github.com/thoughtbot/capybara-webkit) and [
41
43
 
42
44
 
43
45
 
44
-
45
- ## Usage
46
-
47
46
  ### qunits_spec.rb
48
47
 
49
48
  * After you have your [qlive suites](https://github.com/proxv/qlive/wiki/qlive-suites) working in a browser,
50
49
  create ``spec/qunits/qunits_spec.rb``:
51
50
 
52
51
  ```ruby
53
- require "spec_helper.rb"
52
+ require "spec_helper.rb"
54
53
  include Qlive::Runner
54
+
55
+ Capybara.current_driver = :webkit
55
56
 
56
57
  describe "qunits" do
57
58
  run_qlive
@@ -63,7 +64,90 @@ create ``spec/qunits/qunits_spec.rb``:
63
64
  <pre>rspec spec/qunits</pre>
64
65
 
65
66
 
66
- ### Configuration
67
+ ## Sauce
68
+
69
+ You can use qlive-rspec to run cross-browser tests using Sauce Labs.
70
+
71
+ ### Installation
72
+
73
+ * create account with Sauce Labs
74
+ * config/ondemand.yml with your password
75
+ * install java sdk
76
+ * add gem 'sauce' to Gemfile in :test group
77
+
78
+ ### Sauce Labs Integration
79
+
80
+ * Create a spec outside of the normal spec directory. Eg:
81
+
82
+ sauce/sauce_spec.rb
83
+
84
+ * It might look like:
85
+
86
+ ```ruby
87
+ require_relative '../spec/spec_helper.rb'
88
+ require 'sauce'
89
+ require 'sauce/capybara'
90
+
91
+ Sauce.config do |c|
92
+ c[:start_tunnel] = true
93
+ end
94
+
95
+ Capybara.default_driver = :sauce
96
+
97
+ all_tests_passed = nil
98
+ Qlive.setup[:before_suites] = lambda {
99
+ Capybara.current_driver = :sauce
100
+ all_tests_passed = true
101
+ }
102
+
103
+ Qlive.setup[:after_suites] = lambda {
104
+ driver = Capybara.current_session.driver
105
+ session_id = driver.browser.session_id
106
+ driver.browser.quit
107
+ driver.instance_variable_set(:@browser, nil)
108
+
109
+ job = Sauce::Job.new('id' => session_id)
110
+ job.passed = all_tests_passed
111
+ job.save
112
+ }
113
+
114
+ def job_name(config=nil)
115
+ config ||= Sauce::Config.new.opts
116
+ "Qlive tests in #{config[:browser]}#{config[:browser_version] || ''} on #{config[:os]} at #{Time.now.to_s}"
117
+ end
118
+
119
+ def setup_session(config)
120
+ config.each do |key, value|
121
+ value = value || ''
122
+ ENV["SAUCE_#{key.to_s.upcase}"] = value.to_s
123
+ end
124
+
125
+ ENV['SAUCE_JOB_NAME'] ||= job_name(config)
126
+ end
127
+
128
+ def record_result(example)
129
+ all_tests_passed = false if example.exception
130
+ end
131
+
132
+ [[ 'firefox', nil, 'Windows 2003' ], [ 'iexplore', 8, 'Windows 2003' ], [ 'iexplore', 9, 'Windows 2008' ]].each do |browser, version, os|
133
+ config = {
134
+ :browser => browser,
135
+ :browser_version => version,
136
+ :os => os
137
+ }
138
+ describe job_name(config) do
139
+ run_qlive(:before_each => lambda {
140
+ setup_session(config)
141
+ puts "Running #{job_name}"
142
+ }, :after_each => lambda { |example|
143
+ record_result(example)
144
+ })
145
+ end
146
+ end
147
+
148
+ ```
149
+
150
+ ## Configuration Options
67
151
 
68
152
  * Optionally run setup/teardown code before and after the qlive tests are run.
69
153
  <pre>
@@ -76,3 +160,7 @@ Qlive.setup[:after_suites] lambda { my_teardown_code }
76
160
  * Optionally disable xvfb with ``Qlive.setup[:start_xvfb] = false`` if you plan on configuring it externally
77
161
 
78
162
  * Optionally change per-page timeout in seconds with: ``Qlive.setup[:capybara_wait_time] = 30``
163
+
164
+ * Optionally pass in ``:before_each`` and ``:after_each`` proc/lambda in ``run_qlive`` (called in qunits_spec.rb)
165
+ :after_each gets passed the current rspec [example](http://rdoc.info/github/rspec/rspec-core/RSpec/Core/ExampleGroup#example-instance_method) as its one and only parameter.
166
+
@@ -1,3 +1,3 @@
1
1
  module QliveRspec
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
@@ -9,65 +9,77 @@ module Qlive
9
9
 
10
10
  module ClassMethods
11
11
 
12
- def run_qlive(bool=true)
13
- puts "tmp --- run_qlive hi #{self.inspect}"
12
+ def run_qlive(args={})
14
13
  Qlive::Matchers.add_matchers
15
-
16
14
  Qlive.setup[:base_path] ||= "#{Rails.root}/spec/qunits"
17
15
  Qlive.setup[:logger] ||= Rails.logger
18
- Qlive::Registry.find_suites
19
-
20
- describe "pages", :type => :request do
21
- extend Qlive::SuitesHelper
22
-
23
- def visit_qunit_page(suite_name, href)
24
- using_wait_time(Qlive.setup[:capybara_wait_time]) do # perhaps let suites override this value
25
- Qlive.logger.info "Qlive sending capybara to run '#{suite_name}' on #{href}"
26
- visit href
27
- page.html.should_not be_nil
28
- page.wait_until(Qlive.setup[:capybara_wait_time]) do # hmmmm
29
- page.evaluate_script('!!window.qunitComplete')
30
- end
31
- failure_text = page.evaluate_script("$('li.fail li.fail').text();")
32
- page.should pass_qunit_tests(failure_text)
33
- end
34
- end
35
-
36
- Qlive::Registry.suites.values.each do |suite_meta|
37
- load suite_meta[:path]
38
- suite = Qlive::Registry.build_suite(suite_meta[:name])
39
- hrefs_for_suite(suite).each do |href|
40
- it "should pass qunit tests when visiting: #{href}" do
41
- visit_qunit_page(suite.name, href)
42
- end
43
- end
44
- end
45
16
 
17
+ # todo: support suite selection by allowing directory and path names, not just suite names. (both absolute and relative to base_path)
18
+ desired_suites_by_name = args[:suites] || Qlive::Registry.find_suites.keys
19
+ describe "qlive", :type => :request do
46
20
  before(:all) do
47
21
  Qlive.setup[:before_suites].call if Qlive.setup[:before_suites]
48
- if Qlive.setup[:start_xvfb]
22
+ if Qlive.setup[:start_xvfb] && Capybara.current_driver == :webkit
49
23
  @headless = ::Headless.new(Qlive.setup[:headless_config])
50
24
  @headless.start
51
25
  end
52
26
  end
53
27
 
54
- before(:each) do
55
- page.reset!
28
+ desired_suites_by_name.each do |desired_suite|
29
+ suite = resolve_suite(desired_suite)
30
+ raise "Could not find qlive suite for: #{desired_suite}" unless suite
31
+ describe "suite '#{suite.name}'" do
32
+ extend Qlive::SuitesHelper
33
+
34
+ def visit_qunit_page(suite_name, href)
35
+ using_wait_time(Qlive.setup[:capybara_wait_time]) do # perhaps let individual suites override this value
36
+ Qlive.logger.info "Qlive sending capybara to run '#{suite_name}' on #{href}"
37
+ visit href
38
+ page.html.should_not be_nil
39
+ page.wait_until(Qlive.setup[:capybara_wait_time]) do # hmmmm
40
+ page.evaluate_script('!!window.qunitComplete')
41
+ end
42
+ failure_text = page.evaluate_script("$('li.fail li.fail').text();")
43
+ page.should pass_qunit_tests(failure_text)
44
+ end
45
+ end
46
+
47
+
48
+ before(:each) do
49
+ args[:before_each].call if args[:before_each]
50
+ page.reset!
51
+ end
52
+
53
+ hrefs_for_suite(suite).each do |href|
54
+ it "should pass qunit tests when visiting: #{href}" do
55
+ visit_qunit_page(suite.name, href)
56
+ end
57
+ end
58
+
59
+ after(:each) do
60
+ args[:after_each].call(example) if args[:after_each]
61
+ end
62
+ end
56
63
  end
57
64
 
58
65
  after(:all) do
59
- puts "\nGetting rough with headless webkit_server. In the event of a fatal IO error, use your judgement regarding calling the police."
60
- @headless.destroy if @headless
61
- if Qlive.setup[:after_suites]
62
- Qlive.setup[:after_suites].call
66
+ Qlive.setup[:after_suites].call if Qlive.setup[:after_suites]
67
+ if @headless
68
+ puts "\nGetting rough with headless webkit_server. In the event of a fatal IO error, use your judgement regarding calling the police."
69
+ @headless.destroy
63
70
  end
64
71
  end
72
+
65
73
  end
66
74
  end
75
+
76
+ def resolve_suite(desired_suite)
77
+ #todo: if it ends in .rb, check for the file, and use the path to get the suite
78
+ Qlive::Registry.build_suite(desired_suite)
79
+ end
67
80
  end
68
81
 
69
82
  def self.included(base)
70
- puts "tmp --- included. hi base #{base.inspect}"
71
83
  base.extend ClassMethods
72
84
  end
73
85
 
@@ -6,7 +6,7 @@ Gem::Specification.new do |gem|
6
6
  gem.email = ["support@proxv.com"]
7
7
  gem.summary = "Run qlive-rails qunit javascript tests headlessly alongside your normal rspec integration examples"
8
8
  gem.description = gem.summary
9
- gem.homepage = "https://github.com/proxv/qlive-rspec/"
9
+ gem.homepage = "https://github.com/proxv/qlive/gems/qlive-rspec/"
10
10
 
11
11
  gem.files = `git ls-files`.split($\)
12
12
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
@@ -15,7 +15,7 @@ Gem::Specification.new do |gem|
15
15
  gem.require_paths = ["lib"]
16
16
  gem.version = QliveRspec::VERSION
17
17
 
18
- gem.add_dependency "qlive-rails", "~> 0.1.2"
18
+ gem.add_dependency "qlive-rails", "~> 0.2.0"
19
19
  gem.add_dependency "capybara-webkit", "0.10.0"
20
20
  gem.add_dependency "rspec-rails", "~> 2.8.1"
21
21
  gem.add_dependency "headless", "~> 0.3"
@@ -18,12 +18,14 @@ end
18
18
 
19
19
  group :test, :development do
20
20
  gem 'factory_girl_rails', '3.5.0'
21
- gem 'qlive-rails', :require => 'qlive/engine' # https://github.com/proxv/qlive
21
+ gem 'qlive-rails', :path => "#{ENV['PROXV_REPOS']}/qlive/gems/qlive-rails", :require => 'qlive/engine' # https://github.com/proxv/qlive # tmp - del
22
+ #gem 'qlive-rails', :require => 'qlive/engine' # https://github.com/proxv/qlive # tmp - restore
22
23
  end
23
24
 
24
25
  group :test do
25
26
  gem 'rspec-rails', '~> 2.8.1'
26
27
  gem 'capybara-webkit', '0.10.0'
27
28
  gem 'headless', '~> 0.2'
29
+ gem 'qlive', :path => "#{ENV['PROXV_REPOS']}/qlive/gems/qlive" # tmp - del
28
30
  gem 'qlive-rspec', :path => File.expand_path('../../..', __FILE__)
29
31
  end
@@ -7,7 +7,7 @@ https://github.com/mulderp/Backbone-on-Rails-todoDemo
7
7
 
8
8
  ## Run dummy app qlive suites in browser
9
9
  ```
10
- cd qlive-rspec/spec/dummy
10
+ cd qlive/gems/qlive-rspec/spec/dummy
11
11
  rails s
12
12
  http://localhost/qlive
13
13
  ```
@@ -2,12 +2,12 @@ class AddingTodosQlive
2
2
  include Qlive::Suite
3
3
 
4
4
  def pages_to_test
5
- Todo.destroy(Todo.all.map(&:id))
6
- 4.times { FactoryGirl.create(:todo) }
7
5
  [ '/#colors/blue', '/#colors/brown' ]
8
6
  end
9
7
 
10
8
  def before_each_request(rack_request)
9
+ Todo.destroy(Todo.all.map(&:id))
10
+ 4.times { FactoryGirl.create(:todo) }
11
11
  end
12
12
 
13
13
  end
@@ -1,17 +1,17 @@
1
1
  $(document).ready(function() {
2
- module("ajax-creation.js");
2
+ module("test-ajax-creation.js");
3
3
 
4
- test("create new todo item", 2, function() {
4
+ asyncTest("create new todo item", 2, function() {
5
5
  waitFor('items load', function() {
6
6
  return $('#todo-list li').length > 3;
7
7
  }).then(function() {
8
- console.log('Finished fetching existing todo items');
9
8
  var startCount = $('#todo-list li').length;
10
9
  ok($('#todo-list li').length >= 4, "should start with at least 4 items");
11
10
  var input = $('#new-todo');
12
11
  var content = 'Water the dog again';
13
12
  input.val(content).trigger(jQuery.Event('keypress', { keyCode: 13 } ));
14
13
  equal($('#todo-list li').length, startCount + 1, "should add new item to the list");
14
+ start();
15
15
  });
16
16
  });
17
17
  });
@@ -0,0 +1,14 @@
1
+ window.qlog = function(msg, obj) {
2
+ var domConsole = $('#qlog');
3
+ if (!domConsole.length) {
4
+ domConsole = $('<ol id="qlog">Test Log:</ol>').appendTo($('.qlive-structure'));
5
+ }
6
+ if (console && console.log) {
7
+ console.log(msg, obj);
8
+ }
9
+ var li = $('<li>' + msg + '</li>');
10
+ if (obj) {
11
+ li.append('<pre>' + JSON.stringify(obj, null, ' ') + '</pre>');
12
+ }
13
+ li.appendTo(domConsole);
14
+ };
@@ -1,28 +1,46 @@
1
-
2
- var DEFAULT_MAX_DURATION = 9000;
3
-
4
- // note: optionally disable ajax async to reduce the need for waitFor. eg:
5
- // $.ajax({ async: false });
1
+ var DEFAULT_MAX_DURATION = 12000;
6
2
 
7
3
  window.waitFor = function(title, checkFn, opts) {
8
- stop();
4
+ var qunitCurrent = QUnit.config.current; // something is clearing this. Not yet sure why.
9
5
  var defer = jQuery.Deferred();
10
6
  opts = opts || {};
11
7
  var startTime = new Date().getTime();
12
8
  var maxDuration = opts.maxDuration || DEFAULT_MAX_DURATION;
13
9
  var pollInterval = opts.pollInterval || 200;
14
10
  var pollFn = function() {
15
- if (new Date().getTime() > startTime + maxDuration) {
16
- ok(false, 'waitFor "' + title + '" did not complete in ' + maxDuration + ' ms');
11
+ var now = new Date().getTime();
12
+ if (now > startTime + maxDuration) {
13
+ qlog('qq.waitFor "' + title + '" did not complete in ' + maxDuration + ' ms');
14
+ QUnit.config.current = qunitCurrent;
17
15
  defer.reject();
18
- start();
19
- } else if (checkFn()) {
20
- defer.resolve();
21
- start();
16
+ failQunit('qq.waitFor "' + title + '" did not complete in ' + maxDuration + ' ms');
22
17
  } else {
23
- window.setTimeout(pollFn, pollInterval);
18
+ try {
19
+ var isReady = checkFn();
20
+ } catch (err) {
21
+ failQunit('ERROR. qq.waitFor "' + title + '" WAIT function has an error: ' + err.message);
22
+ }
23
+ if (isReady) {
24
+ QUnit.config.current = qunitCurrent;
25
+ qlog('Wait on "' + title + '" completed in ' + (now - startTime) + ' ms');
26
+ try {
27
+ defer.resolve();
28
+ } catch (err) {
29
+ failQunit('ERROR. qq.waitFor "' + title + '" RESOLUTION function has an error: ' + err.message);
30
+ }
31
+ } else {
32
+ window.setTimeout(pollFn, pollInterval);
33
+ }
24
34
  }
25
35
  };
36
+ qlog('Waiting for "' + title + '"');
26
37
  pollFn();
27
38
  return defer.promise();
28
- };
39
+ };
40
+
41
+ function failQunit(msg) {
42
+ qlog(msg);
43
+ ok(false, msg);
44
+ start();
45
+ window.qunitComplete = true;
46
+ }
@@ -0,0 +1,14 @@
1
+ module Regressions
2
+ class SparseContentQlive
3
+ include Qlive::Suite
4
+
5
+ def pages_to_test
6
+ [ '/#colors/red' ]
7
+ end
8
+
9
+ def before_each_request(rack_request)
10
+ Todo.destroy(Todo.all.map(&:id))
11
+ end
12
+
13
+ end
14
+ end
@@ -0,0 +1,12 @@
1
+ $(document).ready(function() {
2
+ module("test-empty-list.js");
3
+
4
+ asyncTest("regression test of empty list", 1, function() {
5
+ waitFor('items load', function() {
6
+ return $('#todo-list').length;
7
+ }).then(function() {
8
+ ok($('#create-todo input').length, 'new item input box should render when list is empty');
9
+ start();
10
+ });
11
+ });
12
+ });
@@ -3,5 +3,8 @@ require_relative './spec_helper.rb'
3
3
  include Qlive::Runner
4
4
 
5
5
  describe "qunits" do
6
- run_qlive
6
+ run_qlive(:before_each => lambda {
7
+ # I can do things here like set ENV variables for sauce
8
+ })
9
+
7
10
  end
@@ -2,7 +2,6 @@ ENV["RAILS_ENV"] = 'test'
2
2
  ENV["DUMMY_HOME"] = dummy_home = File.expand_path("../dummy", __FILE__)
3
3
  require File.expand_path("#{dummy_home}/config/environment.rb", __FILE__)
4
4
  require 'rspec/rails'
5
- require 'pp'
6
5
 
7
6
  Dir["#{dummy_home}/spec/spec_support/**/*.rb"].each {|f| require f} # I don't care about Windows
8
7
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qlive-rspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,22 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-04 00:00:00.000000000 Z
12
+ date: 2012-08-31 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: qlive-rails
16
- requirement: &2152220460 !ruby/object:Gem::Requirement
16
+ requirement: &2152105900 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: 0.1.2
21
+ version: 0.2.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2152220460
24
+ version_requirements: *2152105900
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: capybara-webkit
27
- requirement: &2152219660 !ruby/object:Gem::Requirement
27
+ requirement: &2152105200 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - =
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 0.10.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2152219660
35
+ version_requirements: *2152105200
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec-rails
38
- requirement: &2152218800 !ruby/object:Gem::Requirement
38
+ requirement: &2152129920 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 2.8.1
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *2152218800
46
+ version_requirements: *2152129920
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: headless
49
- requirement: &2152217960 !ruby/object:Gem::Requirement
49
+ requirement: &2152129080 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0.3'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *2152217960
57
+ version_requirements: *2152129080
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rspec-rails
60
- requirement: &2152217160 !ruby/object:Gem::Requirement
60
+ requirement: &2152128520 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 2.8.0
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *2152217160
68
+ version_requirements: *2152128520
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: factory_girl_rails
71
- requirement: &2152216260 !ruby/object:Gem::Requirement
71
+ requirement: &2152127640 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,7 +76,7 @@ dependencies:
76
76
  version: 3.5.0
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *2152216260
79
+ version_requirements: *2152127640
80
80
  description: Run qlive-rails qunit javascript tests headlessly alongside your normal
81
81
  rspec integration examples
82
82
  email:
@@ -86,6 +86,7 @@ extensions: []
86
86
  extra_rdoc_files: []
87
87
  files:
88
88
  - .gitignore
89
+ - .rakeTasks
89
90
  - Gemfile
90
91
  - LICENSE
91
92
  - README.md
@@ -139,11 +140,9 @@ files:
139
140
  - spec/dummy/config/initializers/wrap_parameters.rb
140
141
  - spec/dummy/config/locales/en.yml
141
142
  - spec/dummy/config/routes.rb
142
- - spec/dummy/db/development.sqlite3
143
143
  - spec/dummy/db/migrate/20120317122010_create_todos.rb
144
144
  - spec/dummy/db/schema.rb
145
145
  - spec/dummy/db/seeds.rb
146
- - spec/dummy/db/test.sqlite3
147
146
  - spec/dummy/doc/README_FOR_APP
148
147
  - spec/dummy/lib/assets/.gitkeep
149
148
  - spec/dummy/lib/tasks/.gitkeep
@@ -157,64 +156,19 @@ files:
157
156
  - spec/dummy/script/test
158
157
  - spec/dummy/spec/factories/todo_lists.rb
159
158
  - spec/dummy/spec/factories/todos.rb
160
- - spec/dummy/spec/qunits/.DS_Store
161
159
  - spec/dummy/spec/qunits/adding_todos/adding_todos_qlive.rb
162
- - spec/dummy/spec/qunits/adding_todos/ajax-creation.js
163
- - spec/dummy/spec/qunits/qunit_support/qlive_helper.rb
160
+ - spec/dummy/spec/qunits/adding_todos/test-ajax-creation.js
161
+ - spec/dummy/spec/qunits/qunit_support/qunit-logger.js
164
162
  - spec/dummy/spec/qunits/qunit_support/qunit-starter.js
165
163
  - spec/dummy/spec/qunits/qunit_support/wait-for.js
166
- - spec/dummy/tmp/cache/assets/C5B/9C0/sprockets%2Faa69c6a6967552862782c17a264616f0
167
- - spec/dummy/tmp/cache/assets/C85/B80/sprockets%2F98af874023c7cc2924ae87e605711532
168
- - spec/dummy/tmp/cache/assets/C9A/C40/sprockets%2F729f761526e6c21ed96511f7277fe982
169
- - spec/dummy/tmp/cache/assets/C9F/9A0/sprockets%2F1db451c19d955625f00aa51437df3152
170
- - spec/dummy/tmp/cache/assets/CA5/800/sprockets%2F353700484461b1229e7cfb7b7c0ce640
171
- - spec/dummy/tmp/cache/assets/CAB/1F0/sprockets%2F5bc32b49750b54325270c34377ede81e
172
- - spec/dummy/tmp/cache/assets/CAF/6B0/sprockets%2F2b7b92f831e2b43c590ca91b62708395
173
- - spec/dummy/tmp/cache/assets/CBB/2E0/sprockets%2F9f57f2f115170a931f96bdb689312b94
174
- - spec/dummy/tmp/cache/assets/CC1/EC0/sprockets%2Fe6256cd8969bf71b9e18729e631072a2
175
- - spec/dummy/tmp/cache/assets/CD4/C30/sprockets%2Fd166012e1da02d12697c2ee0f574f690
176
- - spec/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953
177
- - spec/dummy/tmp/cache/assets/CDC/F50/sprockets%2F614a5858458b9422d8e266fbaa6310ab
178
- - spec/dummy/tmp/cache/assets/CDF/CB0/sprockets%2Fd6f984ec9cf105b484172a66c00f0561
179
- - spec/dummy/tmp/cache/assets/CFF/170/sprockets%2F4af4a5f916847c198f92a79e8f04287f
180
- - spec/dummy/tmp/cache/assets/D0D/830/sprockets%2F15213ba08baca38d909585e736bb9f44
181
- - spec/dummy/tmp/cache/assets/D10/F10/sprockets%2F349a7d73940a1643fb3de693ca7cd244
182
- - spec/dummy/tmp/cache/assets/D11/2F0/sprockets%2F36fc2e765d9cc09c50c0e55b1933a737
183
- - spec/dummy/tmp/cache/assets/D26/620/sprockets%2F6926777d652a664ceb5aa28666efa7c9
184
- - spec/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705
185
- - spec/dummy/tmp/cache/assets/D3E/F10/sprockets%2F75dd8ecd20427d22139517ae9f25ee2a
186
- - spec/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655
187
- - spec/dummy/tmp/cache/assets/D4E/F70/sprockets%2Fcf5cf57efa2c53a409b80285278e5f77
188
- - spec/dummy/tmp/cache/assets/D52/090/sprockets%2F826a9bb15e4093dd94d248d9f90f9ed2
189
- - spec/dummy/tmp/cache/assets/D53/7D0/sprockets%2F43c0246147f6192dfffbf8f68d793a6e
190
- - spec/dummy/tmp/cache/assets/D53/E30/sprockets%2Fffde997b0d35826e3175caa159968dc4
191
- - spec/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6
192
- - spec/dummy/tmp/cache/assets/D5B/1B0/sprockets%2F36c7e9792a69fd67c686a16e382b5ffa
193
- - spec/dummy/tmp/cache/assets/D68/7D0/sprockets%2Fde9b9f45d0b5fa19cf672371102a1f0f
194
- - spec/dummy/tmp/cache/assets/D6F/C80/sprockets%2F69d138071bef8c9a34324bfdf2fd530d
195
- - spec/dummy/tmp/cache/assets/D71/020/sprockets%2Fe303c90d58293dcd7eb29d633c9cb54a
196
- - spec/dummy/tmp/cache/assets/D76/C40/sprockets%2F5dc3f2334568fee3c23c086463fefa8c
197
- - spec/dummy/tmp/cache/assets/D82/AD0/sprockets%2F042cc68bc2ce132b356c704abfaf107a
198
- - spec/dummy/tmp/cache/assets/D89/0B0/sprockets%2F7c8dc9875c0c22e89fdc595cdd9605f2
199
- - spec/dummy/tmp/cache/assets/D8E/A00/sprockets%2Ff89d78b78be9a45cf7e944a57c82b26c
200
- - spec/dummy/tmp/cache/assets/D90/690/sprockets%2Fce78782d3fc61622015a80c2acc6cdba
201
- - spec/dummy/tmp/cache/assets/D99/330/sprockets%2Fe2a2a8724fee0fb701e358ee266cda62
202
- - spec/dummy/tmp/cache/assets/D99/B80/sprockets%2Fc608b81fe3a10ffee85e0b63e9ca9201
203
- - spec/dummy/tmp/cache/assets/DB0/B80/sprockets%2F96f6192adc54bf98a98d6fa190ebb74b
204
- - spec/dummy/tmp/cache/assets/DC6/AD0/sprockets%2Fcfcccca451e28002deb96721d94e25ce
205
- - spec/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994
206
- - spec/dummy/tmp/cache/assets/DE6/CE0/sprockets%2F6fda7e975c6df54bffda6598f431e5d1
207
- - spec/dummy/tmp/cache/assets/DFD/350/sprockets%2Fdbea6b4a1f0b88258c29c6836bcca6ed
208
- - spec/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af
209
- - spec/dummy/tmp/cache/assets/E39/3B0/sprockets%2F9ae1c4c883d1dd6fc84cdbf1ff55d44f
210
- - spec/dummy/tmp/cache/sass/3a7aef2f892362e6596155ab72cedacbd9a1a7ed/todos.scssc
211
- - spec/dummy/tmp/cache/sass/3ac4a8f3985b4a79a98fc03388b5ded5e9bdc4aa/todos.scssc
164
+ - spec/dummy/spec/qunits/regressions/sparse_content/sparse_content_qlive.rb
165
+ - spec/dummy/spec/qunits/regressions/sparse_content/test-empty-list.js
212
166
  - spec/dummy/vendor/assets/javascripts/.gitkeep
213
167
  - spec/dummy/vendor/assets/stylesheets/.gitkeep
214
168
  - spec/dummy/vendor/plugins/.gitkeep
215
169
  - spec/qunits_spec.rb
216
170
  - spec/spec_helper.rb
217
- homepage: https://github.com/proxv/qlive-rspec/
171
+ homepage: https://github.com/proxv/qlive/gems/qlive-rspec/
218
172
  licenses: []
219
173
  post_install_message:
220
174
  rdoc_options: []
@@ -284,11 +238,9 @@ test_files:
284
238
  - spec/dummy/config/initializers/wrap_parameters.rb
285
239
  - spec/dummy/config/locales/en.yml
286
240
  - spec/dummy/config/routes.rb
287
- - spec/dummy/db/development.sqlite3
288
241
  - spec/dummy/db/migrate/20120317122010_create_todos.rb
289
242
  - spec/dummy/db/schema.rb
290
243
  - spec/dummy/db/seeds.rb
291
- - spec/dummy/db/test.sqlite3
292
244
  - spec/dummy/doc/README_FOR_APP
293
245
  - spec/dummy/lib/assets/.gitkeep
294
246
  - spec/dummy/lib/tasks/.gitkeep
@@ -302,58 +254,13 @@ test_files:
302
254
  - spec/dummy/script/test
303
255
  - spec/dummy/spec/factories/todo_lists.rb
304
256
  - spec/dummy/spec/factories/todos.rb
305
- - spec/dummy/spec/qunits/.DS_Store
306
257
  - spec/dummy/spec/qunits/adding_todos/adding_todos_qlive.rb
307
- - spec/dummy/spec/qunits/adding_todos/ajax-creation.js
308
- - spec/dummy/spec/qunits/qunit_support/qlive_helper.rb
258
+ - spec/dummy/spec/qunits/adding_todos/test-ajax-creation.js
259
+ - spec/dummy/spec/qunits/qunit_support/qunit-logger.js
309
260
  - spec/dummy/spec/qunits/qunit_support/qunit-starter.js
310
261
  - spec/dummy/spec/qunits/qunit_support/wait-for.js
311
- - spec/dummy/tmp/cache/assets/C5B/9C0/sprockets%2Faa69c6a6967552862782c17a264616f0
312
- - spec/dummy/tmp/cache/assets/C85/B80/sprockets%2F98af874023c7cc2924ae87e605711532
313
- - spec/dummy/tmp/cache/assets/C9A/C40/sprockets%2F729f761526e6c21ed96511f7277fe982
314
- - spec/dummy/tmp/cache/assets/C9F/9A0/sprockets%2F1db451c19d955625f00aa51437df3152
315
- - spec/dummy/tmp/cache/assets/CA5/800/sprockets%2F353700484461b1229e7cfb7b7c0ce640
316
- - spec/dummy/tmp/cache/assets/CAB/1F0/sprockets%2F5bc32b49750b54325270c34377ede81e
317
- - spec/dummy/tmp/cache/assets/CAF/6B0/sprockets%2F2b7b92f831e2b43c590ca91b62708395
318
- - spec/dummy/tmp/cache/assets/CBB/2E0/sprockets%2F9f57f2f115170a931f96bdb689312b94
319
- - spec/dummy/tmp/cache/assets/CC1/EC0/sprockets%2Fe6256cd8969bf71b9e18729e631072a2
320
- - spec/dummy/tmp/cache/assets/CD4/C30/sprockets%2Fd166012e1da02d12697c2ee0f574f690
321
- - spec/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953
322
- - spec/dummy/tmp/cache/assets/CDC/F50/sprockets%2F614a5858458b9422d8e266fbaa6310ab
323
- - spec/dummy/tmp/cache/assets/CDF/CB0/sprockets%2Fd6f984ec9cf105b484172a66c00f0561
324
- - spec/dummy/tmp/cache/assets/CFF/170/sprockets%2F4af4a5f916847c198f92a79e8f04287f
325
- - spec/dummy/tmp/cache/assets/D0D/830/sprockets%2F15213ba08baca38d909585e736bb9f44
326
- - spec/dummy/tmp/cache/assets/D10/F10/sprockets%2F349a7d73940a1643fb3de693ca7cd244
327
- - spec/dummy/tmp/cache/assets/D11/2F0/sprockets%2F36fc2e765d9cc09c50c0e55b1933a737
328
- - spec/dummy/tmp/cache/assets/D26/620/sprockets%2F6926777d652a664ceb5aa28666efa7c9
329
- - spec/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705
330
- - spec/dummy/tmp/cache/assets/D3E/F10/sprockets%2F75dd8ecd20427d22139517ae9f25ee2a
331
- - spec/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655
332
- - spec/dummy/tmp/cache/assets/D4E/F70/sprockets%2Fcf5cf57efa2c53a409b80285278e5f77
333
- - spec/dummy/tmp/cache/assets/D52/090/sprockets%2F826a9bb15e4093dd94d248d9f90f9ed2
334
- - spec/dummy/tmp/cache/assets/D53/7D0/sprockets%2F43c0246147f6192dfffbf8f68d793a6e
335
- - spec/dummy/tmp/cache/assets/D53/E30/sprockets%2Fffde997b0d35826e3175caa159968dc4
336
- - spec/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6
337
- - spec/dummy/tmp/cache/assets/D5B/1B0/sprockets%2F36c7e9792a69fd67c686a16e382b5ffa
338
- - spec/dummy/tmp/cache/assets/D68/7D0/sprockets%2Fde9b9f45d0b5fa19cf672371102a1f0f
339
- - spec/dummy/tmp/cache/assets/D6F/C80/sprockets%2F69d138071bef8c9a34324bfdf2fd530d
340
- - spec/dummy/tmp/cache/assets/D71/020/sprockets%2Fe303c90d58293dcd7eb29d633c9cb54a
341
- - spec/dummy/tmp/cache/assets/D76/C40/sprockets%2F5dc3f2334568fee3c23c086463fefa8c
342
- - spec/dummy/tmp/cache/assets/D82/AD0/sprockets%2F042cc68bc2ce132b356c704abfaf107a
343
- - spec/dummy/tmp/cache/assets/D89/0B0/sprockets%2F7c8dc9875c0c22e89fdc595cdd9605f2
344
- - spec/dummy/tmp/cache/assets/D8E/A00/sprockets%2Ff89d78b78be9a45cf7e944a57c82b26c
345
- - spec/dummy/tmp/cache/assets/D90/690/sprockets%2Fce78782d3fc61622015a80c2acc6cdba
346
- - spec/dummy/tmp/cache/assets/D99/330/sprockets%2Fe2a2a8724fee0fb701e358ee266cda62
347
- - spec/dummy/tmp/cache/assets/D99/B80/sprockets%2Fc608b81fe3a10ffee85e0b63e9ca9201
348
- - spec/dummy/tmp/cache/assets/DB0/B80/sprockets%2F96f6192adc54bf98a98d6fa190ebb74b
349
- - spec/dummy/tmp/cache/assets/DC6/AD0/sprockets%2Fcfcccca451e28002deb96721d94e25ce
350
- - spec/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994
351
- - spec/dummy/tmp/cache/assets/DE6/CE0/sprockets%2F6fda7e975c6df54bffda6598f431e5d1
352
- - spec/dummy/tmp/cache/assets/DFD/350/sprockets%2Fdbea6b4a1f0b88258c29c6836bcca6ed
353
- - spec/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af
354
- - spec/dummy/tmp/cache/assets/E39/3B0/sprockets%2F9ae1c4c883d1dd6fc84cdbf1ff55d44f
355
- - spec/dummy/tmp/cache/sass/3a7aef2f892362e6596155ab72cedacbd9a1a7ed/todos.scssc
356
- - spec/dummy/tmp/cache/sass/3ac4a8f3985b4a79a98fc03388b5ded5e9bdc4aa/todos.scssc
262
+ - spec/dummy/spec/qunits/regressions/sparse_content/sparse_content_qlive.rb
263
+ - spec/dummy/spec/qunits/regressions/sparse_content/test-empty-list.js
357
264
  - spec/dummy/vendor/assets/javascripts/.gitkeep
358
265
  - spec/dummy/vendor/assets/stylesheets/.gitkeep
359
266
  - spec/dummy/vendor/plugins/.gitkeep