unused_css 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 313295e4c474b843705e8d12a7bd397969e64605
4
- data.tar.gz: 39e1a472f668e1323bb94700bbca0a686ca965b4
3
+ metadata.gz: f54b308512eec95945edaa62f63b1bbd2e80fef1
4
+ data.tar.gz: f38f1cef3d2c3aada5551dadc168103986b2506f
5
5
  SHA512:
6
- metadata.gz: 7bd5203d64675e585294ad55a6774d8429c642c68868943896ac4bec673ad44f043174df6e0fece37bfa376f86252eac5b9e44ea33ccad2e2be0ca4f93e058e6
7
- data.tar.gz: ecc113b62ddfe035ae389c54779f79ee7d4bafc8c3942de5e19930110dd17d220b904c2fef735489150de79331fd162c013615b64b3651be715cd45cee11b9a3
6
+ metadata.gz: 9dd40b52c228de3078306379c4ec5f6879825bf9a0b293ceac3d8dfb909e761bd3cebe0c3d3f203645dfba176239dd39f8a9d418703e9c1e5c5b46393eb4731e
7
+ data.tar.gz: 17e47ae4a706ddc728179eeb86213620cf420ca0234613179ab1845ace1f76bc7b5d21817ca08b30f12a134f3904499ae09072f74e6d33fe18d6671b9d66cf3e
data/README.md CHANGED
@@ -3,4 +3,83 @@ Unused CSS
3
3
 
4
4
  [![Build Status](https://travis-ci.org/christemple/unused-css.png?branch=master)](https://travis-ci.org/christemple/unused-css)
5
5
 
6
- A Ruby gem, built from a need, to watch a suite of functional tests and gather all of the unused CSS styles.
6
+ A Ruby gem, built from a need, to watch a suite of functional tests and gather all of the unused CSS styles.
7
+
8
+ Install
9
+ -------
10
+
11
+ ```ruby
12
+ gem install unused_css
13
+ ```
14
+
15
+
16
+ How to use
17
+ ----------
18
+
19
+ Here's a typical 'features/support/env.rb' file using Unused CSS to watch the Watir webdriver as it runs your functional tests:
20
+
21
+ ```ruby
22
+ require "watir-webdriver"
23
+ require "unused_css"
24
+
25
+ $browser = Watir::Browser.new
26
+ $unused_css = UnusedCSS::Watcher.new
27
+ $unused_css.watch! $browser
28
+
29
+ at_exit do
30
+ $browser.close
31
+
32
+ # A list of all stylehseets together with their unused styles
33
+ puts "Unused CSS"
34
+ $unused_css.stylesheets.each do |stylesheet|
35
+ puts stylesheet.uri
36
+ stylesheet.styles.each { |style| puts style }
37
+ end
38
+
39
+ end
40
+ ```
41
+
42
+ How it works
43
+ ------------
44
+
45
+ Unused CSS will override the 'goto' method on Watir webdriver. After going to the specified web page, it will grab any
46
+ new stylesheets it may have found and scan all stylesheets it knows about removing any used css found on the page.
47
+
48
+
49
+ Checking for unused css/styles on your terms (AJAX scenario)
50
+ ----------
51
+
52
+ I thought it would be nice to also put you in control of when you want to check for used styles on a page.
53
+ A page that relies on AJAX to dynamically load content will likely benefit from being able to do so.
54
+
55
+ In one of your step definitions you can simply call:
56
+
57
+ ```ruby
58
+ When(/^I recheck the styles on the page$/) do
59
+
60
+ # Where $browser is an instance of Watir webdriver that you
61
+ # have called the unused css watch! method on
62
+
63
+ $browser.check_for_unused_styles!
64
+ end
65
+ ```
66
+
67
+ Limitations
68
+ -----------
69
+
70
+ Unused CSS currently only works with Watir webdriver, I will be adding more webdrivers soon.
71
+
72
+ TODO
73
+ ----
74
+
75
+ There are still a few things I am looking to do with this Ruby gem.
76
+ - Add support for more web drivers.
77
+ - Add ability to create report after watching the tests.
78
+ - ...not sure, you tell me :)
79
+
80
+
81
+ Feedback
82
+ --------
83
+ Please send me a message or an email and let me know what you think.
84
+
85
+ Chris Temple
data/app.rb CHANGED
@@ -7,3 +7,11 @@ end
7
7
  get '/multiple' do
8
8
  erb :multiple
9
9
  end
10
+
11
+ get '/ajax-content' do
12
+ <<-HTML
13
+ <div id="ajaxed-content">
14
+ I was pulled in by AJAX
15
+ </div>
16
+ HTML
17
+ end
@@ -8,4 +8,12 @@ end
8
8
 
9
9
  Then "I should see style '$style' was not used" do |style|
10
10
  fail "#{style} style was used" unless $unused_css.stylesheets.styles.include? style
11
+ end
12
+
13
+ When(/^I wait for content to be loaded into the DOM via AJAX$/) do
14
+ $browser.div(id: "ajaxed-content").wait_until_present
15
+ end
16
+
17
+ When(/^I recheck the styles on the page$/) do
18
+ $browser.check_for_unused_styles!
11
19
  end
@@ -1,4 +1,4 @@
1
- Feature: Home page
1
+ Feature: A user should be able to see when styles are unused
2
2
 
3
3
  Scenario: Going to a page with a single stylesheet
4
4
  Given I go to the home page
@@ -24,3 +24,13 @@ Feature: Home page
24
24
  Then I should see style '.sub-heading span' was not used
25
25
  Then I should see style '.old-error' was not used
26
26
 
27
+
28
+ Scenario: Going to a page that loads content via AJAX
29
+ Given I go to the home page
30
+ Then I should see style '#heading' was used
31
+ Then I should see style '.sub-heading' was not used
32
+ Then I should see style '#ajaxed-content' was not used
33
+ When I wait for content to be loaded into the DOM via AJAX
34
+ Then I should see 'I was pulled in by AJAX'
35
+ When I recheck the styles on the page
36
+ Then I should see style '#ajaxed-content' was used
@@ -22,6 +22,7 @@ end
22
22
 
23
23
 
24
24
  class Stylesheets
25
+ include Enumerable
25
26
  attr_accessor :stylesheets
26
27
 
27
28
  def initialize
@@ -41,6 +42,10 @@ class Stylesheets
41
42
  @stylesheets.find { |stylesheet| stylesheet.uri == uri }
42
43
  end
43
44
 
45
+ def each &block
46
+ @stylesheets.each &block
47
+ end
48
+
44
49
  def styles
45
50
  @stylesheets.inject(Set.new) {|styles, stylesheet| styles.merge stylesheet.styles }
46
51
  end
@@ -1,3 +1,3 @@
1
1
  module UnusedCSS
2
- VERSION = "0.0.1"
2
+ VERSION = "0.1.0"
3
3
  end
data/lib/unused_css.rb CHANGED
@@ -22,6 +22,13 @@ module UnusedCSS
22
22
  stylesheet.remove_pseudo_styles!
23
23
  end
24
24
  end
25
+
26
+ def check_for_unused_styles!
27
+ @unused_css.stylesheets.each do |stylesheet|
28
+ stylesheet.styles.delete_if {|style| self.element(css: style).exist? }
29
+ stylesheet.remove_pseudo_styles!
30
+ end
31
+ end
25
32
  end
26
33
  watir_browser.instance_exec self, &unused_css_block
27
34
  end
@@ -11,4 +11,10 @@
11
11
  .sub-heading span{
12
12
  font-size: 24px;
13
13
  line-height: 28px;
14
+ }
15
+
16
+ #ajaxed-content {
17
+ color: orangered;
18
+ font-size: 32px;
19
+ line-height: 38px;
14
20
  }
