Skip to content
This repository was archived by the owner on Jul 23, 2024. It is now read-only.

Commit 495fb6f

Browse files
authored
Merge pull request #15 from firefox-devtools/avoid-handling-data-which-was-not-found-as-issue
Avoid handling data which was not found as issue
2 parents 971f7e7 + ad624f7 commit 495fb6f

6 files changed

Lines changed: 173 additions & 117 deletions

File tree

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
"use strict";
2+
3+
import { WebCompat } from "../webcompat";
4+
import webCompatData from "../../webcompat-data.js";
5+
const webcompat = new WebCompat(webCompatData);
6+
7+
const FIREFOX_69 = {
8+
id: "firefox",
9+
version: "69",
10+
};
11+
12+
const FIREFOX_1 = {
13+
id: "firefox",
14+
version: "1",
15+
};
16+
17+
const SUPER_NEW = {
18+
id: "supernew",
19+
version: "1000",
20+
};
21+
22+
test("a supported browser", () => {
23+
const declarations = [
24+
{
25+
name: "grid-column",
26+
}
27+
];
28+
29+
const issues = webcompat.getCSSDeclarationBlockIssues(declarations, [FIREFOX_69]);
30+
expect(issues.length).toBe(0);
31+
});
32+
33+
test("a non supported browser", () => {
34+
const declarations = [
35+
{
36+
name: "grid-column",
37+
}
38+
];
39+
40+
const issues = webcompat.getCSSDeclarationBlockIssues(declarations, [FIREFOX_1]);
41+
expect(issues.length).toBe(1);
42+
43+
const expectedIssue = {
44+
type: WebCompat.ISSUE_TYPE.CSS_PROPERTY,
45+
unsupportedBrowsers: [FIREFOX_1],
46+
};
47+
assertIssue(issues[0], expectedIssue);
48+
});
49+
50+
test("an invalid browser without invalid browser switch", () => {
51+
webcompat.setInvalidBrowserEnabled(false);
52+
53+
const declarations = [
54+
{
55+
name: "grid-column",
56+
}
57+
];
58+
59+
const issues = webcompat.getCSSDeclarationBlockIssues(declarations, [SUPER_NEW]);
60+
expect(issues.length).toBe(0);
61+
});
62+
63+
test("an invalid browser with invalid browser switch", () => {
64+
webcompat.setInvalidBrowserEnabled(true);
65+
66+
const declarations = [
67+
{
68+
name: "grid-column",
69+
}
70+
];
71+
72+
const issues = webcompat.getCSSDeclarationBlockIssues(declarations, [SUPER_NEW]);
73+
expect(issues.length).toBe(1);
74+
75+
const expectedIssue = {
76+
type: WebCompat.ISSUE_TYPE.CSS_PROPERTY,
77+
unsupportedBrowsers: [SUPER_NEW],
78+
};
79+
assertIssue(issues[0], expectedIssue);
80+
});
81+
82+
function assertIssue(actualIssue, expectedIssue) {
83+
expect(actualIssue.type).toBe(expectedIssue.type);
84+
expect(!!actualIssue.unsupportedBrowsers).toBe(!!expectedIssue.unsupportedBrowsers);
85+
86+
if (actualIssue.unsupportedBrowsers) {
87+
const actualUnsupportedBrowsers = actualIssue.unsupportedBrowsers;
88+
const expectedUnsupportedBrowsers = expectedIssue.unsupportedBrowsers;
89+
expect(actualUnsupportedBrowsers.length).toBe(expectedUnsupportedBrowsers.length);
90+
91+
for (let i = 0; i < actualUnsupportedBrowsers.length; i++) {
92+
expect(actualUnsupportedBrowsers[i]).toBe(expectedUnsupportedBrowsers[i]);
93+
}
94+
}
95+
}

extension/lib/tests/css-property.test.js

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -68,15 +68,7 @@ test("an invalid property", () => {
6868
];
6969

7070
const issues = webcompat.getCSSDeclarationBlockIssues(declarations, [FIREFOX_69]);
71-
expect(issues.length).toBe(1);
72-
73-
const expectedIssue = {
74-
type: WebCompat.ISSUE_TYPE.CSS_PROPERTY,
75-
invalid: true,
76-
property: "invalid-property",
77-
unsupportedBrowsers: [],
78-
};
79-
assertIssue(issues[0], expectedIssue);
71+
expect(issues.length).toBe(0);
8072
});
8173

