@markuplint/rules 3.7.0 → 3.9.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.
Files changed (60) hide show
  1. package/lib/helpers.d.ts +2 -5
  2. package/lib/index.d.ts +240 -99
  3. package/lib/invalid-attr/index.d.ts +38 -31
  4. package/lib/no-refer-to-non-existent-id/index.d.ts +1 -2
  5. package/lib/no-refer-to-non-existent-id/index.js +2 -1
  6. package/lib/require-accessible-name/index.js +1 -1
  7. package/lib/required-attr/index.d.ts +1 -1
  8. package/lib/required-attr/index.js +1 -1
  9. package/lib/wai-aria/checkings/_.d.ts +15 -0
  10. package/lib/wai-aria/checkings/_.js +27 -0
  11. package/lib/wai-aria/checkings/required-prop copy.d.ts +15 -0
  12. package/lib/wai-aria/checkings/required-prop copy.js +27 -0
  13. package/lib/wai-aria/checkings/unadopted-explicit-roles.d.ts +15 -0
  14. package/lib/wai-aria/checkings/unadopted-explicit-roles.js +17 -0
  15. package/lib/wai-aria/index.js +2 -1
  16. package/lib/xxx/index.d.ts +2 -0
  17. package/lib/xxx/index.js +32 -0
  18. package/package.json +11 -13
  19. package/test/attr-check.spec.js +77 -0
  20. package/test/attr-duplication/index.spec.js +159 -0
  21. package/test/attr-value-quotes/index.spec.js +133 -0
  22. package/test/case-sensitive-attr-name/index.spec.js +65 -0
  23. package/test/case-sensitive-tag-name/index.spec.js +80 -0
  24. package/test/character-reference/index.spec.js +57 -0
  25. package/test/class-naming/index.spec.js +470 -0
  26. package/test/create-message.spec.js +497 -0
  27. package/test/deprecated-attr/index.spec.js +48 -0
  28. package/test/deprecated-element/index.spec.js +48 -0
  29. package/test/disallowed-element/index.spec.js +90 -0
  30. package/test/doctype/index.spec.js +50 -0
  31. package/test/end-tag/index.spec.js +162 -0
  32. package/test/id-duplication/index.spec.js +47 -0
  33. package/test/ineffective-attr/index.spec.js +31 -0
  34. package/test/invalid-attr/index.spec.js +1632 -0
  35. package/test/label-has-control/index.spec.js +29 -0
  36. package/test/landmark-roles/index.spec.js +187 -0
  37. package/test/no-boolean-attr-value/index.spec.js +41 -0
  38. package/test/no-default-value/index.spec.js +74 -0
  39. package/test/no-empty-palpable-content/index.spec.js +115 -0
  40. package/test/no-hard-code-id/index.spec.js +100 -0
  41. package/test/no-refer-to-non-existent-id/index.spec.js +254 -0
  42. package/test/no-use-event-handler-attr/index.spec.js +57 -0
  43. package/test/permitted-contents/choice.spec.js +174 -0
  44. package/test/permitted-contents/count-pattern.spec.js +308 -0
  45. package/test/permitted-contents/index.spec.js +1371 -0
  46. package/test/permitted-contents/matches-selector.spec.js +59 -0
  47. package/test/permitted-contents/order.spec.js +351 -0
  48. package/test/permitted-contents/recursive-branch.spec.js +41 -0
  49. package/test/permitted-contents/represent-transparent-nodes.spec.js +24 -0
  50. package/test/permitted-contents/start.spec.js +67 -0
  51. package/test/placeholder-label-option/index.spec.js +113 -0
  52. package/test/require-accessible-name/index.spec.js +446 -0
  53. package/test/require-datetime/index.spec.js +54 -0
  54. package/test/require-datetime/utils.spec.js +52 -0
  55. package/test/required-attr/index.spec.js +414 -0
  56. package/test/required-element/index.spec.js +188 -0
  57. package/test/required-h1/index.spec.js +69 -0
  58. package/test/use-list/index.spec.js +109 -0
  59. package/test/wai-aria/checkings/value.spec.js +33 -0
  60. package/test/wai-aria/index.spec.js +1173 -0
