@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,234 @@
1
+ import type { LxAppDriver, PageDriver } from "@lingxia/types/automation";
2
+ export type SpecStatus = "passed" | "failed" | "skipped" | "timeout" | "xfail" | "xpass";
3
+ export type StepStatus = "passed" | "failed" | "timeout";
4
+ export interface SpecOptions {
5
+ /** Stable id. ASCII titles slug by default; non-ASCII titles need this or become `file-n`. */
6
+ id?: string;
7
+ /** Declared coverage tags. Journeys omit this. */
8
+ covers?: readonly string[];
9
+ /** Spec budget in ms (default 30_000). */
10
+ timeout?: number;
11
+ /** Relaunch the home page before the body. */
12
+ fresh?: boolean;
13
+ /** Pin `t.app` to this lxapp id instead of the current one. */
14
+ app?: string;
15
+ /** Skip auto-attached failure forensics (only when capture itself would wedge). */
16
+ forensics?: boolean;
17
+ /** Why a skip/fixme spec is registered. Shown in the HTML/JSON report. */
18
+ reason?: string;
19
+ }
20
+ export type SpecBody = (t: Fixture) => void | Promise<void>;
21
+ export interface ExpectOptions {
22
+ timeout?: number;
23
+ interval?: number;
24
+ }
25
+ export interface RejectExpected {
26
+ code?: string;
27
+ message?: string | RegExp;
28
+ }
29
+ export interface Locator {
30
+ readonly selector: string;
31
+ click(options?: ExpectOptions): Promise<void>;
32
+ fill(text: string, options?: ExpectOptions): Promise<void>;
33
+ type(text: string, options?: ExpectOptions): Promise<void>;
34
+ query(options?: ExpectOptions): Promise<unknown>;
35
+ }
36
+ export interface TestPage extends PageDriver {
37
+ testId(id: string): Locator;
38
+ css(selector: string): Locator;
39
+ }
40
+ export interface TestApp extends LxAppDriver {
41
+ readonly page: TestPage;
42
+ }
43
+ export interface Apps {
44
+ lxapp(appId: string): TestApp;
45
+ }
46
+ export interface RetryMatchers<T> {
47
+ readonly not: RetryMatchers<T>;
48
+ toBe(expected: unknown): Promise<void>;
49
+ toEqual(expected: unknown): Promise<void>;
50
+ toContain(expected: unknown): Promise<void>;
51
+ toMatch(expected: string | RegExp): Promise<void>;
52
+ toBeTruthy(): Promise<void>;
53
+ toBeFalsy(): Promise<void>;
54
+ toBeDefined(): Promise<void>;
55
+ toBeUndefined(): Promise<void>;
56
+ toBeInstanceOf(expected: Function): Promise<void>;
57
+ }
58
+ export interface LocatorMatchers {
59
+ readonly not: LocatorMatchers;
60
+ toBeVisible(options?: ExpectOptions): Promise<void>;
61
+ toHaveText(expected: string | RegExp, options?: ExpectOptions): Promise<void>;
62
+ toHaveCount(expected: number, options?: ExpectOptions): Promise<void>;
63
+ toHaveValue(expected: string | RegExp, options?: ExpectOptions): Promise<void>;
64
+ }
65
+ export interface FixtureExpect {
66
+ (locator: Locator): LocatorMatchers;
67
+ poll<T>(read: () => T | Promise<T>, options?: ExpectOptions): RetryMatchers<T>;
68
+ }
69
+ export interface Fixture {
70
+ readonly app: TestApp;
71
+ readonly apps: Apps;
72
+ readonly args: Record<string, string>;
73
+ step<T>(name: string, body: () => T | Promise<T>): Promise<T>;
74
+ expect: FixtureExpect;
75
+ reject(operation: () => unknown | Promise<unknown>, expected?: RejectExpected): Promise<unknown>;
76
+ defer(cleanup: () => void | Promise<void>): void;
77
+ attach(name: string, data: unknown): Promise<void>;
78
+ }
79
+ export interface Matchers<T> {
80
+ readonly not: Matchers<T>;
81
+ toBe(expected: unknown): void;
82
+ toEqual(expected: unknown): void;
83
+ toContain(expected: unknown): void;
84
+ toMatch(expected: string | RegExp): void;
85
+ toBeTruthy(): void;
86
+ toBeFalsy(): void;
87
+ toBeDefined(): void;
88
+ toBeUndefined(): void;
89
+ toBeInstanceOf(expected: Function): void;
90
+ toThrow(expected?: unknown): void;
91
+ }
92
+ export interface SourceLocation {
93
+ source: string;
94
+ line: number;
95
+ column: number;
96
+ }
97
+ export interface AssertionRecord {
98
+ matcher: string;
99
+ expected: string;
100
+ actual: string;
101
+ passed: boolean;
102
+ step?: string;
103
+ }
104
+ export interface StepRecord {
105
+ name: string;
106
+ path: string;
107
+ /** `step` is authored with `t.step`; `action` is a recorded driver call. */
108
+ kind?: "step" | "action";
109
+ /** Short argument summary for an action — a selector, a page, a script head. */
110
+ detail?: string;
111
+ /** Identical consecutive actions collapse into one row with a count. */
112
+ repeat?: number;
113
+ status: StepStatus;
114
+ duration_ms: number;
115
+ error?: ReportError;
116
+ steps: StepRecord[];
117
+ attachments: AttachmentRef[];
118
+ assertions: AssertionRecord[];
119
+ }
120
+ export interface AttachmentRef {
121
+ name: string;
122
+ path: string;
123
+ mimeType: string;
124
+ }
125
+ export interface ReportError {
126
+ name: string;
127
+ message: string;
128
+ stack?: string;
129
+ matcher?: string;
130
+ expected?: string;
131
+ actual?: string;
132
+ location?: string;
133
+ step?: string;
134
+ }
135
+ export interface CaseRecord {
136
+ id: string;
137
+ title: string;
138
+ name: string;
139
+ full_name: string;
140
+ /** Source file the spec was registered from, remapped through the bundle map. */
141
+ file?: string;
142
+ line?: number;
143
+ /** Display group in the report — the spec file's path inside the project. */
144
+ suite?: string;
145
+ status: SpecStatus;
146
+ duration_ms: number;
147
+ covers: string[];
148
+ steps: StepRecord[];
149
+ assertions: AssertionRecord[];
150
+ attachments: AttachmentRef[];
151
+ error?: ReportError;
152
+ timeout_ms: number;
153
+ reason?: string;
154
+ }
155
+ /** The app under test, so a report identifies its own subject. */
156
+ export interface RunSubject {
157
+ appid?: string;
158
+ app_name?: string;
159
+ version?: string;
160
+ release_type?: string;
161
+ pages?: number;
162
+ }
163
+ export interface RunMeta {
164
+ started_at: string;
165
+ duration_ms: number;
166
+ args: Record<string, string>;
167
+ platform?: string;
168
+ framework?: string;
169
+ subject?: RunSubject;
170
+ /** The suite opted into measuring the whole published `lx` surface. */
171
+ surface_coverage?: boolean;
172
+ }
173
+ export interface JsonReport {
174
+ framework: {
175
+ name: string;
176
+ version: string;
177
+ };
178
+ meta: RunMeta;
179
+ partial: boolean;
180
+ filtered: boolean;
181
+ total: number;
182
+ passed: number;
183
+ failed: number;
184
+ skipped: number;
185
+ xfail: number;
186
+ xpass: number;
187
+ timeout: number;
188
+ duration_ms: number;
189
+ cases: CaseRecord[];
190
+ }
191
+ export interface ProtocolCase {
192
+ name: string;
193
+ full_name: string;
194
+ status: "passed" | "failed" | "skipped";
195
+ duration_ms: number;
196
+ error?: {
197
+ name: string;
198
+ message: string;
199
+ stack?: string;
200
+ causes?: unknown[];
201
+ };
202
+ }
203
+ export interface ProtocolReport {
204
+ total: number;
205
+ passed: number;
206
+ failed: number;
207
+ skipped: number;
208
+ duration_ms: number;
209
+ cases: ProtocolCase[];
210
+ }
211
+ export interface LingxiaTestController {
212
+ run(): Promise<ProtocolReport>;
213
+ readonly version: string;
214
+ /** Clears the registry. Used by this package's own Node tests. */
215
+ reset(): void;
216
+ }
217
+ export interface AutomationHost {
218
+ args?: Record<string, string>;
219
+ attach?: (name: string, artifact: {
220
+ mimeType: string;
221
+ base64: string;
222
+ }) => void | Promise<void>;
223
+ emit?: (event: Record<string, unknown>) => void | Promise<void>;
224
+ report?: (event: Record<string, unknown>) => void | Promise<void>;
225
+ logs?: () => string | string[] | Promise<string | string[]>;
226
+ }
227
+ declare global {
228
+ var __LINGXIA_TEST__: LingxiaTestController | undefined;
229
+ var __LINGXIA_AUTOMATION_HOST__: AutomationHost | undefined;
230
+ var __RONG_TEST_HOST__: AutomationHost | undefined;
231
+ var __LINGXIA_TEST_SOURCE_MAP__: unknown;
232
+ var __LINGXIA_CLI_VERSION__: string | undefined;
233
+ }
234
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,21 @@
1
+ export declare const VERSION = "0.11.2";
2
+ export declare const PACKAGE_NAME = "@lingxia/test";
3
+ export declare const DEFAULT_ACTION_TIMEOUT_MS = 5000;
4
+ export declare const DEFAULT_SPEC_TIMEOUT_MS = 30000;
5
+ /** Per-spec cap on recorded actions, so a loop cannot bloat the report. */
6
+ export declare const MAX_ACTIONS = 300;
7
+ /**
8
+ * Ceiling for an inherited eval budget. The Showcase's own trace puts a single
9
+ * call at 14ms median and 5.3s at the 99th percentile, so 10s is roughly twice
10
+ * the worst real call while still leaving a default spec two thirds of its
11
+ * budget to retry in.
12
+ */
13
+ export declare const MAX_EVAL_BUDGET_MS = 10000;
14
+ /** Failure forensics run against a possibly wedged app; bound them too. */
15
+ export declare const FORENSICS_BUDGET_MS = 10000;
16
+ /** Cleanup budget after a spec timed out — the app may be wedged, so bail fast. */
17
+ export declare const WEDGED_DEFER_BUDGET_MS = 2000;
18
+ /** Cleanup budget on the normal path, capped so a leak cannot stall the run. */
19
+ export declare const MAX_DEFER_BUDGET_MS = 15000;
20
+ export declare const DEFAULT_POLL_INTERVAL_MS = 50;
21
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,WAAW,CAAC;AAChC,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAE5C,eAAO,MAAM,yBAAyB,OAAQ,CAAC;AAC/C,eAAO,MAAM,uBAAuB,QAAS,CAAC;AAC9C,2EAA2E;AAC3E,eAAO,MAAM,WAAW,MAAM,CAAC;AAC/B;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,QAAS,CAAC;AACzC,2EAA2E;AAC3E,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAC1C,mFAAmF;AACnF,eAAO,MAAM,sBAAsB,OAAQ,CAAC;AAC5C,gFAAgF;AAChF,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAC1C,eAAO,MAAM,wBAAwB,KAAK,CAAC"}
@@ -0,0 +1,21 @@
1
+ export const VERSION = "0.11.2";
2
+ export const PACKAGE_NAME = "@lingxia/test";
3
+ export const DEFAULT_ACTION_TIMEOUT_MS = 5000;
4
+ export const DEFAULT_SPEC_TIMEOUT_MS = 30000;
5
+ /** Per-spec cap on recorded actions, so a loop cannot bloat the report. */
6
+ export const MAX_ACTIONS = 300;
7
+ /**
8
+ * Ceiling for an inherited eval budget. The Showcase's own trace puts a single
9
+ * call at 14ms median and 5.3s at the 99th percentile, so 10s is roughly twice
10
+ * the worst real call while still leaving a default spec two thirds of its
11
+ * budget to retry in.
12
+ */
13
+ export const MAX_EVAL_BUDGET_MS = 10000;
14
+ /** Failure forensics run against a possibly wedged app; bound them too. */
15
+ export const FORENSICS_BUDGET_MS = 10000;
16
+ /** Cleanup budget after a spec timed out — the app may be wedged, so bail fast. */
17
+ export const WEDGED_DEFER_BUDGET_MS = 2000;
18
+ /** Cleanup budget on the normal path, capped so a leak cannot stall the run. */
19
+ export const MAX_DEFER_BUDGET_MS = 15000;
20
+ export const DEFAULT_POLL_INTERVAL_MS = 50;
21
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAChC,MAAM,CAAC,MAAM,YAAY,GAAG,eAAe,CAAC;AAE5C,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAK,CAAC;AAC/C,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAM,CAAC;AAC9C,2EAA2E;AAC3E,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAC;AAC/B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAM,CAAC;AACzC,2EAA2E;AAC3E,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAM,CAAC;AAC1C,mFAAmF;AACnF,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAK,CAAC;AAC5C,gFAAgF;AAChF,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAM,CAAC;AAC1C,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAC"}
package/package.json ADDED
@@ -0,0 +1,56 @@
1
+ {
2
+ "name": "@lingxia/test",
3
+ "version": "0.12.0",
4
+ "description": "Authoring SDK and clock for lxapp tests run by lxdev test",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js",
12
+ "default": "./dist/index.js"
13
+ },
14
+ "./package.json": "./package.json"
15
+ },
16
+ "files": [
17
+ "dist"
18
+ ],
19
+ "scripts": {
20
+ "build": "tsc -p tsconfig.json",
21
+ "clean": "node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"",
22
+ "test": "npm run build && node --test --test-concurrency=1 --test-reporter spec tests/clock.test.mjs tests/waiting.test.mjs tests/report.test.mjs tests/stacks.test.mjs tests/hooks.test.mjs",
23
+ "prepublishOnly": "npm run clean && npm run build",
24
+ "prebuild": "npm run build --workspace @lingxia/types --if-present"
25
+ },
26
+ "dependencies": {
27
+ "@lingxia/types": "~0.12.0"
28
+ },
29
+ "devDependencies": {
30
+ "typescript": "^5.7.2"
31
+ },
32
+ "publishConfig": {
33
+ "registry": "https://registry.npmjs.org",
34
+ "access": "public"
35
+ },
36
+ "repository": {
37
+ "type": "git",
38
+ "url": "https://github.com/LingXia-Dev/LingXia.git",
39
+ "directory": "packages/lingxia-test"
40
+ },
41
+ "keywords": [
42
+ "lingxia",
43
+ "lxapp",
44
+ "test",
45
+ "lxdev"
46
+ ],
47
+ "author": "LingXia Team",
48
+ "license": "MIT",
49
+ "engines": {
50
+ "node": ">=18.0.0"
51
+ },
52
+ "sideEffects": [
53
+ "./dist/index.js",
54
+ "./dist/runtime.js"
55
+ ]
56
+ }