intellitester 0.2.11 → 0.2.13

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.
@@ -1,227 +1,258 @@
1
1
  {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "title": "IntelliTester Workflow Definition",
4
- "description": "Schema for IntelliTester workflow files (*.workflow.yaml) that orchestrate multiple tests",
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "description": "Schema for IntelliTester workflow files that orchestrate multiple tests",
5
4
  "type": "object",
6
- "required": ["name", "tests"],
7
5
  "properties": {
8
6
  "name": {
9
- "type": "string",
10
- "minLength": 1,
11
7
  "description": "The name of the workflow",
12
- "examples": ["Full E2E Suite", "User Onboarding Flow", "Payment Integration Tests"]
8
+ "type": "string",
9
+ "minLength": 1
13
10
  },
14
11
  "platform": {
15
- "type": "string",
16
- "enum": ["web", "android", "ios"],
17
12
  "description": "The platform to run the workflow on",
18
- "default": "web"
19
- },
20
- "continueOnFailure": {
21
- "type": "boolean",
22
- "description": "Continue running subsequent tests even if a test fails",
23
- "default": false
13
+ "default": "web",
14
+ "type": "string",
15
+ "enum": [
16
+ "web",
17
+ "android",
18
+ "ios"
19
+ ]
24
20
  },
25
21
  "config": {
26
- "type": "object",
27
22
  "description": "Workflow-level configuration that applies to all tests",
23
+ "type": "object",
28
24
  "properties": {
29
25
  "web": {
30
- "type": "object",
31
26
  "description": "Web platform configuration for the workflow",
27
+ "type": "object",
32
28
  "properties": {
33
29
  "baseUrl": {
34
- "type": "string",
35
- "format": "uri",
36
30
  "description": "Base URL for all tests in this workflow",
37
- "examples": ["https://example.com", "http://localhost:3000"]
31
+ "type": "string",
32
+ "minLength": 1,
33
+ "format": "uri"
38
34
  },
39
35
  "browser": {
40
- "type": "string",
41
- "enum": ["chromium", "firefox", "webkit"],
42
36
  "description": "Browser to use for all web tests",
43
- "default": "chromium"
37
+ "type": "string",
38
+ "enum": [
39
+ "chromium",
40
+ "firefox",
41
+ "webkit"
42
+ ]
44
43
  },
45
44
  "headless": {
46
- "type": "boolean",
47
45
  "description": "Run browser in headless mode",
48
- "default": true
46
+ "type": "boolean"
49
47
  }
50
- }
48
+ },
49
+ "additionalProperties": false
51
50
  },
52
51
  "appwrite": {
53
- "type": "object",
54
52
  "description": "Appwrite backend configuration for the workflow",
53
+ "type": "object",
55
54
  "properties": {
56
55
  "endpoint": {
57
- "type": "string",
58
- "format": "uri",
59
56
  "description": "Appwrite API endpoint",
60
- "examples": ["https://cloud.appwrite.io/v1"]
57
+ "type": "string",
58
+ "minLength": 1,
59
+ "format": "uri"
61
60
  },
62
61
  "projectId": {
62
+ "description": "Appwrite project ID",
63
63
  "type": "string",
64
- "minLength": 1,
65
- "description": "Appwrite project ID"
64
+ "minLength": 1
66
65
  },
67
66
  "apiKey": {
67
+ "description": "Appwrite API key",
68
68
  "type": "string",
69
- "minLength": 1,
70
- "description": "Appwrite API key"
69
+ "minLength": 1
71
70
  },
72
71
  "cleanup": {
73
- "type": "boolean",
74
72
  "description": "Enable automatic cleanup of created resources",
75
- "default": true
73
+ "default": true,
74
+ "type": "boolean"
76
75
  },
77
76
  "cleanupOnFailure": {
78
- "type": "boolean",
79
77
  "description": "Clean up resources even when tests fail",
80
- "default": true
78
+ "default": true,
79
+ "type": "boolean"
81
80
  }
82
81
  },
83
- "required": ["endpoint", "projectId", "apiKey"]
82
+ "required": [
83
+ "endpoint",
84
+ "projectId",
85
+ "apiKey",
86
+ "cleanup",
87
+ "cleanupOnFailure"
88
+ ],
89
+ "additionalProperties": false
84
90
  },
85
91
  "cleanup": {
86
- "type": "object",
87
92
  "description": "Resource cleanup configuration",
93
+ "type": "object",
88
94
  "properties": {
89
95
  "provider": {
90
- "type": "string",
91
96
  "description": "Cleanup provider to use",
92
- "examples": ["appwrite", "postgres", "mysql", "sqlite"]
97
+ "type": "string"
93
98
  },
94
99
  "parallel": {
95
- "type": "boolean",
96
100
  "description": "Run cleanup tasks in parallel",
97
- "default": false
101
+ "default": false,
102
+ "type": "boolean"
98
103
  },
99
104
  "retries": {
100
- "type": "integer",
101
- "minimum": 1,
102
- "maximum": 10,
103
105
  "description": "Number of retry attempts for failed cleanup operations",
104
- "default": 3
106
+ "default": 3,
107
+ "type": "number",
108
+ "minimum": 1,
109
+ "maximum": 10
105
110
  },
106
111
  "types": {
107
- "type": "object",
108
112
  "description": "Map resource types to cleanup handler methods",
109
- "additionalProperties": {
113
+ "type": "object",
114
+ "propertyNames": {
110
115
  "type": "string"
111
116
  },
112
- "examples": [
113
- {
114
- "row": "appwrite.deleteRow",
115
- "team": "appwrite.deleteTeam",
116
- "stripe_customer": "stripe.deleteCustomer"
117
- }
118
- ]
117
+ "additionalProperties": {
118
+ "type": "string"
119
+ }
119
120
  },
120
121
  "handlers": {
121
- "type": "array",
122
122
  "description": "Explicit paths to custom cleanup handler files",
123
+ "type": "array",
123
124
  "items": {
124
125
  "type": "string"
125
- },
126
- "examples": [["./src/cleanup/stripe.ts", "./tests/cleanup/custom.ts"]]
126
+ }
127
127
  },
128
128
  "discover": {
129
- "type": "object",
130
129
  "description": "Auto-discovery configuration for cleanup handlers",
130
+ "type": "object",
131
131
  "properties": {
132
132
  "enabled": {
133
- "type": "boolean",
134
133
  "description": "Enable auto-discovery of cleanup handlers",
135
- "default": true
134
+ "default": true,
135
+ "type": "boolean"
136
136
  },
137
137
  "paths": {
138
- "type": "array",
139
138
  "description": "Directories to search for cleanup handlers",
139
+ "default": [
140
+ "./tests/cleanup"
141
+ ],
142
+ "type": "array",
140
143
  "items": {
141
144
  "type": "string"
142
- },
143
- "default": ["./tests/cleanup"]
145
+ }
144
146
  },
145
147
  "pattern": {
146
- "type": "string",
147
148
  "description": "Glob pattern for handler files",
148
- "default": "**/*.ts"
149
+ "default": "**/*.ts",
150
+ "type": "string"
149
151
  }
150
- }
152
+ },
153
+ "required": [
154
+ "enabled",
155
+ "paths",
156
+ "pattern"
157
+ ],
158
+ "additionalProperties": false
151
159
  }
152
- }
160
+ },
161
+ "required": [
162
+ "parallel",
163
+ "retries"
164
+ ],
165
+ "additionalProperties": {}
153
166
  },
