@najemi-software/vitest-dom 0.13.0 → 0.14.0-alpha.14.1
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.
- package/dist/extend-expect.d.ts +1 -3
- package/dist/extend-expect.js +2 -6
- package/dist/extend-expect.js.map +1 -1
- package/dist/matchers/css-parse.d.ts +30 -0
- package/dist/matchers/css-parse.js +514 -0
- package/dist/matchers/css-parse.js.map +1 -0
- package/dist/matchers/to-be-checked.d.ts +2 -0
- package/dist/matchers/to-be-checked.js +52 -0
- package/dist/matchers/to-be-checked.js.map +1 -0
- package/dist/matchers/to-be-disabled.d.ts +3 -0
- package/dist/matchers/to-be-disabled.js +74 -0
- package/dist/matchers/to-be-disabled.js.map +1 -0
- package/dist/matchers/to-be-empty-dom-element.d.ts +2 -0
- package/dist/matchers/to-be-empty-dom-element.js +31 -0
- package/dist/matchers/to-be-empty-dom-element.js.map +1 -0
- package/dist/matchers/to-be-empty.d.ts +3 -0
- package/dist/matchers/to-be-empty.js +18 -0
- package/dist/matchers/to-be-empty.js.map +1 -0
- package/dist/matchers/to-be-in-the-document.d.ts +2 -0
- package/dist/matchers/to-be-in-the-document.js +24 -0
- package/dist/matchers/to-be-in-the-document.js.map +1 -0
- package/dist/matchers/to-be-in-the-dom.d.ts +3 -0
- package/dist/matchers/to-be-in-the-dom.js +23 -0
- package/dist/matchers/to-be-in-the-dom.js.map +1 -0
- package/dist/matchers/to-be-invalid.d.ts +3 -0
- package/dist/matchers/to-be-invalid.js +50 -0
- package/dist/matchers/to-be-invalid.js.map +1 -0
- package/dist/matchers/to-be-partially-checked.d.ts +2 -0
- package/dist/matchers/to-be-partially-checked.js +36 -0
- package/dist/matchers/to-be-partially-checked.js.map +1 -0
- package/dist/matchers/to-be-required.d.ts +2 -0
- package/dist/matchers/to-be-required.js +40 -0
- package/dist/matchers/to-be-required.js.map +1 -0
- package/dist/matchers/to-be-visible.d.ts +2 -0
- package/dist/matchers/to-be-visible.js +46 -0
- package/dist/matchers/to-be-visible.js.map +1 -0
- package/dist/matchers/to-contain-element.d.ts +2 -0
- package/dist/matchers/to-contain-element.js +19 -0
- package/dist/matchers/to-contain-element.js.map +1 -0
- package/dist/matchers/to-contain-html.d.ts +2 -0
- package/dist/matchers/to-contain-html.js +25 -0
- package/dist/matchers/to-contain-html.js.map +1 -0
- package/dist/matchers/to-have-accessible-description.d.ts +4 -0
- package/dist/matchers/to-have-accessible-description.js +28 -0
- package/dist/matchers/to-have-accessible-description.js.map +1 -0
- package/dist/matchers/to-have-accessible-errormessage.d.ts +2 -0
- package/dist/matchers/to-have-accessible-errormessage.js +48 -0
- package/dist/matchers/to-have-accessible-errormessage.js.map +1 -0
- package/dist/matchers/to-have-accessible-name.d.ts +3 -0
- package/dist/matchers/to-have-accessible-name.js +27 -0
- package/dist/matchers/to-have-accessible-name.js.map +1 -0
- package/dist/matchers/to-have-attribute.d.ts +2 -0
- package/dist/matchers/to-have-attribute.js +34 -0
- package/dist/matchers/to-have-attribute.js.map +1 -0
- package/dist/matchers/to-have-class.d.ts +2 -0
- package/dist/matchers/to-have-class.js +56 -0
- package/dist/matchers/to-have-class.js.map +1 -0
- package/dist/matchers/to-have-description.d.ts +4 -0
- package/dist/matchers/to-have-description.js +30 -0
- package/dist/matchers/to-have-description.js.map +1 -0
- package/dist/matchers/to-have-display-value.d.ts +2 -0
- package/dist/matchers/to-have-display-value.js +31 -0
- package/dist/matchers/to-have-display-value.js.map +1 -0
- package/dist/matchers/to-have-errormessage.d.ts +3 -0
- package/dist/matchers/to-have-errormessage.js +39 -0
- package/dist/matchers/to-have-errormessage.js.map +1 -0
- package/dist/matchers/to-have-focus.d.ts +2 -0
- package/dist/matchers/to-have-focus.js +22 -0
- package/dist/matchers/to-have-focus.js.map +1 -0
- package/dist/matchers/to-have-form-values.d.ts +2 -0
- package/dist/matchers/to-have-form-values.js +67 -0
- package/dist/matchers/to-have-form-values.js.map +1 -0
- package/dist/matchers/to-have-style.d.ts +2 -0
- package/dist/matchers/to-have-style.js +59 -0
- package/dist/matchers/to-have-style.js.map +1 -0
- package/dist/matchers/to-have-text-content.d.ts +4 -0
- package/dist/matchers/to-have-text-content.js +18 -0
- package/dist/matchers/to-have-text-content.js.map +1 -0
- package/dist/matchers/to-have-value.d.ts +2 -0
- package/dist/matchers/to-have-value.js +27 -0
- package/dist/matchers/to-have-value.js.map +1 -0
- package/dist/matchers/types.d.ts +13 -0
- package/dist/matchers/types.js +2 -0
- package/dist/matchers/types.js.map +1 -0
- package/dist/matchers/utils.d.ts +43 -0
- package/dist/matchers/utils.js +217 -0
- package/dist/matchers/utils.js.map +1 -0
- package/dist/matchers.d.ts +682 -83
- package/dist/matchers.js +25 -56
- package/dist/matchers.js.map +1 -1
- package/package.json +9 -5
- package/dist/chunk-DARZWRGS.js +0 -1546
- package/dist/chunk-DARZWRGS.js.map +0 -1
- package/dist/matchers-CEKfObS0.d.ts +0 -661
package/dist/extend-expect.d.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import "
|
|
2
|
-
import { T as TestingLibraryMatchers } from './matchers-CEKfObS0.js';
|
|
3
|
-
|
|
1
|
+
import type { TestingLibraryMatchers } from "./matchers.js";
|
|
4
2
|
declare module "vitest" {
|
|
5
3
|
interface Assertion<T = any> extends TestingLibraryMatchers<(expected: string) => any, T> {
|
|
6
4
|
}
|
package/dist/extend-expect.js
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
matchers_exports
|
|
3
|
-
} from "./chunk-DARZWRGS.js";
|
|
4
|
-
|
|
5
|
-
// src/matchers/extend-expect.ts
|
|
6
1
|
import { expect } from "vitest";
|
|
7
|
-
|
|
2
|
+
import * as matchers from "./matchers.js";
|
|
3
|
+
expect.extend(matchers);
|
|
8
4
|
//# sourceMappingURL=extend-expect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"extend-expect.js","sourceRoot":"","sources":["../src/extend-expect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAG1C,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export interface ParserOptions {
|
|
2
|
+
/** Silently fail on parse errors */
|
|
3
|
+
silent?: boolean | undefined;
|
|
4
|
+
/** The path to the file containing css. Makes errors and source maps more helpful, by letting them know where code comes from. */
|
|
5
|
+
source?: string | undefined;
|
|
6
|
+
}
|
|
7
|
+
export interface Stylesheet extends Node {
|
|
8
|
+
stylesheet?: StyleRules | undefined;
|
|
9
|
+
}
|
|
10
|
+
interface Node {
|
|
11
|
+
/** The possible values are the ones listed in the Types section on https://github.com/reworkcss/css page. */
|
|
12
|
+
type?: string | undefined;
|
|
13
|
+
/** A reference to the parent node, or null if the node has no parent. */
|
|
14
|
+
parent?: Node | undefined;
|
|
15
|
+
/** Information about the position in the source string that corresponds to the node. */
|
|
16
|
+
position?: {
|
|
17
|
+
start?: Position | undefined;
|
|
18
|
+
end?: Position | undefined;
|
|
19
|
+
/** The value of options.source if passed to css.parse. Otherwise undefined. */
|
|
20
|
+
source?: string | undefined;
|
|
21
|
+
/** The full source string passed to css.parse. */
|
|
22
|
+
content?: string | undefined;
|
|
23
|
+
} | undefined;
|
|
24
|
+
}
|
|
25
|
+
interface Position {
|
|
26
|
+
line?: number | undefined;
|
|
27
|
+
column?: number | undefined;
|
|
28
|
+
}
|
|
29
|
+
declare function cssParse(css: string, options?: ParserOptions): Stylesheet;
|
|
30
|
+
export default cssParse;
|
|
@@ -0,0 +1,514 @@
|
|
|
1
|
+
// http://www.w3.org/TR/CSS21/grammar.html
|
|
2
|
+
// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027
|
|
3
|
+
const commentre = /\/\*[^*]*\*+([^/*][^*]*\*+)*\//g;
|
|
4
|
+
function cssParse(css, options) {
|
|
5
|
+
options = options || {};
|
|
6
|
+
/**
|
|
7
|
+
* Positional.
|
|
8
|
+
*/
|
|
9
|
+
let lineno = 1;
|
|
10
|
+
let column = 1;
|
|
11
|
+
/**
|
|
12
|
+
* Update lineno and column based on `str`.
|
|
13
|
+
*/
|
|
14
|
+
function updatePosition(str) {
|
|
15
|
+
let lines = str.match(/\n/g);
|
|
16
|
+
if (lines)
|
|
17
|
+
lineno += lines.length;
|
|
18
|
+
let i = str.lastIndexOf("\n");
|
|
19
|
+
column = ~i ? str.length - i : column + str.length;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Mark position and patch `node.position`.
|
|
23
|
+
*/
|
|
24
|
+
function position() {
|
|
25
|
+
let start = { line: lineno, column: column };
|
|
26
|
+
return function (node) {
|
|
27
|
+
node.position = new Position(start);
|
|
28
|
+
whitespace();
|
|
29
|
+
return node;
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Store position information for a node
|
|
34
|
+
*/
|
|
35
|
+
function Position(start) {
|
|
36
|
+
this.start = start;
|
|
37
|
+
this.end = { line: lineno, column: column };
|
|
38
|
+
this.source = options.source;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Non-enumerable source string
|
|
42
|
+
*/
|
|
43
|
+
Position.prototype.content = css;
|
|
44
|
+
/**
|
|
45
|
+
* Error `msg`.
|
|
46
|
+
*/
|
|
47
|
+
let errorsList = [];
|
|
48
|
+
function error(msg) {
|
|
49
|
+
let err = new Error(options.source + ":" + lineno + ":" + column + ": " + msg);
|
|
50
|
+
err.reason = msg;
|
|
51
|
+
err.filename = options.source;
|
|
52
|
+
err.line = lineno;
|
|
53
|
+
err.column = column;
|
|
54
|
+
err.source = css;
|
|
55
|
+
if (options.silent) {
|
|
56
|
+
errorsList.push(err);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
throw err;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Parse stylesheet.
|
|
64
|
+
*/
|
|
65
|
+
function stylesheet() {
|
|
66
|
+
let rulesList = rules();
|
|
67
|
+
return {
|
|
68
|
+
type: "stylesheet",
|
|
69
|
+
stylesheet: {
|
|
70
|
+
source: options.source,
|
|
71
|
+
rules: rulesList,
|
|
72
|
+
parsingErrors: errorsList,
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Opening brace.
|
|
78
|
+
*/
|
|
79
|
+
function open() {
|
|
80
|
+
return match(/^{\s*/);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Closing brace.
|
|
84
|
+
*/
|
|
85
|
+
function close() {
|
|
86
|
+
return match(/^}/);
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Parse ruleset.
|
|
90
|
+
*/
|
|
91
|
+
function rules() {
|
|
92
|
+
let node;
|
|
93
|
+
let rules = [];
|
|
94
|
+
whitespace();
|
|
95
|
+
comments(rules);
|
|
96
|
+
while (css.length && css.charAt(0) != "}" && (node = atrule() || rule())) {
|
|
97
|
+
if (node !== false) {
|
|
98
|
+
rules.push(node);
|
|
99
|
+
comments(rules);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return rules;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Match `re` and return captures.
|
|
106
|
+
*/
|
|
107
|
+
function match(re) {
|
|
108
|
+
let m = re.exec(css);
|
|
109
|
+
if (!m)
|
|
110
|
+
return;
|
|
111
|
+
let str = m[0];
|
|
112
|
+
updatePosition(str);
|
|
113
|
+
css = css.slice(str.length);
|
|
114
|
+
return m;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Parse whitespace.
|
|
118
|
+
*/
|
|
119
|
+
function whitespace() {
|
|
120
|
+
match(/^\s*/);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Parse comments;
|
|
124
|
+
*/
|
|
125
|
+
function comments(rules) {
|
|
126
|
+
let c;
|
|
127
|
+
rules = rules || [];
|
|
128
|
+
while ((c = comment())) {
|
|
129
|
+
if (c !== false) {
|
|
130
|
+
rules.push(c);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return rules;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Parse comment.
|
|
137
|
+
*/
|
|
138
|
+
function comment() {
|
|
139
|
+
let pos = position();
|
|
140
|
+
if ("/" != css.charAt(0) || "*" != css.charAt(1))
|
|
141
|
+
return;
|
|
142
|
+
let i = 2;
|
|
143
|
+
while ("" != css.charAt(i) && ("*" != css.charAt(i) || "/" != css.charAt(i + 1)))
|
|
144
|
+
++i;
|
|
145
|
+
i += 2;
|
|
146
|
+
if ("" === css.charAt(i - 1)) {
|
|
147
|
+
return error("End of comment missing");
|
|
148
|
+
}
|
|
149
|
+
let str = css.slice(2, i - 2);
|
|
150
|
+
column += 2;
|
|
151
|
+
updatePosition(str);
|
|
152
|
+
css = css.slice(i);
|
|
153
|
+
column += 2;
|
|
154
|
+
return pos({
|
|
155
|
+
type: "comment",
|
|
156
|
+
comment: str,
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Parse selector.
|
|
161
|
+
*/
|
|
162
|
+
function selector() {
|
|
163
|
+
let m = match(/^([^{]+)/);
|
|
164
|
+
if (!m)
|
|
165
|
+
return;
|
|
166
|
+
/* @fix Remove all comments from selectors
|
|
167
|
+
* http://ostermiller.org/findcomment.html */
|
|
168
|
+
return trim(m[0])
|
|
169
|
+
.replace(/\/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*\/+/g, "")
|
|
170
|
+
.replace(/"(?:\\"|[^"])*"|'(?:\\'|[^'])*'/g, function (m) {
|
|
171
|
+
return m.replace(/,/g, "\u200C");
|
|
172
|
+
})
|
|
173
|
+
.split(/\s*(?![^(]*\)),\s*/)
|
|
174
|
+
.map(function (s) {
|
|
175
|
+
return s.replace(/\u200C/g, ",");
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Parse declaration.
|
|
180
|
+
*/
|
|
181
|
+
function declaration() {
|
|
182
|
+
let pos = position();
|
|
183
|
+
// prop
|
|
184
|
+
// eslint-disable-next-line no-useless-escape
|
|
185
|
+
let prop = match(/^(\*?[-#\/\*\\\w]+(\[[0-9a-z_-]+\])?)\s*/);
|
|
186
|
+
if (!prop)
|
|
187
|
+
return;
|
|
188
|
+
prop = trim(prop[0]);
|
|
189
|
+
// :
|
|
190
|
+
if (!match(/^:\s*/))
|
|
191
|
+
return error("property missing ':'");
|
|
192
|
+
// val
|
|
193
|
+
// eslint-disable-next-line no-useless-escape
|
|
194
|
+
let val = match(/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^\)]*?\)|[^};])+)/);
|
|
195
|
+
let ret = pos({
|
|
196
|
+
type: "declaration",
|
|
197
|
+
property: prop.replace(commentre, ""),
|
|
198
|
+
value: val ? trim(val[0]).replace(commentre, "") : "",
|
|
199
|
+
});
|
|
200
|
+
// ;
|
|
201
|
+
match(/^[;\s]*/);
|
|
202
|
+
return ret;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Parse declarations.
|
|
206
|
+
*/
|
|
207
|
+
function declarations() {
|
|
208
|
+
let decls = [];
|
|
209
|
+
if (!open())
|
|
210
|
+
return error("missing '{'");
|
|
211
|
+
comments(decls);
|
|
212
|
+
// declarations
|
|
213
|
+
let decl;
|
|
214
|
+
while ((decl = declaration())) {
|
|
215
|
+
if (decl !== false) {
|
|
216
|
+
decls.push(decl);
|
|
217
|
+
comments(decls);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
if (!close())
|
|
221
|
+
return error("missing '}'");
|
|
222
|
+
return decls;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Parse keyframe.
|
|
226
|
+
*/
|
|
227
|
+
function keyframe() {
|
|
228
|
+
let m;
|
|
229
|
+
let vals = [];
|
|
230
|
+
let pos = position();
|
|
231
|
+
while ((m = match(/^((\d+\.\d+|\.\d+|\d+)%?|[a-z]+)\s*/))) {
|
|
232
|
+
vals.push(m[1]);
|
|
233
|
+
match(/^,\s*/);
|
|
234
|
+
}
|
|
235
|
+
if (!vals.length)
|
|
236
|
+
return;
|
|
237
|
+
return pos({
|
|
238
|
+
type: "keyframe",
|
|
239
|
+
values: vals,
|
|
240
|
+
declarations: declarations(),
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Parse keyframes.
|
|
245
|
+
*/
|
|
246
|
+
function atkeyframes() {
|
|
247
|
+
let pos = position();
|
|
248
|
+
let m = match(/^@([-\w]+)?keyframes\s*/);
|
|
249
|
+
if (!m)
|
|
250
|
+
return;
|
|
251
|
+
let vendor = m[1];
|
|
252
|
+
// identifier
|
|
253
|
+
m = match(/^([-\w]+)\s*/);
|
|
254
|
+
if (!m)
|
|
255
|
+
return error("@keyframes missing name");
|
|
256
|
+
let name = m[1];
|
|
257
|
+
if (!open())
|
|
258
|
+
return error("@keyframes missing '{'");
|
|
259
|
+
let frame;
|
|
260
|
+
let frames = comments();
|
|
261
|
+
while ((frame = keyframe())) {
|
|
262
|
+
frames.push(frame);
|
|
263
|
+
frames = frames.concat(comments());
|
|
264
|
+
}
|
|
265
|
+
if (!close())
|
|
266
|
+
return error("@keyframes missing '}'");
|
|
267
|
+
return pos({
|
|
268
|
+
type: "keyframes",
|
|
269
|
+
name: name,
|
|
270
|
+
vendor: vendor,
|
|
271
|
+
keyframes: frames,
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Parse supports.
|
|
276
|
+
*/
|
|
277
|
+
function atsupports() {
|
|
278
|
+
let pos = position();
|
|
279
|
+
let m = match(/^@supports *([^{]+)/);
|
|
280
|
+
if (!m)
|
|
281
|
+
return;
|
|
282
|
+
let supports = trim(m[1]);
|
|
283
|
+
if (!open())
|
|
284
|
+
return error("@supports missing '{'");
|
|
285
|
+
let style = comments().concat(rules());
|
|
286
|
+
if (!close())
|
|
287
|
+
return error("@supports missing '}'");
|
|
288
|
+
return pos({
|
|
289
|
+
type: "supports",
|
|
290
|
+
supports: supports,
|
|
291
|
+
rules: style,
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Parse host.
|
|
296
|
+
*/
|
|
297
|
+
function athost() {
|
|
298
|
+
let pos = position();
|
|
299
|
+
let m = match(/^@host\s*/);
|
|
300
|
+
if (!m)
|
|
301
|
+
return;
|
|
302
|
+
if (!open())
|
|
303
|
+
return error("@host missing '{'");
|
|
304
|
+
let style = comments().concat(rules());
|
|
305
|
+
if (!close())
|
|
306
|
+
return error("@host missing '}'");
|
|
307
|
+
return pos({
|
|
308
|
+
type: "host",
|
|
309
|
+
rules: style,
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Parse media.
|
|
314
|
+
*/
|
|
315
|
+
function atmedia() {
|
|
316
|
+
let pos = position();
|
|
317
|
+
let m = match(/^@media *([^{]+)/);
|
|
318
|
+
if (!m)
|
|
319
|
+
return;
|
|
320
|
+
let media = trim(m[1]);
|
|
321
|
+
if (!open())
|
|
322
|
+
return error("@media missing '{'");
|
|
323
|
+
let style = comments().concat(rules());
|
|
324
|
+
if (!close())
|
|
325
|
+
return error("@media missing '}'");
|
|
326
|
+
return pos({
|
|
327
|
+
type: "media",
|
|
328
|
+
media: media,
|
|
329
|
+
rules: style,
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Parse custom-media.
|
|
334
|
+
*/
|
|
335
|
+
function atcustommedia() {
|
|
336
|
+
let pos = position();
|
|
337
|
+
let m = match(/^@custom-media\s+(--[^\s]+)\s*([^{;]+);/);
|
|
338
|
+
if (!m)
|
|
339
|
+
return;
|
|
340
|
+
return pos({
|
|
341
|
+
type: "custom-media",
|
|
342
|
+
name: trim(m[1]),
|
|
343
|
+
media: trim(m[2]),
|
|
344
|
+
});
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Parse paged media.
|
|
348
|
+
*/
|
|
349
|
+
function atpage() {
|
|
350
|
+
let pos = position();
|
|
351
|
+
let m = match(/^@page */);
|
|
352
|
+
if (!m)
|
|
353
|
+
return;
|
|
354
|
+
let sel = selector() || [];
|
|
355
|
+
if (!open())
|
|
356
|
+
return error("@page missing '{'");
|
|
357
|
+
let decls = comments();
|
|
358
|
+
// declarations
|
|
359
|
+
let decl;
|
|
360
|
+
while ((decl = declaration())) {
|
|
361
|
+
decls.push(decl);
|
|
362
|
+
decls = decls.concat(comments());
|
|
363
|
+
}
|
|
364
|
+
if (!close())
|
|
365
|
+
return error("@page missing '}'");
|
|
366
|
+
return pos({
|
|
367
|
+
type: "page",
|
|
368
|
+
selectors: sel,
|
|
369
|
+
declarations: decls,
|
|
370
|
+
});
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* Parse document.
|
|
374
|
+
*/
|
|
375
|
+
function atdocument() {
|
|
376
|
+
let pos = position();
|
|
377
|
+
let m = match(/^@([-\w]+)?document *([^{]+)/);
|
|
378
|
+
if (!m)
|
|
379
|
+
return;
|
|
380
|
+
let vendor = trim(m[1]);
|
|
381
|
+
let doc = trim(m[2]);
|
|
382
|
+
if (!open())
|
|
383
|
+
return error("@document missing '{'");
|
|
384
|
+
let style = comments().concat(rules());
|
|
385
|
+
if (!close())
|
|
386
|
+
return error("@document missing '}'");
|
|
387
|
+
return pos({
|
|
388
|
+
type: "document",
|
|
389
|
+
document: doc,
|
|
390
|
+
vendor: vendor,
|
|
391
|
+
rules: style,
|
|
392
|
+
});
|
|
393
|
+
}
|
|
394
|
+
/**
|
|
395
|
+
* Parse font-face.
|
|
396
|
+
*/
|
|
397
|
+
function atfontface() {
|
|
398
|
+
let pos = position();
|
|
399
|
+
let m = match(/^@font-face\s*/);
|
|
400
|
+
if (!m)
|
|
401
|
+
return;
|
|
402
|
+
if (!open())
|
|
403
|
+
return error("@font-face missing '{'");
|
|
404
|
+
let decls = comments();
|
|
405
|
+
// declarations
|
|
406
|
+
let decl;
|
|
407
|
+
while ((decl = declaration())) {
|
|
408
|
+
decls.push(decl);
|
|
409
|
+
decls = decls.concat(comments());
|
|
410
|
+
}
|
|
411
|
+
if (!close())
|
|
412
|
+
return error("@font-face missing '}'");
|
|
413
|
+
return pos({
|
|
414
|
+
type: "font-face",
|
|
415
|
+
declarations: decls,
|
|
416
|
+
});
|
|
417
|
+
}
|
|
418
|
+
/**
|
|
419
|
+
* Parse import
|
|
420
|
+
*/
|
|
421
|
+
let atimport = _compileAtrule("import");
|
|
422
|
+
/**
|
|
423
|
+
* Parse charset
|
|
424
|
+
*/
|
|
425
|
+
let atcharset = _compileAtrule("charset");
|
|
426
|
+
/**
|
|
427
|
+
* Parse namespace
|
|
428
|
+
*/
|
|
429
|
+
let atnamespace = _compileAtrule("namespace");
|
|
430
|
+
/**
|
|
431
|
+
* Parse non-block at-rules
|
|
432
|
+
*/
|
|
433
|
+
function _compileAtrule(name) {
|
|
434
|
+
let re = new RegExp("^@" + name + "\\s*([^;]+);");
|
|
435
|
+
return function () {
|
|
436
|
+
let pos = position();
|
|
437
|
+
let m = match(re);
|
|
438
|
+
if (!m)
|
|
439
|
+
return;
|
|
440
|
+
let ret = { type: name };
|
|
441
|
+
ret[name] = m[1].trim();
|
|
442
|
+
return pos(ret);
|
|
443
|
+
};
|
|
444
|
+
}
|
|
445
|
+
/**
|
|
446
|
+
* Parse at rule.
|
|
447
|
+
*/
|
|
448
|
+
function atrule() {
|
|
449
|
+
if (css[0] != "@")
|
|
450
|
+
return;
|
|
451
|
+
return (atkeyframes() ||
|
|
452
|
+
atmedia() ||
|
|
453
|
+
atcustommedia() ||
|
|
454
|
+
atsupports() ||
|
|
455
|
+
atimport() ||
|
|
456
|
+
atcharset() ||
|
|
457
|
+
atnamespace() ||
|
|
458
|
+
atdocument() ||
|
|
459
|
+
atpage() ||
|
|
460
|
+
athost() ||
|
|
461
|
+
atfontface());
|
|
462
|
+
}
|
|
463
|
+
/**
|
|
464
|
+
* Parse rule.
|
|
465
|
+
*/
|
|
466
|
+
function rule() {
|
|
467
|
+
let pos = position();
|
|
468
|
+
let sel = selector();
|
|
469
|
+
if (!sel)
|
|
470
|
+
return error("selector missing");
|
|
471
|
+
comments();
|
|
472
|
+
return pos({
|
|
473
|
+
type: "rule",
|
|
474
|
+
selectors: sel,
|
|
475
|
+
declarations: declarations(),
|
|
476
|
+
});
|
|
477
|
+
}
|
|
478
|
+
return addParent(stylesheet());
|
|
479
|
+
}
|
|
480
|
+
/**
|
|
481
|
+
* Trim `str`.
|
|
482
|
+
*/
|
|
483
|
+
function trim(str) {
|
|
484
|
+
return str ? str.replace(/^\s+|\s+$/g, "") : "";
|
|
485
|
+
}
|
|
486
|
+
/**
|
|
487
|
+
* Adds non-enumerable parent node reference to each node.
|
|
488
|
+
*/
|
|
489
|
+
function addParent(obj, parent) {
|
|
490
|
+
let isNode = obj && typeof obj.type === "string";
|
|
491
|
+
let childParent = isNode ? obj : parent;
|
|
492
|
+
for (var k in obj) {
|
|
493
|
+
let value = obj[k];
|
|
494
|
+
if (Array.isArray(value)) {
|
|
495
|
+
value.forEach(function (v) {
|
|
496
|
+
addParent(v, childParent);
|
|
497
|
+
});
|
|
498
|
+
}
|
|
499
|
+
else if (value && typeof value === "object") {
|
|
500
|
+
addParent(value, childParent);
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
if (isNode) {
|
|
504
|
+
Object.defineProperty(obj, "parent", {
|
|
505
|
+
configurable: true,
|
|
506
|
+
writable: true,
|
|
507
|
+
enumerable: false,
|
|
508
|
+
value: parent || null,
|
|
509
|
+
});
|
|
510
|
+
}
|
|
511
|
+
return obj;
|
|
512
|
+
}
|
|
513
|
+
export default cssParse;
|
|
514
|
+
//# sourceMappingURL=css-parse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"css-parse.js","sourceRoot":"","sources":["../../src/matchers/css-parse.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { checkHtmlElement, toSentence } from "./utils.js";
|
|
2
|
+
// WAI-ARIA roles supporting the aria-checked state
|
|
3
|
+
// (https://www.w3.org/TR/wai-aria-1.2/#aria-checked).
|
|
4
|
+
const ROLES_SUPPORTING_CHECKED = [
|
|
5
|
+
"checkbox",
|
|
6
|
+
"menuitemcheckbox",
|
|
7
|
+
"menuitemradio",
|
|
8
|
+
"option",
|
|
9
|
+
"radio",
|
|
10
|
+
"switch",
|
|
11
|
+
"treeitem",
|
|
12
|
+
];
|
|
13
|
+
export function toBeChecked(element) {
|
|
14
|
+
checkHtmlElement(element, toBeChecked, this);
|
|
15
|
+
const isValidInput = () => {
|
|
16
|
+
return element.tagName.toLowerCase() === "input" && ["checkbox", "radio"].includes(element.type);
|
|
17
|
+
};
|
|
18
|
+
const isValidAriaElement = () => {
|
|
19
|
+
return (roleSupportsChecked(element.getAttribute("role")) &&
|
|
20
|
+
["true", "false"].includes(element.getAttribute("aria-checked")));
|
|
21
|
+
};
|
|
22
|
+
if (!isValidInput() && !isValidAriaElement()) {
|
|
23
|
+
return {
|
|
24
|
+
pass: false,
|
|
25
|
+
message: () => `only inputs with type="checkbox" or type="radio" or elements with ${supportedRolesSentence()} and a valid aria-checked attribute can be used with .toBeChecked(). Use .toHaveValue() instead`,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
const isChecked = () => {
|
|
29
|
+
if (isValidInput())
|
|
30
|
+
return element.checked;
|
|
31
|
+
return element.getAttribute("aria-checked") === "true";
|
|
32
|
+
};
|
|
33
|
+
return {
|
|
34
|
+
pass: isChecked(),
|
|
35
|
+
message: () => {
|
|
36
|
+
const is = isChecked() ? "is" : "is not";
|
|
37
|
+
return [
|
|
38
|
+
this.utils.matcherHint(`${this.isNot ? ".not" : ""}.toBeChecked`, "element", ""),
|
|
39
|
+
"",
|
|
40
|
+
`Received element ${is} checked:`,
|
|
41
|
+
` ${this.utils.printReceived(element.cloneNode(false))}`,
|
|
42
|
+
].join("\n");
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
function supportedRolesSentence() {
|
|
47
|
+
return toSentence(ROLES_SUPPORTING_CHECKED.map((role) => `role="${role}"`), { lastWordConnector: " or " });
|
|
48
|
+
}
|
|
49
|
+
function roleSupportsChecked(role) {
|
|
50
|
+
return ROLES_SUPPORTING_CHECKED.includes(role);
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=to-be-checked.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"to-be-checked.js","sourceRoot":"","sources":["../../src/matchers/to-be-checked.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE1D,mDAAmD;AACnD,sDAAsD;AACtD,MAAM,wBAAwB,GAAG;IAC7B,UAAU;IACV,kBAAkB;IAClB,eAAe;IACf,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,UAAU;CACb,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,OAAgB;IACxC,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IAE7C,MAAM,YAAY,GAAG,GAAG,EAAE;QACtB,OAAO,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,OAAO,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrG,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,GAAG,EAAE;QAC5B,OAAO,CACH,mBAAmB,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YACjD,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CACnE,CAAC;IACN,CAAC,CAAC;IAEF,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;QAC3C,OAAO;YACH,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,GAAG,EAAE,CACV,qEAAqE,sBAAsB,EAAE,iGAAiG;SACrM,CAAC;IACN,CAAC;IAED,MAAM,SAAS,GAAG,GAAG,EAAE;QACnB,IAAI,YAAY,EAAE;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC;QAC3C,OAAO,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,KAAK,MAAM,CAAC;IAC3D,CAAC,CAAC;IAEF,OAAO;QACH,IAAI,EAAE,SAAS,EAAE;QACjB,OAAO,EAAE,GAAG,EAAE;YACV,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;YACzC,OAAO;gBACH,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,SAAS,EAAE,EAAE,CAAC;gBAChF,EAAE;gBACF,oBAAoB,EAAE,WAAW;gBACjC,KAAK,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE;aAC5D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;KACJ,CAAC;AACN,CAAC;AAED,SAAS,sBAAsB;IAC3B,OAAO,UAAU,CACb,wBAAwB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,IAAI,GAAG,CAAC,EACxD,EAAE,iBAAiB,EAAE,MAAM,EAAE,CAChC,CAAC;AACN,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAI;IAC7B,OAAO,wBAAwB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACnD,CAAC"}
|