specterjs 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (28) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +7 -0
  3. data/lib/javascript/assertions/assert.coffee +4 -0
  4. data/lib/javascript/specter.js +79 -0
  5. data/lib/rails/specter.rb +8 -0
  6. data/lib/rails/specter/application/app/assets/javascripts/exec.js +32 -0
  7. data/lib/rails/specter/application/app/assets/javascripts/runner.js +65 -0
  8. data/lib/rails/specter/application/app/assets/javascripts/test.js +104 -0
  9. data/lib/rails/specter/application/app/assets/javascripts/vendors/prism.js +724 -0
  10. data/lib/rails/specter/application/app/assets/stylesheets/application.scss +89 -0
  11. data/lib/rails/specter/application/app/assets/stylesheets/test.scss +37 -0
  12. data/lib/rails/specter/application/app/assets/stylesheets/tests.scss +76 -0
  13. data/lib/rails/specter/application/app/assets/stylesheets/variables.scss +11 -0
  14. data/lib/rails/specter/application/app/assets/stylesheets/vendors/prism.css +197 -0
  15. data/lib/rails/specter/application/app/controllers/application_controller.rb +2 -0
  16. data/lib/rails/specter/application/app/controllers/tests_controller.rb +29 -0
  17. data/lib/rails/specter/application/app/models/specter/test.rb +26 -0
  18. data/lib/rails/specter/application/app/views/layouts/application.html.erb +24 -0
  19. data/lib/rails/specter/application/app/views/tests/index.html.erb +19 -0
  20. data/lib/rails/specter/application/app/views/tests/run.html.erb +20 -0
  21. data/lib/rails/specter/application/app/views/tests/show.html.erb +14 -0
  22. data/lib/rails/specter/application/application.rb +13 -0
  23. data/lib/rails/specter/application/config.ru +12 -0
  24. data/lib/rails/specter/engine.rb +14 -0
  25. data/lib/rails/specter/tasks/specter.rake +47 -0
  26. data/lib/rails/version.rb +3 -0
  27. data/specter.gemspec +28 -0
  28. metadata +97 -0
