@autoweb/domain-models 1.0.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.
- package/README.md +100 -0
- package/index.d.ts +594 -0
- package/index.js +3 -0
- package/package.json +55 -0
- package/python-models/__init__.py +68 -0
- package/python-models/action-configs.py +1112 -0
- package/python-models/build/lib/floweb_models/__init__.py +194 -0
- package/python-models/build/lib/floweb_models/action_configs.py +783 -0
- package/python-models/build/lib/floweb_models/debug.py +209 -0
- package/python-models/build/lib/floweb_models/debug_models.py +141 -0
- package/python-models/build/lib/floweb_models/environment.py +158 -0
- package/python-models/build/lib/floweb_models/execution_results.py +208 -0
- package/python-models/build/lib/floweb_models/flow.py +345 -0
- package/python-models/build/lib/floweb_models/flow_validation.py +316 -0
- package/python-models/build/lib/floweb_models/parallel_execution.py +258 -0
- package/python-models/build/lib/floweb_models/performance_test.py +605 -0
- package/python-models/build/lib/floweb_models/websocket_communication.py +697 -0
- package/python-models/debug.py +209 -0
- package/python-models/dist/floweb_domain_models-1.0.0-py3-none-any.whl +0 -0
- package/python-models/environment.py +158 -0
- package/python-models/execution-results.py +208 -0
- package/python-models/flow-validation.py +316 -0
- package/python-models/flow.py +369 -0
- package/python-models/floweb_domain_models.egg-info/PKG-INFO +9 -0
- package/python-models/floweb_domain_models.egg-info/SOURCES.txt +16 -0
- package/python-models/floweb_domain_models.egg-info/dependency_links.txt +1 -0
- package/python-models/floweb_domain_models.egg-info/requires.txt +1 -0
- package/python-models/floweb_domain_models.egg-info/top_level.txt +1 -0
- package/python-models/floweb_models/__init__.py +194 -0
- package/python-models/floweb_models/__pycache__/__init__.cpython-312.pyc +0 -0
- package/python-models/floweb_models/__pycache__/action_configs.cpython-312.pyc +0 -0
- package/python-models/floweb_models/__pycache__/debug.cpython-312.pyc +0 -0
- package/python-models/floweb_models/__pycache__/debug_models.cpython-312.pyc +0 -0
- package/python-models/floweb_models/__pycache__/environment.cpython-312.pyc +0 -0
- package/python-models/floweb_models/__pycache__/execution_results.cpython-312.pyc +0 -0
- package/python-models/floweb_models/__pycache__/flow.cpython-312.pyc +0 -0
- package/python-models/floweb_models/__pycache__/flow_validation.cpython-312.pyc +0 -0
- package/python-models/floweb_models/__pycache__/parallel_execution.cpython-312.pyc +0 -0
- package/python-models/floweb_models/__pycache__/performance_test.cpython-312.pyc +0 -0
- package/python-models/floweb_models/__pycache__/websocket_communication.cpython-312.pyc +0 -0
- package/python-models/floweb_models/action_configs.py +1062 -0
- package/python-models/floweb_models/debug.py +209 -0
- package/python-models/floweb_models/debug_models.py +141 -0
- package/python-models/floweb_models/environment.py +158 -0
- package/python-models/floweb_models/execution_results.py +208 -0
- package/python-models/floweb_models/flow.py +345 -0
- package/python-models/floweb_models/flow_validation.py +316 -0
- package/python-models/floweb_models/parallel_execution.py +229 -0
- package/python-models/floweb_models/performance_test.py +605 -0
- package/python-models/floweb_models/websocket_communication.py +697 -0
- package/python-models/floweb_models.egg-info/PKG-INFO +9 -0
- package/python-models/floweb_models.egg-info/SOURCES.txt +16 -0
- package/python-models/floweb_models.egg-info/dependency_links.txt +1 -0
- package/python-models/floweb_models.egg-info/requires.txt +1 -0
- package/python-models/floweb_models.egg-info/top_level.txt +1 -0
- package/python-models/parallel-execution.py +475 -0
- package/python-models/performance-test.py +605 -0
- package/python-models/setup.py +13 -0
- package/python-models/websocket-communication.py +697 -0
- package/schemas/action-configs.json +1501 -0
- package/schemas/debug.json +203 -0
- package/schemas/environment.json +165 -0
- package/schemas/execution-results.json +209 -0
- package/schemas/flow-validation.json +311 -0
- package/schemas/flow.json +381 -0
- package/schemas/parallel-execution.json +219 -0
- package/schemas/performance-test.json +600 -0
- package/schemas/websocket-communication.json +1118 -0
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: parallel-execution.json
|
|
3
|
+
# timestamp: 2026-02-04T17:10:20+00:00
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from enum import StrEnum
|
|
8
|
+
from typing import Any
|
|
9
|
+
|
|
10
|
+
from pydantic import AwareDatetime, BaseModel, Field, RootModel
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class Mode(StrEnum):
|
|
14
|
+
"""
|
|
15
|
+
Execution mode
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
full = 'full'
|
|
19
|
+
partial = 'partial'
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class Flow(RootModel[Any]):
|
|
23
|
+
root: Any
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class Position(BaseModel):
|
|
27
|
+
x: float = Field(..., description='X coordinate')
|
|
28
|
+
y: float = Field(..., description='Y coordinate')
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class ActionData(BaseModel):
|
|
32
|
+
label: str = Field(..., description='Human-readable label')
|
|
33
|
+
type: str = Field(..., description='Action type identifier')
|
|
34
|
+
config: dict[str, Any] = Field(..., description='Action-specific configuration')
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
class Action(BaseModel):
|
|
38
|
+
id: str = Field(..., description='Unique action identifier')
|
|
39
|
+
type: str = Field(..., description='Action type')
|
|
40
|
+
position: Position
|
|
41
|
+
data: ActionData
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
class Edge(BaseModel):
|
|
45
|
+
id: str = Field(..., description='Unique edge identifier')
|
|
46
|
+
source: str = Field(..., description='Source action ID')
|
|
47
|
+
source_handle: str | None = Field(
|
|
48
|
+
None, alias='sourceHandle', description='Source handle identifier'
|
|
49
|
+
)
|
|
50
|
+
target: str = Field(..., description='Target action ID')
|
|
51
|
+
target_handle: str | None = Field(
|
|
52
|
+
None, alias='targetHandle', description='Target handle identifier'
|
|
53
|
+
)
|
|
54
|
+
type: str | None = Field('step', description='Edge type')
|
|
55
|
+
data: dict[str, Any] | None = Field(None, description='Additional edge data')
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
class Zoom(BaseModel):
|
|
59
|
+
x: float = Field(..., description='Pan X position')
|
|
60
|
+
y: float = Field(..., description='Pan Y position')
|
|
61
|
+
zoom: float = Field(..., description='Zoom level')
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
class Variable(BaseModel):
|
|
65
|
+
id: str = Field(..., description='Variable identifier')
|
|
66
|
+
name: str = Field(..., description='Variable name')
|
|
67
|
+
type: str = Field(..., description='Variable data type')
|
|
68
|
+
value: str = Field(..., description='Variable value')
|
|
69
|
+
description: str | None = Field(None, description='Optional description')
|
|
70
|
+
is_output: bool | None = Field(
|
|
71
|
+
None, alias='isOutput', description='Whether this is an output variable'
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
class FlowVariables(BaseModel):
|
|
76
|
+
input: list[Variable] = Field(..., description='Input variables')
|
|
77
|
+
output: list[Variable] = Field(..., description='Output variables')
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
class FlowParameters(BaseModel):
|
|
81
|
+
input: list[Variable] = Field(..., description='Input parameters')
|
|
82
|
+
output: list[Variable] = Field(..., description='Output parameters')
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
class EnvironmentVariable(BaseModel):
|
|
86
|
+
id: str = Field(..., description='Variable identifier')
|
|
87
|
+
name: str = Field(..., description='Variable name')
|
|
88
|
+
type: str = Field(..., description='Variable data type')
|
|
89
|
+
value: str = Field(..., description='Variable value')
|
|
90
|
+
description: str | None = Field(None, description='Optional description')
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
class Environment(BaseModel):
|
|
94
|
+
id: str = Field(..., description='Environment identifier')
|
|
95
|
+
name: str = Field(..., description='Environment name')
|
|
96
|
+
variables: list[EnvironmentVariable] = Field(
|
|
97
|
+
..., description='Environment variables'
|
|
98
|
+
)
|
|
99
|
+
description: str | None = Field(None, description='Environment description')
|
|
100
|
+
is_default: bool | None = Field(
|
|
101
|
+
None, alias='isDefault', description='Whether this is the default environment'
|
|
102
|
+
)
|
|
103
|
+
is_active: bool | None = Field(
|
|
104
|
+
None, alias='isActive', description='Whether this environment is active'
|
|
105
|
+
)
|
|
106
|
+
created_at: AwareDatetime = Field(
|
|
107
|
+
..., alias='createdAt', description='Creation timestamp'
|
|
108
|
+
)
|
|
109
|
+
updated_at: AwareDatetime = Field(
|
|
110
|
+
..., alias='updatedAt', description='Last update timestamp'
|
|
111
|
+
)
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
class GlobalVariable(BaseModel):
|
|
115
|
+
id: str = Field(..., description='Variable identifier')
|
|
116
|
+
name: str = Field(..., description='Variable name')
|
|
117
|
+
type: str = Field(..., description='Variable data type')
|
|
118
|
+
value: str = Field(..., description='Variable value')
|
|
119
|
+
description: str | None = Field(None, description='Optional description')
|
|
120
|
+
created_at: AwareDatetime = Field(
|
|
121
|
+
..., alias='createdAt', description='Creation timestamp'
|
|
122
|
+
)
|
|
123
|
+
updated_at: AwareDatetime = Field(
|
|
124
|
+
..., alias='updatedAt', description='Last update timestamp'
|
|
125
|
+
)
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
class Status(StrEnum):
|
|
129
|
+
"""
|
|
130
|
+
Execution status
|
|
131
|
+
"""
|
|
132
|
+
|
|
133
|
+
completed = 'completed'
|
|
134
|
+
error = 'error'
|
|
135
|
+
stopped = 'stopped'
|
|
136
|
+
running = 'running'
|
|
137
|
+
pending = 'pending'
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
class FlowExecutionResult(BaseModel):
|
|
141
|
+
"""
|
|
142
|
+
Result of a single test execution
|
|
143
|
+
"""
|
|
144
|
+
|
|
145
|
+
flow_id: str = Field(..., description='ID of the executed flow')
|
|
146
|
+
flow_name: str = Field(..., description='Name of the executed flow')
|
|
147
|
+
success: bool = Field(..., description='Whether the test passed')
|
|
148
|
+
status: Status = Field(..., description='Execution status')
|
|
149
|
+
total_actions: int = Field(..., description='Total actions in the flow', ge=0)
|
|
150
|
+
executed_actions: int = Field(..., description='Number of actions executed', ge=0)
|
|
151
|
+
successful_actions: int = Field(
|
|
152
|
+
..., description='Number of successful actions', ge=0
|
|
153
|
+
)
|
|
154
|
+
duration_seconds: float = Field(
|
|
155
|
+
..., description='Total execution time in seconds', ge=0.0
|
|
156
|
+
)
|
|
157
|
+
report: dict[str, Any] = Field(..., description='Full flow report')
|
|
158
|
+
error: str | None = Field(None, description='Error message if failed')
|
|
159
|
+
metadata: dict[str, Any] | None = Field({}, description='Additional test metadata')
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
class BrowserMode(StrEnum):
|
|
163
|
+
"""
|
|
164
|
+
Browser mode
|
|
165
|
+
"""
|
|
166
|
+
|
|
167
|
+
headful = 'headful'
|
|
168
|
+
headless = 'headless'
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
class Browser(StrEnum):
|
|
172
|
+
"""
|
|
173
|
+
Browser to use for execution
|
|
174
|
+
"""
|
|
175
|
+
|
|
176
|
+
chrome = 'chrome'
|
|
177
|
+
firefox = 'firefox'
|
|
178
|
+
safari = 'safari'
|
|
179
|
+
edge = 'edge'
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
class ParallelTestsResult(BaseModel):
|
|
183
|
+
"""
|
|
184
|
+
Result of parallel test execution
|
|
185
|
+
"""
|
|
186
|
+
|
|
187
|
+
total_tests: int = Field(..., description='Total number of tests', ge=0)
|
|
188
|
+
passed_tests: int = Field(..., description='Number of passed tests', ge=0)
|
|
189
|
+
failed_tests: int = Field(..., description='Number of failed tests', ge=0)
|
|
190
|
+
skipped_tests: int | None = Field(0, description='Number of skipped tests', ge=0)
|
|
191
|
+
total_duration_seconds: float = Field(
|
|
192
|
+
..., description='Total execution time', ge=0.0
|
|
193
|
+
)
|
|
194
|
+
results: list[FlowExecutionResult] = Field(
|
|
195
|
+
..., description='Individual test results'
|
|
196
|
+
)
|
|
197
|
+
success: bool = Field(..., description='Overall success status')
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
class FlowExecutionRequest(BaseModel):
|
|
201
|
+
"""
|
|
202
|
+
Request to execute a single test/flow
|
|
203
|
+
"""
|
|
204
|
+
|
|
205
|
+
flow: Flow = Field(..., description='Flow to execute with all required fields')
|
|
206
|
+
mode: Mode | None = Field('full', description='Execution mode')
|
|
207
|
+
recording: dict[str, Any] | None = Field(
|
|
208
|
+
None, description='Recording configuration'
|
|
209
|
+
)
|
|
210
|
+
metadata: dict[str, Any] | None = Field({}, description='Additional test metadata')
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
class ParallelTestsRequest(BaseModel):
|
|
214
|
+
"""
|
|
215
|
+
Request to execute multiple tests in parallel
|
|
216
|
+
"""
|
|
217
|
+
|
|
218
|
+
tests: list[FlowExecutionRequest] = Field(
|
|
219
|
+
..., description='List of tests to execute'
|
|
220
|
+
)
|
|
221
|
+
data: dict[str, Any] | None = Field(
|
|
222
|
+
None,
|
|
223
|
+
description='Shared data containing environment and globalVariables for all tests',
|
|
224
|
+
)
|
|
225
|
+
max_parallel: int | None = Field(
|
|
226
|
+
10, description='Maximum number of parallel executions', ge=1, le=50
|
|
227
|
+
)
|
|
228
|
+
stop_on_failure: bool | None = Field(
|
|
229
|
+
False, description='Stop all tests if one fails'
|
|
230
|
+
)
|
|
231
|
+
cleanup_after: bool | None = Field(
|
|
232
|
+
True, description='Cleanup resources after execution'
|
|
233
|
+
)
|
|
234
|
+
browser_mode: BrowserMode | None = Field('headful', description='Browser mode')
|
|
235
|
+
browser: Browser | None = Field(
|
|
236
|
+
'chrome', description='Browser to use for execution'
|
|
237
|
+
)
|
|
238
|
+
incognito: bool | None = Field(
|
|
239
|
+
False, description='Run tests in incognito/private mode'
|
|
240
|
+
)
|
|
241
|
+
max_retries: int | None = Field(
|
|
242
|
+
3, description='Maximum retries for transient failures', ge=0, le=10
|
|
243
|
+
)
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
class ParallelExecution(BaseModel):
|
|
247
|
+
requests: list[ParallelTestsRequest] | None = None
|
|
248
|
+
results: list[ParallelTestsResult] | None = None
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
class ParallelExecutionModels(BaseModel):
|
|
252
|
+
"""
|
|
253
|
+
Schema for parallel test execution requests and results
|
|
254
|
+
"""
|
|
255
|
+
|
|
256
|
+
parallel_execution: ParallelExecution | None = Field(
|
|
257
|
+
None, alias='parallelExecution'
|
|
258
|
+
)
|