@lingxia/test 0.12.0

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.
Files changed (57) hide show
  1. package/dist/expect.d.ts +26 -0
  2. package/dist/expect.d.ts.map +1 -0
  3. package/dist/expect.js +220 -0
  4. package/dist/expect.js.map +1 -0
  5. package/dist/fixture.d.ts +96 -0
  6. package/dist/fixture.d.ts.map +1 -0
  7. package/dist/fixture.js +703 -0
  8. package/dist/fixture.js.map +1 -0
  9. package/dist/format.d.ts +14 -0
  10. package/dist/format.d.ts.map +1 -0
  11. package/dist/format.js +179 -0
  12. package/dist/format.js.map +1 -0
  13. package/dist/host.d.ts +29 -0
  14. package/dist/host.d.ts.map +1 -0
  15. package/dist/host.js +204 -0
  16. package/dist/host.js.map +1 -0
  17. package/dist/ids.d.ts +26 -0
  18. package/dist/ids.d.ts.map +1 -0
  19. package/dist/ids.js +92 -0
  20. package/dist/ids.js.map +1 -0
  21. package/dist/index.d.ts +9 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +7 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/inventory.d.ts +24 -0
  26. package/dist/inventory.d.ts.map +1 -0
  27. package/dist/inventory.js +38 -0
  28. package/dist/inventory.js.map +1 -0
  29. package/dist/junit.d.ts +8 -0
  30. package/dist/junit.d.ts.map +1 -0
  31. package/dist/junit.js +97 -0
  32. package/dist/junit.js.map +1 -0
  33. package/dist/locator.d.ts +62 -0
  34. package/dist/locator.d.ts.map +1 -0
  35. package/dist/locator.js +124 -0
  36. package/dist/locator.js.map +1 -0
  37. package/dist/report.d.ts +15 -0
  38. package/dist/report.d.ts.map +1 -0
  39. package/dist/report.js +967 -0
  40. package/dist/report.js.map +1 -0
  41. package/dist/runtime.d.ts +33 -0
  42. package/dist/runtime.d.ts.map +1 -0
  43. package/dist/runtime.js +487 -0
  44. package/dist/runtime.js.map +1 -0
  45. package/dist/spec-api.d.ts +15 -0
  46. package/dist/spec-api.d.ts.map +1 -0
  47. package/dist/spec-api.js +2 -0
  48. package/dist/spec-api.js.map +1 -0
  49. package/dist/types.d.ts +234 -0
  50. package/dist/types.d.ts.map +1 -0
  51. package/dist/types.js +2 -0
  52. package/dist/types.js.map +1 -0
  53. package/dist/version.d.ts +21 -0
  54. package/dist/version.d.ts.map +1 -0
  55. package/dist/version.js +21 -0
  56. package/dist/version.js.map +1 -0
  57. package/package.json +56 -0
