@midscene/test 1.15.6 → 1.16.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/es/cli/index.mjs +389 -129
- package/dist/es/cli/index.mjs.map +1 -1
- package/dist/es/test-cli.mjs +377 -118
- package/dist/es/test-cli.mjs.map +1 -1
- package/dist/lib/cli/index.js +381 -118
- package/dist/lib/cli/index.js.map +1 -1
- package/dist/lib/test-cli.js +376 -117
- package/dist/lib/test-cli.js.map +1 -1
- package/dist/templates/test/android/README.md +2 -0
- package/dist/templates/test/android/README.zh.md +2 -0
- package/dist/templates/test/android/midscene.config.ts +28 -31
- package/dist/templates/test/computer/README.md +2 -0
- package/dist/templates/test/computer/README.zh.md +2 -0
- package/dist/templates/test/computer/midscene.config.ts +31 -34
- package/dist/templates/test/harmony/README.md +2 -0
- package/dist/templates/test/harmony/README.zh.md +2 -0
- package/dist/templates/test/harmony/midscene.config.ts +28 -31
- package/dist/templates/test/ios/README.md +2 -0
- package/dist/templates/test/ios/README.zh.md +2 -0
- package/dist/templates/test/ios/midscene.config.ts +28 -31
- package/dist/templates/test/web/README.md +16 -0
- package/dist/templates/test/web/README.zh.md +16 -0
- package/dist/templates/test/web/cases/todo.yaml +2 -0
- package/dist/templates/test/web/midscene.config.ts +34 -12
- package/dist/types/cli/index.d.ts +32 -11
- package/dist/types/index.d.ts +3 -3
- package/package.json +13 -13
|
@@ -2,6 +2,8 @@ import { Awaitable } from '@midscene/core/internal/test-runner';
|
|
|
2
2
|
import { CommonAgentTestRunnerApi } from '@midscene/core/agent/test';
|
|
3
3
|
import type * as Core from '@midscene/core/internal/test-runner';
|
|
4
4
|
import type { ExecutionProjectDefinition as ExecutionProjectDefinition_2 } from '@midscene/core/internal/test-runner';
|
|
5
|
+
import { FileSetupContext } from '@midscene/core/internal/test-runner';
|
|
6
|
+
import { FileSetupDefinition } from '@midscene/core/internal/test-runner';
|
|
5
7
|
import type { IExecutionDump } from '@midscene/core';
|
|
6
8
|
import { JsonPrimitive } from '@midscene/core/internal/test-runner';
|
|
7
9
|
import { JsonValue } from '@midscene/core/internal/test-runner';
|
|
@@ -33,33 +35,41 @@ export declare const createTestRunId: (date?: Date, uuid?: `${string}-${string}-
|
|
|
33
35
|
|
|
34
36
|
export declare const DEFAULT_TEST_FILE_SELECTION: TestFileSelection;
|
|
35
37
|
|
|
38
|
+
export declare const defineFileSetup: <TContext, TProjectContext = unknown>(definition: FileSetupDefinition<TContext, TProjectContext>) => FileSetupDefinition<TContext, TProjectContext>;
|
|
39
|
+
|
|
36
40
|
declare type DefineNodeOptions<TInput = unknown, TData = unknown, TContext = unknown> = Omit<Core.DefineNodeOptions<TInput, TData, TContext>, 'execute'> & {
|
|
37
41
|
execute(ctx: NodeExecutionContext<TInput, TContext>): Core.NodeExecutionReturn<TData>;
|
|
38
42
|
};
|
|
39
43
|
|
|
40
44
|
export declare const defineProjectSetup: <TProjectContext>(definition: ProjectSetupDefinition<TProjectContext>) => ProjectSetupDefinition<TProjectContext>;
|
|
41
45
|
|
|
42
|
-
export declare const defineTestProject: <TContext = undefined>(definition: TestProjectDefinition<TContext>) => TestProjectDefinition<TContext>;
|
|
46
|
+
export declare const defineTestProject: <TContext = undefined, TProjectContext = TContext>(definition: TestProjectDefinition<TContext, TProjectContext>) => TestProjectDefinition<TContext, TProjectContext>;
|
|
43
47
|
|
|
44
48
|
export declare const discoverTestConfig: (projectRoot: string) => string | undefined;
|
|
45
49
|
|
|
46
50
|
export declare const discoverTestFiles: (projectRoot: string, selection?: TestFileSelection) => string[];
|
|
47
51
|
|
|
48
|
-
export declare type ExecutionProjectDefinition<TContext = unknown> = Omit<ExecutionProjectDefinition_2<
|
|
52
|
+
export declare type ExecutionProjectDefinition<TContext = unknown, TProjectContext = TContext> = Omit<ExecutionProjectDefinition_2<TProjectContext>, 'nodes' | 'fileSetup'> & {
|
|
53
|
+
fileSetup?: FileSetupDefinition<TContext, TProjectContext>;
|
|
49
54
|
nodes?: readonly NodeDefinition<any, any, TContext>[];
|
|
50
55
|
};
|
|
51
56
|
|
|
57
|
+
export { FileSetupContext }
|
|
58
|
+
|
|
59
|
+
export { FileSetupDefinition }
|
|
60
|
+
|
|
52
61
|
export { JsonPrimitive }
|
|
53
62
|
|
|
54
63
|
export { JsonValue }
|
|
55
64
|
|
|
56
|
-
export declare interface LoadedExecutionProject<TProjectContext =
|
|
65
|
+
export declare interface LoadedExecutionProject<TContext = unknown, TProjectContext = TContext> extends ResolvedExecutionProject<TProjectContext> {
|
|
66
|
+
readonly fileSetup?: FileSetupDefinition<TContext, TProjectContext>;
|
|
57
67
|
/** Effective Nodes: globals plus project-local overrides. */
|
|
58
68
|
readonly nodes: NodeRegistry;
|
|
59
69
|
}
|
|
60
70
|
|
|
61
|
-
export declare interface LoadedTestProject<TContext = undefined> {
|
|
62
|
-
projects: readonly LoadedExecutionProject<TContext>[];
|
|
71
|
+
export declare interface LoadedTestProject<TContext = undefined, TProjectContext = TContext> {
|
|
72
|
+
projects: readonly LoadedExecutionProject<TContext, TProjectContext>[];
|
|
63
73
|
hasExplicitProjects: boolean;
|
|
64
74
|
test: ResolvedTestOptions;
|
|
65
75
|
output: ResolvedTestOutputDefinition;
|
|
@@ -67,7 +77,7 @@ export declare interface LoadedTestProject<TContext = undefined> {
|
|
|
67
77
|
resolveNode(name: string): NodeDefinition<any, any, TContext> | undefined;
|
|
68
78
|
}
|
|
69
79
|
|
|
70
|
-
export declare function loadTestProject<TContext = undefined>(configPath?: string): Promise<LoadedTestProject<TContext>>;
|
|
80
|
+
export declare function loadTestProject<TContext = undefined, TProjectContext = TContext>(configPath?: string): Promise<LoadedTestProject<TContext, TProjectContext>>;
|
|
71
81
|
|
|
72
82
|
declare interface MidsceneExecutionRef {
|
|
73
83
|
id?: string;
|
|
@@ -126,7 +136,10 @@ export { ProjectTeardownContext }
|
|
|
126
136
|
export { ResolvedExecutionProject }
|
|
127
137
|
|
|
128
138
|
export declare interface ResolvedTestOptions {
|
|
129
|
-
|
|
139
|
+
maxConcurrentFiles: number | null;
|
|
140
|
+
maxConcurrentProjects: number | null;
|
|
141
|
+
setupTimeout: number;
|
|
142
|
+
teardownTimeout: number;
|
|
130
143
|
bail: number;
|
|
131
144
|
testTimeout: number;
|
|
132
145
|
}
|
|
@@ -161,7 +174,14 @@ export declare interface TestExecutionProjectRunResult {
|
|
|
161
174
|
export { TestFileSelection }
|
|
162
175
|
|
|
163
176
|
export declare interface TestOptions {
|
|
164
|
-
|
|
177
|
+
/** Global active files, including preparation and cleanup. Default 1; null is unlimited. */
|
|
178
|
+
maxConcurrentFiles?: number | null;
|
|
179
|
+
/** Projects from setup through completed cleanup. Default 1; null is unlimited. */
|
|
180
|
+
maxConcurrentProjects?: number | null;
|
|
181
|
+
/** Milliseconds for each Project setup/fileSetup, including device waits. */
|
|
182
|
+
setupTimeout?: number;
|
|
183
|
+
/** Milliseconds per cleanup scope; shared deadline during abnormal shutdown. */
|
|
184
|
+
teardownTimeout?: number;
|
|
165
185
|
bail?: number;
|
|
166
186
|
testTimeout?: number;
|
|
167
187
|
}
|
|
@@ -182,9 +202,10 @@ export declare interface TestProjectCollectionError {
|
|
|
182
202
|
error: WorkflowError;
|
|
183
203
|
}
|
|
184
204
|
|
|
185
|
-
export declare interface TestProjectDefinition<TContext = undefined> {
|
|
186
|
-
setup?: ProjectSetupDefinition<
|
|
187
|
-
|
|
205
|
+
export declare interface TestProjectDefinition<TContext = undefined, TProjectContext = TContext> {
|
|
206
|
+
setup?: ProjectSetupDefinition<TProjectContext>;
|
|
207
|
+
fileSetup?: FileSetupDefinition<TContext, TProjectContext>;
|
|
208
|
+
projects?: readonly ExecutionProjectDefinition<TContext, TProjectContext>[];
|
|
188
209
|
test?: TestOptions;
|
|
189
210
|
output?: TestOutputDefinition;
|
|
190
211
|
nodes?: readonly NodeDefinition<any, any, TContext>[];
|
package/dist/types/index.d.ts
CHANGED
|
@@ -129,7 +129,7 @@ export declare const createCaseRunner: <TContext = undefined>(options?: CaseRunn
|
|
|
129
129
|
|
|
130
130
|
export declare const createDocumentRuntime: <TContext = undefined>(document: CollectedWorkflowDocument, options: CreateDocumentRuntimeOptions<TContext>) => WorkflowDocumentRuntime<TContext>;
|
|
131
131
|
|
|
132
|
-
export declare type CreateDocumentRuntimeOptions<TContext = undefined> = Omit<Core.CreateDocumentRuntimeOptions<TContext>, 'documentSetup' | 'documentAttemptIndex' | 'resolveNode' | 'onStepResult' | 'onResult'> & {
|
|
132
|
+
export declare type CreateDocumentRuntimeOptions<TContext = undefined> = Omit<Core.CreateDocumentRuntimeOptions<TContext>, 'documentSetup' | 'setupTimeoutMs' | 'teardownTimeoutMs' | 'documentAttemptIndex' | 'resolveNode' | 'onStepResult' | 'onResult'> & {
|
|
133
133
|
resolveNode(name: string): NodeDefinition<any, any, TContext>;
|
|
134
134
|
onStepResult?: StepResultHandler;
|
|
135
135
|
onResult?(result: WorkflowDocumentRunResult): Core.Awaitable<unknown>;
|
|
@@ -262,7 +262,7 @@ export declare interface ResolveWorkflowVariablesOptions {
|
|
|
262
262
|
location: VariableResolutionLocation;
|
|
263
263
|
}
|
|
264
264
|
|
|
265
|
-
export declare type RunCollectedCaseOptions<TContext = undefined> = Omit<Core.RunCollectedCaseOptions<TContext>, 'reportScopeId' | 'resolveNode' | 'beforeEach' | 'afterEach' | 'onStepResult' | 'onResult'> & {
|
|
265
|
+
export declare type RunCollectedCaseOptions<TContext = undefined> = Omit<Core.RunCollectedCaseOptions<TContext>, 'reportScopeId' | 'teardownTimeoutMs' | 'resolveNode' | 'beforeEach' | 'afterEach' | 'onStepResult' | 'onResult'> & {
|
|
266
266
|
resolveNode(name: string): NodeDefinition<any, any, TContext>;
|
|
267
267
|
beforeEach?: readonly NormalizedStep[];
|
|
268
268
|
afterEach?: readonly NormalizedStep[];
|
|
@@ -272,7 +272,7 @@ export declare type RunCollectedCaseOptions<TContext = undefined> = Omit<Core.Ru
|
|
|
272
272
|
|
|
273
273
|
export declare const runWorkflowDocument: <TContext = undefined>(document: CollectedWorkflowDocument, options: RunWorkflowDocumentOptions<TContext>) => Promise<WorkflowDocumentExecutionResult>;
|
|
274
274
|
|
|
275
|
-
export declare type RunWorkflowDocumentOptions<TContext = undefined> = Omit<Core.RunWorkflowDocumentOptions<TContext>, 'documentSetup' | 'documentAttemptIndex' | 'resolveCaseReportScopeId' | 'resolveNode' | 'onStepResult' | 'onCaseStart' | 'isFatalError' | 'onCaseResult' | 'onCaseOutcome' | 'onDocumentResult' | 'createCaseRunId' | 'createDocumentRunId'> & {
|
|
275
|
+
export declare type RunWorkflowDocumentOptions<TContext = undefined> = Omit<Core.RunWorkflowDocumentOptions<TContext>, 'documentSetup' | 'setupTimeoutMs' | 'teardownTimeoutMs' | 'documentAttemptIndex' | 'resolveCaseReportScopeId' | 'resolveNode' | 'onStepResult' | 'onCaseStart' | 'isFatalError' | 'onCaseResult' | 'onCaseOutcome' | 'onDocumentResult' | 'createCaseRunId' | 'createDocumentRunId'> & {
|
|
276
276
|
resolveNode(name: string): NodeDefinition<any, any, TContext>;
|
|
277
277
|
onStepResult?: StepResultHandler;
|
|
278
278
|
onCaseStart?(collectedCase: CollectedCase): Core.Awaitable<void>;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@midscene/test",
|
|
3
3
|
"description": "Midscene Test: an extensible YAML testing framework and Node SDK.",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.16.1",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/web-infra-dev/midscene.git",
|
|
@@ -58,8 +58,8 @@
|
|
|
58
58
|
"tsx": "^4.19.2",
|
|
59
59
|
"yargs": "17.7.3",
|
|
60
60
|
"zod": "^3.25.1",
|
|
61
|
-
"@midscene/core": "1.
|
|
62
|
-
"@midscene/shared": "1.
|
|
61
|
+
"@midscene/core": "1.16.1",
|
|
62
|
+
"@midscene/shared": "1.16.1"
|
|
63
63
|
},
|
|
64
64
|
"devDependencies": {
|
|
65
65
|
"@rslib/core": "^0.18.3",
|
|
@@ -71,20 +71,20 @@
|
|
|
71
71
|
"puppeteer": "24.6.0",
|
|
72
72
|
"typescript": "^5.8.3",
|
|
73
73
|
"vitest": "3.0.5",
|
|
74
|
-
"@midscene/android": "1.
|
|
75
|
-
"@midscene/harmony": "1.
|
|
76
|
-
"@midscene/
|
|
77
|
-
"@midscene/
|
|
78
|
-
"@midscene/web": "1.
|
|
74
|
+
"@midscene/android": "1.16.1",
|
|
75
|
+
"@midscene/harmony": "1.16.1",
|
|
76
|
+
"@midscene/ios": "1.16.1",
|
|
77
|
+
"@midscene/computer": "1.16.1",
|
|
78
|
+
"@midscene/web": "1.16.1"
|
|
79
79
|
},
|
|
80
80
|
"peerDependencies": {
|
|
81
81
|
"playwright": "^1.45.0",
|
|
82
82
|
"puppeteer": "24.6.0",
|
|
83
|
-
"@midscene/
|
|
84
|
-
"@midscene/
|
|
85
|
-
"@midscene/
|
|
86
|
-
"@midscene/
|
|
87
|
-
"@midscene/
|
|
83
|
+
"@midscene/computer": "1.16.1",
|
|
84
|
+
"@midscene/ios": "1.16.1",
|
|
85
|
+
"@midscene/android": "1.16.1",
|
|
86
|
+
"@midscene/harmony": "1.16.1",
|
|
87
|
+
"@midscene/web": "1.16.1"
|
|
88
88
|
},
|
|
89
89
|
"peerDependenciesMeta": {
|
|
90
90
|
"@midscene/android": {
|