kempo-css 2.0.0 → 2.1.2

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.
@@ -1,310 +1,310 @@
1
- const getStyle = (el, prop) => getComputedStyle(el)[prop];
2
-
3
- export const beforeAll = async () => {
4
- const link = document.createElement('link');
5
- link.rel = 'stylesheet';
6
- link.href = '/src/kempo.css';
7
- document.head.appendChild(link);
8
- await new Promise(resolve => link.onload = resolve);
9
- };
10
-
11
- export default {
12
- 'should apply full padding with .p': ({pass, fail}) => {
13
- const el = document.createElement('div');
14
- el.className = 'p';
15
- document.body.appendChild(el);
16
- const pt = parseFloat(getStyle(el, 'paddingTop'));
17
- const pr = parseFloat(getStyle(el, 'paddingRight'));
18
- const pb = parseFloat(getStyle(el, 'paddingBottom'));
19
- const pl = parseFloat(getStyle(el, 'paddingLeft'));
20
- el.remove();
21
- if(pt > 0 && pr > 0 && pb > 0 && pl > 0 && pt === pr && pr === pb && pb === pl){
22
- pass(`.p applies equal padding on all sides: ${pt}px`);
23
- } else {
24
- fail(`Expected equal padding, got t:${pt} r:${pr} b:${pb} l:${pl}`);
25
- }
26
- },
27
-
28
- 'should apply directional padding classes': ({pass, fail}) => {
29
- const tests = [
30
- {className: 'pt', prop: 'paddingTop'},
31
- {className: 'pr', prop: 'paddingRight'},
32
- {className: 'pb', prop: 'paddingBottom'},
33
- {className: 'pl', prop: 'paddingLeft'}
34
- ];
35
- const failed = [];
36
- tests.forEach(({className, prop}) => {
37
- const el = document.createElement('div');
38
- el.className = className;
39
- document.body.appendChild(el);
40
- const value = parseFloat(getStyle(el, prop));
41
- el.remove();
42
- if(value <= 0){
43
- failed.push(`${className}: ${value}`);
44
- }
45
- });
46
- if(failed.length === 0){
47
- pass('Directional padding classes work');
48
- } else {
49
- fail(`Failed: ${failed.join(', ')}`);
50
- }
51
- },
52
-
53
- 'should apply axis padding with .px and .py': ({pass, fail}) => {
54
- const elX = document.createElement('div');
55
- elX.className = 'px';
56
- const elY = document.createElement('div');
57
- elY.className = 'py';
58
- document.body.appendChild(elX);
59
- document.body.appendChild(elY);
60
- const pxL = parseFloat(getStyle(elX, 'paddingLeft'));
61
- const pxR = parseFloat(getStyle(elX, 'paddingRight'));
62
- const pyT = parseFloat(getStyle(elY, 'paddingTop'));
63
- const pyB = parseFloat(getStyle(elY, 'paddingBottom'));
64
- elX.remove();
65
- elY.remove();
66
- if(pxL > 0 && pxR > 0 && pyT > 0 && pyB > 0){
67
- pass('.px and .py apply axis padding');
68
- } else {
69
- fail(`px: L${pxL}/R${pxR}, py: T${pyT}/B${pyB}`);
70
- }
71
- },
72
-
73
- 'should apply half padding with .ph': ({pass, fail}) => {
74
- const full = document.createElement('div');
75
- full.className = 'p';
76
- const half = document.createElement('div');
77
- half.className = 'ph';
78
- document.body.appendChild(full);
79
- document.body.appendChild(half);
80
- const fullVal = parseFloat(getStyle(full, 'paddingTop'));
81
- const halfVal = parseFloat(getStyle(half, 'paddingTop'));
82
- full.remove();
83
- half.remove();
84
- if(halfVal < fullVal && halfVal > 0){
85
- pass(`.ph is smaller than .p (${halfVal}px < ${fullVal}px)`);
86
- } else {
87
- fail(`Expected half: ${halfVal} < full: ${fullVal}`);
88
- }
89
- },
90
-
91
- 'should apply quarter padding with .pq': ({pass, fail}) => {
92
- const full = document.createElement('div');
93
- full.className = 'p';
94
- const quarter = document.createElement('div');
95
- quarter.className = 'pq';
96
- document.body.appendChild(full);
97
- document.body.appendChild(quarter);
98
- const fullVal = parseFloat(getStyle(full, 'paddingTop'));
99
- const quarterVal = parseFloat(getStyle(quarter, 'paddingTop'));
100
- full.remove();
101
- quarter.remove();
102
- if(quarterVal < fullVal && quarterVal > 0){
103
- pass(`.pq is smaller than .p (${quarterVal}px < ${fullVal}px)`);
104
- } else {
105
- fail(`Expected quarter: ${quarterVal} < full: ${fullVal}`);
106
- }
107
- },
108
-
109
- 'should reset padding with .p0': ({pass, fail}) => {
110
- const el = document.createElement('div');
111
- el.className = 'p0';
112
- el.style.padding = '50px';
113
- document.body.appendChild(el);
114
- const pt = parseFloat(getStyle(el, 'paddingTop'));
115
- el.remove();
116
- if(pt < 1){
117
- pass('.p0 resets padding to ~0');
118
- } else {
119
- fail(`Expected ~0, got ${pt}px`);
120
- }
121
- },
122
-
123
- 'should apply full margin with .m': ({pass, fail}) => {
124
- const el = document.createElement('div');
125
- el.className = 'm';
126
- document.body.appendChild(el);
127
- const mt = parseFloat(getStyle(el, 'marginTop'));
128
- const mr = parseFloat(getStyle(el, 'marginRight'));
129
- const mb = parseFloat(getStyle(el, 'marginBottom'));
130
- const ml = parseFloat(getStyle(el, 'marginLeft'));
131
- el.remove();
132
- if(mt > 0 && mr > 0 && mb > 0 && ml > 0){
133
- pass(`.m applies margin on all sides: ${mt}px`);
134
- } else {
135
- fail(`Expected positive margins, got t:${mt} r:${mr} b:${mb} l:${ml}`);
136
- }
137
- },
138
-
139
- 'should apply directional margin classes': ({pass, fail}) => {
140
- const tests = [
141
- {className: 'mt', prop: 'marginTop'},
142
- {className: 'mr', prop: 'marginRight'},
143
- {className: 'mb', prop: 'marginBottom'},
144
- {className: 'ml', prop: 'marginLeft'}
145
- ];
146
- const failed = [];
147
- tests.forEach(({className, prop}) => {
148
- const el = document.createElement('div');
149
- el.className = className;
150
- document.body.appendChild(el);
151
- const value = parseFloat(getStyle(el, prop));
152
- el.remove();
153
- if(value <= 0){
154
- failed.push(`${className}: ${value}`);
155
- }
156
- });
157
- if(failed.length === 0){
158
- pass('Directional margin classes work');
159
- } else {
160
- fail(`Failed: ${failed.join(', ')}`);
161
- }
162
- },
163
-
164
- 'should reset margin with .m0': ({pass, fail}) => {
165
- const el = document.createElement('div');
166
- el.className = 'm0';
167
- el.style.margin = '50px';
168
- document.body.appendChild(el);
169
- const mt = parseFloat(getStyle(el, 'marginTop'));
170
- el.remove();
171
- if(mt === 0){
172
- pass('.m0 resets margin to 0');
173
- } else {
174
- fail(`Expected 0, got ${mt}px`);
175
- }
176
- },
177
-
178
- 'should apply negative margin with .-m': ({pass, fail}) => {
179
- const el = document.createElement('div');
180
- el.className = '-m';
181
- document.body.appendChild(el);
182
- const mt = parseFloat(getStyle(el, 'marginTop'));
183
- el.remove();
184
- if(mt < 0){
185
- pass(`.-m applies negative margin: ${mt}px`);
186
- } else {
187
- fail(`Expected negative margin, got ${mt}px`);
188
- }
189
- },
190
-
191
- 'should apply border with .b': ({pass, fail}) => {
192
- const el = document.createElement('div');
193
- el.className = 'b';
194
- document.body.appendChild(el);
195
- const bt = parseFloat(getStyle(el, 'borderTopWidth'));
196
- const br = parseFloat(getStyle(el, 'borderRightWidth'));
197
- const bb = parseFloat(getStyle(el, 'borderBottomWidth'));
198
- const bl = parseFloat(getStyle(el, 'borderLeftWidth'));
199
- el.remove();
200
- if(bt > 0 && br > 0 && bb > 0 && bl > 0){
201
- pass('.b applies border on all sides');
202
- } else {
203
- fail(`Expected borders, got t:${bt} r:${br} b:${bb} l:${bl}`);
204
- }
205
- },
206
-
207
- 'should apply directional borders': ({pass, fail}) => {
208
- const tests = [
209
- {className: 'bt', prop: 'borderTopWidth'},
210
- {className: 'br', prop: 'borderRightWidth'},
211
- {className: 'bb', prop: 'borderBottomWidth'},
212
- {className: 'bl', prop: 'borderLeftWidth'}
213
- ];
214
- const failed = [];
215
- tests.forEach(({className, prop}) => {
216
- const el = document.createElement('div');
217
- el.className = className;
218
- document.body.appendChild(el);
219
- const value = parseFloat(getStyle(el, prop));
220
- el.remove();
221
- if(value <= 0){
222
- failed.push(`${className}: ${value}`);
223
- }
224
- });
225
- if(failed.length === 0){
226
- pass('Directional border classes work');
227
- } else {
228
- fail(`Failed: ${failed.join(', ')}`);
229
- }
230
- },
231
-
232
- 'should remove border with .b0': ({pass, fail}) => {
233
- const el = document.createElement('div');
234
- el.className = 'b0';
235
- el.style.border = '5px solid red';
236
- document.body.appendChild(el);
237
- const bt = getStyle(el, 'borderTopStyle');
238
- el.remove();
239
- if(bt === 'none'){
240
- pass('.b0 removes borders');
241
- } else {
242
- fail(`Expected none, got ${bt}`);
243
- }
244
- },
245
-
246
- 'should apply border radius with .r': ({pass, fail}) => {
247
- const el = document.createElement('div');
248
- el.className = 'r';
249
- document.body.appendChild(el);
250
- const radius = parseFloat(getStyle(el, 'borderTopLeftRadius'));
251
- el.remove();
252
- if(radius > 0){
253
- pass(`.r applies border radius: ${radius}px`);
254
- } else {
255
- fail(`Expected radius, got ${radius}`);
256
- }
257
- },
258
-
259
- 'should apply corner-specific radius': ({pass, fail}) => {
260
- const tests = [
261
- {className: 'rtl', prop: 'borderTopLeftRadius'},
262
- {className: 'rtr', prop: 'borderTopRightRadius'},
263
- {className: 'rbr', prop: 'borderBottomRightRadius'},
264
- {className: 'rbl', prop: 'borderBottomLeftRadius'}
265
- ];
266
- const failed = [];
267
- tests.forEach(({className, prop}) => {
268
- const el = document.createElement('div');
269
- el.className = className;
270
- document.body.appendChild(el);
271
- const value = parseFloat(getStyle(el, prop));
272
- el.remove();
273
- if(value <= 0){
274
- failed.push(`${className}: ${value}`);
275
- }
276
- });
277
- if(failed.length === 0){
278
- pass('Corner radius classes work');
279
- } else {
280
- fail(`Failed: ${failed.join(', ')}`);
281
- }
282
- },
283
-
284
- 'should remove radius with .r0': ({pass, fail}) => {
285
- const el = document.createElement('div');
286
- el.className = 'r0';
287
- el.style.borderRadius = '20px';
288
- document.body.appendChild(el);
289
- const radius = parseFloat(getStyle(el, 'borderTopLeftRadius'));
290
- el.remove();
291
- if(radius === 0){
292
- pass('.r0 removes border radius');
293
- } else {
294
- fail(`Expected 0, got ${radius}`);
295
- }
296
- },
297
-
298
- 'should apply pill shape with .round': ({pass, fail}) => {
299
- const el = document.createElement('div');
300
- el.className = 'round';
301
- document.body.appendChild(el);
302
- const radius = parseFloat(getStyle(el, 'borderTopLeftRadius'));
303
- el.remove();
304
- if(radius > 1000){
305
- pass(`.round applies large radius: ${radius}px`);
306
- } else {
307
- fail(`Expected very large radius, got ${radius}`);
308
- }
309
- }
310
- };
1
+ const getStyle = (el, prop) => getComputedStyle(el)[prop];
2
+
3
+ export const beforeAll = async () => {
4
+ const link = document.createElement('link');
5
+ link.rel = 'stylesheet';
6
+ link.href = '/src/kempo.css';
7
+ document.head.appendChild(link);
8
+ await new Promise(resolve => link.onload = resolve);
9
+ };
10
+
11
+ export default {
12
+ 'should apply full padding with .p': ({pass, fail}) => {
13
+ const el = document.createElement('div');
14
+ el.className = 'p';
15
+ document.body.appendChild(el);
16
+ const pt = parseFloat(getStyle(el, 'paddingTop'));
17
+ const pr = parseFloat(getStyle(el, 'paddingRight'));
18
+ const pb = parseFloat(getStyle(el, 'paddingBottom'));
19
+ const pl = parseFloat(getStyle(el, 'paddingLeft'));
20
+ el.remove();
21
+ if(pt > 0 && pr > 0 && pb > 0 && pl > 0 && pt === pr && pr === pb && pb === pl){
22
+ pass(`.p applies equal padding on all sides: ${pt}px`);
23
+ } else {
24
+ fail(`Expected equal padding, got t:${pt} r:${pr} b:${pb} l:${pl}`);
25
+ }
26
+ },
27
+
28
+ 'should apply directional padding classes': ({pass, fail}) => {
29
+ const tests = [
30
+ {className: 'pt', prop: 'paddingTop'},
31
+ {className: 'pr', prop: 'paddingRight'},
32
+ {className: 'pb', prop: 'paddingBottom'},
33
+ {className: 'pl', prop: 'paddingLeft'}
34
+ ];
35
+ const failed = [];
36
+ tests.forEach(({className, prop}) => {
37
+ const el = document.createElement('div');
38
+ el.className = className;
39
+ document.body.appendChild(el);
40
+ const value = parseFloat(getStyle(el, prop));
41
+ el.remove();
42
+ if(value <= 0){
43
+ failed.push(`${className}: ${value}`);
44
+ }
45
+ });
46
+ if(failed.length === 0){
47
+ pass('Directional padding classes work');
48
+ } else {
49
+ fail(`Failed: ${failed.join(', ')}`);
50
+ }
51
+ },
52
+
53
+ 'should apply axis padding with .px and .py': ({pass, fail}) => {
54
+ const elX = document.createElement('div');
55
+ elX.className = 'px';
56
+ const elY = document.createElement('div');
57
+ elY.className = 'py';
58
+ document.body.appendChild(elX);
59
+ document.body.appendChild(elY);
60
+ const pxL = parseFloat(getStyle(elX, 'paddingLeft'));
61
+ const pxR = parseFloat(getStyle(elX, 'paddingRight'));
62
+ const pyT = parseFloat(getStyle(elY, 'paddingTop'));
63
+ const pyB = parseFloat(getStyle(elY, 'paddingBottom'));
64
+ elX.remove();
65
+ elY.remove();
66
+ if(pxL > 0 && pxR > 0 && pyT > 0 && pyB > 0){
67
+ pass('.px and .py apply axis padding');
68
+ } else {
69
+ fail(`px: L${pxL}/R${pxR}, py: T${pyT}/B${pyB}`);
70
+ }
71
+ },
72
+
73
+ 'should apply half padding with .ph': ({pass, fail}) => {
74
+ const full = document.createElement('div');
75
+ full.className = 'p';
76
+ const half = document.createElement('div');
77
+ half.className = 'ph';
78
+ document.body.appendChild(full);
79
+ document.body.appendChild(half);
80
+ const fullVal = parseFloat(getStyle(full, 'paddingTop'));
81
+ const halfVal = parseFloat(getStyle(half, 'paddingTop'));
82
+ full.remove();
83
+ half.remove();
84
+ if(halfVal < fullVal && halfVal > 0){
85
+ pass(`.ph is smaller than .p (${halfVal}px < ${fullVal}px)`);
86
+ } else {
87
+ fail(`Expected half: ${halfVal} < full: ${fullVal}`);
88
+ }
89
+ },
90
+
91
+ 'should apply quarter padding with .pq': ({pass, fail}) => {
92
+ const full = document.createElement('div');
93
+ full.className = 'p';
94
+ const quarter = document.createElement('div');
95
+ quarter.className = 'pq';
96
+ document.body.appendChild(full);
97
+ document.body.appendChild(quarter);
98
+ const fullVal = parseFloat(getStyle(full, 'paddingTop'));
99
+ const quarterVal = parseFloat(getStyle(quarter, 'paddingTop'));
100
+ full.remove();
101
+ quarter.remove();
102
+ if(quarterVal < fullVal && quarterVal > 0){
103
+ pass(`.pq is smaller than .p (${quarterVal}px < ${fullVal}px)`);
104
+ } else {
105
+ fail(`Expected quarter: ${quarterVal} < full: ${fullVal}`);
106
+ }
107
+ },
108
+
109
+ 'should reset padding with .p0': ({pass, fail}) => {
110
+ const el = document.createElement('div');
111
+ el.className = 'p0';
112
+ el.style.padding = '50px';
113
+ document.body.appendChild(el);
114
+ const pt = parseFloat(getStyle(el, 'paddingTop'));
115
+ el.remove();
116
+ if(pt < 1){
117
+ pass('.p0 resets padding to ~0');
118
+ } else {
119
+ fail(`Expected ~0, got ${pt}px`);
120
+ }
121
+ },
122
+
123
+ 'should apply full margin with .m': ({pass, fail}) => {
124
+ const el = document.createElement('div');
125
+ el.className = 'm';
126
+ document.body.appendChild(el);
127
+ const mt = parseFloat(getStyle(el, 'marginTop'));
128
+ const mr = parseFloat(getStyle(el, 'marginRight'));
129
+ const mb = parseFloat(getStyle(el, 'marginBottom'));
130
+ const ml = parseFloat(getStyle(el, 'marginLeft'));
131
+ el.remove();
132
+ if(mt > 0 && mr > 0 && mb > 0 && ml > 0){
133
+ pass(`.m applies margin on all sides: ${mt}px`);
134
+ } else {
135
+ fail(`Expected positive margins, got t:${mt} r:${mr} b:${mb} l:${ml}`);
136
+ }
137
+ },
138
+
139
+ 'should apply directional margin classes': ({pass, fail}) => {
140
+ const tests = [
141
+ {className: 'mt', prop: 'marginTop'},
142
+ {className: 'mr', prop: 'marginRight'},
143
+ {className: 'mb', prop: 'marginBottom'},
144
+ {className: 'ml', prop: 'marginLeft'}
145
+ ];
146
+ const failed = [];
147
+ tests.forEach(({className, prop}) => {
148
+ const el = document.createElement('div');
149
+ el.className = className;
150
+ document.body.appendChild(el);
151
+ const value = parseFloat(getStyle(el, prop));
152
+ el.remove();
153
+ if(value <= 0){
154
+ failed.push(`${className}: ${value}`);
155
+ }
156
+ });
157
+ if(failed.length === 0){
158
+ pass('Directional margin classes work');
159
+ } else {
160
+ fail(`Failed: ${failed.join(', ')}`);
161
+ }
162
+ },
163
+
164
+ 'should reset margin with .m0': ({pass, fail}) => {
165
+ const el = document.createElement('div');
166
+ el.className = 'm0';
167
+ el.style.margin = '50px';
168
+ document.body.appendChild(el);
169
+ const mt = parseFloat(getStyle(el, 'marginTop'));
170
+ el.remove();
171
+ if(mt === 0){
172
+ pass('.m0 resets margin to 0');
173
+ } else {
174
+ fail(`Expected 0, got ${mt}px`);
175
+ }
176
+ },
177
+
178
+ 'should apply negative margin with .-m': ({pass, fail}) => {
179
+ const el = document.createElement('div');
180
+ el.className = '-m';
181
+ document.body.appendChild(el);
182
+ const mt = parseFloat(getStyle(el, 'marginTop'));
183
+ el.remove();
184
+ if(mt < 0){
185
+ pass(`.-m applies negative margin: ${mt}px`);
186
+ } else {
187
+ fail(`Expected negative margin, got ${mt}px`);
188
+ }
189
+ },
190
+
191
+ 'should apply border with .b': ({pass, fail}) => {
192
+ const el = document.createElement('div');
193
+ el.className = 'b';
194
+ document.body.appendChild(el);
195
+ const bt = parseFloat(getStyle(el, 'borderTopWidth'));
196
+ const br = parseFloat(getStyle(el, 'borderRightWidth'));
197
+ const bb = parseFloat(getStyle(el, 'borderBottomWidth'));
198
+ const bl = parseFloat(getStyle(el, 'borderLeftWidth'));
199
+ el.remove();
200
+ if(bt > 0 && br > 0 && bb > 0 && bl > 0){
201
+ pass('.b applies border on all sides');
202
+ } else {
203
+ fail(`Expected borders, got t:${bt} r:${br} b:${bb} l:${bl}`);
204
+ }
205
+ },
206
+
207
+ 'should apply directional borders': ({pass, fail}) => {
208
+ const tests = [
209
+ {className: 'bt', prop: 'borderTopWidth'},
210
+ {className: 'br', prop: 'borderRightWidth'},
211
+ {className: 'bb', prop: 'borderBottomWidth'},
212
+ {className: 'bl', prop: 'borderLeftWidth'}
213
+ ];
214
+ const failed = [];
215
+ tests.forEach(({className, prop}) => {
216
+ const el = document.createElement('div');
217
+ el.className = className;
218
+ document.body.appendChild(el);
219
+ const value = parseFloat(getStyle(el, prop));
220
+ el.remove();
221
+ if(value <= 0){
222
+ failed.push(`${className}: ${value}`);
223
+ }
224
+ });
225
+ if(failed.length === 0){
226
+ pass('Directional border classes work');
227
+ } else {
228
+ fail(`Failed: ${failed.join(', ')}`);
229
+ }
230
+ },
231
+
232
+ 'should remove border with .b0': ({pass, fail}) => {
233
+ const el = document.createElement('div');
234
+ el.className = 'b0';
235
+ el.style.border = '5px solid red';
236
+ document.body.appendChild(el);
237
+ const bt = getStyle(el, 'borderTopStyle');
238
+ el.remove();
239
+ if(bt === 'none'){
240
+ pass('.b0 removes borders');
241
+ } else {
242
+ fail(`Expected none, got ${bt}`);
243
+ }
244
+ },
245
+
246
+ 'should apply border radius with .r': ({pass, fail}) => {
247
+ const el = document.createElement('div');
248
+ el.className = 'r';
249
+ document.body.appendChild(el);
250
+ const radius = parseFloat(getStyle(el, 'borderTopLeftRadius'));
251
+ el.remove();
252
+ if(radius > 0){
253
+ pass(`.r applies border radius: ${radius}px`);
254
+ } else {
255
+ fail(`Expected radius, got ${radius}`);
256
+ }
257
+ },
258
+
259
+ 'should apply corner-specific radius': ({pass, fail}) => {
260
+ const tests = [
261
+ {className: 'rtl', prop: 'borderTopLeftRadius'},
262
+ {className: 'rtr', prop: 'borderTopRightRadius'},
263
+ {className: 'rbr', prop: 'borderBottomRightRadius'},
264
+ {className: 'rbl', prop: 'borderBottomLeftRadius'}
265
+ ];
266
+ const failed = [];
267
+ tests.forEach(({className, prop}) => {
268
+ const el = document.createElement('div');
269
+ el.className = className;
270
+ document.body.appendChild(el);
271
+ const value = parseFloat(getStyle(el, prop));
272
+ el.remove();
273
+ if(value <= 0){
274
+ failed.push(`${className}: ${value}`);
275
+ }
276
+ });
277
+ if(failed.length === 0){
278
+ pass('Corner radius classes work');
279
+ } else {
280
+ fail(`Failed: ${failed.join(', ')}`);
281
+ }
282
+ },
283
+
284
+ 'should remove radius with .r0': ({pass, fail}) => {
285
+ const el = document.createElement('div');
286
+ el.className = 'r0';
287
+ el.style.borderRadius = '20px';
288
+ document.body.appendChild(el);
289
+ const radius = parseFloat(getStyle(el, 'borderTopLeftRadius'));
290
+ el.remove();
291
+ if(radius === 0){
292
+ pass('.r0 removes border radius');
293
+ } else {
294
+ fail(`Expected 0, got ${radius}`);
295
+ }
296
+ },
297
+
298
+ 'should apply pill shape with .round': ({pass, fail}) => {
299
+ const el = document.createElement('div');
300
+ el.className = 'round';
301
+ document.body.appendChild(el);
302
+ const radius = parseFloat(getStyle(el, 'borderTopLeftRadius'));
303
+ el.remove();
304
+ if(radius > 1000){
305
+ pass(`.round applies large radius: ${radius}px`);
306
+ } else {
307
+ fail(`Expected very large radius, got ${radius}`);
308
+ }
309
+ }
310
+ };