bbc-a11y 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,8 +1,9 @@
1
1
  var xpath = require('./xpath');
2
2
 
3
- function Standards(standards, skipped) {
3
+ function Standards(standards, skipped, only) {
4
4
  this.standards = standards;
5
5
  this.skipped = skipped;
6
+ this.only = only;
6
7
  }
7
8
 
8
9
  Standards.sections = {
@@ -87,7 +88,7 @@ Standards.matching = function(criteria) {
87
88
  return Standards.matching({});
88
89
  }
89
90
  if (typeof(criteria) == 'string') {
90
- return Standards.matching({ only: criteria });
91
+ return Standards.matching({ only: [criteria] });
91
92
  }
92
93
  var matching = standardsMatching(criteria);
93
94
  return new Standards(matching.matches, matching.skipped);
@@ -98,15 +99,17 @@ function standardsMatching(criteria) {
98
99
  for (var i = 0; i < skips.length; ++i) {
99
100
  skips[i] = normaliseStandardName(skips[i]);
100
101
  }
101
- var isOnly = typeof(criteria.only) == 'string';
102
- var only = isOnly ? normaliseStandardName(criteria.only) : null;
102
+ var onlies = criteria.only || [];
103
+ for (var i = 0; i < onlies.length; ++i) {
104
+ onlies[i] = normaliseStandardName(onlies[i]);
105
+ }
103
106
  var matches = [];
104
107
  var skipped = [];
105
108
  for (var i = 0; i < Standards.all.length; ++i) {
106
109
  var standard = Standards.all[i];
107
110
  var name = standard.section.toLowerCase() + normaliseStandardName(standard.name);
108
- if (isOnly) {
109
- if (only == name) {
111
+ if (onlies.length > 0) {
112
+ if (onlies.indexOf(name) > -1) {
110
113
  matches.push(standard);
111
114
  } else {
112
115
  skipped.push(standard.name);
@@ -5,7 +5,7 @@ module BBC
5
5
  def lint(page_settings)
6
6
  browser.visit page_settings.url
7
7
  browser.execute_script(BBC::A11y::Javascript.bundle)
8
- criteria = { skip: page_settings.skipped_standards }.to_json
8
+ criteria = { skip: page_settings.skipped_standards, only: page_settings.only_standards }.to_json
9
9
  validation = browser.evaluate_script("a11y.validate(#{criteria})")
10
10
  LintResult.from_json(validation)
11
11
  end
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.3.1
@@ -6,18 +6,19 @@
6
6
  "directories": {},
7
7
  "scripts": {
8
8
  "test": "karma start --single-run --browsers PhantomJS",
9
- "browserify": "browserify ./lib/bbc/a11y/js/a11y.js -o ./lib/bbc/a11y/js/bundle.js"
9
+ "browserify": "browserify ./lib/bbc/a11y/js/a11y.js -o ./lib/bbc/a11y/js/bundle.js",
10
+ "watchify": "watchify ./lib/bbc/a11y/js/a11y.js -o ./lib/bbc/a11y/js/bundle.js"
10
11
  },
11
12
  "repository": {
12
13
  "type": "git",
13
- "url": "git+https://github.com/cucumber-ltd/bbc-a11y.git"
14
+ "url": "git+https://github.com/bbc/bbc-a11y.git"
14
15
  },
15
16
  "author": "",
16
17
  "license": "ISC",
17
18
  "bugs": {
18
- "url": "https://github.com/cucumber-ltd/bbc-a11y/issues"
19
+ "url": "https://github.com/bbc/bbc-a11y/issues"
19
20
  },
20
- "homepage": "https://github.com/cucumber-ltd/bbc-a11y#readme",
21
+ "homepage": "https://github.com/bbc/bbc-a11y#readme",
21
22
  "devDependencies": {
22
23
  "browser-monkey": "^1.26.3",
23
24
  "browserify": "^12.0.1",
@@ -19,31 +19,5 @@ module BBC::A11y
19
19
  expect(configuration.pages[1].url).to eq "two.html"
20
20
  end
21
21
 
22
- it "allows you to specify settings for all pages matching a given URL pattern" do
23
- configuration = BBC::A11y.configure do
24
- page "three.html" do
25
- skip_standard /^Foo/
26
- end
27
- page "four.html"
28
- page "five.html"
29
-
30
- for_pages_matching /^f/ do
31
- skip_standard /^Bar/
32
- end
33
-
34
- for_pages_matching /^five/ do
35
- skip_standard /^Baz/
36
- end
37
- end
38
-
39
- bar = double(name: "BarStandard")
40
- baz = double(name: "BazStandard")
41
- four_page_settings = configuration.pages[1]
42
- expect(four_page_settings.skip_standard?(bar)).to be_truthy
43
- five_page_settings = configuration.pages[2]
44
- expect(five_page_settings.skip_standard?(bar)).to be_truthy
45
- expect(five_page_settings.skip_standard?(baz)).to be_truthy
46
- end
47
-
48
22
  end
49
23
  end
@@ -48,4 +48,10 @@ describe('a11y', function() {
48
48
  var validation = a11y.validate({ skip: ['Main landmark: Exactly one main landmark'] });
49
49
  expect(validation.skipped).to.eql(['Exactly one main landmark']);
50
50
  });
51
+
52
+ it('only runs specific standards', function() {
53
+ var validation = a11y.validate({ only: ['Main landmark: Exactly one main landmark'] });
54
+ expect(validation.results.length).to.equal(1)
55
+ expect(validation.results[0].standard.name).to.equal('Exactly one main landmark')
56
+ });
51
57
  });
@@ -22,4 +22,12 @@ describe('minimum text size standard', function() {
22
22
  standard.validate($, fail);
23
23
  expect(failures).to.eql([]);
24
24
  });
25
+
26
+ it('only reports the parent element when a child element also has small fonts', function() {
27
+ $('<div style="font-size: 1px"><span style="font-size: 2px">Text!</span></div>').appendTo('body');
28
+ var failures = [];
29
+ var fail = function(failure) { failures.push(failure); }
30
+ standard.validate($, fail);
31
+ expect(failures).to.eql(['Text size too small (2px):']);
32
+ });
25
33
  });
@@ -23,9 +23,9 @@ describe('standards', function() {
23
23
  });
24
24
  });
25
25
 
26
- describe('.matching({ only: "Focusable controls: Anchors must have hrefs" })', function() {
26
+ describe('.matching({ only: ["Focusable controls: Anchors must have hrefs"] })', function() {
27
27
  it('finds one standard', function() {
28
- var matches = standards.matching({ only: "Focusable controls: Anchors must have hrefs" });
28
+ var matches = standards.matching({ only: ["Focusable controls: Anchors must have hrefs"] });
29
29
  expect(matches.standards.length).to.equal(1);
30
30
  });
31
31
  });
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bbc-a11y
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Wynne
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-11-11 00:00:00.000000000 Z
13
+ date: 2016-12-07 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: capybara
@@ -140,6 +140,7 @@ files:
140
140
  - CONTRIBUTING.md
141
141
  - GETTINGSTARTED.md
142
142
  - Gemfile
143
+ - HISTORY.md
143
144
  - LICENSE
144
145
  - README.md
145
146
  - Rakefile
@@ -241,10 +242,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
241
242
  version: '0'
242
243
  requirements: []
243
244
  rubyforge_project:
244
- rubygems_version: 2.4.5.1
245
+ rubygems_version: 2.5.2
245
246
  signing_key:
246
247
  specification_version: 4
247
- summary: bbc-a11y-0.3.0
248
+ summary: bbc-a11y-0.3.1
248
249
  test_files:
249
250
  - features/README.md
250
251
  - features/check_standards/01_core_purpose.feature