test_squad 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +28 -8
- data/Rakefile +1 -0
- data/lib/generators/test_squad/install/install_generator.rb +92 -62
- data/lib/generators/test_squad/install/templates/test_squad.rb.erb +24 -1
- data/lib/tasks/test_squad_tasks.rake +7 -35
- data/lib/test_squad.rb +8 -7
- data/lib/test_squad/configuration.rb +65 -0
- data/lib/test_squad/runner.rb +58 -0
- data/lib/test_squad/version.rb +1 -1
- data/phantomjs/helpers.js +8 -1
- data/phantomjs/runner.js +39 -13
- data/test/controllers/test_squad_controller_test.rb +50 -0
- data/test/dummy/log/test.log +2161 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/--Jr18gSi0dWQfX8IpGoxIeyt0ar6Z4qNtYBzt5o_U0.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/15vEz7HBqhg9JjDp9KyF_iFJ9DOccQCaj2XecY7ENdw.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/1bShYtup0I7zDOa8whDdypfQEZxH4rVEVKmz8aeDuS0.cache +2 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/1fidLos4TsMC1Jzat66F4EuJMnvA4Ek4Yq3Wx_diqLA.cache +2 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/1p035rqBDJG2S9jFXm8UVt4XiETe3l4TsAshRjkfgJU.cache +2 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/28dNMvxD5YFKVJdljn6gcuwnJaQGlzKN1B_uJwfpWAQ.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/48aEVfcYY6MwkyeeyUtk-udKX4sVI6wCzCoGdcrXoHE.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/4oXbqlOtQXa7YIXA7S4jJT8mAZdpoSJ2oX9kXMr9Ouw.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/5BbgAT98H6HVF2DtEaZeL3jSwsvFzHkl6-vwuQ1UoGQ.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/5Lly_CA8DZvPhQV2jDQx-Y6P_y3Ygra9t5jfSlGhHDA.cache +2 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/6Y-2fFELXy514cZ-fXlvcoKlvvCMCHgIZ_Q06PZoMsg.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/7yaZL2RIxe_zCwIWBeGtIKMbQQcvZU1Rvt1sfZGpAcY.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/BNfX-jq9S00e7dFjTRaWBt2BNThtsO0_vKQiBGYmus8.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/BT2K9suBmG7JzM_3FoJ5mpH8wti3_Phlsl7X-8nut_A.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/BY7dYj9QBZDvgqyzjw19Cs4S7rhvgaB6Tx-3ByAfR1o.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/BkUiqZe-edco2CWEnwq71RR7OlncirMqtHSAXxRiS58.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/CI3wmSM2mvTHVtxrm8aAXPicSU_UPT54tEsOxoL8674.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/CcqHY0ztO4n-nBK-XGEP6h0DrL6x2A0G_MXIYfLdOAc.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/DOjJwX_4kbLug1vCo5qKu8WhGWrlS3CO5ueJcLwHAiw.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/Dj11DIpk6AMooko4HIrIRLle_Pku6Z3wm6JGkv6tQhY.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/Dld2HJ_h197OmHkWuEk-msUaZ5dF27-KHGDNE37nJ94.cache +4 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/DnkprrM0pXn0tWZjZQUbxw9czuz9Eqc3qXokFvQPADk.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/EvacufxhwsfPRuHbaKUtaE49aNAI6zySGzBX6QZ46fU.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/FXjOrhU0u21QlvjYFb8z9MZGZc39etPqywbESQ0wYWI.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/JlEfkGFQp4-hMkyCydaWpBH-k7TRHDnWVO4UICTABdE.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/JuyiNe16-3iPuyN77g0yLMm0Q4Yha01pWdNSfnYVfNE.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/JylXKmnNAPjfcYjj1jraIxmw8aRPbZ3LoWTzewaMHPU.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/MK8k0x0C6Wxn0o4iqysgqSy-vz5Ol5PWtsPh2uT8aRE.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/N8yUPpqki-1jUIftlMUzksb-3ImtAXdo0HK0yogXp98.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/NBnLLGZS0L0-K0XDp8wPfKEbULh0IdSnEnq5My6uLsg.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/NYqEn9nriI_u_tmIhqigPcBG-xaL_4DNAXcZZedduxo.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/NiaLRSbNa312S2yLs6OK99DsCk-OK5_WVSP5vlohbrU.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/O8AdQ9KuR_WslT3OMU_CB_XmZPkD3koya8_y3D1vQSg.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/OI6uxGcnsKavdWTtwDAasU3wPx8QXhzBgV0X2n1KjMQ.cache +2 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/OOE0vr9ZxtP3cSlMNmlKreGc5OdJjjZeAulus5KkgWg.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/SVj7Xea5NdHsDZVgKDO33zwoRmPu8dsPEPUc--ZoSBA.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/UWG7vqp9QHDXQ8K7rWHxSLtTJjgpwAXa0VQeMC79S9c.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/UYzP9BM42aDQbQL2Hwzu7E_VjzmKRMEDUMn_YNwYJZQ.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/V04j3gLzI35tOG8HB1FQnZC0FkgXNiVo6CFAKe-vm08.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/W90wLqYLEL21UhoMzunmDZagcl_J-waowL_syTXFTfg.cache +2 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/WRplQSvSLBRFE4SnNgUTaqjaD6QcugFgemVGJl-TcH0.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/XZHJ4q_Vqm8z67XoLCSR9Bf3bxRrNVgxY-Zn2Dl1_oc.cache +2 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/ZpLasZgWCtI5ARba6j0TztDVBfvefbN_VeEm6WS4AlE.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/_ml2aIb-f7tzJpo9MTCAldaDVHqHn89WTB9ZmCoAVHI.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/bakkhKWQav5zpy-VjOssp_XTDY4mccVjeCQjmTWcvEQ.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/bqgbepkpHrkLsvcws1h6NEku20i6s1HNfRwUf3ds_bM.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/btifyRUVKrnuNOyCfHPRBE_b4IHXPAs-gwaNEtZNqR4.cache +2 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/eBHGAOFSIHdU3R6gC__U1b2OtNaMsdZ8M6kKd6rX3uA.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/ez1f_nTzpCVZp99l-TSKf5mnDr-FNT0AuA40By6h7nU.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/fOMwhE_LoK6PBz43rr86imRHqStpfn-j0zKwNCEFA7A.cache +2 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/fk0Xn9aqGZauDCUL4PDM1A0riiRU3nTGEF8T0tfVi9Q.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/g6PEU0mrTD1F_JY1UnmLjn6OD29tp6XAa7CRxtbnssU.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/k9vjsOgT-S2u8LSPksFS2VZO5JJYQB1kOSOfkmBmncA.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/kB1DR3T5YiVkiJ5JQAjwNFNLjKoCrBWbjHzmUWQxwuE.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/l-Fy5bdFTh-kc8fFcJaPEiIprPT_Zro3btmmfaOSFGk.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/lk8cNS9qlZOFztN2ZtkUuLMG5il9UFV_6L9mzl0gJgs.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/lurwEsNalR_pkE6uX047tDOvODA4-5i3gDIrHi_4sWU.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/m4xIJn-Zz18i6rjvKkARjTE_Ogb7Y33Z1d1dkpwjIqc.cache +2 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/mwqO_5fkZLqyQ6yJZPYvfEasJmaJTDBUxg0WMRs1qb8.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/nv2dwJTpEmjPq5nrQ5gYwOUkAdhKxPmwxfhzuIGq9tc.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/o_4WHxITiPaOrX75j567d0VpQJ3ibKEfwp5kLyz0g6I.cache +2 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/pH8BdTuZBGfdsHebnGCXW4xKlDq20EJYTXXWDQ4pwF8.cache +2 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/pfueHOXdqh2SVlAKfvEFrdhOpobUofsH-rxLMv9HeAo.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/qGl34xE7nyT_5bv_0LdftjhOhWqeaUsSD8RRR5e2LhE.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/r16KTswcSzCfPAeYpPsI3pB60v7bXkXdzIC9F0depbo.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/s1qM0DtayvbvOieVFIeEejbL_uzBbLhdJt4J-eDdfVs.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/sKmQ0vmdki8bEnqnNv5R6SxInKZ3wr6OYKZso5pK3A8.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/t3Llqx0uA6Qvi3W3tzxEvd6vCx1bNDEaOx3cv3jk7F8.cache +2 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/t4CSlKWlnNjWc4HjzVuGu_xkGPJrf2XDT_z36WqPW10.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/tTT_rRtFLpee6FOwJBDH0h8tFNayUZozM9CRDjxh_0M.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/uEbg-8OHCY_n1CRoUJ1NxO7ZA25rem-WvK_BMk9nzmA.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/uhmMX7shFPI0NOePr7b3mCW2lOWT4osZ3sovJVlPyek.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/vRHlJJvzk-cVDuhS4H0cS0JQ4XQxPvzCLHSuDSsBABY.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/xqI5M8GTfQOT1WzlvBIaK6SBF84-BkQ162gE8xJibGY.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/y1-icrLhuhHxxsTl1oMCwvaQljaPTUg8pGKp4ktBmHk.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/yLDP63LRuXDtsRtf-U1w7iwCLO6TN0XaagOFr7ZMgJc.cache +3 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/01201a5597c67fa4700f373e24e47cc0 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/087c6a74e34024016056782770f67751 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/0e0ce4a8684bd87eafc0db448ee74990 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/0e6aec2a845fd340ec76abec275415f8 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/13096efe03b0d8f02b0f492ee46f8498 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/21822855ec5066372f2708fcc72bc18a +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/29369685706447987989cf495e746507 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/32e8c6b5f20fbc62c2c377ce3fd7d093 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/42b2a14b671c8f56aa1808a5ba8599e3 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/5254c3aa24743307528db89892e34ce7 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/54aa66a560f82535d5aff8761aa61689 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/55edadf6cfe27ddb6130791f7cb794c2 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/5b781f9fca11e70f837e07e3e9446a2d +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/60323fc3606b2c2ae59ff65886e957ef +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/63196e522f128686f2b1873406c06638 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/6d0f2dbd46d4ae67621d5544e74f789a +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/6e05ee0c7bd8a56e0aa68e9981b874c4 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/7874191c45ca716229829e331bbb6657 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/7faca529de077394ba9cccf0f936bad1 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/98ad9eb574ed821f48f81b41bcd9639f +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/991ff1c9e66557b891934a625e493439 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/9e0d5d4b56b478a2801215373bac8932 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/c95208cba67d830cebbbcb8c049d45d1 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/c9bd74b86a038dcdd4436a8dcf03041c +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/cf932323f346664ed0c3dd4af9a426f3 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/ec868f5486b890ab315724a887be51fc +0 -0
- data/test/dummy/tmp/generators/Gemfile +8 -0
- data/test/dummy/tmp/generators/test/javascript/dummy/answer_spec.js +6 -0
- data/test/dummy/tmp/generators/test/javascript/spec_helper.js +12 -0
- data/test/dummy/tmp/generators/test/javascript/test_squad.rb +28 -0
- data/test/lib/generators/test_squad/install_generator/ember_test.rb +48 -0
- data/test/lib/generators/test_squad/install_generator/jasmine_test.rb +44 -0
- data/test/lib/generators/test_squad/install_generator/mocha_test.rb +45 -0
- data/test/lib/generators/test_squad/install_generator/qunit_test.rb +44 -0
- data/test/lib/generators/test_squad/install_generator_test.rb +40 -0
- data/test/lib/test_squad/configuration_test.rb +68 -0
- data/test/lib/test_squad/runner_test.rb +66 -0
- data/test/test_helper.rb +10 -2
- data/test/test_squad_test.rb +1 -1
- data/vendor/assets/libs/jasmine/boot.js +2 -1
- data/vendor/assets/libs/jasmine/console.js +1 -1
- data/vendor/assets/libs/jasmine/jasmine-html.js +17 -5
- data/vendor/assets/libs/jasmine/jasmine.css +10 -10
- data/vendor/assets/libs/jasmine/jasmine.js +295 -155
- metadata +278 -9
- data/lib/terminal.png +0 -0
- data/test/integration/navigation_test.rb +0 -9
- data/test/lib/generators/squad/install_generator_test.rb +0 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8d8a0e6e00da040f75e75852c90c0596c0febad6
|
4
|
+
data.tar.gz: 23449b3538b4afc02ed5f771438bff21cb31d56a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b51083b6c2848eb848e8d668e4857ab5b0d4bcb6b24153a1d33cde3bb91d3409bb381ba42625bf22410938c2e759182ca8c9734a2e797a789acdd880ca4f444f
|
7
|
+
data.tar.gz: a54bc57fa49a7b2e27af6f25a395dfe804860dc84b6249517381cebfadb0fce3ee2139e44f7d8a04c1826713252900e458dc7f570937f67ba395ecb254d01fc2
|
data/README.md
CHANGED
@@ -1,15 +1,20 @@
|
|
1
1
|
# TestSquad
|
2
2
|
|
3
|
+
[![Build Status](https://travis-ci.org/fnando/test_squad.svg)](https://travis-ci.org/fnando/test_squad)
|
4
|
+
[![Code Climate](https://codeclimate.com/github/fnando/test_squad/badges/gpa.svg)](https://codeclimate.com/github/fnando/test_squad)
|
5
|
+
[![Test Coverage](https://codeclimate.com/github/fnando/test_squad/badges/coverage.svg)](https://codeclimate.com/github/fnando/test_squad)
|
6
|
+
|
3
7
|
Running JavaScript tests on your Rails app, the easy way.
|
4
8
|
|
5
|
-
- Supports QUnit, Ember.js, Mocha and Jasmine
|
9
|
+
- Supports [QUnit](http://qunitjs.com), [Ember.js](http://emberjs.com), [Mocha](http://mochajs.org) and [Jasmine](http://jasmine.github.io/)
|
6
10
|
- Go headless with [Phantom.js](http://phantomjs.org)
|
7
11
|
- Colored output
|
8
12
|
- Asset pipeline support
|
13
|
+
- [Rails Assets](http://rails-assets.org) support (Bower Proxy)
|
9
14
|
|
10
15
|
## Installation
|
11
16
|
|
12
|
-
Add these lines to your application's Gemfile
|
17
|
+
Add these lines to your application's `Gemfile`:
|
13
18
|
|
14
19
|
```ruby
|
15
20
|
group :development, :test do
|
@@ -25,7 +30,7 @@ $ bundle
|
|
25
30
|
|
26
31
|
## Usage
|
27
32
|
|
28
|
-
After installing TestSquad, generate your tests skeleton. The generator will detect if you're using RSpec or TestUnit and will generate the `javascript` directory
|
33
|
+
After installing TestSquad, generate your tests skeleton. The generator will detect if you're using RSpec or TestUnit and will generate the `javascript` directory based on that detection. Just use the command `rails generate test_squad:install --framework FRAMEWORK`.
|
29
34
|
|
30
35
|
```console
|
31
36
|
$ rails generate test_squad:install --framework jasmine
|
@@ -49,6 +54,8 @@ You can run your tests with `rake test_squad`. You can also visit `http://localh
|
|
49
54
|
|
50
55
|
![Terminal](https://github.com/fnando/test_squad/raw/master/screenshots/terminal.png)
|
51
56
|
|
57
|
+
![Ember](https://github.com/fnando/test_squad/raw/master/screenshots/terminal-ember.png)
|
58
|
+
|
52
59
|
### Configure Ember
|
53
60
|
|
54
61
|
When using the Ember framework, you must configure your application name. It'll default to your Rails application name.
|
@@ -148,11 +155,24 @@ Otherwise you won't be able to to run your in-browser tests.
|
|
148
155
|
|
149
156
|
The rake task accepts some env variables.
|
150
157
|
|
151
|
-
- `
|
152
|
-
- `
|
153
|
-
- `
|
154
|
-
- `
|
155
|
-
- `
|
158
|
+
- `TEST_SQUAD_SERVER_HOST`: the binding host. Defaults to `localhost`.
|
159
|
+
- `TEST_SQUAD_SERVER_PORT`: the server port. Defaults to `50000`.
|
160
|
+
- `TEST_SQUAD_SERVER_PATH`: the server path. Defaults to `/tests`.
|
161
|
+
- `TEST_SQUAD_TIMEOUT`: how much time a test can take. Defaults to `10` (seconds).
|
162
|
+
- `TEST_SQUAD_PHANTOMJS_BIN`: set the PhantomJS binary. Defaults to `phantomjs`.
|
163
|
+
|
164
|
+
You can configure these options using the `{test,spec}/javascript/test_squad.rb` file.
|
165
|
+
|
166
|
+
```ruby
|
167
|
+
TestSquad.configure do |config|
|
168
|
+
config.framework = 'qunit'
|
169
|
+
config.server_host = '127.0.0.1'
|
170
|
+
config.server_port = 50000
|
171
|
+
config.server_path = '/tests'
|
172
|
+
config.timeout = 10
|
173
|
+
config.phantomjs_bin = 'phantomjs'
|
174
|
+
end
|
175
|
+
```
|
156
176
|
|
157
177
|
## Contributing
|
158
178
|
|
data/Rakefile
CHANGED
@@ -1,86 +1,116 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
module TestSquad
|
2
|
+
class InstallGenerator < Rails::Generators::Base
|
3
|
+
source_root File.expand_path("../templates", __FILE__)
|
3
4
|
|
4
|
-
|
5
|
-
type: 'string',
|
6
|
-
desc: 'Select the JavaScript framework. Can be jasmine, qunit, mocha or ember.',
|
7
|
-
aliases: '-f',
|
8
|
-
required: true
|
5
|
+
SKIP_RAILS_ASSETS = %w[jasmine]
|
9
6
|
|
10
|
-
|
11
|
-
|
12
|
-
|
7
|
+
class_option :framework,
|
8
|
+
type: "string",
|
9
|
+
desc: "Select the JavaScript framework. Can be jasmine, qunit, mocha or ember.",
|
10
|
+
aliases: "-f",
|
11
|
+
required: true
|
13
12
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
end
|
13
|
+
class_option :skip_source,
|
14
|
+
type: "boolean",
|
15
|
+
desc: "Skip adding gem source to Gemfile",
|
16
|
+
aliases: "-s"
|
19
17
|
|
20
|
-
|
18
|
+
def generate
|
19
|
+
send "generate_#{framework}"
|
20
|
+
end
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
|
22
|
+
def generate_defaults
|
23
|
+
empty_directory test_directory
|
24
|
+
template "test_squad.rb.erb", "#{test_directory}/test_squad.rb"
|
25
|
+
end
|
25
26
|
|
26
|
-
|
27
|
-
app_class_name.underscore
|
28
|
-
end
|
27
|
+
private
|
29
28
|
|
30
|
-
|
31
|
-
|
32
|
-
|
29
|
+
def framework
|
30
|
+
options[:framework]
|
31
|
+
end
|
33
32
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
33
|
+
def test_directory
|
34
|
+
if File.exist?(File.join(destination_root, "spec"))
|
35
|
+
"spec/javascript"
|
36
|
+
else
|
37
|
+
"test/javascript"
|
38
|
+
end
|
39
|
+
end
|
39
40
|
|
40
|
-
|
41
|
-
|
41
|
+
def app_name
|
42
|
+
app_class_name.underscore
|
42
43
|
end
|
43
|
-
end
|
44
44
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
template 'jasmine/spec_helper.js.erb', "#{test_directory}/spec_helper.js"
|
49
|
-
copy_file 'jasmine/answer_spec.js', "#{test_directory}/#{app_name}/answer_spec.js"
|
50
|
-
end
|
45
|
+
def app_class_name
|
46
|
+
TestSquad.app_class_name
|
47
|
+
end
|
51
48
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
49
|
+
def generate_qunit
|
50
|
+
empty_directory "#{test_directory}/#{app_name}"
|
51
|
+
create_file "#{test_directory}/#{app_name}/.keep"
|
52
|
+
template "qunit/test_helper.js.erb", "#{test_directory}/test_helper.js"
|
53
|
+
copy_file "qunit/answer_test.js", "#{test_directory}/#{app_name}/answer_test.js"
|
57
54
|
|
58
|
-
|
59
|
-
|
60
|
-
|
55
|
+
rails_assets do
|
56
|
+
gem "rails-assets-qunit"
|
57
|
+
end unless options[:skip_source]
|
61
58
|
end
|
62
|
-
end
|
63
59
|
|
64
|
-
|
65
|
-
|
66
|
-
|
60
|
+
def generate_jasmine
|
61
|
+
empty_directory "#{test_directory}/#{app_name}"
|
62
|
+
create_file "#{test_directory}/#{app_name}/.keep"
|
63
|
+
template "jasmine/spec_helper.js.erb", "#{test_directory}/spec_helper.js"
|
64
|
+
copy_file "jasmine/answer_spec.js", "#{test_directory}/#{app_name}/answer_spec.js"
|
65
|
+
end
|
66
|
+
|
67
|
+
def generate_mocha
|
68
|
+
empty_directory "#{test_directory}/#{app_name}"
|
69
|
+
create_file "#{test_directory}/#{app_name}/.keep"
|
70
|
+
template "mocha/spec_helper.js.erb", "#{test_directory}/spec_helper.js"
|
71
|
+
copy_file "mocha/answer_spec.js", "#{test_directory}/#{app_name}/answer_spec.js"
|
72
|
+
|
73
|
+
rails_assets do
|
74
|
+
gem_group :development, :test do
|
75
|
+
gem "rails-assets-mocha"
|
76
|
+
gem "rails-assets-expect"
|
77
|
+
end
|
78
|
+
end unless options[:skip_source]
|
79
|
+
end
|
80
|
+
|
81
|
+
def generate_ember
|
82
|
+
empty_directory "#{test_directory}/unit"
|
83
|
+
copy_file "ember/router_test.js", "#{test_directory}/unit/router_test.js"
|
84
|
+
|
85
|
+
empty_directory "#{test_directory}/routes"
|
86
|
+
create_file "#{test_directory}/routes/.keep"
|
87
|
+
|
88
|
+
empty_directory "#{test_directory}/components"
|
89
|
+
create_file "#{test_directory}/components/.keep"
|
67
90
|
|
68
|
-
|
69
|
-
|
91
|
+
empty_directory "#{test_directory}/views"
|
92
|
+
create_file "#{test_directory}/views/.keep"
|
70
93
|
|
71
|
-
|
72
|
-
|
94
|
+
empty_directory "#{test_directory}/models"
|
95
|
+
create_file "#{test_directory}/models/.keep"
|
73
96
|
|
74
|
-
|
75
|
-
|
97
|
+
template "ember/test_helper.js.erb", "#{test_directory}/test_helper.js"
|
98
|
+
|
99
|
+
rails_assets do
|
100
|
+
gem_group :development, :test do
|
101
|
+
gem "rails-assets-qunit"
|
102
|
+
end
|
103
|
+
end unless options[:skip_source]
|
104
|
+
end
|
76
105
|
|
77
|
-
|
78
|
-
|
106
|
+
def rails_assets(&block)
|
107
|
+
in_root do
|
108
|
+
append_file "Gemfile", %[\nsource "https://rails-assets.org" do], force: true
|
79
109
|
|
80
|
-
|
110
|
+
instance_eval(&block)
|
81
111
|
|
82
|
-
|
83
|
-
|
112
|
+
append_file "Gemfile", "\nend\n", force: true
|
113
|
+
end
|
84
114
|
end
|
85
115
|
end
|
86
116
|
end
|
@@ -1,5 +1,28 @@
|
|
1
1
|
TestSquad.configure do |config|
|
2
2
|
# Set the testing framework.
|
3
3
|
# Can be jasmine, qunit, mocha or ember.
|
4
|
-
config.framework =
|
4
|
+
config.framework = "<%= options[:framework] %>"
|
5
|
+
|
6
|
+
# Set the test server host.
|
7
|
+
# This can also be set through the TEST_SQUAD_SEVER_HOST env var.
|
8
|
+
# config.server_host = "127.0.0.1"
|
9
|
+
|
10
|
+
# Set the test server port.
|
11
|
+
# This can also be set through the TEST_SQUAD_SERVER_PORT env var.
|
12
|
+
# config.server_port = 50000
|
13
|
+
|
14
|
+
# Set the test server path.
|
15
|
+
# You may map the tests path to something else. This change
|
16
|
+
# must be reflected here. This can also be set through the
|
17
|
+
# TEST_SQUAD_SERVER_PATH env var.
|
18
|
+
# config.server_path = "/tests"
|
19
|
+
|
20
|
+
# Set the test timeout.
|
21
|
+
# This can also be set through the TEST_SQUAD_TIMEOUT env var.
|
22
|
+
# It defaults to 10 seconds.
|
23
|
+
# config.timeout = 10
|
24
|
+
|
25
|
+
# Set the phantomjs bin path.
|
26
|
+
# This can also be set through the TEST_SQUAD_PHANTOMJS_BIN env var.
|
27
|
+
# config.phantomjs_bin = "phantomjs"
|
5
28
|
end
|
@@ -1,39 +1,11 @@
|
|
1
|
-
desc
|
1
|
+
desc "Run JavaScript tests"
|
2
2
|
task :test_squad do
|
3
|
-
ENV[
|
4
|
-
ENV[
|
3
|
+
ENV["RAILS_ENV"] = "test"
|
4
|
+
ENV["RACK_ENV"] = "test"
|
5
5
|
|
6
|
-
require
|
7
|
-
|
6
|
+
require "./config/environment"
|
7
|
+
config_file = Rails.root.join(TestSquad.test_directory, "test_squad.rb")
|
8
|
+
load config_file if config_file.exist?
|
8
9
|
|
9
|
-
|
10
|
-
port = ENV.fetch('PORT', 50000)
|
11
|
-
host = ENV.fetch('HOST', 'localhost')
|
12
|
-
path = ENV.fetch('TEST_PATH', '/tests')
|
13
|
-
timeout = ENV.fetch('TIMEOUT', '10')
|
14
|
-
log = ENV.fetch('LOG', 'false')
|
15
|
-
url = File.join("http://#{host}:#{port}", path)
|
16
|
-
logger = Logger.new(StringIO.new)
|
17
|
-
|
18
|
-
handler = Rack::Handler.pick(['puma', 'thin', 'webrick'])
|
19
|
-
|
20
|
-
Rails.configuration.logger = logger
|
21
|
-
|
22
|
-
thread = Thread.new {
|
23
|
-
handler.run Rails.application,
|
24
|
-
Port: port,
|
25
|
-
Host: host,
|
26
|
-
Logger: logger,
|
27
|
-
AccessLog: []
|
28
|
-
}
|
29
|
-
|
30
|
-
thread.abort_on_exception = true
|
31
|
-
|
32
|
-
system phantomjs_bin,
|
33
|
-
File.expand_path('../../../phantomjs/runner.js', __FILE__),
|
34
|
-
url,
|
35
|
-
timeout,
|
36
|
-
log
|
37
|
-
|
38
|
-
exit $?.exitstatus
|
10
|
+
TestSquad::Runner.run
|
39
11
|
end
|
data/lib/test_squad.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "test_squad/engine"
|
2
|
+
require "test_squad/runner"
|
3
|
+
require "test_squad/configuration"
|
3
4
|
|
4
5
|
module TestSquad
|
5
6
|
def self.configuration
|
6
|
-
@configuration ||=
|
7
|
+
@configuration ||= Configuration.new
|
7
8
|
end
|
8
9
|
|
9
10
|
def self.configure(&block)
|
@@ -11,15 +12,15 @@ module TestSquad
|
|
11
12
|
end
|
12
13
|
|
13
14
|
def self.app_class_name
|
14
|
-
Rails.application.class.name.split(
|
15
|
+
Rails.application.class.name.split("::").first
|
15
16
|
end
|
16
17
|
|
17
18
|
def self.test_directory
|
18
19
|
@test_directory ||= begin
|
19
|
-
if Rails.root.join(
|
20
|
-
|
20
|
+
if Rails.root.join("spec").exist?
|
21
|
+
"spec/javascript"
|
21
22
|
else
|
22
|
-
|
23
|
+
"test/javascript"
|
23
24
|
end
|
24
25
|
end
|
25
26
|
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
module TestSquad
|
2
|
+
class Configuration
|
3
|
+
# Set the enabled JavaScript library.
|
4
|
+
attr_accessor :framework
|
5
|
+
|
6
|
+
# Set the phantomjs bin path.
|
7
|
+
# This can also be set through the TEST_SQUAD_PHANTOMJS_BIN env var.
|
8
|
+
# It defaults to `phantomjs`.
|
9
|
+
attr_writer :phantomjs_bin
|
10
|
+
|
11
|
+
# Set the test server host.
|
12
|
+
# This can also be set through the TEST_SQUAD_SERVER_HOST env var.
|
13
|
+
# It defaults to `127.0.0.1`
|
14
|
+
attr_writer :server_host
|
15
|
+
|
16
|
+
# Set the test server port.
|
17
|
+
# This can also be set through the TEST_SQUAD_SERVER_PORT env var.
|
18
|
+
# It defaults to `42424`
|
19
|
+
attr_writer :server_port
|
20
|
+
|
21
|
+
# Set the test server path.
|
22
|
+
# You may map the tests path to something else. This change
|
23
|
+
# must be reflected here. This can also be set through the
|
24
|
+
# TEST_SQUAD_SERVER_PATH env var.
|
25
|
+
# It defaults to `/tests`.
|
26
|
+
attr_writer :server_path
|
27
|
+
|
28
|
+
# Set the test timeout.
|
29
|
+
# This can also be set through the TEST_SQUAD_TIMEOUT env var.
|
30
|
+
# It defaults to `10` seconds.
|
31
|
+
attr_writer :timeout
|
32
|
+
|
33
|
+
def server_uri
|
34
|
+
File.join("http://#{server_host}:#{server_port}", server_path)
|
35
|
+
end
|
36
|
+
|
37
|
+
def phantomjs_bin
|
38
|
+
get_value("TEST_SQUAD_PHANTOMJS_BIN", __method__, "phantomjs")
|
39
|
+
end
|
40
|
+
|
41
|
+
def server_host
|
42
|
+
get_value("TEST_SQUAD_SERVER_HOST", __method__, "127.0.0.1")
|
43
|
+
end
|
44
|
+
|
45
|
+
def server_port
|
46
|
+
get_value("TEST_SQUAD_SERVER_PORT", __method__, 42_424)
|
47
|
+
end
|
48
|
+
|
49
|
+
def server_path
|
50
|
+
get_value("TEST_SQUAD_SERVER_PATH", __method__, "/tests")
|
51
|
+
end
|
52
|
+
|
53
|
+
def timeout
|
54
|
+
get_value("TEST_SQUAD_TIMEOUT", __method__, 10)
|
55
|
+
end
|
56
|
+
|
57
|
+
private
|
58
|
+
|
59
|
+
def get_value(env_var, option_name, default_value)
|
60
|
+
ENV[env_var] ||
|
61
|
+
instance_variable_get("@#{option_name}") ||
|
62
|
+
default_value
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|