154
167
  "webServer": {
155
- "type": "object",
156
168
  "description": "Configuration for starting a web server before tests",
157
- "required": ["url"],
169
+ "type": "object",
158
170
  "properties": {
159
171
  "command": {
160
- "type": "string",
161
- "minLength": 1,
162
172
  "description": "Command to start the web server",
163
- "examples": ["npm run dev", "pnpm start", "python -m http.server"]
173
+ "type": "string",
174
+ "minLength": 1
164
175
  },
165
176
  "auto": {
166
- "type": "boolean",
167
177
  "description": "Auto-detect server start command from package.json",
168
- "default": false
178
+ "type": "boolean"
169
179
  },
170
180
  "url": {
171
- "type": "string",
172
- "format": "uri",
173
181
  "description": "URL to wait for before starting tests",
174
- "examples": ["http://localhost:3000"]
182
+ "type": "string",
183
+ "minLength": 1,
184
+ "format": "uri"
175
185
  },
176
186
  "reuseExistingServer": {
177
- "type": "boolean",
178
187
  "description": "Use existing server if already running at the URL",
179
- "default": true
188
+ "default": true,
189
+ "type": "boolean"
180
190
  },
181
191
  "timeout": {
182
- "type": "integer",
183
- "minimum": 1,
184
192
  "description": "Timeout in milliseconds to wait for server to start",
185
- "default": 30000
193
+ "default": 30000,
194
+ "type": "integer",
195
+ "exclusiveMinimum": 0,
196
+ "maximum": 9007199254740991
186
197
  }
187
- }
198
+ },
199
+ "required": [
200
+ "url",
201
+ "reuseExistingServer",
202
+ "timeout"
203
+ ],
204
+ "additionalProperties": false
188
205
  }
189
- }
206
+ },
207
+ "additionalProperties": false
208
+ },
209
+ "continueOnFailure": {
210
+ "description": "Continue running subsequent tests even if a test fails",
211
+ "default": false,
212
+ "type": "boolean"
190
213
  },
191
214
  "tests": {
192
- "type": "array",
193
215
  "description": "List of test files to execute in this workflow",
194
216
  "minItems": 1,
217
+ "type": "array",
195
218
  "items": {
219
+ "description": "Reference to a test file",
196
220
  "type": "object",
197
- "required": ["file"],
198
221
  "properties": {
199
222
  "file": {
200
- "type": "string",
201
- "minLength": 1,
202
223
  "description": "Path to the test file relative to the workflow file",
203
- "examples": ["./login.test.yaml", "./tests/signup.test.yaml", "../shared/auth.test.yaml"]
224
+ "type": "string",
225
+ "minLength": 1
204
226
  },
205
227
  "id": {
206
- "type": "string",
207
228
  "description": "Optional ID for referencing this test in variables or dependencies",
208
- "examples": ["login", "signup", "checkout"]
229
+ "type": "string",
230
+ "minLength": 1
209
231
  },
210
232
  "variables": {
211
- "type": "object",
212
233
  "description": "Variables to inject or override for this specific test",
213
- "additionalProperties": {
234
+ "type": "object",
235
+ "propertyNames": {
214
236
  "type": "string"
215
237
  },
216
- "examples": [
217
- {
218
- "BASE_URL": "https://staging.example.com",
219
- "TEST_USER": "workflow-user@example.com"
220
- }
221
- ]
238
+ "additionalProperties": {
239
+ "type": "string"
240
+ }
222
241
  }
223
- }
242
+ },
243
+ "required": [
244
+ "file"
245
+ ],
246
+ "additionalProperties": false
224
247
  }
225
248
  }
226
- }
249
+ },
250
+ "required": [
251
+ "name",
252
+ "platform",
253
+ "continueOnFailure",
254
+ "tests"
255
+ ],
256
+ "additionalProperties": false,
257
+ "title": "IntelliTester Workflow Definition"
227
258
  }