test_squad 0.0.1 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
+
[](https://travis-ci.org/fnando/test_squad)
|
4
|
+
[](https://codeclimate.com/github/fnando/test_squad)
|
5
|
+
[](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
|

|
51
56
|
|
57
|
+

|
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
|