@interactors/core 0.3.0 → 1.0.0-effection.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/cjs/constructor.js +66 -143
- 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 +1 -20
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/inspector.js +3 -2
- 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 +3 -10
- 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 +64 -134
- 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 +0 -4
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/inspector.js +3 -2
- 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 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/inspector.d.ts +2 -2
- 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 +49 -51
- package/dist/specification.d.ts.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/src/constructor.ts +76 -160
- package/src/converge.ts +3 -6
- package/src/format.ts +58 -0
- package/src/index.ts +4 -6
- package/src/inspector.ts +5 -4
- 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 +58 -61
- package/CHANGELOG.md +0 -14
- package/dist/cjs/dispatch.js +0 -34
- package/dist/cjs/dispatch.js.map +0 -1
- package/dist/cjs/element/fill-in.js +0 -71
- package/dist/cjs/element/fill-in.js.map +0 -1
- package/dist/cjs/focused.js +0 -47
- package/dist/cjs/focused.js.map +0 -1
- package/dist/cjs/format-table.js +0 -30
- package/dist/cjs/format-table.js.map +0 -1
- package/dist/cjs/perform.js +0 -13
- package/dist/cjs/perform.js.map +0 -1
- package/dist/dispatch.d.ts +0 -6
- package/dist/dispatch.d.ts.map +0 -1
- package/dist/element/fill-in.d.ts +0 -12
- package/dist/element/fill-in.d.ts.map +0 -1
- package/dist/esm/dispatch.js +0 -26
- package/dist/esm/dispatch.js.map +0 -1
- package/dist/esm/element/fill-in.js +0 -67
- package/dist/esm/element/fill-in.js.map +0 -1
- package/dist/esm/focused.js +0 -41
- package/dist/esm/focused.js.map +0 -1
- package/dist/esm/format-table.js.map +0 -1
- package/dist/esm/perform.js +0 -9
- package/dist/esm/perform.js.map +0 -1
- package/dist/focused.d.ts +0 -30
- package/dist/focused.d.ts.map +0 -1
- package/dist/format-table.d.ts +0 -6
- package/dist/format-table.d.ts.map +0 -1
- package/dist/perform.d.ts +0 -3
- package/dist/perform.d.ts.map +0 -1
- package/src/dispatch.ts +0 -24
- package/src/element/fill-in.ts +0 -76
- package/src/focused.ts +0 -43
- package/src/format-table.ts +0 -34
- package/src/perform.ts +0 -11
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
|
|
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
|
-
function instantiateBaseInteractor(options, resolver) {
|
|
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,18 +58,48 @@ function instantiateBaseInteractor(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
|
},
|
|
75
|
+
find(child) {
|
|
76
|
+
return instantiateInteractor({
|
|
77
|
+
...child.options,
|
|
78
|
+
ancestors: [...options.ancestors, options, ...child.options.ancestors]
|
|
79
|
+
}, resolver);
|
|
80
|
+
},
|
|
81
|
+
exists() {
|
|
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));
|
|
90
|
+
},
|
|
91
|
+
absent() {
|
|
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));
|
|
100
|
+
},
|
|
157
101
|
apply(parentElement) {
|
|
158
|
-
let element = [...options.ancestors, options].reduce(resolveUnique, parentElement);
|
|
102
|
+
let element = [...options.ancestors, options].reduce(resolvers_1.resolveUnique, parentElement);
|
|
159
103
|
return match_1.applyFilter(options.specification.locator || defaultLocator, element);
|
|
160
104
|
}
|
|
161
105
|
};
|
|
@@ -167,7 +111,13 @@ function instantiateBaseInteractor(options, resolver) {
|
|
|
167
111
|
if (args.length) {
|
|
168
112
|
actionDescription += ` with ` + args.map((a) => JSON.stringify(a)).join(', ');
|
|
169
113
|
}
|
|
170
|
-
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
|
+
});
|
|
171
121
|
},
|
|
172
122
|
configurable: true,
|
|
173
123
|
writable: true,
|
|
@@ -179,10 +129,13 @@ function instantiateBaseInteractor(options, resolver) {
|
|
|
179
129
|
if (!interactor.hasOwnProperty(filterName)) {
|
|
180
130
|
Object.defineProperty(interactor, filterName, {
|
|
181
131
|
value: function () {
|
|
182
|
-
return interaction_1.
|
|
183
|
-
|
|
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))),
|
|
184
137
|
}, (parentElement) => {
|
|
185
|
-
let element = [...options.ancestors, options].reduce(resolveUnique, parentElement);
|
|
138
|
+
let element = [...options.ancestors, options].reduce(resolvers_1.resolveUnique, parentElement);
|
|
186
139
|
return match_1.applyFilter(filter, element);
|
|
187
140
|
});
|
|
188
141
|
},
|
|
@@ -194,36 +147,6 @@ function instantiateBaseInteractor(options, resolver) {
|
|
|
194
147
|
}
|
|
195
148
|
return interactor;
|
|
196
149
|
}
|
|
197
|
-
exports.instantiateBaseInteractor = instantiateBaseInteractor;
|
|
198
|
-
function instantiateInteractor(options) {
|
|
199
|
-
let interactor = instantiateBaseInteractor(options, unsafeSyncResolveUnique);
|
|
200
|
-
return Object.assign(interactor, {
|
|
201
|
-
find(child) {
|
|
202
|
-
return instantiateInteractor({
|
|
203
|
-
...child.options,
|
|
204
|
-
ancestors: [...options.ancestors, options, ...child.options.ancestors]
|
|
205
|
-
});
|
|
206
|
-
},
|
|
207
|
-
exists() {
|
|
208
|
-
return interaction_1.checkFilter(`${description(options)} exists`, () => {
|
|
209
|
-
return converge_1.converge(() => {
|
|
210
|
-
resolveNonEmpty(unsafeSyncResolveParent(options), options);
|
|
211
|
-
});
|
|
212
|
-
}, (element) => {
|
|
213
|
-
return findMatchesMatching(element, options).length > 0;
|
|
214
|
-
});
|
|
215
|
-
},
|
|
216
|
-
absent() {
|
|
217
|
-
return interaction_1.checkFilter(`${description(options)} does not exist`, () => {
|
|
218
|
-
return converge_1.converge(() => {
|
|
219
|
-
resolveEmpty(unsafeSyncResolveParent(options), options);
|
|
220
|
-
});
|
|
221
|
-
}, (element) => {
|
|
222
|
-
return findMatchesMatching(element, options).length === 0;
|
|
223
|
-
});
|
|
224
|
-
}
|
|
225
|
-
});
|
|
226
|
-
}
|
|
227
150
|
exports.instantiateInteractor = instantiateInteractor;
|
|
228
151
|
function createConstructor(name, specification) {
|
|
229
152
|
function initInteractor(...args) {
|
|
@@ -236,7 +159,7 @@ function createConstructor(name, specification) {
|
|
|
236
159
|
else {
|
|
237
160
|
filter = new filter_set_1.FilterSet(specification, args[0] || {});
|
|
238
161
|
}
|
|
239
|
-
return instantiateInteractor({ name, specification, filter, locator, ancestors: [] });
|
|
162
|
+
return instantiateInteractor({ name, specification, filter, locator, ancestors: [] }, resolvers_1.unsafeSyncResolveUnique);
|
|
240
163
|
}
|
|
241
164
|
return Object.assign(initInteractor, {
|
|
242
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":"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"}
|
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
CHANGED
|
@@ -1,31 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
-
};
|
|
12
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
exports.click = exports.
|
|
3
|
+
exports.click = exports.every = exports.some = exports.not = exports.or = exports.and = exports.matching = exports.including = exports.isVisible = exports.createInspector = exports.createInteractor = exports.isInteraction = void 0;
|
|
14
4
|
var interaction_1 = require("./interaction");
|
|
15
5
|
Object.defineProperty(exports, "isInteraction", { enumerable: true, get: function () { return interaction_1.isInteraction; } });
|
|
16
6
|
var create_interactor_1 = require("./create-interactor");
|
|
17
7
|
Object.defineProperty(exports, "createInteractor", { enumerable: true, get: function () { return create_interactor_1.createInteractor; } });
|
|
18
8
|
var inspector_1 = require("./inspector");
|
|
19
9
|
Object.defineProperty(exports, "createInspector", { enumerable: true, get: function () { return inspector_1.createInspector; } });
|
|
20
|
-
var perform_1 = require("./perform");
|
|
21
|
-
Object.defineProperty(exports, "perform", { enumerable: true, get: function () { return perform_1.perform; } });
|
|
22
|
-
var focused_1 = require("./focused");
|
|
23
|
-
Object.defineProperty(exports, "focused", { enumerable: true, get: function () { return focused_1.focused; } });
|
|
24
|
-
Object.defineProperty(exports, "focus", { enumerable: true, get: function () { return focused_1.focus; } });
|
|
25
|
-
Object.defineProperty(exports, "blur", { enumerable: true, get: function () { return focused_1.blur; } });
|
|
26
10
|
var element_is_visible_1 = require("element-is-visible");
|
|
27
11
|
Object.defineProperty(exports, "isVisible", { enumerable: true, get: function () { return element_is_visible_1.isVisible; } });
|
|
28
|
-
__exportStar(require("./dispatch"), exports);
|
|
29
12
|
var including_1 = require("./matchers/including");
|
|
30
13
|
Object.defineProperty(exports, "including", { enumerable: true, get: function () { return including_1.including; } });
|
|
31
14
|
var matching_1 = require("./matchers/matching");
|
|
@@ -40,8 +23,6 @@ var some_1 = require("./matchers/some");
|
|
|
40
23
|
Object.defineProperty(exports, "some", { enumerable: true, get: function () { return some_1.some; } });
|
|
41
24
|
var every_1 = require("./matchers/every");
|
|
42
25
|
Object.defineProperty(exports, "every", { enumerable: true, get: function () { return every_1.every; } });
|
|
43
|
-
var fill_in_1 = require("./element/fill-in");
|
|
44
|
-
Object.defineProperty(exports, "fillIn", { enumerable: true, get: function () { return fill_in_1.fillIn; } });
|
|
45
26
|
var click_1 = require("./element/click");
|
|
46
27
|
Object.defineProperty(exports, "click", { enumerable: true, get: function () { return click_1.click; } });
|
|
47
28
|
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
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,13 +3,14 @@
|
|
|
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
|
-
return elements.map(element => (Object.assign(constructor_1.
|
|
12
|
+
let elements = resolvers_1.findElements(parentElement !== null && parentElement !== void 0 ? parentElement : resolvers_1.unsafeSyncResolveParent(options), options);
|
|
13
|
+
return elements.map(element => (Object.assign(constructor_1.instantiateInteractor(options, () => element), {
|
|
13
14
|
element,
|
|
14
15
|
find(constructor) {
|
|
15
16
|
return createInspector(constructor, element);
|
|
@@ -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(interaction, () => scope.run(run))
|
|
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,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,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"}
|