@@ -0,0 +1,26 @@
1
+ import type { Matchers } from "./types.js";
2
+ export interface LoggedAssertion {
3
+ matcher: string;
4
+ expected: string;
5
+ actual: string;
6
+ passed: boolean;
7
+ }
8
+ type AssertionSink = (entry: LoggedAssertion) => void;
9
+ export declare function setAssertionSink(sink?: AssertionSink): void;
10
+ export declare function pushAssertionSilence(): void;
11
+ export declare function popAssertionSilence(): void;
12
+ export declare function logAssertion(entry: LoggedAssertion): void;
13
+ export declare class AssertionError extends Error {
14
+ readonly name = "AssertionError";
15
+ readonly matcher: string;
16
+ readonly actual: unknown;
17
+ readonly expected: unknown;
18
+ constructor(matcher: string, actual: unknown, expected: unknown, message: string);
19
+ }
20
+ declare function isEqual(a: unknown, b: unknown, seen?: WeakMap<object, unknown>): boolean;
21
+ declare function contains(actual: unknown, expected: unknown): boolean;
22
+ declare function matches(actual: unknown, expected: string | RegExp): boolean;
23
+ export declare function expect<T>(actual: T): Matchers<T>;
24
+ export declare function applyMatcher(matcher: string, actual: unknown, expected: unknown, inverted: boolean): void;
25
+ export { isEqual, contains, matches };
26
+ //# sourceMappingURL=expect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expect.d.ts","sourceRoot":"","sources":["../src/expect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,KAAK,aAAa,GAAG,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;AAKtD,wBAAgB,gBAAgB,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,IAAI,CAE3D;AAED,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAGzD;AAED,qBAAa,cAAe,SAAQ,KAAK;IACvC,SAAkB,IAAI,oBAAoB;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;gBAEf,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM;CAMjF;AAED,iBAAS,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,2BAAiC,GAAG,OAAO,CA8CvF;AAED,iBAAS,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAI7D;AAED,iBAAS,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAGpE;AA+GD,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAEhD;AAED,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,OAAO,EACjB,QAAQ,EAAE,OAAO,GAChB,IAAI,CAiCN;AAED,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC"}
package/dist/expect.js ADDED
@@ -0,0 +1,220 @@
1
+ import { formatValue } from "./format.js";
2
+ let assertionSink;
3
+ let assertionSilence = 0;
4
+ export function setAssertionSink(sink) {
5
+ assertionSink = sink;
6
+ }
7
+ export function pushAssertionSilence() {
8
+ assertionSilence += 1;
9
+ }
10
+ export function popAssertionSilence() {
11
+ assertionSilence = Math.max(0, assertionSilence - 1);
12
+ }
13
+ export function logAssertion(entry) {
14
+ if (assertionSilence > 0 || !assertionSink)
15
+ return;
16
+ assertionSink(entry);
17
+ }
18
+ export class AssertionError extends Error {
19
+ constructor(matcher, actual, expected, message) {
20
+ super(message);
21
+ this.name = "AssertionError";
22
+ this.matcher = matcher;
23
+ this.actual = actual;
24
+ this.expected = expected;
25
+ }
26
+ }
27
+ function isEqual(a, b, seen = new WeakMap()) {
28
+ if (Object.is(a, b))
29
+ return true;
30
+ if (typeof a !== typeof b)
31
+ return false;
32
+ if (a === null || b === null)
33
+ return a === b;
34
+ if (typeof a !== "object" || typeof b !== "object")
35
+ return false;
36
+ if (a instanceof Date || b instanceof Date) {
37
+ return a instanceof Date && b instanceof Date && a.getTime() === b.getTime();
38
+ }
39
+ if (a instanceof RegExp || b instanceof RegExp) {
40
+ return a instanceof RegExp && b instanceof RegExp && String(a) === String(b);
41
+ }
42
+ if (a instanceof Map || b instanceof Map) {
43
+ if (!(a instanceof Map) || !(b instanceof Map) || a.size !== b.size)
44
+ return false;
45
+ for (const [key, value] of a) {
46
+ if (!b.has(key) || !isEqual(value, b.get(key), seen))
47
+ return false;
48
+ }
49
+ return true;
50
+ }
51
+ if (a instanceof Set || b instanceof Set) {
52
+ if (!(a instanceof Set) || !(b instanceof Set) || a.size !== b.size)
53
+ return false;
54
+ for (const value of a) {
55
+ let found = false;
56
+ for (const other of b) {
57
+ if (isEqual(value, other, seen)) {
58
+ found = true;
59
+ break;
60
+ }
61
+ }
62
+ if (!found)
63
+ return false;
64
+ }
65
+ return true;
66
+ }
67
+ if (Array.isArray(a) !== Array.isArray(b))
68
+ return false;
69
+ if (seen.get(a) === b)
70
+ return true;
71
+ seen.set(a, b);
72
+ if (Array.isArray(a) && Array.isArray(b)) {
73
+ if (a.length !== b.length)
74
+ return false;
75
+ return a.every((item, index) => isEqual(item, b[index], seen));
76
+ }
77
+ const aKeys = Object.keys(a);
78
+ const bKeys = Object.keys(b);
79
+ if (aKeys.length !== bKeys.length)
80
+ return false;
81
+ return aKeys.every((key) => Object.prototype.hasOwnProperty.call(b, key) &&
82
+ isEqual(a[key], b[key], seen));
83
+ }
84
+ function contains(actual, expected) {
85
+ if (typeof actual === "string")
86
+ return actual.includes(String(expected));
87
+ if (Array.isArray(actual))
88
+ return actual.some((item) => isEqual(item, expected));
89
+ return false;
90
+ }
91
+ function matches(actual, expected) {
92
+ const text = typeof actual === "string" ? actual : formatValue(actual);
93
+ return typeof expected === "string" ? text.includes(expected) : expected.test(text);
94
+ }
95
+ function message(matcher, actual, expected, inverted, extra) {
96
+ const lines = [
97
+ inverted ? `expect(received).not.${matcher}` : `expect(received).${matcher}`,
98
+ extra ?? "",
99
+ `Expected: ${inverted ? "not " : ""}${formatValue(expected)}`,
100
+ `Received: ${formatValue(actual)}`,
101
+ ].filter((line) => line.length > 0);
102
+ return lines.join("\n");
103
+ }
104
+ function settle(matcher, actual, expected, inverted, pass, extra) {
105
+ const ok = pass !== inverted;
106
+ logAssertion({
107
+ matcher: inverted ? `not.${matcher}` : matcher,
108
+ expected: inverted ? `not ${formatValue(expected)}` : formatValue(expected),
109
+ actual: formatValue(actual),
110
+ passed: ok,
111
+ });
112
+ if (!ok)
113
+ fail(matcher, actual, expected, inverted, extra);
114
+ }
115
+ function fail(matcher, actual, expected, inverted, extra) {
116
+ throw new AssertionError(inverted ? `not.${matcher}` : matcher, actual, expected, message(matcher, actual, expected, inverted, extra));
117
+ }
118
+ function createMatchers(actual, inverted) {
119
+ const self = {
120
+ get not() {
121
+ return createMatchers(actual, !inverted);
122
+ },
123
+ toBe(expected) {
124
+ settle("toBe", actual, expected, inverted, Object.is(actual, expected));
125
+ },
126
+ toEqual(expected) {
127
+ settle("toEqual", actual, expected, inverted, isEqual(actual, expected));
128
+ },
129
+ toContain(expected) {
130
+ settle("toContain", actual, expected, inverted, contains(actual, expected));
131
+ },
132
+ toMatch(expected) {
133
+ settle("toMatch", actual, expected, inverted, matches(actual, expected));
134
+ },
135
+ toBeTruthy() {
136
+ settle("toBeTruthy", actual, true, inverted, Boolean(actual));
137
+ },
138
+ toBeFalsy() {
139
+ settle("toBeFalsy", actual, false, inverted, !actual);
140
+ },
141
+ toBeDefined() {
142
+ settle("toBeDefined", actual, undefined, inverted, actual !== undefined);
143
+ },
144
+ toBeUndefined() {
145
+ settle("toBeUndefined", actual, undefined, inverted, actual === undefined);
146
+ },
147
+ toBeInstanceOf(expected) {
148
+ const pass = actual instanceof expected;
149
+ settle("toBeInstanceOf", actual, expected, inverted, pass);
150
+ },
151
+ toThrow(expected) {
152
+ if (typeof actual !== "function") {
153
+ settle("toThrow", actual, expected, inverted, false, "received value must be a function");
154
+ return;
155
+ }
156
+ let thrown;
157
+ let didThrow = false;
158
+ try {
159
+ actual();
160
+ }
161
+ catch (error) {
162
+ didThrow = true;
163
+ thrown = error;
164
+ }
165
+ let pass = didThrow;
166
+ if (pass && expected !== undefined) {
167
+ const text = thrown instanceof Error ? thrown.message : String(thrown);
168
+ if (typeof expected === "string")
169
+ pass = text.includes(expected);
170
+ else if (expected instanceof RegExp)
171
+ pass = expected.test(text);
172
+ else if (typeof expected === "function")
173
+ pass = thrown instanceof expected;
174
+ else
175
+ pass = isEqual(thrown, expected);
176
+ }
177
+ settle("toThrow", thrown, expected, inverted, pass);
178
+ },
179
+ };
180
+ return self;
181
+ }
182
+ export function expect(actual) {
183
+ return createMatchers(actual, false);
184
+ }
185
+ export function applyMatcher(matcher, actual, expected, inverted) {
186
+ const assertion = createMatchers(actual, inverted);
187
+ switch (matcher) {
188
+ case "toBe":
189
+ assertion.toBe(expected);
190
+ return;
191
+ case "toEqual":
192
+ assertion.toEqual(expected);
193
+ return;
194
+ case "toContain":
195
+ assertion.toContain(expected);
196
+ return;
197
+ case "toMatch":
198
+ assertion.toMatch(expected);
199
+ return;
200
+ case "toBeTruthy":
201
+ assertion.toBeTruthy();
202
+ return;
203
+ case "toBeFalsy":
204
+ assertion.toBeFalsy();
205
+ return;
206
+ case "toBeDefined":
207
+ assertion.toBeDefined();
208
+ return;
209
+ case "toBeUndefined":
210
+ assertion.toBeUndefined();
211
+ return;
212
+ case "toBeInstanceOf":
213
+ assertion.toBeInstanceOf(expected);
214
+ return;
215
+ default:
216
+ throw new AssertionError(matcher, actual, expected, `Unknown matcher ${matcher}`);
217
+ }
218
+ }
219
+ export { isEqual, contains, matches };
220
+ //# sourceMappingURL=expect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expect.js","sourceRoot":"","sources":["../src/expect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ import { type ResolvedHost } from "./host.js";
2
+ import type { Apps, AttachmentRef, Fixture, FixtureExpect, AssertionRecord, RejectExpected, SpecStatus, StepRecord, TestApp } from "./types.js";
3
+ import type { LxAppDriver } from "@lingxia/types/automation";
4
+ export declare class TimeoutError extends Error {
5
+ readonly name = "TimeoutError";
6
+ }
7
+ export type FailurePhase = "beforeEach" | "body" | "defer" | "forensics" | "timeout";
8
+ export declare class LiveFixture implements Fixture {
9
+ readonly specId: string;
10
+ private readonly host;
11
+ private readonly automation;
12
+ private readonly specBudgetMs;
13
+ readonly apps: Apps;
14
+ readonly args: Record<string, string>;
15
+ readonly steps: StepRecord[];
16
+ readonly assertions: AssertionRecord[];
17
+ readonly attachments: AttachmentRef[];
18
+ readonly defers: Array<() => void | Promise<void>>;
19
+ aborted: boolean;
20
+ abortError: Error | null;
21
+ private actionSilence;
22
+ private actionCount;
23
+ /** Actions still in flight, so an abort can mark them instead of leaving
24
+ * them at their optimistic default. */
25
+ private readonly openActions;
26
+ cleanupUntil: number;
27
+ cleanupActive: boolean;
28
+ lastStepPath: string | undefined;
29
+ failurePhase: FailurePhase | null;
30
+ private readonly stepStack;
31
+ private rawApp;
32
+ constructor(specId: string, rawApp: LxAppDriver, host: ResolvedHost, args: Record<string, string>, automation: {
33
+ lxapp: {
34
+ (): LxAppDriver;
35
+ (id: string): LxAppDriver;
36
+ };
37
+ }, specBudgetMs?: number);
38
+ get app(): TestApp;
39
+ get raw(): LxAppDriver;
40
+ step<T>(name: string, body: () => T | Promise<T>): Promise<T>;
41
+ get expect(): FixtureExpect;
42
+ reject(operation: () => unknown | Promise<unknown>, expected?: RejectExpected): Promise<unknown>;
43
+ defer(cleanup: () => void | Promise<void>): void;
44
+ attach(name: string, data: unknown): Promise<void>;
45
+ attachRaw(name: string, data: unknown): Promise<AttachmentRef>;
46
+ abort(reason: Error): void;
47
+ allowCleanup(budgetMs?: number): void;
48
+ endCleanup(): void;
49
+ /**
50
+ * Record a driver call so a spec that never calls `t.step` still leaves a
51
+ * trace of what it did. Retry loops silence themselves: a five-second poll
52
+ * would otherwise bury the report in a hundred identical rows.
53
+ */
54
+ act<T>(name: string, detail: string, op: () => T | Promise<T>): Promise<T>;
55
+ private recordFailedAction;
56
+ silenceActions(): void;
57
+ resumeActions(): void;
58
+ guard<T>(op: () => T | Promise<T>): Promise<T>;
59
+ currentStepPath(): string | undefined;
60
+ noteAssertion(entry: {
61
+ matcher: string;
62
+ expected: string;
63
+ actual: string;
64
+ passed: boolean;
65
+ }): void;
66
+ private assertRunnable;
67
+ private stepPathLine;
68
+ private wrapApp;
69
+ /**
70
+ * The driver's own eval default is a flat few seconds, so a call that runs
71
+ * long under load fails a spec that still had most of its budget left. An
72
+ * eval gets a share of the spec's budget instead — a third, capped — never
73
+ * all of it: a call allowed to run the full budget leaves the spec no room
74
+ * to retry, so one stalled call takes the whole spec down with it.
75
+ */
76
+ private withEvalBudget;
77
+ private wrapPage;
78
+ private locator;
79
+ private locatorMatchers;
80
+ private pollMatchers;
81
+ private retryLocator;
82
+ private retryPoll;
83
+ private retryFailure;
84
+ }
85
+ export declare function toReportError(error: unknown, step?: string): {
86
+ name: string;
87
+ message: string;
88
+ stack?: string;
89
+ matcher?: string;
90
+ expected?: string;
91
+ actual?: string;
92
+ location?: string;
93
+ step?: string;
94
+ };
95
+ export declare function protocolStatus(status: SpecStatus): "passed" | "failed" | "skipped";
96
+ //# sourceMappingURL=fixture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fixture.d.ts","sourceRoot":"","sources":["../src/fixture.ts"],"names":[],"mappings":"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"}