8274
test("a deprecated property", () => {
@@ -185,7 +177,6 @@ test("aliased properties which support all", () => {
185177
function assertIssue(actualIssue, expectedIssue) {
186178
expect(actualIssue.type).toBe(expectedIssue.type);
187179
expect(actualIssue.property).toBe(expectedIssue.property);
188-
expect(!!actualIssue.invalid).toBe(!!expectedIssue.invalid);
189180
expect(!!actualIssue.deprecated).toBe(!!expectedIssue.deprecated);
190181
expect(!!actualIssue.experimental).toBe(!!expectedIssue.experimental);
191182
expect(!!actualIssue.unsupportedBrowsers).toBe(!!expectedIssue.unsupportedBrowsers);

extension/lib/tests/css-value.test.js

Lines changed: 59 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -20,159 +20,136 @@ const FIREFOX_4 = {
2020
version: "4",
2121
};
2222

23-
test("<length> type", () => {
24-
const supportedUnits = [
25-
"cap", "ch", "em", "ex", "ic", "lh", "rem", "rlh", "vh", "vw", "vi", "vb",
26-
"vmin", "vmax", "px", "cm", "mm", "Q", "in", "pc", "pt", "mozmm",
27-
];
28-
29-
const declarations = [
30-
{
31-
// <length> type allows 0.
32-
name: "padding",
33-
value: 0,
34-
}
35-
];
36-
37-
for (const unit of supportedUnits) {
38-
declarations.push({ name: "padding", value: `1${ unit }` });
39-
}
40-
41-
// Even if there are several issues such as experimental value, they should be valid.
42-
const issues = webcompat.getCSSDeclarationBlockIssues(declarations, [FIREFOX_69]);
43-
expect(issues.every(i => !i.invalid)).toBe(true);
44-
});
45-
46-
test("<percentage> type", () => {
23+
test("a supported css value", () => {
4724
const declarations = [
4825
{
49-
name: "padding",
50-
value: "1%",
26+
name: "display",
27+
value: "inline-table",
5128
}
5229
];
5330

5431
const issues = webcompat.getCSSDeclarationBlockIssues(declarations, [FIREFOX_69]);
5532
expect(issues.length).toBe(0);
5633
});
5734

58-
test("<calc> type", () => {
35+
test("a non supported css value", () => {
5936
const declarations = [
6037
{
61-
name: "padding",
62-
value: "calc(1px + 1%)",
38+
name: "display",
39+
value: "inline-table",
6340
}
6441
];
6542

66-
const issues = webcompat.getCSSDeclarationBlockIssues(declarations, [FIREFOX_69]);
67-
expect(issues.length).toBe(0);
43+
const issues = webcompat.getCSSDeclarationBlockIssues(declarations, [FIREFOX_1]);
44+
expect(issues.length).toBe(1);
45+
46+
const expectedIssue = {
47+
type: WebCompat.ISSUE_TYPE.CSS_VALUE,
48+
property: "display",
49+
value: "inline-table",
50+
unsupportedBrowsers: [FIREFOX_1],
51+
};
52+
assertIssue(issues[0], expectedIssue);
6853
});
6954

70-
test("<url> type", () => {
55+
test("an experimental css value", () => {
7156
const declarations = [
7257
{
73-
name: "background-image",
74-
value: "url(sample.png)",
58+
name: "display",
59+
value: "flow-root",
7560
}
7661
];
7762

7863
const issues = webcompat.getCSSDeclarationBlockIssues(declarations, [FIREFOX_69]);
79-
expect(issues.length).toBe(0);
64+
expect(issues.length).toBe(1);
65+
66+
const expectedIssue = {
67+
type: WebCompat.ISSUE_TYPE.CSS_VALUE,
68+
experimental: true,
69+
property: "display",
70+
value: "flow-root",
71+
unsupportedBrowsers: [],
72+
};
73+
assertIssue(issues[0], expectedIssue);
8074
});
8175

82-
test("global keywords type", () => {
76+
test("an deprecated css value", () => {
8377
const declarations = [
8478
{
85-
name: "padding",
86-
value: "initial",
87-
},
88-
{
89-
name: "padding",
90-
value: "inherit",
91-
},
92-
{
93-
name: "padding",
94-
value: "unset",
79+
name: "display",
80+
value: "subgrid",
9581
}
9682
];
9783

9884
const issues = webcompat.getCSSDeclarationBlockIssues(declarations, [FIREFOX_69]);
99-
expect(issues.length).toBe(0);
85+
expect(issues.length).toBe(1);
86+
87+
const expectedIssue = {
88+
type: WebCompat.ISSUE_TYPE.CSS_VALUE,
89+
deprecated: true,
90+
property: "display",
91+
value: "subgrid",
92+
unsupportedBrowsers: [FIREFOX_69],
93+
};
94+
assertIssue(issues[0], expectedIssue);
10095
});
10196

102-
test("unknown value", () => {
97+
test("mapped css types", () => {
10398
const declarations = [
10499
{
105100
name: "padding",
106-
value: "invalid-value",
101+
value: "1rem",
107102
}
108103
];
109104

110-
const issues = webcompat.getCSSDeclarationBlockIssues(declarations, [FIREFOX_69]);
105+
const issues = webcompat.getCSSDeclarationBlockIssues(declarations, [FIREFOX_1]);
111106
expect(issues.length).toBe(1);
112107

113108
const expectedIssue = {
114109
type: WebCompat.ISSUE_TYPE.CSS_VALUE,
115-
invalid: true,
116110
property: "padding",
117-
value: "invalid-value",
118-
unsupportedBrowsers: [],
111+
value: "1rem",
112+
unsupportedBrowsers: [FIREFOX_1],
119113
};
120114
assertIssue(issues[0], expectedIssue);
121115
});
122116

123-
test("unacceptable value", () => {
117+
test("invalid value", () => {
124118
const declarations = [
125119
{
126120
name: "padding",
127-
value: 50,
121+
value: "invalid-value",
128122
}
129123
];
130124

131125
const issues = webcompat.getCSSDeclarationBlockIssues(declarations, [FIREFOX_69]);
132-
expect(issues.length).toBe(1);
133-
134-
const expectedIssue = {
135-
type: WebCompat.ISSUE_TYPE.CSS_VALUE,
136-
invalid: true,
137-
property: "padding",
138-
value: 50,
139-
unsupportedBrowsers: [],
140-
};
141-
assertIssue(issues[0], expectedIssue);
126+
expect(issues.length).toBe(0);
142127
});
143128

144-
test("valid and invalid mixed value in shorthand property", () => {
129+
test("mixed type in shorthand property", () => {
145130
const declarations = [
146131
{
147132
name: "padding",
148-
value: "solid 10 5deg 1px",
133+
value: "solid 1rem 1mozmm 1px",
149134
}
150135
];
151136

152-
const issues = webcompat.getCSSDeclarationBlockIssues(declarations, [FIREFOX_69]);
153-
expect(issues.length).toBe(3);
137+
const issues = webcompat.getCSSDeclarationBlockIssues(declarations, [FIREFOX_1]);
138+
expect(issues.length).toBe(2);
154139

155140
const expectedIssues = [
156141
{
157142
type: WebCompat.ISSUE_TYPE.CSS_VALUE,
158-
invalid: true,
159-
property: "padding",
160-
value: "solid",
161-
unsupportedBrowsers: [],
162-
},
163-
{
164-
type: WebCompat.ISSUE_TYPE.CSS_VALUE,
165-
invalid: true,
166143
property: "padding",
167-
value: 10,
168-
unsupportedBrowsers: [],
144+
value: "1rem",
145+
unsupportedBrowsers: [FIREFOX_1],
169146
},
170147
{
171148
type: WebCompat.ISSUE_TYPE.CSS_VALUE,
172-
invalid: true,
149+
experimental: true,
173150
property: "padding",
174-
value: "5deg",
175-
unsupportedBrowsers: [],
151+
value: "1mozmm",
152+
unsupportedBrowsers: [FIREFOX_1],
176153
},
177154
];
178155

@@ -231,7 +208,6 @@ function assertIssue(actualIssue, expectedIssue) {
231208
expect(actualIssue.property).toBe(expectedIssue.property);
232209
expect(actualIssue.value).toBe(expectedIssue.value);
233210
expect(actualIssue.issueTerm).toBe(expectedIssue.issueTerm);
234-
expect(!!actualIssue.invalid).toBe(!!expectedIssue.invalid);
235211
expect(!!actualIssue.deprecated).toBe(!!expectedIssue.deprecated);
236212
expect(!!actualIssue.experimental).toBe(!!expectedIssue.experimental);
237213
expect(!!actualIssue.unsupportedBrowsers).toBe(!!expectedIssue.unsupportedBrowsers);

extension/lib/tests/html-element.test.js

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -64,21 +64,12 @@ test("a deprecated html element", () => {
6464
test("an invalid html element", () => {
6565
const elementName = "invalid";
6666
const issues = webcompat.getHTMLElementIssues(elementName, [], [FIREFOX_69]);
67-
expect(issues.length).toBe(1);
68-
69-
const expectedIssue = {
70-
type: WebCompat.ISSUE_TYPE.HTML_ELEMENT,
71-
element: elementName,
72-
invalid: true,
73-
unsupportedBrowsers: [],
74-
};
75-
assertIssue(issues[0], expectedIssue);
67+
expect(issues.length).toBe(0);
7668
});
7769

7870
function assertIssue(actualIssue, expectedIssue) {
7971
expect(actualIssue.type).toBe(expectedIssue.type);
8072
expect(actualIssue.element).toBe(expectedIssue.element);
81-
expect(!!actualIssue.invalid).toBe(!!expectedIssue.invalid);
8273
expect(!!actualIssue.deprecated).toBe(!!expectedIssue.deprecated);
8374
expect(!!actualIssue.experimental).toBe(!!expectedIssue.experimental);
8475
expect(!!actualIssue.unsupportedBrowsers).toBe(!!expectedIssue.unsupportedBrowsers);

0 commit comments

Comments
 (0)