@@ -0,0 +1,26 @@
1
+ module Specter
2
+ class Test
3
+ attr_reader :pathname
4
+ def initialize(pathname)
5
+ @pathname = pathname
6
+ end
7
+
8
+ def input
9
+ File.open(@pathname + "input.html").read
10
+ end
11
+
12
+ def expected
13
+ File.open(@pathname + "expected.html").read
14
+ end
15
+
16
+ def test
17
+ File.open(@pathname + "test.js").read
18
+ end
19
+
20
+ def valid?
21
+ File.exist?(@pathname + "input.html") &&
22
+ File.exist?(@pathname + "expected.html") &&
23
+ File.exist?(@pathname + "test.js")
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,24 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Specter Test Application</title>
5
+ <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
6
+ <%= csrf_meta_tags %>
7
+ </head>
8
+
9
+ <body>
10
+
11
+ <header>
12
+ <div>
13
+ <h1><a href='/'>Specter</a></h1>
14
+ </div>
15
+ <%= yield :testrun %>
16
+ </header>
17
+
18
+ <%= yield %>
19
+
20
+ <%= javascript_include_tag 'runner', 'data-turbolinks-track' => true %>
21
+ </body>
22
+ </html>
23
+
24
+
@@ -0,0 +1,19 @@
1
+ <%= content_for :testrun do %>
2
+ <a id="Run" data-running="false">Run all tests</a>
3
+ <% end %>
4
+
5
+
6
+ <main>
7
+ <ul class="tests">
8
+ <% @directories.each do |dir| %>
9
+ <%= content_tag :li, class: %w(test), data: { status: 'idle', run: run_test_path(id:dir.basename) } do %>
10
+ <div class="status" data-error="❌" data-success="✓">
11
+ </div>
12
+ <div>
13
+ <%= link_to dir.basename.to_s.capitalize, test_path(id: dir.basename) %>
14
+ <span class="message"></span>
15
+ </div>
16
+ <% end %>
17
+ <% end %>
18
+ </ul>
19
+ </main>
@@ -0,0 +1,20 @@
1
+ <section id="SpecterTestWrapper">
2
+
3
+ <div>
4
+ <%= raw @test.input %>
5
+ </div>
6
+
7
+ <div>
8
+ <%= raw @test.expected %>
9
+ </div>
10
+ </section>
11
+
12
+
13
+ <%= javascript_include_tag 'specter', 'data-turbolinks-track' => true %>
14
+ <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
15
+
16
+ <script>
17
+ <%= raw @test.test %>
18
+ </script>
19
+
20
+ <%= javascript_include_tag 'exec', 'data-turbolinks-track' => true %>
@@ -0,0 +1,14 @@
1
+ <main id="Test">
2
+ <section class="result">
3
+ <header>
4
+ <div class='status'></div>
5
+ <div class='message'></div>
6
+ </header>
7
+ <pre class="real line-numbers"><span class='label'>Result</span><code class='language-html'></code></pre>
8
+ <pre class="expected line-numbers"><span class='label'>Expected</span><code class='language-html'><%= @test.expected %></code></pre>
9
+ </section>
10
+
11
+ <%= content_tag :iframe, nil, src: run_test_path(id: @test.pathname.basename.to_s) %>
12
+ </main>
13
+
14
+ <%= javascript_include_tag 'test', 'data-turbolinks-track' => true %>
@@ -0,0 +1,13 @@
1
+ module Specter
2
+ class Application < Rails::Application
3
+ config.eager_load = false
4
+ secrets.secret_key_base = "Something not so secret :)"
5
+ config.logger = ActiveSupport::Logger.new(STDOUT)
6
+ config.assets.debug = true
7
+ config.assets.precompile += %w(specter runner test exec)
8
+
9
+ config.assets.paths += Rails.application.paths['app/assets'].existent
10
+ config.assets.paths += Specter::Engine.paths['app/assets'].existent
11
+ end
12
+ end
13
+
@@ -0,0 +1,12 @@
1
+ run Specter::Application.initialize!
2
+
3
+ Specter::Application.routes.draw do
4
+ resources :tests, only: [:show, :index] do
5
+ member do
6
+ get :run
7
+ get :expected
8
+ end
9
+ end
10
+ root 'tests#index'
11
+ end
12
+
@@ -0,0 +1,14 @@
1
+ module Specter
2
+ class Engine < Rails::Engine
3
+ def paths
4
+ @paths ||= begin
5
+ paths = super
6
+ paths["lib/tasks"] << "lib/rails/specter/tasks"
7
+ paths.add "app/assets", with: "lib/javascript"
8
+ paths.add "app/views", with: Rails.root + "test/javascript"
9
+ paths.add "test/javascript", with: Rails.root + "test/javascript", glob: "*"
10
+ paths
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,47 @@
1
+ require "rake/testtask"
2
+
3
+ task default: %w[test]
4
+
5
+
6
+ namespace :test do
7
+ desc 'Run JavaScript test in browser'
8
+ task :javascript do
9
+ root = Rails.root
10
+
11
+ Dir.chdir File.expand_path("../../application", __FILE__) do
12
+ require 'bundler/setup'
13
+ ENV['RAILS_ENV'] ||= 'test'
14
+ Bundler.require(:default, ENV['RAILS_ENV'])
15
+
16
+ require "rails"
17
+
18
+ %w(
19
+ action_controller
20
+ action_view
21
+ sprockets
22
+ ).each do |framework|
23
+ begin
24
+ require "#{framework}/railtie"
25
+ rescue LoadError
26
+ end
27
+ end
28
+
29
+ Rails.env = ENV['RAILS_ENV']
30
+ require 'thin'
31
+ require 'rails/commands/server'
32
+ require_relative '../application/application'
33
+
34
+ config = Rails.application.config.assets
35
+ config.paths << (root + "test/javascript/").to_s
36
+
37
+ server = Rails::Server.new
38
+ server.options[:Port] ||= 3000
39
+ server.options[:Host] ||= '0.0.0.0'
40
+ server.options[:server] = 'thin'
41
+
42
+ server.start
43
+ end
44
+ end
45
+
46
+ end
47
+
@@ -0,0 +1,3 @@
1
+ module Specter
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,28 @@
1
+ lib = File.expand_path('../lib/rails', __FILE__)
2
+ $:.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+
4
+ require 'version'
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = 'specterjs'
8
+ s.version = Specter::VERSION
9
+ s.summary = 'Testing solution for JavaScript environment'
10
+
11
+ s.required_ruby_version = '>= 2.0.0'
12
+
13
+ s.license = 'MIT'
14
+
15
+ s.author = 'Pier-Olivier Thibault'
16
+ s.email = 'pothibo@gmail.com'
17
+ s.homepage = 'http://pothibo.com'
18
+
19
+ s.files = `git ls-files -z`.split("\x0")
20
+ s.files += Dir['README.md']
21
+
22
+ s.require_path = 'lib/rails'
23
+
24
+ s.add_runtime_dependency 'thin', '~> 1.6'
25
+ s.add_runtime_dependency 'rails', '~> 4.2'
26
+
27
+ end
28
+
metadata ADDED
@@ -0,0 +1,97 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: specterjs
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Pier-Olivier Thibault
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-03-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: thin
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rails
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '4.2'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '4.2'
41
+ description:
42
+ email: pothibo@gmail.com
43
+ executables: []
44
+ extensions: []
45
+ extra_rdoc_files: []
46
+ files:
47
+ - ".gitignore"
48
+ - lib/javascript/assertions/assert.coffee
49
+ - lib/javascript/specter.js
50
+ - lib/rails/specter.rb
51
+ - lib/rails/specter/application/app/assets/javascripts/exec.js
52
+ - lib/rails/specter/application/app/assets/javascripts/runner.js
53
+ - lib/rails/specter/application/app/assets/javascripts/test.js
54
+ - lib/rails/specter/application/app/assets/javascripts/vendors/prism.js
55
+ - lib/rails/specter/application/app/assets/stylesheets/application.scss
56
+ - lib/rails/specter/application/app/assets/stylesheets/test.scss
57
+ - lib/rails/specter/application/app/assets/stylesheets/tests.scss
58
+ - lib/rails/specter/application/app/assets/stylesheets/variables.scss
59
+ - lib/rails/specter/application/app/assets/stylesheets/vendors/prism.css
60
+ - lib/rails/specter/application/app/controllers/application_controller.rb
61
+ - lib/rails/specter/application/app/controllers/tests_controller.rb
62
+ - lib/rails/specter/application/app/models/specter/test.rb
63
+ - lib/rails/specter/application/app/views/layouts/application.html.erb
64
+ - lib/rails/specter/application/app/views/tests/index.html.erb
65
+ - lib/rails/specter/application/app/views/tests/run.html.erb
66
+ - lib/rails/specter/application/app/views/tests/show.html.erb
67
+ - lib/rails/specter/application/application.rb
68
+ - lib/rails/specter/application/config.ru
69
+ - lib/rails/specter/engine.rb
70
+ - lib/rails/specter/tasks/specter.rake
71
+ - lib/rails/version.rb
72
+ - specter.gemspec
73
+ homepage: http://pothibo.com
74
+ licenses:
75
+ - MIT
76
+ metadata: {}
77
+ post_install_message:
78
+ rdoc_options: []
79
+ require_paths:
80
+ - lib/rails
81
+ required_ruby_version: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: 2.0.0
86
+ required_rubygems_version: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ requirements: []
92
+ rubyforge_project:
93
+ rubygems_version: 2.4.5.1
94
+ signing_key:
95
+ specification_version: 4
96
+ summary: Testing solution for JavaScript environment
97
+ test_files: []