2009-11-23 00:37:11 +01:00
|
|
|
Feature: Minify Javascript
|
|
|
|
In order reduce bytes sent to client and appease YSlow
|
2011-05-29 17:26:58 +02:00
|
|
|
|
2009-11-23 00:37:11 +01:00
|
|
|
Scenario: Rendering inline js with the feature disabled
|
2012-04-26 23:07:10 +02:00
|
|
|
Given a fixture app "minify-js-app"
|
|
|
|
And a file named "config.rb" with:
|
|
|
|
"""
|
|
|
|
"""
|
2011-12-30 04:28:49 +01:00
|
|
|
And the Server is running at "minify-js-app"
|
2009-11-23 00:37:11 +01:00
|
|
|
When I go to "/inline-js.html"
|
2012-04-08 05:00:24 +02:00
|
|
|
Then I should see:
|
|
|
|
"""
|
2013-02-18 04:40:17 +01:00
|
|
|
<script>
|
|
|
|
;(function() {
|
|
|
|
this;
|
|
|
|
should();
|
|
|
|
all.be();
|
|
|
|
on = { one: line };
|
|
|
|
})();
|
2012-04-08 05:00:24 +02:00
|
|
|
</script>
|
|
|
|
<script>
|
|
|
|
;(function() {
|
|
|
|
this;
|
|
|
|
should();
|
|
|
|
too();
|
|
|
|
})();
|
|
|
|
</script>
|
|
|
|
<script type='text/javascript'>
|
|
|
|
//<!--
|
|
|
|
;(function() {
|
|
|
|
one;
|
|
|
|
line();
|
|
|
|
here();
|
|
|
|
})();
|
|
|
|
//-->
|
|
|
|
</script>
|
|
|
|
<script type='text/html'>
|
|
|
|
I'm a jQuery {{template}}.
|
|
|
|
</script>
|
|
|
|
"""
|
2011-12-12 22:54:04 +01:00
|
|
|
|
|
|
|
Scenario: Rendering inline js with a passthrough minifier
|
2012-04-26 23:07:10 +02:00
|
|
|
Given a fixture app "passthrough-app"
|
|
|
|
And a file named "config.rb" with:
|
|
|
|
"""
|
|
|
|
module ::PassThrough
|
|
|
|
def self.compress(data)
|
|
|
|
data
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2014-05-27 02:58:35 +02:00
|
|
|
activate :minify_javascript, inline: true, compressor: ::PassThrough
|
2012-04-26 23:07:10 +02:00
|
|
|
|
2014-05-27 02:58:35 +02:00
|
|
|
page "/inline-js.html", layout: false
|
2012-04-26 23:07:10 +02:00
|
|
|
"""
|
|
|
|
And the Server is running at "passthrough-app"
|
2011-12-12 22:54:04 +01:00
|
|
|
When I go to "/inline-js.html"
|
2012-04-08 05:00:24 +02:00
|
|
|
Then I should see:
|
|
|
|
"""
|
2013-02-18 04:40:17 +01:00
|
|
|
<script>
|
|
|
|
;(function() {
|
|
|
|
this;
|
|
|
|
should();
|
|
|
|
all.be();
|
|
|
|
on = { one: line };
|
|
|
|
})();
|
2012-04-08 05:00:24 +02:00
|
|
|
</script>
|
|
|
|
<script>
|
|
|
|
;(function() {
|
|
|
|
this;
|
|
|
|
should();
|
|
|
|
too();
|
|
|
|
})();
|
|
|
|
</script>
|
|
|
|
<script type='text/javascript'>
|
|
|
|
//<!--
|
|
|
|
;(function() {
|
|
|
|
one;
|
|
|
|
line();
|
|
|
|
here();
|
|
|
|
})();
|
|
|
|
//-->
|
|
|
|
</script>
|
|
|
|
<script type='text/html'>
|
|
|
|
I'm a jQuery {{template}}.
|
|
|
|
</script>
|
|
|
|
"""
|
2011-05-29 17:26:58 +02:00
|
|
|
|
2014-10-13 00:44:16 +02:00
|
|
|
Scenario: Rendering inline JS with a passthrough minifier using activate-style compressor
|
2012-04-26 23:15:35 +02:00
|
|
|
Given a fixture app "passthrough-app"
|
|
|
|
And a file named "config.rb" with:
|
|
|
|
"""
|
|
|
|
module ::HelloCompressor
|
|
|
|
def self.compress(data)
|
|
|
|
"Hello"
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2014-05-27 02:58:35 +02:00
|
|
|
activate :minify_javascript, inline: true, compressor: ::HelloCompressor
|
2012-04-26 23:15:35 +02:00
|
|
|
|
2014-05-27 02:58:35 +02:00
|
|
|
page "/inline-js.html", layout: false
|
2012-04-26 23:15:35 +02:00
|
|
|
"""
|
|
|
|
And the Server is running at "passthrough-app"
|
|
|
|
When I go to "/inline-js.html"
|
|
|
|
Then I should see:
|
|
|
|
"""
|
2013-02-18 04:40:17 +01:00
|
|
|
<script>
|
|
|
|
Hello
|
2012-04-26 23:15:35 +02:00
|
|
|
</script>
|
|
|
|
<script>
|
|
|
|
Hello
|
|
|
|
</script>
|
|
|
|
<script type='text/javascript'>
|
|
|
|
//<!--
|
|
|
|
Hello
|
|
|
|
//-->
|
|
|
|
</script>
|
|
|
|
<script type='text/html'>
|
|
|
|
I'm a jQuery {{template}}.
|
|
|
|
</script>
|
|
|
|
"""
|
|
|
|
|
2011-05-29 17:26:58 +02:00
|
|
|
Scenario: Rendering inline js with the feature enabled
|
2012-04-26 23:07:10 +02:00
|
|
|
Given a fixture app "minify-js-app"
|
|
|
|
And a file named "config.rb" with:
|
|
|
|
"""
|
2014-05-27 02:58:35 +02:00
|
|
|
activate :minify_javascript, inline: true
|
2012-04-26 23:07:10 +02:00
|
|
|
"""
|
2011-12-30 04:28:49 +01:00
|
|
|
And the Server is running at "minify-js-app"
|
2011-05-29 17:26:58 +02:00
|
|
|
When I go to "/inline-js.html"
|
2012-04-08 05:00:24 +02:00
|
|
|
Then I should see:
|
|
|
|
"""
|
2013-02-18 04:40:17 +01:00
|
|
|
<script>
|
2013-05-18 22:47:15 +02:00
|
|
|
!function(){should(),all.be(),on={one:line}}();
|
2012-04-08 05:00:24 +02:00
|
|
|
</script>
|
|
|
|
<script>
|
2013-05-18 22:47:15 +02:00
|
|
|
!function(){should(),too()}();
|
2012-04-08 05:00:24 +02:00
|
|
|
</script>
|
|
|
|
<script type='text/javascript'>
|
|
|
|
//<!--
|
2015-01-03 21:32:21 +01:00
|
|
|
!function(){one,line(),here()}();
|
2012-04-08 05:00:24 +02:00
|
|
|
//-->
|
|
|
|
</script>
|
|
|
|
<script type='text/html'>
|
|
|
|
I'm a jQuery {{template}}.
|
|
|
|
</script>
|
|
|
|
"""
|
2015-02-13 23:39:08 +01:00
|
|
|
|
2014-10-13 00:44:16 +02:00
|
|
|
Scenario: Rendering inline js in a PHP document
|
|
|
|
Given a fixture app "minify-js-app"
|
|
|
|
And a file named "config.rb" with:
|
|
|
|
"""
|
|
|
|
activate :minify_javascript, :inline => true
|
|
|
|
"""
|
|
|
|
And the Server is running at "minify-js-app"
|
|
|
|
When I go to "/inline-js.php"
|
|
|
|
Then I should see:
|
|
|
|
"""
|
|
|
|
<?='Hello'?>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
!function(){should(),all.be(),on={one:line}}();
|
|
|
|
</script>
|
|
|
|
<script type='text/javascript'>
|
|
|
|
//<!--
|
|
|
|
!function(){one,line(),here()}();
|
|
|
|
//-->
|
|
|
|
</script>
|
|
|
|
<script type='text/html'>
|
|
|
|
I'm a jQuery {{template}}.
|
|
|
|
</script>
|
|
|
|
"""
|
|
|
|
|
|
|
|
Scenario: Rendering inline js in a proxied resource
|
|
|
|
Given a fixture app "minify-js-app"
|
|
|
|
And a file named "config.rb" with:
|
|
|
|
"""
|
|
|
|
activate :minify_javascript, :inline => true
|
|
|
|
proxy '/inline-js-proxy', '/inline-js.html', ignore: true
|
|
|
|
"""
|
|
|
|
And the Server is running at "minify-js-app"
|
|
|
|
When I go to "/inline-js-proxy"
|
|
|
|
Then I should see "14" lines
|
|
|
|
|
2011-12-12 22:54:04 +01:00
|
|
|
Scenario: Rendering external js with the feature enabled
|
2012-04-26 23:07:10 +02:00
|
|
|
Given a fixture app "minify-js-app"
|
|
|
|
And a file named "config.rb" with:
|
|
|
|
"""
|
|
|
|
activate :minify_javascript
|
|
|
|
"""
|
2011-12-30 04:28:49 +01:00
|
|
|
And the Server is running at "minify-js-app"
|
2011-12-12 22:54:04 +01:00
|
|
|
When I go to "/javascripts/js_test.js"
|
|
|
|
Then I should see "1" lines
|
2012-04-08 05:00:24 +02:00
|
|
|
When I go to "/more-js/other.js"
|
|
|
|
Then I should see "1" lines
|
2011-12-12 22:54:04 +01:00
|
|
|
|
2014-10-13 00:44:16 +02:00
|
|
|
Scenario: Rendering external js in a proxied resource
|
|
|
|
Given a fixture app "minify-js-app"
|
|
|
|
And a file named "config.rb" with:
|
|
|
|
"""
|
|
|
|
activate :minify_javascript
|
|
|
|
proxy '/js-proxy', '/javascripts/js_test.js', ignore: true
|
|
|
|
"""
|
|
|
|
And the Server is running at "minify-js-app"
|
|
|
|
When I go to "/js-proxy"
|
|
|
|
Then I should see "1" lines
|
|
|
|
|
2011-12-12 22:54:04 +01:00
|
|
|
Scenario: Rendering external js with a passthrough minifier
|
|
|
|
And the Server is running at "passthrough-app"
|
|
|
|
When I go to "/javascripts/js_test.js"
|
2011-12-12 23:20:20 +01:00
|
|
|
Then I should see "8" lines
|
2011-05-29 17:26:58 +02:00
|
|
|
|
|
|
|
Scenario: Rendering inline js (coffeescript) with the feature enabled
|
2012-04-26 23:07:10 +02:00
|
|
|
Given a fixture app "minify-js-app"
|
|
|
|
And a file named "config.rb" with:
|
|
|
|
"""
|
2014-05-27 02:58:35 +02:00
|
|
|
activate :minify_javascript, inline: true
|
2012-04-26 23:07:10 +02:00
|
|
|
"""
|
2011-12-30 04:28:49 +01:00
|
|
|
And the Server is running at "minify-js-app"
|
2011-05-29 17:26:58 +02:00
|
|
|
When I go to "/inline-coffeescript.html"
|
2013-02-18 04:40:17 +01:00
|
|
|
Then I should see "3" lines
|
2011-12-12 22:54:04 +01:00
|
|
|
|
|
|
|
Scenario: Rendering external js (coffeescript) with the feature enabled
|
2012-04-26 23:07:10 +02:00
|
|
|
Given a fixture app "minify-js-app"
|
|
|
|
And a file named "config.rb" with:
|
|
|
|
"""
|
|
|
|
activate :minify_javascript
|
|
|
|
"""
|
2011-12-30 04:28:49 +01:00
|
|
|
And the Server is running at "minify-js-app"
|
2011-12-12 22:54:04 +01:00
|
|
|
When I go to "/javascripts/coffee_test.js"
|
|
|
|
Then I should see "1" lines
|
|
|
|
|
|
|
|
Scenario: Rendering inline js (coffeescript) with a passthrough minifier
|
2012-04-26 23:07:10 +02:00
|
|
|
Given a fixture app "passthrough-app"
|
|
|
|
And a file named "config.rb" with:
|
|
|
|
"""
|
|
|
|
module ::PassThrough
|
|
|
|
def self.compress(data)
|
|
|
|
data
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2014-05-27 02:58:35 +02:00
|
|
|
activate :minify_javascript, inline: true, compressor: ::PassThrough
|
2012-04-26 23:07:10 +02:00
|
|
|
|
2014-05-27 02:58:35 +02:00
|
|
|
page "/inline-coffeescript.html", layout: false
|
2012-04-26 23:07:10 +02:00
|
|
|
"""
|
|
|
|
And the Server is running at "passthrough-app"
|
2011-12-12 22:54:04 +01:00
|
|
|
When I go to "/inline-coffeescript.html"
|
2013-07-17 00:10:43 +02:00
|
|
|
Then I should see "13" lines
|
2011-12-12 22:54:04 +01:00
|
|
|
|
|
|
|
Scenario: Rendering external js (coffeescript) with a passthrough minifier
|
2012-04-26 23:07:10 +02:00
|
|
|
Given a fixture app "passthrough-app"
|
|
|
|
And a file named "config.rb" with:
|
|
|
|
"""
|
|
|
|
module ::PassThrough
|
|
|
|
def self.compress(data)
|
|
|
|
data
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2014-05-27 02:58:35 +02:00
|
|
|
activate :minify_javascript, compressor: ::PassThrough
|
2012-04-26 23:07:10 +02:00
|
|
|
"""
|
2011-12-12 22:54:04 +01:00
|
|
|
And the Server is running at "passthrough-app"
|
|
|
|
When I go to "/javascripts/coffee_test.js"
|
2013-07-17 00:10:43 +02:00
|
|
|
Then I should see "11" lines
|
2012-04-08 05:00:24 +02:00
|
|
|
|