@interactors/core 0.4.0 → 1.0.0-effection.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.
- package/dist/cjs/constructor.js +55 -126
- package/dist/cjs/constructor.js.map +1 -1
- package/dist/cjs/converge.js +3 -5
- package/dist/cjs/converge.js.map +1 -1
- package/dist/cjs/format.js +50 -0
- package/dist/cjs/format.js.map +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/inspector.js +2 -1
- package/dist/cjs/inspector.js.map +1 -1
- package/dist/cjs/interaction.js +43 -35
- package/dist/cjs/interaction.js.map +1 -1
- package/dist/cjs/match.js +17 -7
- package/dist/cjs/match.js.map +1 -1
- package/dist/cjs/matcher.js +13 -1
- package/dist/cjs/matcher.js.map +1 -1
- package/dist/cjs/matchers/and.js +3 -0
- package/dist/cjs/matchers/and.js.map +1 -1
- package/dist/cjs/matchers/every.js +3 -0
- package/dist/cjs/matchers/every.js.map +1 -1
- package/dist/cjs/matchers/including.js +4 -0
- package/dist/cjs/matchers/including.js.map +1 -1
- package/dist/cjs/matchers/matching.js +4 -0
- package/dist/cjs/matchers/matching.js.map +1 -1
- package/dist/cjs/matchers/not.js +3 -0
- package/dist/cjs/matchers/not.js.map +1 -1
- package/dist/cjs/matchers/or.js +3 -0
- package/dist/cjs/matchers/or.js.map +1 -1
- package/dist/cjs/matchers/some.js +3 -0
- package/dist/cjs/matchers/some.js.map +1 -1
- package/dist/cjs/resolvers.js +98 -0
- package/dist/cjs/resolvers.js.map +1 -0
- package/dist/cjs/serialize.js +48 -0
- package/dist/cjs/serialize.js.map +1 -0
- package/dist/constructor.d.ts +2 -8
- package/dist/constructor.d.ts.map +1 -1
- package/dist/converge.d.ts +2 -1
- package/dist/converge.d.ts.map +1 -1
- package/dist/esm/constructor.js +52 -117
- package/dist/esm/constructor.js.map +1 -1
- package/dist/esm/converge.js +3 -5
- package/dist/esm/converge.js.map +1 -1
- package/dist/esm/{format-table.js → format.js} +19 -1
- package/dist/esm/format.js.map +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/inspector.js +2 -1
- package/dist/esm/inspector.js.map +1 -1
- package/dist/esm/interaction.js +40 -29
- package/dist/esm/interaction.js.map +1 -1
- package/dist/esm/match.js +17 -7
- package/dist/esm/match.js.map +1 -1
- package/dist/esm/matcher.js +11 -0
- package/dist/esm/matcher.js.map +1 -1
- package/dist/esm/matchers/and.js +4 -1
- package/dist/esm/matchers/and.js.map +1 -1
- package/dist/esm/matchers/every.js +4 -1
- package/dist/esm/matchers/every.js.map +1 -1
- package/dist/esm/matchers/including.js +4 -0
- package/dist/esm/matchers/including.js.map +1 -1
- package/dist/esm/matchers/matching.js +4 -0
- package/dist/esm/matchers/matching.js.map +1 -1
- package/dist/esm/matchers/not.js +4 -1
- package/dist/esm/matchers/not.js.map +1 -1
- package/dist/esm/matchers/or.js +4 -1
- package/dist/esm/matchers/or.js.map +1 -1
- package/dist/esm/matchers/some.js +4 -1
- package/dist/esm/matchers/some.js.map +1 -1
- package/dist/esm/resolvers.js +88 -0
- package/dist/esm/resolvers.js.map +1 -0
- package/dist/esm/serialize.js +43 -0
- package/dist/esm/serialize.js.map +1 -0
- package/dist/format.d.ts +10 -0
- package/dist/format.d.ts.map +1 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/inspector.d.ts.map +1 -1
- package/dist/interaction.d.ts +38 -10
- package/dist/interaction.d.ts.map +1 -1
- package/dist/match.d.ts +5 -5
- package/dist/match.d.ts.map +1 -1
- package/dist/matcher.d.ts +2 -0
- package/dist/matcher.d.ts.map +1 -1
- package/dist/matchers/and.d.ts.map +1 -1
- package/dist/matchers/every.d.ts.map +1 -1
- package/dist/matchers/including.d.ts.map +1 -1
- package/dist/matchers/matching.d.ts.map +1 -1
- package/dist/matchers/not.d.ts.map +1 -1
- package/dist/matchers/or.d.ts.map +1 -1
- package/dist/matchers/some.d.ts.map +1 -1
- package/dist/resolvers.d.ts +9 -0
- package/dist/resolvers.d.ts.map +1 -0
- package/dist/serialize.d.ts +13 -0
- package/dist/serialize.d.ts.map +1 -0
- package/dist/specification.d.ts +19 -17
- package/dist/specification.d.ts.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +3 -2
- package/src/constructor.ts +63 -138
- package/src/converge.ts +3 -6
- package/src/format.ts +58 -0
- package/src/index.ts +4 -2
- package/src/inspector.ts +2 -1
- package/src/interaction.ts +85 -36
- package/src/match.ts +23 -15
- package/src/matcher.ts +11 -0
- package/src/matchers/and.ts +4 -1
- package/src/matchers/every.ts +4 -1
- package/src/matchers/including.ts +4 -1
- package/src/matchers/matching.ts +4 -1
- package/src/matchers/not.ts +4 -1
- package/src/matchers/or.ts +4 -1
- package/src/matchers/some.ts +4 -1
- package/src/resolvers.ts +100 -0
- package/src/serialize.ts +54 -0
- package/src/specification.ts +21 -19
- package/CHANGELOG.md +0 -27
- package/dist/cjs/format-table.js +0 -30
- package/dist/cjs/format-table.js.map +0 -1
- package/dist/esm/format-table.js.map +0 -1
- package/dist/format-table.d.ts +0 -6
- package/dist/format-table.d.ts.map +0 -1
- package/src/format-table.ts +0 -34
package/dist/cjs/constructor.js
CHANGED
|
@@ -1,102 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.createConstructor = exports.instantiateInteractor =
|
|
5
|
-
const globals_1 = require("@interactors/globals");
|
|
4
|
+
exports.createConstructor = exports.instantiateInteractor = void 0;
|
|
6
5
|
const converge_1 = require("./converge");
|
|
7
6
|
const filter_set_1 = require("./filter-set");
|
|
8
7
|
const locator_1 = require("./locator");
|
|
9
8
|
const match_1 = require("./match");
|
|
10
|
-
const
|
|
9
|
+
const format_1 = require("./format");
|
|
11
10
|
const errors_1 = require("./errors");
|
|
12
11
|
const interaction_1 = require("./interaction");
|
|
13
|
-
const match_2 = require("./match");
|
|
14
|
-
const errors_2 = require("./errors");
|
|
15
12
|
const matcher_1 = require("./matcher");
|
|
16
13
|
const matching_1 = require("./matchers/matching");
|
|
14
|
+
const resolvers_1 = require("./resolvers");
|
|
17
15
|
const defaultLocator = (element) => element.textContent || "";
|
|
18
|
-
const defaultSelector = 'div';
|
|
19
|
-
function findElements(parentElement, interactor) {
|
|
20
|
-
if (typeof (interactor.specification.selector) === 'function') {
|
|
21
|
-
return interactor.specification.selector(parentElement);
|
|
22
|
-
}
|
|
23
|
-
else if (interactor.specification.selector === ':root') {
|
|
24
|
-
// this is a bit of a hack, because otherwise there isn't a good way of selecting the root element
|
|
25
|
-
return [parentElement.ownerDocument.querySelector(':root')];
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
return Array.from(parentElement.querySelectorAll(interactor.specification.selector || defaultSelector));
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
exports.findElements = findElements;
|
|
32
|
-
function findMatches(parentElement, interactor) {
|
|
33
|
-
if (!interactor.name) {
|
|
34
|
-
throw new Error('One of your interactors was created without a name. Please provide a label for your interactor:\n\tHTML.extend(\'my interactor\') || createInteractor(\'my interactor\')');
|
|
35
|
-
}
|
|
36
|
-
return findElements(parentElement, interactor).map((e) => new match_2.Match(e, interactor.filter, interactor.locator));
|
|
37
|
-
}
|
|
38
|
-
function findMatchesMatching(parentElement, interactor) {
|
|
39
|
-
return findMatches(parentElement, interactor).filter((m) => m.matches);
|
|
40
|
-
}
|
|
41
|
-
function findMatchesNonEmpty(parentElement, interactor) {
|
|
42
|
-
let matches = findMatches(parentElement, interactor);
|
|
43
|
-
let matching = matches.filter((m) => m.matches);
|
|
44
|
-
if (matching.length > 0) {
|
|
45
|
-
return matching;
|
|
46
|
-
}
|
|
47
|
-
else if (matches.length === 0) {
|
|
48
|
-
throw new errors_2.NoSuchElementError(`did not find ${description(interactor)}`);
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
let table = format_table_1.formatTable({
|
|
52
|
-
headers: interactor.locator ? [interactor.name, ...interactor.filter.asTableHeader()] : interactor.filter.asTableHeader(),
|
|
53
|
-
rows: matches.slice().sort((a, b) => b.sortWeight - a.sortWeight).map((m) => m.asTableRow()),
|
|
54
|
-
});
|
|
55
|
-
throw new errors_2.NoSuchElementError(`did not find ${description(interactor)}, did you mean one of:\n\n${table}`);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
// Given a parent element, and an interactor, find exactly one matching element
|
|
59
|
-
// and return it. If no elements match, raise an error. If more than one
|
|
60
|
-
// element matches, raise an error.
|
|
61
|
-
function resolveUnique(parentElement, interactor) {
|
|
62
|
-
let matching = findMatchesNonEmpty(parentElement, interactor);
|
|
63
|
-
if (matching.length === 1) {
|
|
64
|
-
return matching[0].element;
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
let alternatives = matching.map((m) => '- ' + m.elementDescription());
|
|
68
|
-
throw new errors_2.AmbiguousElementError(`${description(interactor)} matches multiple elements:\n\n${alternatives.join('\n')}`);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
exports.resolveUnique = resolveUnique;
|
|
72
|
-
// Given a parent element, and an interactor, find all matching elements and
|
|
73
|
-
// return them. If no elements match, raise an error.
|
|
74
|
-
function resolveNonEmpty(parentElement, interactor) {
|
|
75
|
-
return findMatchesNonEmpty(parentElement, interactor).map(m => m.element);
|
|
76
|
-
}
|
|
77
|
-
exports.resolveNonEmpty = resolveNonEmpty;
|
|
78
|
-
// Given a parent element, and an interactor, check if there are any matching
|
|
79
|
-
// elements, and throw an error if there are. Otherwise return undefined.
|
|
80
|
-
function resolveEmpty(parentElement, interactor) {
|
|
81
|
-
let matching = findMatchesMatching(parentElement, interactor);
|
|
82
|
-
if (matching.length !== 0) {
|
|
83
|
-
let alternatives = matching.map((m) => '- ' + m.elementDescription());
|
|
84
|
-
throw new errors_2.NotAbsentError(`${description(interactor)} exists but should not:\n\n${alternatives.join('\n')}`);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
exports.resolveEmpty = resolveEmpty;
|
|
88
|
-
function ownDescription(options) {
|
|
89
|
-
if (options.locator) {
|
|
90
|
-
return `${options.name} ${options.locator.description} ${options.filter.description}`.trim();
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
return `${options.name} ${options.filter.description}`.trim();
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
function description(options) {
|
|
97
|
-
let ancestorsAndSelf = options.ancestors.concat(options);
|
|
98
|
-
return ancestorsAndSelf.reverse().map(ownDescription).join(' within ');
|
|
99
|
-
}
|
|
100
16
|
/**
|
|
101
17
|
* Removes any default values for a filter from the lookup if that filter is present in the
|
|
102
18
|
* assertion. Otherwise, it is not possible to make an assertion on a filter that might conflict
|
|
@@ -115,28 +31,26 @@ function getLookupFilterForAssertion(filter, filters) {
|
|
|
115
31
|
}
|
|
116
32
|
return lookupFilter;
|
|
117
33
|
}
|
|
118
|
-
function unsafeSyncResolveParent(options) {
|
|
119
|
-
return options.ancestors.reduce(resolveUnique, globals_1.globals.document.documentElement);
|
|
120
|
-
}
|
|
121
|
-
exports.unsafeSyncResolveParent = unsafeSyncResolveParent;
|
|
122
|
-
function unsafeSyncResolveUnique(options) {
|
|
123
|
-
return resolveUnique(unsafeSyncResolveParent(options), options);
|
|
124
|
-
}
|
|
125
|
-
exports.unsafeSyncResolveUnique = unsafeSyncResolveUnique;
|
|
126
34
|
function instantiateInteractor(options, resolver) {
|
|
127
35
|
let interactor = {
|
|
128
36
|
options,
|
|
129
37
|
get description() {
|
|
130
|
-
return
|
|
38
|
+
return format_1.formatDescription(options);
|
|
131
39
|
},
|
|
132
40
|
perform(fn) {
|
|
133
|
-
return interaction_1.
|
|
41
|
+
return interaction_1.createInteraction('action', {
|
|
42
|
+
name: "perform",
|
|
43
|
+
interactor,
|
|
44
|
+
description: `run perform on ${format_1.formatDescription(options)}`,
|
|
45
|
+
run: (interactor) => converge_1.converge(() => fn(resolver(interactor.options))),
|
|
46
|
+
});
|
|
134
47
|
},
|
|
135
48
|
assert(fn) {
|
|
136
|
-
return interaction_1.
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
}
|
|
49
|
+
return interaction_1.createInteraction('assertion', {
|
|
50
|
+
name: "assert",
|
|
51
|
+
interactor,
|
|
52
|
+
description: `${format_1.formatDescription(options)} asserts`,
|
|
53
|
+
run: (interactor) => converge_1.converge(() => { fn(resolver(interactor.options)); }),
|
|
140
54
|
});
|
|
141
55
|
},
|
|
142
56
|
has(filters) {
|
|
@@ -144,14 +58,18 @@ function instantiateInteractor(options, resolver) {
|
|
|
144
58
|
},
|
|
145
59
|
is(filters) {
|
|
146
60
|
let filter = new filter_set_1.FilterSet(options.specification, filters);
|
|
147
|
-
return interaction_1.
|
|
148
|
-
|
|
149
|
-
|
|
61
|
+
return interaction_1.createInteraction('assertion', {
|
|
62
|
+
name: "is",
|
|
63
|
+
interactor,
|
|
64
|
+
filters,
|
|
65
|
+
description: `${format_1.formatDescription(options)} matches filters: ${filter.description}`,
|
|
66
|
+
run: (interactor) => converge_1.converge(() => {
|
|
67
|
+
let element = resolver({ ...interactor.options, filter: getLookupFilterForAssertion(interactor.options.filter, filters) });
|
|
150
68
|
let match = new match_1.MatchFilter(element, filter);
|
|
151
69
|
if (!match.matches) {
|
|
152
|
-
throw new errors_1.FilterNotMatchingError(`${
|
|
70
|
+
throw new errors_1.FilterNotMatchingError(`${format_1.formatDescription(options)} does not match filters:\n\n${match.formatAsExpectations()}`);
|
|
153
71
|
}
|
|
154
|
-
})
|
|
72
|
+
}),
|
|
155
73
|
});
|
|
156
74
|
},
|
|
157
75
|
find(child) {
|
|
@@ -161,25 +79,27 @@ function instantiateInteractor(options, resolver) {
|
|
|
161
79
|
}, resolver);
|
|
162
80
|
},
|
|
163
81
|
exists() {
|
|
164
|
-
return interaction_1.
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
82
|
+
return interaction_1.createInteraction('assertion', {
|
|
83
|
+
name: 'exists',
|
|
84
|
+
interactor,
|
|
85
|
+
description: `${format_1.formatDescription(options)} exists`,
|
|
86
|
+
run: (interactor) => converge_1.converge(() => {
|
|
87
|
+
resolvers_1.resolveFirst(resolvers_1.unsafeSyncResolveParent(interactor.options), options);
|
|
88
|
+
}),
|
|
89
|
+
}, (element) => resolvers_1.hasMatchMatching(element, options));
|
|
171
90
|
},
|
|
172
91
|
absent() {
|
|
173
|
-
return interaction_1.
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
92
|
+
return interaction_1.createInteraction('assertion', {
|
|
93
|
+
name: 'absent',
|
|
94
|
+
interactor,
|
|
95
|
+
description: `${format_1.formatDescription(options)} does not exist`,
|
|
96
|
+
run: (interactor) => converge_1.converge(() => {
|
|
97
|
+
resolvers_1.resolveEmpty(resolvers_1.unsafeSyncResolveParent(interactor.options), options);
|
|
98
|
+
}),
|
|
99
|
+
}, (element) => !resolvers_1.hasMatchMatching(element, options));
|
|
180
100
|
},
|
|
181
101
|
apply(parentElement) {
|
|
182
|
-
let element = [...options.ancestors, options].reduce(resolveUnique, parentElement);
|
|
102
|
+
let element = [...options.ancestors, options].reduce(resolvers_1.resolveUnique, parentElement);
|
|
183
103
|
return match_1.applyFilter(options.specification.locator || defaultLocator, element);
|
|
184
104
|
}
|
|
185
105
|
};
|
|
@@ -191,7 +111,13 @@ function instantiateInteractor(options, resolver) {
|
|
|
191
111
|
if (args.length) {
|
|
192
112
|
actionDescription += ` with ` + args.map((a) => JSON.stringify(a)).join(', ');
|
|
193
113
|
}
|
|
194
|
-
return interaction_1.
|
|
114
|
+
return interaction_1.createInteraction('action', {
|
|
115
|
+
name: actionName,
|
|
116
|
+
interactor,
|
|
117
|
+
args,
|
|
118
|
+
description: `${actionDescription} on ${format_1.formatDescription(options)}`,
|
|
119
|
+
run: (interactor) => action(interactor, ...args)
|
|
120
|
+
});
|
|
195
121
|
},
|
|
196
122
|
configurable: true,
|
|
197
123
|
writable: true,
|
|
@@ -203,10 +129,13 @@ function instantiateInteractor(options, resolver) {
|
|
|
203
129
|
if (!interactor.hasOwnProperty(filterName)) {
|
|
204
130
|
Object.defineProperty(interactor, filterName, {
|
|
205
131
|
value: function () {
|
|
206
|
-
return interaction_1.
|
|
207
|
-
|
|
132
|
+
return interaction_1.createInteraction('assertion', {
|
|
133
|
+
name: filterName,
|
|
134
|
+
interactor,
|
|
135
|
+
description: `${filterName} of ${format_1.formatDescription(options)}`,
|
|
136
|
+
run: (interactor) => converge_1.converge(() => match_1.applyFilter(filter, resolver(interactor.options))),
|
|
208
137
|
}, (parentElement) => {
|
|
209
|
-
let element = [...options.ancestors, options].reduce(resolveUnique, parentElement);
|
|
138
|
+
let element = [...options.ancestors, options].reduce(resolvers_1.resolveUnique, parentElement);
|
|
210
139
|
return match_1.applyFilter(filter, element);
|
|
211
140
|
});
|
|
212
141
|
},
|
|
@@ -230,7 +159,7 @@ function createConstructor(name, specification) {
|
|
|
230
159
|
else {
|
|
231
160
|
filter = new filter_set_1.FilterSet(specification, args[0] || {});
|
|
232
161
|
}
|
|
233
|
-
return instantiateInteractor({ name, specification, filter, locator, ancestors: [] }, unsafeSyncResolveUnique);
|
|
162
|
+
return instantiateInteractor({ name, specification, filter, locator, ancestors: [] }, resolvers_1.unsafeSyncResolveUnique);
|
|
234
163
|
}
|
|
235
164
|
return Object.assign(initInteractor, {
|
|
236
165
|
selector: (value) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constructor.js","sourceRoot":"","sources":["../../src/constructor.ts"],"names":[],"mappings":";AAAA,uDAAuD;;;AAEvD,
|
|
1
|
+
{"version":3,"file":"constructor.js","sourceRoot":"","sources":["../../src/constructor.ts"],"names":[],"mappings":";AAAA,uDAAuD;;;AAEvD,yCAAsC;AAetC,6CAAyC;AACzC,uCAAoC;AACpC,mCAAmD;AACnD,qCAA6C;AAC7C,qCAAkD;AAClD,+CAA2F;AAC3F,uCAAsC;AACtC,kDAA+C;AAC/C,2CAA4I;AAE5I,MAAM,cAAc,GAAsC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;AAEjG;;;;EAIE;AACF,SAAS,2BAA2B,CAA0C,MAAuB,EAAE,OAA2B;IAChI,IAAI,YAAY,GAAG,IAAI,sBAAS,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1F,IAAI,WAAW,GAAG,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC;IACrD,KAAK,IAAI,GAAG,IAAI,WAAW,EAAE;QAC3B,IAAI,OAAO,WAAW,CAAC,GAAG,CAAC,KAAK,UAAU;eACvC,SAAS,IAAI,WAAW,CAAC,GAAG,CAAC;eAC7B,GAAG,IAAI,OAAO;eACd,CAAC,CAAC,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE;YACjC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;SAC1C;KACF;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAgB,qBAAqB,CACnC,OAAmC,EACnC,QAAoD;IAEpD,IAAI,UAAU,GAAG;QACf,OAAO;QAEP,IAAI,WAAW;YACb,OAAO,0BAAiB,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;QAED,OAAO,CAAI,EAAqB;YAC9B,OAAO,+BAAiB,CAAC,QAAQ,EAAE;gBACjC,IAAI,EAAE,SAAS;gBACf,UAAU;gBACV,WAAW,EAAE,kBAAkB,0BAAiB,CAAC,OAAO,CAAC,EAAE;gBAC3D,GAAG,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,mBAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;aACtE,CAAC,CAAC;QACL,CAAC;QAED,MAAM,CAAC,EAAwB;YAC7B,OAAO,+BAAiB,CAAC,WAAW,EAAE;gBACpC,IAAI,EAAE,QAAQ;gBACd,UAAU;gBACV,WAAW,EAAE,GAAG,0BAAiB,CAAC,OAAO,CAAC,UAAU;gBACpD,GAAG,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,mBAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAA,CAAC,CAAC,CAAC;aAC1E,CAAC,CAAC;QACL,CAAC;QAED,GAAG,CAAC,OAA2B;YAC7B,OAAO,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;QAED,EAAE,CAAC,OAA2B;YAC5B,IAAI,MAAM,GAAG,IAAI,sBAAS,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YAC3D,OAAO,+BAAiB,CAAC,WAAW,EAAE;gBACpC,IAAI,EAAE,IAAI;gBACV,UAAU;gBACV,OAAO;gBACP,WAAW,EAAE,GAAG,0BAAiB,CAAC,OAAO,CAAC,qBAAqB,MAAM,CAAC,WAAW,EAAE;gBACnF,GAAG,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,mBAAQ,CAAC,GAAG,EAAE;oBACjC,IAAI,OAAO,GAAG,QAAQ,CAAC,EAAC,GAAG,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,2BAA2B,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;oBAC1H,IAAI,KAAK,GAAG,IAAI,mBAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC7C,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;wBAClB,MAAM,IAAI,+BAAsB,CAAC,GAAG,0BAAiB,CAAC,OAAO,CAAC,+BAA+B,KAAK,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;qBAC9H;gBACH,CAAC,CAAC;aACH,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAiC,KAAQ;YAC3C,OAAO,qBAAqB,CAAC;gBAC3B,GAAG,KAAK,CAAC,OAAO;gBAChB,SAAS,EAAE,CAAC,GAAG,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;aACvE,EAAE,QAAQ,CAAiB,CAAC;QAC/B,CAAC;QAED,MAAM;YACJ,OAAO,+BAAiB,CAAC,WAAW,EAAE;gBACpC,IAAI,EAAE,QAAQ;gBACd,UAAU;gBACV,WAAW,EAAE,GAAG,0BAAiB,CAAC,OAAO,CAAC,SAAS;gBACnD,GAAG,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,mBAAQ,CAAC,GAAG,EAAE;oBACjC,wBAAY,CAAC,mCAAuB,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;gBACrE,CAAC,CAAC;aACH,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,4BAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QACtD,CAAC;QAED,MAAM;YACJ,OAAO,+BAAiB,CAAC,WAAW,EAAE;gBACpC,IAAI,EAAE,QAAQ;gBACd,UAAU;gBACV,WAAW,EAAE,GAAG,0BAAiB,CAAC,OAAO,CAAC,iBAAiB;gBAC3D,GAAG,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,mBAAQ,CAAC,GAAG,EAAE;oBACjC,wBAAY,CAAC,mCAAuB,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;gBACrE,CAAC,CAAC;aACH,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,4BAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QACvD,CAAC;QAED,KAAK,CAAC,aAAsB;YAC1B,IAAI,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,yBAAa,EAAE,aAAa,CAAC,CAAC;YACnF,OAAO,mBAAW,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,cAAc,EAAE,OAAO,CAAC,CAAC;QAC/E,CAAC;KACF,CAAC;IAEF,KAAK,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE;QACpF,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE;YAC1C,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,UAAU,EAAE;gBAC5C,KAAK,EAAE,UAAS,GAAG,IAAe;oBAChC,IAAI,iBAAiB,GAAG,UAAU,CAAC;oBACnC,IAAI,IAAI,CAAC,MAAM,EAAE;wBACf,iBAAiB,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBAC/E;oBACD,OAAO,+BAAiB,CAAC,QAAQ,EAAE;wBACjC,IAAI,EAAE,UAAU;wBAChB,UAAU;wBACV,IAAI;wBACJ,WAAW,EAAE,GAAG,iBAAiB,OAAO,0BAAiB,CAAC,OAAO,CAAC,EAAE;wBACpE,GAAG,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,MAAM,CAAC,UAA8H,EAAE,GAAG,IAAI,CAAC;qBACrK,CAAC,CAAC;gBACL,CAAC;gBACD,YAAY,EAAE,IAAI;gBAClB,QAAQ,EAAE,IAAI;gBACd,UAAU,EAAE,KAAK;aAClB,CAAC,CAAC;SACJ;KACF;IAED,KAAK,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE;QACpF,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE;YAC1C,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,UAAU,EAAE;gBAC5C,KAAK,EAAE;oBACL,OAAO,+BAAiB,CAAC,WAAW,EAAE;wBACpC,IAAI,EAAE,UAAU;wBAChB,UAAU;wBACV,WAAW,EAAE,GAAG,UAAU,OAAO,0BAAiB,CAAC,OAAO,CAAC,EAAE;wBAC7D,GAAG,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,mBAAQ,CAAC,GAAG,EAAE,CAAC,mBAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;qBACvF,EAAE,CAAC,aAAa,EAAE,EAAE;wBACnB,IAAI,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,yBAAa,EAAE,aAAa,CAAC,CAAC;wBACnF,OAAO,mBAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;oBACtC,CAAC,CAAC,CAAC;gBACL,CAAC;gBACD,YAAY,EAAE,IAAI;gBAClB,QAAQ,EAAE,IAAI;gBACd,UAAU,EAAE,KAAK;aAClB,CAAC,CAAC;SACJ;KACF;IAED,OAAO,UAA8H,CAAC;AACxI,CAAC;AAlID,sDAkIC;AAED,SAAgB,iBAAiB,CAC/B,IAAY,EACZ,aAAmD;IAEnD,SAAS,cAAc,CAAC,GAAG,IAAW;QACpC,IAAI,OAAO,EAAE,MAAM,CAAC;QACpB,IAAI,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,YAAY,MAAM,CAAC,CAAC,CAAC,mBAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC1E,IAAI,OAAM,CAAC,YAAY,CAAC,KAAK,QAAQ,IAAI,mBAAS,CAAC,YAAY,CAAC,EAAE;YAChE,OAAO,GAAG,IAAI,iBAAO,CAAC,aAAa,CAAC,OAAO,IAAI,cAAc,EAAE,YAAY,CAAC,CAAC;YAC7E,MAAM,GAAG,IAAI,sBAAS,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;SACtD;aAAM;YACL,MAAM,GAAG,IAAI,sBAAS,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;SACtD;QACD,OAAO,qBAAqB,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,mCAAuB,CAAC,CAAC;IACjH,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE;QACnC,QAAQ,EAAE,CAAC,KAAa,EAAwC,EAAE;YAChE,OAAO,iBAAiB,CAAC,IAAI,EAAE,EAAE,GAAG,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,OAAO,EAAE,CAAC,KAAkC,EAAwC,EAAE;YACpF,OAAO,iBAAiB,CAAC,IAAI,EAAE,EAAE,GAAG,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACvE,CAAC;QACD,OAAO,EAAE,CAAwB,OAAW,EAA+G,EAAE;YAC3J,OAAO,iBAAiB,CAAC,IAAI,EAAE,EAAE,GAAG,aAAa,EAAE,OAAO,EAAE,EAAE,GAAG,aAAa,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,EAAE,CAAC,CAAC;QAC1G,CAAC;QACD,OAAO,EAAE,CAAkE,OAAW,EAA+E,EAAE;YACrK,OAAO,iBAAiB,CAAC,IAAI,EAAE,EAAE,GAAG,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QACnH,CAAC;QACD,MAAM,EAAE,CAAyB,OAAe,EAAyC,EAAE;YACzF,OAAO,iBAAiB,CAAC,OAAO,EAAE,aAAa,CAAqD,CAAC;QACvG,CAAC;KACF,CAAoD,CAAC;AACxD,CAAC;AAjCD,8CAiCC"}
|
package/dist/cjs/converge.js
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.converge = void 0;
|
|
4
|
+
const core_1 = require("@effection/core");
|
|
4
5
|
const performance_api_1 = require("performance-api");
|
|
5
6
|
const globals_1 = require("@interactors/globals");
|
|
6
|
-
function
|
|
7
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
8
|
-
}
|
|
9
|
-
async function converge(fn) {
|
|
7
|
+
function* converge(fn) {
|
|
10
8
|
let startTime = performance_api_1.performance.now();
|
|
11
9
|
while (true) {
|
|
12
10
|
try {
|
|
@@ -18,7 +16,7 @@ async function converge(fn) {
|
|
|
18
16
|
throw e;
|
|
19
17
|
}
|
|
20
18
|
else {
|
|
21
|
-
|
|
19
|
+
yield core_1.sleep(1);
|
|
22
20
|
}
|
|
23
21
|
}
|
|
24
22
|
}
|
package/dist/cjs/converge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"converge.js","sourceRoot":"","sources":["../../src/converge.ts"],"names":[],"mappings":";;;AAAA,qDAA8C;AAC9C,kDAA8C;AAE9C,
|
|
1
|
+
{"version":3,"file":"converge.js","sourceRoot":"","sources":["../../src/converge.ts"],"names":[],"mappings":";;;AAAA,0CAAmD;AACnD,qDAA8C;AAC9C,kDAA8C;AAE9C,QAAe,CAAC,CAAC,QAAQ,CAAI,EAAW;IACtC,IAAI,SAAS,GAAG,6BAAW,CAAC,GAAG,EAAE,CAAC;IAClC,OAAM,IAAI,EAAE;QACV,IAAI;YACF,OAAO,EAAE,EAAE,CAAC;SACb;QAAC,OAAM,CAAC,EAAE;YACT,IAAI,IAAI,GAAG,6BAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YACzC,IAAG,IAAI,GAAG,iBAAO,CAAC,iBAAiB,EAAE;gBACnC,MAAM,CAAC,CAAC;aACT;iBAAM;gBACL,MAAM,YAAK,CAAC,CAAC,CAAC,CAAC;aAChB;SACF;KACF;AACH,CAAC;AAdD,4BAcC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.formatMatchesTable = exports.formatDescription = exports.formatTable = void 0;
|
|
4
|
+
const MAX_COLUMN_WIDTH = 40;
|
|
5
|
+
function formatValue(value, width) {
|
|
6
|
+
if (value.length > width) {
|
|
7
|
+
return value.slice(0, width - 1) + '…';
|
|
8
|
+
}
|
|
9
|
+
else {
|
|
10
|
+
return value.padEnd(width);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
function formatTable(options) {
|
|
14
|
+
let columnWidths = options.headers.map((h, index) => {
|
|
15
|
+
return Math.min(MAX_COLUMN_WIDTH, Math.max(h.length, ...options.rows.map((r) => r[index].length)));
|
|
16
|
+
});
|
|
17
|
+
let formatRow = (cells) => {
|
|
18
|
+
return '┃ ' + cells.map((c, index) => formatValue(c, columnWidths[index])).join(' ┃ ') + ' ┃';
|
|
19
|
+
};
|
|
20
|
+
let spacerRow = () => {
|
|
21
|
+
return '┣━' + columnWidths.map((w) => "━".repeat(w)).join('━╋━') + '━┫';
|
|
22
|
+
};
|
|
23
|
+
return [
|
|
24
|
+
formatRow(options.headers),
|
|
25
|
+
spacerRow(),
|
|
26
|
+
...options.rows.map((row) => formatRow(row))
|
|
27
|
+
].join('\n');
|
|
28
|
+
}
|
|
29
|
+
exports.formatTable = formatTable;
|
|
30
|
+
function ownDescription(options) {
|
|
31
|
+
if (options.locator) {
|
|
32
|
+
return `${options.name} ${options.locator.description} ${options.filter.description}`.trim();
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
return `${options.name} ${options.filter.description}`.trim();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function formatDescription(options) {
|
|
39
|
+
let ancestorsAndSelf = options.ancestors.concat(options);
|
|
40
|
+
return ancestorsAndSelf.reverse().map(ownDescription).join(' within ');
|
|
41
|
+
}
|
|
42
|
+
exports.formatDescription = formatDescription;
|
|
43
|
+
function formatMatchesTable(interactor, matches) {
|
|
44
|
+
return formatTable({
|
|
45
|
+
headers: interactor.locator ? [interactor.name, ...interactor.filter.asTableHeader()] : interactor.filter.asTableHeader(),
|
|
46
|
+
rows: matches.slice().sort((a, b) => b.sortWeight - a.sortWeight).map((m) => m.asTableRow()),
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
exports.formatMatchesTable = formatMatchesTable;
|
|
50
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/format.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AACA,6CAAoG;AAArC,4GAAA,aAAa,OAAA;AAC5E,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA;AACzB,yCAA6C;AAApC,4GAAA,eAAe,OAAA;AACxB,yDAA+C;AAAtC,+GAAA,SAAS,OAAA;AAGlB,kDAAiD;AAAxC,sGAAA,SAAS,OAAA;AAClB,gDAA+C;AAAtC,oGAAA,QAAQ,OAAA;AACjB,sCAAqC;AAA5B,0FAAA,GAAG,OAAA;AACZ,oCAAmC;AAA1B,wFAAA,EAAE,OAAA;AACX,sCAAqC;AAA5B,0FAAA,GAAG,OAAA;AACZ,wCAAuC;AAA9B,4FAAA,IAAI,OAAA;AACb,0CAAyC;AAAhC,8FAAA,KAAK,OAAA;AAEd,yCAAwC;AAA/B,8FAAA,KAAK,OAAA"}
|
package/dist/cjs/inspector.js
CHANGED
|
@@ -3,12 +3,13 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.createInspector = void 0;
|
|
5
5
|
const constructor_1 = require("./constructor");
|
|
6
|
+
const resolvers_1 = require("./resolvers");
|
|
6
7
|
function createInspector(constructor, parentElement) {
|
|
7
8
|
// NOTE: Wait for https://github.com/thefrontside/bigtest/pull/895 to use specification instead
|
|
8
9
|
let options = constructor().options;
|
|
9
10
|
return {
|
|
10
11
|
all() {
|
|
11
|
-
let elements =
|
|
12
|
+
let elements = resolvers_1.findElements(parentElement !== null && parentElement !== void 0 ? parentElement : resolvers_1.unsafeSyncResolveParent(options), options);
|
|
12
13
|
return elements.map(element => (Object.assign(constructor_1.instantiateInteractor(options, () => element), {
|
|
13
14
|
element,
|
|
14
15
|
find(constructor) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspector.js","sourceRoot":"","sources":["../../src/inspector.ts"],"names":[],"mappings":";AAAA,uDAAuD;;;AAEvD,+
|
|
1
|
+
{"version":3,"file":"inspector.js","sourceRoot":"","sources":["../../src/inspector.ts"],"names":[],"mappings":";AAAA,uDAAuD;;;AAEvD,+CAAsD;AACtD,2CAAmE;AAmBnE,SAAgB,eAAe,CAC7B,WAAe,EACf,aAAuB;IAEvB,+FAA+F;IAC/F,IAAI,OAAO,GAAG,WAAW,EAAE,CAAC,OAAoC,CAAA;IAChE,OAAO;QACL,GAAG;YACD,IAAI,QAAQ,GAAG,wBAAY,CAAiB,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,mCAAuB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;YACxG,OAAO,QAAQ,CAAC,GAAG,CACjB,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CACvB,mCAAqB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAA2E,EAAE;gBACzH,OAAO;gBACP,IAAI,CAAsD,WAAc;oBACtE,OAAO,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;gBAC9C,CAAC;aACF,CAAC,CAAC,CACJ,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AApBD,0CAoBC"}
|
package/dist/cjs/interaction.js
CHANGED
|
@@ -1,53 +1,61 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.createInteraction = exports.isInteraction = void 0;
|
|
4
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
5
|
+
const core_1 = require("@effection/core");
|
|
4
6
|
const globals_1 = require("@interactors/globals");
|
|
5
|
-
const
|
|
7
|
+
const serialize_1 = require("./serialize");
|
|
8
|
+
const interactionSymbol = core_1.Symbol.for('interaction');
|
|
6
9
|
function isInteraction(x) {
|
|
7
10
|
return typeof x === 'object' && x != null && interactionSymbol in x;
|
|
8
11
|
}
|
|
9
12
|
exports.isInteraction = isInteraction;
|
|
10
|
-
function createInteraction(
|
|
11
|
-
let
|
|
12
|
-
|
|
13
|
-
|
|
13
|
+
function createInteraction(type, options, apply) {
|
|
14
|
+
let task;
|
|
15
|
+
function operation(scope) {
|
|
16
|
+
let run = () => options.run(options.interactor);
|
|
17
|
+
return (globals_1.globals.wrapInteraction
|
|
18
|
+
? globals_1.globals.wrapInteraction(() => scope.run(run), interaction)
|
|
19
|
+
: globals_1.globals.wrapAction(interaction.description, () => scope.run(run), type));
|
|
20
|
+
}
|
|
21
|
+
;
|
|
22
|
+
function action() {
|
|
23
|
+
if (!task) {
|
|
24
|
+
task = core_1.run(operation);
|
|
25
|
+
}
|
|
26
|
+
return task;
|
|
27
|
+
}
|
|
28
|
+
;
|
|
29
|
+
let serializedOptions = serialize_1.serializeInteractionOptions(type, options);
|
|
30
|
+
let interaction = {
|
|
31
|
+
type,
|
|
32
|
+
options: serializedOptions,
|
|
33
|
+
description: options.description,
|
|
34
|
+
interactor: options.interactor,
|
|
35
|
+
run: options.run,
|
|
14
36
|
action,
|
|
37
|
+
check: type === 'assertion' ? action : undefined,
|
|
38
|
+
code: () => serializedOptions.code(),
|
|
39
|
+
halt: () => action().halt(),
|
|
15
40
|
[interactionSymbol]: true,
|
|
16
|
-
[Symbol.toStringTag]: `[interaction ${description}]`,
|
|
41
|
+
[core_1.Symbol.toStringTag]: `[interaction ${options.description}]`,
|
|
42
|
+
[core_1.Symbol.operation]: operation,
|
|
17
43
|
then(onFulfill, onReject) {
|
|
18
|
-
|
|
19
|
-
promise = this.action();
|
|
20
|
-
}
|
|
21
|
-
return promise.then(onFulfill, onReject);
|
|
44
|
+
return action().then(onFulfill, onReject);
|
|
22
45
|
},
|
|
23
46
|
catch(onReject) {
|
|
24
|
-
|
|
25
|
-
promise = this.action();
|
|
26
|
-
}
|
|
27
|
-
return promise.catch(onReject);
|
|
47
|
+
return action().catch(onReject);
|
|
28
48
|
},
|
|
29
49
|
finally(handler) {
|
|
30
|
-
|
|
31
|
-
promise = this.action();
|
|
32
|
-
}
|
|
33
|
-
return promise.finally(handler);
|
|
50
|
+
return action().finally(handler);
|
|
34
51
|
}
|
|
35
52
|
};
|
|
53
|
+
if (apply) {
|
|
54
|
+
return Object.assign(interaction, { apply });
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
return interaction;
|
|
58
|
+
}
|
|
36
59
|
}
|
|
37
|
-
|
|
38
|
-
return createInteraction(description, globals_1.globals.wrapAction(description, action, 'interaction'));
|
|
39
|
-
}
|
|
40
|
-
exports.interaction = interaction;
|
|
41
|
-
function check(description, check) {
|
|
42
|
-
return { check() { return this.action(); }, ...createInteraction(description, globals_1.globals.wrapAction(description, check, 'check')) };
|
|
43
|
-
}
|
|
44
|
-
exports.check = check;
|
|
45
|
-
function interactionFilter(description, action, filter) {
|
|
46
|
-
return { apply: filter, ...interaction(description, action) };
|
|
47
|
-
}
|
|
48
|
-
exports.interactionFilter = interactionFilter;
|
|
49
|
-
function checkFilter(description, action, filter) {
|
|
50
|
-
return { apply: filter, ...check(description, action) };
|
|
51
|
-
}
|
|
52
|
-
exports.checkFilter = checkFilter;
|
|
60
|
+
exports.createInteraction = createInteraction;
|
|
53
61
|
//# sourceMappingURL=interaction.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interaction.js","sourceRoot":"","sources":["../../src/interaction.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"interaction.js","sourceRoot":"","sources":["../../src/interaction.ts"],"names":[],"mappings":";;;AAAA,uDAAuD;AACvD,0CAA+D;AAC/D,kDAAoH;AAEpH,2CAA0D;AAE1D,MAAM,iBAAiB,GAAkB,aAAM,CAAC,GAAG,CAAC,aAAa,CAAQ,CAAC;AAE1E,SAAgB,aAAa,CAAC,CAAU;IACtC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,IAAI,IAAI,IAAI,iBAAiB,IAAI,CAAC,CAAA;AACrE,CAAC;AAFD,sCAEC;AAyED,SAAgB,iBAAiB,CAA0B,IAAqB,EAAE,OAAiC,EAAE,KAA4B;IAC/I,IAAI,IAAa,CAAC;IAElB,SAAS,SAAS,CAAC,KAAW;QAC5B,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAEhD,OAAO,CAAC,iBAAO,CAAC,eAAe;YAC7B,CAAC,CAAC,iBAAO,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC;YAC5D,CAAC,CAAC,iBAAO,CAAC,UAAU,CAAC,WAAW,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAiB,CAAC;IAC/F,CAAC;IAAA,CAAC;IAEF,SAAS,MAAM;QACb,IAAG,CAAC,IAAI,EAAE;YACR,IAAI,GAAG,UAAG,CAAC,SAAS,CAAC,CAAC;SACvB;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAA,CAAC;IAEF,IAAI,iBAAiB,GAAG,uCAA2B,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAClE,IAAI,WAAW,GAAqC;QAClD,IAAI;QACJ,OAAO,EAAE,iBAAiB;QAC1B,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,MAAM;QACN,KAAK,EAAE,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;QAChD,IAAI,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE;QACpC,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;QAC3B,CAAC,iBAAiB,CAAC,EAAE,IAAI;QACzB,CAAC,aAAM,CAAC,WAAW,CAAC,EAAE,gBAAgB,OAAO,CAAC,WAAW,GAAG;QAC5D,CAAC,aAAM,CAAC,SAAS,CAAC,EAAE,SAAS;QAC7B,IAAI,CAAC,SAAS,EAAE,QAAQ;YACtB,OAAO,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC5C,CAAC;QACD,KAAK,CAAC,QAAQ;YACZ,OAAO,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,CAAC,OAAO;YACb,OAAO,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC;KACF,CAAA;IACD,IAAI,KAAK,EAAE;QACT,OAAO,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;KAC9C;SAAM;QACL,OAAO,WAAW,CAAC;KACpB;AACH,CAAC;AA/CD,8CA+CC"}
|
package/dist/cjs/match.js
CHANGED
|
@@ -11,7 +11,9 @@ class Match {
|
|
|
11
11
|
this.locator = locator;
|
|
12
12
|
this.matchLocator = locator && new MatchLocator(element, locator);
|
|
13
13
|
this.matchFilter = new MatchFilter(element, filterSet);
|
|
14
|
-
|
|
14
|
+
}
|
|
15
|
+
get matches() {
|
|
16
|
+
return (this.matchLocator ? this.matchLocator.matches : true) && this.matchFilter.matches;
|
|
15
17
|
}
|
|
16
18
|
asTableHeader(name) {
|
|
17
19
|
if (this.matchLocator) {
|
|
@@ -48,7 +50,9 @@ class MatchLocator {
|
|
|
48
50
|
this.locator = locator;
|
|
49
51
|
this.expected = locator.value;
|
|
50
52
|
this.actual = locator.apply(element);
|
|
51
|
-
|
|
53
|
+
}
|
|
54
|
+
get matches() {
|
|
55
|
+
return matcher_1.applyMatcher(this.expected, this.actual);
|
|
52
56
|
}
|
|
53
57
|
formatActual() {
|
|
54
58
|
return JSON.stringify(this.actual);
|
|
@@ -68,7 +72,9 @@ class MatchFilter {
|
|
|
68
72
|
this.items = Object.entries(filter.all).map(([key, expected]) => {
|
|
69
73
|
return new MatchFilterItem(element, filter, key, expected);
|
|
70
74
|
});
|
|
71
|
-
|
|
75
|
+
}
|
|
76
|
+
get matches() {
|
|
77
|
+
return this.items.every((match) => match.matches);
|
|
72
78
|
}
|
|
73
79
|
asTableRow() {
|
|
74
80
|
return this.items.map((f) => f.description());
|
|
@@ -97,15 +103,19 @@ class MatchFilterItem {
|
|
|
97
103
|
this.filter = filter;
|
|
98
104
|
this.key = key;
|
|
99
105
|
this.expected = expected;
|
|
106
|
+
}
|
|
107
|
+
get matches() {
|
|
108
|
+
return matcher_1.applyMatcher(this.expected, this.actual);
|
|
109
|
+
}
|
|
110
|
+
get actual() {
|
|
100
111
|
if (this.filter.specification.filters && this.filter.specification.filters[this.key]) {
|
|
101
112
|
let definition = this.filter.specification.filters[this.key];
|
|
102
|
-
if (typeof
|
|
103
|
-
|
|
113
|
+
if (typeof definition === 'function') {
|
|
114
|
+
return definition(this.element);
|
|
104
115
|
}
|
|
105
116
|
else {
|
|
106
|
-
|
|
117
|
+
return definition.apply(this.element);
|
|
107
118
|
}
|
|
108
|
-
this.matches = matcher_1.applyMatcher(this.expected, this.actual);
|
|
109
119
|
}
|
|
110
120
|
else {
|
|
111
121
|
throw new Error(`interactor does not define a filter named ${JSON.stringify(this.key)}`);
|
package/dist/cjs/match.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"match.js","sourceRoot":"","sources":["../../src/match.ts"],"names":[],"mappings":";;;AAGA,+CAA2C;AAC3C,uCAA2E;AAE3E,MAAM,KAAK,GAAG,CAAC,KAAc,EAAU,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AAE5D,MAAa,KAAK;
|
|
1
|
+
{"version":3,"file":"match.js","sourceRoot":"","sources":["../../src/match.ts"],"names":[],"mappings":"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"}
|