@interactors/core 1.0.0-rc1.2 → 1.0.0-rc1.4
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/CHANGELOG.md +22 -0
- package/dist/cjs/constructor.js +62 -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 +59 -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/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 +0 -6
- 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 +59 -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 +56 -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/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 +1 -1
- 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/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 +14 -11
- package/dist/specification.d.ts.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +4 -3
- package/src/constructor.ts +65 -133
- package/src/converge.ts +3 -6
- package/src/format.ts +58 -0
- package/src/index.ts +1 -1
- package/src/inspector.ts +2 -1
- package/src/interaction.ts +101 -36
- package/src/match.ts +23 -15
- package/src/resolvers.ts +100 -0
- package/src/serialize.ts +54 -0
- package/src/specification.ts +16 -13
- 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/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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"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.unsafeSyncResolveUnique = exports.unsafeSyncResolveParent = exports.resolveEmpty = exports.resolveFirst = exports.resolveUnique = exports.hasMatchMatching = exports.findElements = void 0;
|
|
5
|
+
const globals_1 = require("@interactors/globals");
|
|
6
|
+
const match_1 = require("./match");
|
|
7
|
+
const errors_1 = require("./errors");
|
|
8
|
+
const format_1 = require("./format");
|
|
9
|
+
const defaultSelector = 'div';
|
|
10
|
+
function findElements(parentElement, interactor) {
|
|
11
|
+
if (!interactor.name) {
|
|
12
|
+
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\')');
|
|
13
|
+
}
|
|
14
|
+
if (typeof interactor.specification.selector === 'function') {
|
|
15
|
+
return interactor.specification.selector(parentElement);
|
|
16
|
+
}
|
|
17
|
+
else if (interactor.specification.selector === ':root') {
|
|
18
|
+
// this is a bit of a hack, because otherwise there isn't a good way of selecting the root element
|
|
19
|
+
return [parentElement.ownerDocument.querySelector(':root')];
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
return Array.from(parentElement.querySelectorAll(interactor.specification.selector || defaultSelector));
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.findElements = findElements;
|
|
26
|
+
function findMatches(parentElement, interactor) {
|
|
27
|
+
return findElements(parentElement, interactor).map((e) => new match_1.Match(e, interactor.filter, interactor.locator));
|
|
28
|
+
}
|
|
29
|
+
function throwNoSuchElementError(matches, interactor) {
|
|
30
|
+
if (matches.length === 0) {
|
|
31
|
+
throw new errors_1.NoSuchElementError(`did not find ${format_1.formatDescription(interactor)}`);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
throw new errors_1.NoSuchElementError(`did not find ${format_1.formatDescription(interactor)}, did you mean one of:\n\n${format_1.formatMatchesTable(interactor, matches)}`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function findFirstMatch(parentElement, interactor) {
|
|
38
|
+
let matches = [];
|
|
39
|
+
for (let element of findElements(parentElement, interactor)) {
|
|
40
|
+
let match = new match_1.Match(element, interactor.filter, interactor.locator);
|
|
41
|
+
matches.push(match);
|
|
42
|
+
if (match.matches) {
|
|
43
|
+
return match;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
throwNoSuchElementError(matches, interactor);
|
|
47
|
+
}
|
|
48
|
+
function hasMatchMatching(parentElement, interactor) {
|
|
49
|
+
return findElements(parentElement, interactor).some(element => new match_1.Match(element, interactor.filter, interactor.locator).matches);
|
|
50
|
+
}
|
|
51
|
+
exports.hasMatchMatching = hasMatchMatching;
|
|
52
|
+
function findMatchesNonEmpty(parentElement, interactor) {
|
|
53
|
+
let matches = findMatches(parentElement, interactor);
|
|
54
|
+
let matching = matches.filter((m) => m.matches);
|
|
55
|
+
if (matching.length > 0) {
|
|
56
|
+
return matching;
|
|
57
|
+
}
|
|
58
|
+
throwNoSuchElementError(matches, interactor);
|
|
59
|
+
}
|
|
60
|
+
// Given a parent element, and an interactor, find exactly one matching element
|
|
61
|
+
// and return it. If no elements match, raise an error. If more than one
|
|
62
|
+
// element matches, raise an error.
|
|
63
|
+
function resolveUnique(parentElement, interactor) {
|
|
64
|
+
let matching = findMatchesNonEmpty(parentElement, interactor);
|
|
65
|
+
if (matching.length === 1) {
|
|
66
|
+
return matching[0].element;
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
let alternatives = matching.map((m) => '- ' + m.elementDescription());
|
|
70
|
+
throw new errors_1.AmbiguousElementError(`${format_1.formatDescription(interactor)} matches multiple elements:\n\n${alternatives.join('\n')}`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
exports.resolveUnique = resolveUnique;
|
|
74
|
+
// Given a parent element, and an interactor, find the first matching element and
|
|
75
|
+
// return it. If no elements match, raise an error.
|
|
76
|
+
function resolveFirst(parentElement, interactor) {
|
|
77
|
+
return findFirstMatch(parentElement, interactor).element;
|
|
78
|
+
}
|
|
79
|
+
exports.resolveFirst = resolveFirst;
|
|
80
|
+
// Given a parent element, and an interactor, check if there are any matching
|
|
81
|
+
// elements, and throw an error if there are. Otherwise return undefined.
|
|
82
|
+
function resolveEmpty(parentElement, interactor) {
|
|
83
|
+
let matching = findMatches(parentElement, interactor).filter((m) => m.matches);
|
|
84
|
+
if (matching.length !== 0) {
|
|
85
|
+
let alternatives = matching.map((m) => '- ' + m.elementDescription());
|
|
86
|
+
throw new errors_1.NotAbsentError(`${format_1.formatDescription(interactor)} exists but should not:\n\n${alternatives.join('\n')}`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
exports.resolveEmpty = resolveEmpty;
|
|
90
|
+
function unsafeSyncResolveParent(options) {
|
|
91
|
+
return options.ancestors.reduce(resolveUnique, globals_1.globals.document.documentElement);
|
|
92
|
+
}
|
|
93
|
+
exports.unsafeSyncResolveParent = unsafeSyncResolveParent;
|
|
94
|
+
function unsafeSyncResolveUnique(options) {
|
|
95
|
+
return resolveUnique(unsafeSyncResolveParent(options), options);
|
|
96
|
+
}
|
|
97
|
+
exports.unsafeSyncResolveUnique = unsafeSyncResolveUnique;
|
|
98
|
+
//# sourceMappingURL=resolvers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolvers.js","sourceRoot":"","sources":["../../src/resolvers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.serializeInteractionOptions = exports.serializeInteractorOptions = void 0;
|
|
4
|
+
const change_case_1 = require("change-case");
|
|
5
|
+
const matcher_1 = require("./matcher");
|
|
6
|
+
function serializeInteractorOptions(options) {
|
|
7
|
+
var _a;
|
|
8
|
+
let locator = matcher_1.matcherCode((_a = options.locator) === null || _a === void 0 ? void 0 : _a.value);
|
|
9
|
+
return {
|
|
10
|
+
interactor: options.name,
|
|
11
|
+
filter: options.filter.all,
|
|
12
|
+
locator,
|
|
13
|
+
code() {
|
|
14
|
+
let interactorName = change_case_1.pascalCase(options.name);
|
|
15
|
+
let filters = Object.entries(options.filter.all).map(([name, filter]) => `"${name}": ${matcher_1.matcherCode(filter)}`);
|
|
16
|
+
return `${interactorName}(${[locator, filters.length && `{ ${filters.join(", ")} }`]
|
|
17
|
+
.filter(Boolean)
|
|
18
|
+
.join(", ")})`;
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
exports.serializeInteractorOptions = serializeInteractorOptions;
|
|
23
|
+
function serializeInteractionOptions(type, { name, interactor: { options }, args, filters }) {
|
|
24
|
+
let interactor = serializeInteractorOptions(options);
|
|
25
|
+
let ancestors = options.ancestors.map((ancestor) => serializeInteractorOptions(ancestor));
|
|
26
|
+
return {
|
|
27
|
+
...interactor,
|
|
28
|
+
ancestors,
|
|
29
|
+
name,
|
|
30
|
+
type,
|
|
31
|
+
args,
|
|
32
|
+
code() {
|
|
33
|
+
let serializedArgs = "";
|
|
34
|
+
if (filters) {
|
|
35
|
+
let serializedFilters = Object.entries(filters).map(([name, filter]) => `"${name}": ${matcher_1.matcherCode(filter)}`);
|
|
36
|
+
serializedArgs = `{ ${serializedFilters.join(", ")} }`;
|
|
37
|
+
}
|
|
38
|
+
else if (args) {
|
|
39
|
+
serializedArgs = args.map((arg) => JSON.stringify(arg)).join(", ");
|
|
40
|
+
}
|
|
41
|
+
return `${[...ancestors, interactor]
|
|
42
|
+
.map(({ code }, index) => (index == 0 ? code() : `${code()})`))
|
|
43
|
+
.join(".find(")}.${name}(${serializedArgs})`;
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
exports.serializeInteractionOptions = serializeInteractionOptions;
|
|
48
|
+
//# sourceMappingURL=serialize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../src/serialize.ts"],"names":[],"mappings":";;;AAEA,6CAAyC;AAEzC,uCAAwC;AAGxC,SAAgB,0BAA0B,CAAC,OAAyC;;IAMlF,IAAI,OAAO,GAAG,qBAAW,CAAC,MAAA,OAAO,CAAC,OAAO,0CAAE,KAAK,CAAC,CAAC;IAClD,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,IAAI;QACxB,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG;QAC1B,OAAO;QACP,IAAI;YACF,IAAI,cAAc,GAAG,wBAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,MAAM,qBAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC9G,OAAO,GAAG,cAAc,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;iBACjF,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC;AAnBD,gEAmBC;AAED,SAAgB,2BAA2B,CACzC,IAAqB,EACrB,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAA4B;IAE1E,IAAI,UAAU,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACrD,IAAI,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1F,OAAO;QACL,GAAG,UAAU;QACb,SAAS;QACT,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;YACF,IAAI,cAAc,GAAG,EAAE,CAAC;YACxB,IAAI,OAAO,EAAE;gBACX,IAAI,iBAAiB,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,MAAM,qBAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC7G,cAAc,GAAG,KAAK,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;aACxD;iBAAM,IAAI,IAAI,EAAE;gBACf,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACpE;YACD,OAAO,GAAG,CAAC,GAAG,SAAS,EAAE,UAAU,CAAC;iBACjC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;iBAC9D,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,cAAc,GAAG,CAAC;QACjD,CAAC;KACF,CAAC;AACJ,CAAC;AAzBD,kEAyBC"}
|
package/dist/constructor.d.ts
CHANGED
|
@@ -1,10 +1,4 @@
|
|
|
1
1
|
import { InteractorOptions, ActionMethods, InteractorConstructor, Interactor, Filters, Actions, FilterParams, FilterMethods, InteractorSpecification } from './specification';
|
|
2
|
-
export declare function findElements<E extends Element>(parentElement: Element, interactor: InteractorOptions<any, any, any>): E[];
|
|
3
|
-
export declare function resolveUnique(parentElement: Element, interactor: InteractorOptions<any, any, any>): Element;
|
|
4
|
-
export declare function resolveNonEmpty(parentElement: Element, interactor: InteractorOptions<any, any, any>): Element[];
|
|
5
|
-
export declare function resolveEmpty(parentElement: Element, interactor: InteractorOptions<any, any, any>): void;
|
|
6
|
-
export declare function unsafeSyncResolveParent(options: InteractorOptions<any, any, any>): Element;
|
|
7
|
-
export declare function unsafeSyncResolveUnique<E extends Element>(options: InteractorOptions<E, any, any>): E;
|
|
8
2
|
export declare function instantiateInteractor<E extends Element, F extends Filters<E>, A extends Actions<E, Interactor<E, FilterParams<E, F>>>>(options: InteractorOptions<E, F, A>, resolver: (options: InteractorOptions<E, F, A>) => E): Interactor<E, FilterParams<E, F>> & FilterMethods<E, F> & ActionMethods<E, A, Interactor<E, FilterParams<E, F>>>;
|
|
9
3
|
export declare function createConstructor<E extends Element, FP extends FilterParams<any, any>, FM extends FilterMethods<any, any>, AM extends ActionMethods<any, any, any>>(name: string, specification: InteractorSpecification<E, any, any>): InteractorConstructor<E, FP, FM, AM>;
|
|
10
4
|
//# sourceMappingURL=constructor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constructor.d.ts","sourceRoot":"","sources":["../src/constructor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"constructor.d.ts","sourceRoot":"","sources":["../src/constructor.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,UAAU,EACV,OAAO,EACP,OAAO,EAEP,YAAY,EACZ,aAAa,EACb,uBAAuB,EAExB,MAAM,iBAAiB,CAAC;AAgCzB,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,OAAO,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EACpI,OAAO,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACnC,QAAQ,EAAE,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GACnD,UAAU,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAqIlH;AAED,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,SAAS,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,SAAS,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,SAAS,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACjK,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,uBAAuB,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAClD,qBAAqB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CA+BtC"}
|
package/dist/converge.d.ts
CHANGED
package/dist/converge.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"converge.d.ts","sourceRoot":"","sources":["../src/converge.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"converge.d.ts","sourceRoot":"","sources":["../src/converge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAS,MAAM,iBAAiB,CAAC;AAInD,wBAAiB,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CActD"}
|
package/dist/esm/constructor.js
CHANGED
|
@@ -1,95 +1,15 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import { globals } from '@interactors/globals';
|
|
3
2
|
import { converge } from './converge';
|
|
4
3
|
import { FilterSet } from './filter-set';
|
|
5
4
|
import { Locator } from './locator';
|
|
6
5
|
import { MatchFilter, applyFilter } from './match';
|
|
7
|
-
import {
|
|
6
|
+
import { formatDescription } from './format';
|
|
8
7
|
import { FilterNotMatchingError } from './errors';
|
|
9
|
-
import {
|
|
10
|
-
import { Match } from './match';
|
|
11
|
-
import { NoSuchElementError, NotAbsentError, AmbiguousElementError } from './errors';
|
|
8
|
+
import { createInteraction } from './interaction';
|
|
12
9
|
import { isMatcher } from './matcher';
|
|
13
10
|
import { matching } from './matchers/matching';
|
|
11
|
+
import { hasMatchMatching, resolveEmpty, resolveFirst, resolveUnique, unsafeSyncResolveParent, unsafeSyncResolveUnique } from './resolvers';
|
|
14
12
|
const defaultLocator = (element) => element.textContent || "";
|
|
15
|
-
const defaultSelector = 'div';
|
|
16
|
-
export function findElements(parentElement, interactor) {
|
|
17
|
-
if (typeof (interactor.specification.selector) === 'function') {
|
|
18
|
-
return interactor.specification.selector(parentElement);
|
|
19
|
-
}
|
|
20
|
-
else if (interactor.specification.selector === ':root') {
|
|
21
|
-
// this is a bit of a hack, because otherwise there isn't a good way of selecting the root element
|
|
22
|
-
return [parentElement.ownerDocument.querySelector(':root')];
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
return Array.from(parentElement.querySelectorAll(interactor.specification.selector || defaultSelector));
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
function findMatches(parentElement, interactor) {
|
|
29
|
-
if (!interactor.name) {
|
|
30
|
-
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\')');
|
|
31
|
-
}
|
|
32
|
-
return findElements(parentElement, interactor).map((e) => new Match(e, interactor.filter, interactor.locator));
|
|
33
|
-
}
|
|
34
|
-
function findMatchesMatching(parentElement, interactor) {
|
|
35
|
-
return findMatches(parentElement, interactor).filter((m) => m.matches);
|
|
36
|
-
}
|
|
37
|
-
function findMatchesNonEmpty(parentElement, interactor) {
|
|
38
|
-
let matches = findMatches(parentElement, interactor);
|
|
39
|
-
let matching = matches.filter((m) => m.matches);
|
|
40
|
-
if (matching.length > 0) {
|
|
41
|
-
return matching;
|
|
42
|
-
}
|
|
43
|
-
else if (matches.length === 0) {
|
|
44
|
-
throw new NoSuchElementError(`did not find ${description(interactor)}`);
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
let table = formatTable({
|
|
48
|
-
headers: interactor.locator ? [interactor.name, ...interactor.filter.asTableHeader()] : interactor.filter.asTableHeader(),
|
|
49
|
-
rows: matches.slice().sort((a, b) => b.sortWeight - a.sortWeight).map((m) => m.asTableRow()),
|
|
50
|
-
});
|
|
51
|
-
throw new NoSuchElementError(`did not find ${description(interactor)}, did you mean one of:\n\n${table}`);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
// Given a parent element, and an interactor, find exactly one matching element
|
|
55
|
-
// and return it. If no elements match, raise an error. If more than one
|
|
56
|
-
// element matches, raise an error.
|
|
57
|
-
export function resolveUnique(parentElement, interactor) {
|
|
58
|
-
let matching = findMatchesNonEmpty(parentElement, interactor);
|
|
59
|
-
if (matching.length === 1) {
|
|
60
|
-
return matching[0].element;
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
let alternatives = matching.map((m) => '- ' + m.elementDescription());
|
|
64
|
-
throw new AmbiguousElementError(`${description(interactor)} matches multiple elements:\n\n${alternatives.join('\n')}`);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
// Given a parent element, and an interactor, find all matching elements and
|
|
68
|
-
// return them. If no elements match, raise an error.
|
|
69
|
-
export function resolveNonEmpty(parentElement, interactor) {
|
|
70
|
-
return findMatchesNonEmpty(parentElement, interactor).map(m => m.element);
|
|
71
|
-
}
|
|
72
|
-
// Given a parent element, and an interactor, check if there are any matching
|
|
73
|
-
// elements, and throw an error if there are. Otherwise return undefined.
|
|
74
|
-
export function resolveEmpty(parentElement, interactor) {
|
|
75
|
-
let matching = findMatchesMatching(parentElement, interactor);
|
|
76
|
-
if (matching.length !== 0) {
|
|
77
|
-
let alternatives = matching.map((m) => '- ' + m.elementDescription());
|
|
78
|
-
throw new NotAbsentError(`${description(interactor)} exists but should not:\n\n${alternatives.join('\n')}`);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
function ownDescription(options) {
|
|
82
|
-
if (options.locator) {
|
|
83
|
-
return `${options.name} ${options.locator.description} ${options.filter.description}`.trim();
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
return `${options.name} ${options.filter.description}`.trim();
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
function description(options) {
|
|
90
|
-
let ancestorsAndSelf = options.ancestors.concat(options);
|
|
91
|
-
return ancestorsAndSelf.reverse().map(ownDescription).join(' within ');
|
|
92
|
-
}
|
|
93
13
|
/**
|
|
94
14
|
* Removes any default values for a filter from the lookup if that filter is present in the
|
|
95
15
|
* assertion. Otherwise, it is not possible to make an assertion on a filter that might conflict
|
|
@@ -108,26 +28,28 @@ function getLookupFilterForAssertion(filter, filters) {
|
|
|
108
28
|
}
|
|
109
29
|
return lookupFilter;
|
|
110
30
|
}
|
|
111
|
-
export function unsafeSyncResolveParent(options) {
|
|
112
|
-
return options.ancestors.reduce(resolveUnique, globals.document.documentElement);
|
|
113
|
-
}
|
|
114
|
-
export function unsafeSyncResolveUnique(options) {
|
|
115
|
-
return resolveUnique(unsafeSyncResolveParent(options), options);
|
|
116
|
-
}
|
|
117
31
|
export function instantiateInteractor(options, resolver) {
|
|
118
32
|
let interactor = {
|
|
119
33
|
options,
|
|
120
34
|
get description() {
|
|
121
|
-
return
|
|
35
|
+
return formatDescription(options);
|
|
122
36
|
},
|
|
123
37
|
perform(fn) {
|
|
124
|
-
return
|
|
38
|
+
return createInteraction('action', {
|
|
39
|
+
name: "perform",
|
|
40
|
+
interactor,
|
|
41
|
+
args: [],
|
|
42
|
+
description: `run perform on ${formatDescription(options)}`,
|
|
43
|
+
run: (interactor) => converge(() => fn(resolver(interactor.options))),
|
|
44
|
+
});
|
|
125
45
|
},
|
|
126
46
|
assert(fn) {
|
|
127
|
-
return
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
47
|
+
return createInteraction('assertion', {
|
|
48
|
+
name: "assert",
|
|
49
|
+
interactor,
|
|
50
|
+
args: [],
|
|
51
|
+
description: `${formatDescription(options)} asserts`,
|
|
52
|
+
run: (interactor) => converge(() => { fn(resolver(interactor.options)); }),
|
|
131
53
|
});
|
|
132
54
|
},
|
|
133
55
|
has(filters) {
|
|
@@ -135,14 +57,19 @@ export function instantiateInteractor(options, resolver) {
|
|
|
135
57
|
},
|
|
136
58
|
is(filters) {
|
|
137
59
|
let filter = new FilterSet(options.specification, filters);
|
|
138
|
-
return
|
|
139
|
-
|
|
140
|
-
|
|
60
|
+
return createInteraction('assertion', {
|
|
61
|
+
name: "is",
|
|
62
|
+
interactor,
|
|
63
|
+
args: [filters],
|
|
64
|
+
filters,
|
|
65
|
+
description: `${formatDescription(options)} matches filters: ${filter.description}`,
|
|
66
|
+
run: (interactor) => converge(() => {
|
|
67
|
+
let element = resolver({ ...interactor.options, filter: getLookupFilterForAssertion(interactor.options.filter, filters) });
|
|
141
68
|
let match = new MatchFilter(element, filter);
|
|
142
69
|
if (!match.matches) {
|
|
143
|
-
throw new FilterNotMatchingError(`${
|
|
70
|
+
throw new FilterNotMatchingError(`${formatDescription(options)} does not match filters:\n\n${match.formatAsExpectations()}`);
|
|
144
71
|
}
|
|
145
|
-
})
|
|
72
|
+
}),
|
|
146
73
|
});
|
|
147
74
|
},
|
|
148
75
|
find(child) {
|
|
@@ -152,22 +79,26 @@ export function instantiateInteractor(options, resolver) {
|
|
|
152
79
|
}, resolver);
|
|
153
80
|
},
|
|
154
81
|
exists() {
|
|
155
|
-
return
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
82
|
+
return createInteraction('assertion', {
|
|
83
|
+
name: 'exists',
|
|
84
|
+
interactor,
|
|
85
|
+
args: [],
|
|
86
|
+
description: `${formatDescription(options)} exists`,
|
|
87
|
+
run: (interactor) => converge(() => {
|
|
88
|
+
resolveFirst(unsafeSyncResolveParent(interactor.options), options);
|
|
89
|
+
}),
|
|
90
|
+
}, (element) => hasMatchMatching(element, options));
|
|
162
91
|
},
|
|
163
92
|
absent() {
|
|
164
|
-
return
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
93
|
+
return createInteraction('assertion', {
|
|
94
|
+
name: 'absent',
|
|
95
|
+
interactor,
|
|
96
|
+
args: [],
|
|
97
|
+
description: `${formatDescription(options)} does not exist`,
|
|
98
|
+
run: (interactor) => converge(() => {
|
|
99
|
+
resolveEmpty(unsafeSyncResolveParent(interactor.options), options);
|
|
100
|
+
}),
|
|
101
|
+
}, (element) => !hasMatchMatching(element, options));
|
|
171
102
|
},
|
|
172
103
|
apply(parentElement) {
|
|
173
104
|
let element = [...options.ancestors, options].reduce(resolveUnique, parentElement);
|
|
@@ -182,7 +113,13 @@ export function instantiateInteractor(options, resolver) {
|
|
|
182
113
|
if (args.length) {
|
|
183
114
|
actionDescription += ` with ` + args.map((a) => JSON.stringify(a)).join(', ');
|
|
184
115
|
}
|
|
185
|
-
return
|
|
116
|
+
return createInteraction('action', {
|
|
117
|
+
name: actionName,
|
|
118
|
+
interactor,
|
|
119
|
+
args,
|
|
120
|
+
description: `${actionDescription} on ${formatDescription(options)}`,
|
|
121
|
+
run: (interactor) => action(interactor, ...args)
|
|
122
|
+
});
|
|
186
123
|
},
|
|
187
124
|
configurable: true,
|
|
188
125
|
writable: true,
|
|
@@ -194,8 +131,12 @@ export function instantiateInteractor(options, resolver) {
|
|
|
194
131
|
if (!interactor.hasOwnProperty(filterName)) {
|
|
195
132
|
Object.defineProperty(interactor, filterName, {
|
|
196
133
|
value: function () {
|
|
197
|
-
return
|
|
198
|
-
|
|
134
|
+
return createInteraction('assertion', {
|
|
135
|
+
name: filterName,
|
|
136
|
+
interactor,
|
|
137
|
+
args: [],
|
|
138
|
+
description: `${filterName} of ${formatDescription(options)}`,
|
|
139
|
+
run: (interactor) => converge(() => applyFilter(filter, resolver(interactor.options))),
|
|
199
140
|
}, (parentElement) => {
|
|
200
141
|
let element = [...options.ancestors, options].reduce(resolveUnique, parentElement);
|
|
201
142
|
return applyFilter(filter, element);
|
|
@@ -223,6 +164,7 @@ export function createConstructor(name, specification) {
|
|
|
223
164
|
return instantiateInteractor({ name, specification, filter, locator, ancestors: [] }, unsafeSyncResolveUnique);
|
|
224
165
|
}
|
|
225
166
|
return Object.assign(initInteractor, {
|
|
167
|
+
interactorName: name,
|
|
226
168
|
selector: (value) => {
|
|
227
169
|
return createConstructor(name, { ...specification, selector: value });
|
|
228
170
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constructor.js","sourceRoot":"","sources":["../../src/constructor.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"constructor.js","sourceRoot":"","sources":["../../src/constructor.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/converge.js
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
|
+
import { sleep } from '@effection/core';
|
|
1
2
|
import { performance } from 'performance-api';
|
|
2
3
|
import { globals } from '@interactors/globals';
|
|
3
|
-
function
|
|
4
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
5
|
-
}
|
|
6
|
-
export async function converge(fn) {
|
|
4
|
+
export function* converge(fn) {
|
|
7
5
|
let startTime = performance.now();
|
|
8
6
|
while (true) {
|
|
9
7
|
try {
|
|
@@ -15,7 +13,7 @@ export async function converge(fn) {
|
|
|
15
13
|
throw e;
|
|
16
14
|
}
|
|
17
15
|
else {
|
|
18
|
-
|
|
16
|
+
yield sleep(1);
|
|
19
17
|
}
|
|
20
18
|
}
|
|
21
19
|
}
|
package/dist/esm/converge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"converge.js","sourceRoot":"","sources":["../../src/converge.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"converge.js","sourceRoot":"","sources":["../../src/converge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAE9C,MAAM,SAAS,CAAC,CAAC,QAAQ,CAAI,EAAW;IACtC,IAAI,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAClC,OAAM,IAAI,EAAE;QACV,IAAI;YACF,OAAO,EAAE,EAAE,CAAC;SACb;QAAC,OAAM,CAAC,EAAE;YACT,IAAI,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YACzC,IAAG,IAAI,GAAG,OAAO,CAAC,iBAAiB,EAAE;gBACnC,MAAM,CAAC,CAAC;aACT;iBAAM;gBACL,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;aAChB;SACF;KACF;AACH,CAAC"}
|
|
@@ -23,4 +23,22 @@ export function formatTable(options) {
|
|
|
23
23
|
...options.rows.map((row) => formatRow(row))
|
|
24
24
|
].join('\n');
|
|
25
25
|
}
|
|
26
|
-
|
|
26
|
+
function ownDescription(options) {
|
|
27
|
+
if (options.locator) {
|
|
28
|
+
return `${options.name} ${options.locator.description} ${options.filter.description}`.trim();
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
return `${options.name} ${options.filter.description}`.trim();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export function formatDescription(options) {
|
|
35
|
+
let ancestorsAndSelf = options.ancestors.concat(options);
|
|
36
|
+
return ancestorsAndSelf.reverse().map(ownDescription).join(' within ');
|
|
37
|
+
}
|
|
38
|
+
export function formatMatchesTable(interactor, matches) {
|
|
39
|
+
return formatTable({
|
|
40
|
+
headers: interactor.locator ? [interactor.name, ...interactor.filter.asTableHeader()] : interactor.filter.asTableHeader(),
|
|
41
|
+
rows: matches.slice().sort((a, b) => b.sortWeight - a.sortWeight).map((m) => m.asTableRow()),
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
//# 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/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAwD,aAAa,EAAE,MAAM,eAAe,CAAC;AACpG,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/esm/inspector.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import {
|
|
2
|
+
import { instantiateInteractor } from "./constructor";
|
|
3
|
+
import { findElements, unsafeSyncResolveParent } from './resolvers';
|
|
3
4
|
export function createInspector(constructor, parentElement) {
|
|
4
5
|
// NOTE: Wait for https://github.com/thefrontside/bigtest/pull/895 to use specification instead
|
|
5
6
|
let options = constructor().options;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspector.js","sourceRoot":"","sources":["../../src/inspector.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"inspector.js","sourceRoot":"","sources":["../../src/inspector.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAmBnE,MAAM,UAAU,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,YAAY,CAAiB,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,uBAAuB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;YACxG,OAAO,QAAQ,CAAC,GAAG,CACjB,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CACvB,qBAAqB,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"}
|