data/views/index.erb CHANGED
@@ -4,9 +4,20 @@
4
4
  <meta charset="UTF-8">
5
5
  <title>Unused CSS</title>
6
6
  <link rel="stylesheet" href="/stylesheets/style.css"/>
7
+ <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.0.min.js"></script>
7
8
  </head>
8
9
  <body>
9
10
  <div id="heading">Very nice</div>
10
11
  <div class="old-error">No such style for old-error in style.css</div>
12
+
13
+ <script type="text/javascript">
14
+ $(function(){
15
+ setTimeout(function(){
16
+ $.get('/ajax-content', function(data){
17
+ $("body").append(data);
18
+ });
19
+ }, 1000);
20
+ });
21
+ </script>
11
22
  </body>
12
23
  </html>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unused_css
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Temple
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-02 00:00:00.000000000 Z
11
+ date: 2014-03-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: css_parser
@@ -126,10 +126,10 @@ files:
126
126
  - Rakefile
127
127
  - app.rb
128
128
  - config.ru
129
- - features/home_page.feature
130
129
  - features/step_definitions/navigation_steps.rb
131
130
  - features/step_definitions/observation_steps.rb
132
131
  - features/support/env.rb
132
+ - features/unused_css.feature
133
133
  - lib/unused_css.rb
134
134
  - lib/unused_css/stylesheet.rb
135
135
  - lib/unused_css/version.rb
@@ -165,7 +165,7 @@ specification_version: 4
165
165
  summary: A Ruby gem, built from a need, to watch a suite of functional tests and gather
166
166
  all of the unused CSS styles.
167
167
  test_files:
168
- - features/home_page.feature
169
168
  - features/step_definitions/navigation_steps.rb
170
169
  - features/step_definitions/observation_steps.rb
171
170
  - features/support/env.rb
171
+ - features/unused_css.feature