@@ -0,0 +1,109 @@
1
+ const { mlRuleTest } = require('markuplint');
2
+
3
+ const rule = require('../../lib/use-list').default;
4
+
5
+ test('use bullets', async () => {
6
+ expect(
7
+ (
8
+ await mlRuleTest(
9
+ rule,
10
+ `<div>
11
+ •A<br>
12
+ •B<br>
13
+ •C
14
+ </div>`,
15
+ )
16
+ ).violations.length,
17
+ ).toBe(3);
18
+ });
19
+
20
+ test('use bullets (character reference)', async () => {
21
+ expect(
22
+ (
23
+ await mlRuleTest(
24
+ rule,
25
+ `<div>
26
+ &bullet;A<br>
27
+ &bullet;B<br>
28
+ &bullet;C
29
+ </div>`,
30
+ )
31
+ ).violations.length,
32
+ ).toBe(3);
33
+ });
34
+
35
+ test('use katakana middle', async () => {
36
+ expect(
37
+ (
38
+ await mlRuleTest(
39
+ rule,
40
+ `<div>
41
+ <span>・りんご</span>
42
+ <span>・みかん</span>
43
+ <span>・ぶどう</span>
44
+ </div>`,
45
+ )
46
+ ).violations.length,
47
+ ).toBe(3);
48
+ });
49
+
50
+ test('Markdown like', async () => {
51
+ expect(
52
+ (
53
+ await mlRuleTest(
54
+ rule,
55
+ `<div>
56
+ - A<br>
57
+ - B<br>
58
+ - C
59
+ </div>`,
60
+ )
61
+ ).violations.length,
62
+ ).toBe(3);
63
+ });
64
+
65
+ test('Markdown list marker character with no space', async () => {
66
+ expect((await mlRuleTest(rule, '<div>-MINUS</div>')).violations.length).toBe(0);
67
+ });
68
+
69
+ test('Character only', async () => {
70
+ expect((await mlRuleTest(rule, '<div>●</div>')).violations.length).toBe(0);
71
+ });
72
+
73
+ test('continuous', async () => {
74
+ expect(
75
+ (
76
+ await mlRuleTest(
77
+ rule,
78
+ `<div>
79
+ <span>‣‣‣</span><span>It is not a list item</span>
80
+ </div>`,
81
+ )
82
+ ).violations.length,
83
+ ).toBe(0);
84
+ });
85
+
86
+ test('emoji (surrogate pair character)', async () => {
87
+ /**
88
+ * surrogate pair character
89
+ */
90
+ const sp = '\u{1F846}';
91
+ expect(sp.length).toBe(2);
92
+ expect(
93
+ (
94
+ await mlRuleTest(
95
+ rule,
96
+ `<div>
97
+ ${sp}A<br/>
98
+ ${sp}B<br/>
99
+ ${sp}C
100
+ </div>`,
101
+ {
102
+ rule: {
103
+ value: [sp],
104
+ },
105
+ },
106
+ )
107
+ ).violations.length,
108
+ ).toBe(3);
109
+ });
@@ -0,0 +1,33 @@
1
+ const { checkAriaValue } = require('../../../lib/wai-aria/checkings/value');
2
+
3
+ describe('checkAriaValue', () => {
4
+ test('token', () => {
5
+ expect(checkAriaValue('token', 'a', ['a'])).toBe(true);
6
+ expect(checkAriaValue('token', 'a', ['b'])).toBe(false);
7
+ });
8
+
9
+ test('token list', () => {
10
+ expect(checkAriaValue('token list', 'a', ['a'])).toBe(true);
11
+ expect(checkAriaValue('token list', 'a', ['b'])).toBe(false);
12
+ expect(checkAriaValue('token list', 'a b', ['a'])).toBe(false);
13
+ expect(checkAriaValue('token list', 'a b', ['b'])).toBe(false);
14
+ expect(checkAriaValue('token list', 'a b', ['a', 'b'])).toBe(true);
15
+ expect(checkAriaValue('token list', 'a b', ['a', 'b', 'c'])).toBe(true);
16
+ expect(checkAriaValue('token list', 'a b d', ['a', 'b', 'c'])).toBe(false);
17
+ });
18
+
19
+ test('integer', () => {
20
+ expect(checkAriaValue('integer', '1', [])).toBe(true);
21
+ expect(checkAriaValue('integer', '-1', [])).toBe(true);
22
+ expect(checkAriaValue('integer', '-1.1', [])).toBe(false);
23
+ expect(checkAriaValue('integer', '-1.1', [])).toBe(false);
24
+ });
25
+
26
+ test('number', () => {
27
+ expect(checkAriaValue('number', '1', [])).toBe(true);
28
+ expect(checkAriaValue('number', '-1', [])).toBe(true);
29
+ expect(checkAriaValue('number', '-1.1', [])).toBe(true);
30
+ expect(checkAriaValue('number', '-1.1', [])).toBe(true);
31
+ expect(checkAriaValue('number', '-1.1.1', [])).toBe(false);
32
+ });
33
+ });