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,517 +1,668 @@
1
1
  {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "title": "IntelliTester Test Definition",
4
- "description": "Schema for IntelliTester test definition files (*.test.yaml)",
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "description": "Schema for IntelliTester test definition files",
5
4
  "type": "object",
6
- "required": ["name", "platform", "steps"],
7
5
  "properties": {
8
6
  "name": {
9
- "type": "string",
10
- "minLength": 1,
11
7
  "description": "The name of the test",
12
- "examples": ["User Login Test", "Checkout Flow", "Sign Up Process"]
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 test on",
18
- "default": "web"
13
+ "type": "string",
14
+ "enum": [
15
+ "web",
16
+ "android",
17
+ "ios"
18
+ ]
19
19
  },
20
20
  "variables": {
21
- "type": "object",
22
21
  "description": "Variables that can be referenced in test steps using ${VARIABLE_NAME} syntax",
23
- "additionalProperties": {
22
+ "type": "object",
23
+ "propertyNames": {
24
24
  "type": "string"
25
25
  },
26
- "examples": [
27
- {
28
- "BASE_URL": "https://example.com",
29
- "TEST_EMAIL": "test@example.com"
30
- }
31
- ]
26
+ "additionalProperties": {
27
+ "type": "string"
28
+ }
32
29
  },
33
30
  "config": {
34
- "type": "object",
35
31
  "description": "Test-specific configuration that overrides global settings",
32
+ "type": "object",
36
33
  "properties": {
37
34
  "defaults": {
35
+ "description": "Default settings that apply to all tests unless overridden",
38
36
  "type": "object",
39
- "description": "Default settings for this test",
40
37
  "properties": {
41
38
  "timeout": {
39
+ "description": "Default timeout in milliseconds for all actions",
42
40
  "type": "integer",
43
- "minimum": 1,
44
- "description": "Default timeout in milliseconds for actions",
45
- "examples": [30000, 60000]
41
+ "exclusiveMinimum": 0,
42
+ "maximum": 9007199254740991
46
43
  },
47
44
  "screenshots": {
45
+ "description": "When to capture screenshots during test execution",
48
46
  "type": "string",
49
- "enum": ["on-failure", "always", "never"],
50
- "description": "When to take screenshots during test execution",
51
- "default": "on-failure"
47
+ "enum": [
48
+ "on-failure",
49
+ "always",
50
+ "never"
51
+ ]
52
52
  }
53
- }
53
+ },
54
+ "additionalProperties": false
54
55
  },
55
56
  "web": {
56
- "type": "object",
57
57
  "description": "Web platform configuration",
58
+ "type": "object",
58
59
  "properties": {
59
60
  "baseUrl": {
60
- "type": "string",
61
- "format": "uri",
62
61
  "description": "Base URL for the web application",
63
- "examples": ["https://example.com", "http://localhost:3000"]
62
+ "type": "string",
63
+ "minLength": 1,
64
+ "format": "uri"
64
65
  },
65
66
  "browser": {
66
- "type": "string",
67
67
  "description": "Browser to use for testing",
68
- "examples": ["chromium", "firefox", "webkit"]
68
+ "type": "string"
69
69
  },
70
70
  "headless": {
71
- "type": "boolean",
72
71
  "description": "Run browser in headless mode",
73
- "default": true
72
+ "type": "boolean"
74
73
  },
75
74
  "timeout": {
76
- "type": "integer",
77
- "minimum": 1,
78
75
  "description": "Timeout in milliseconds for web actions",
79
- "examples": [30000]
76
+ "type": "integer",
77
+ "exclusiveMinimum": 0,
78
+ "maximum": 9007199254740991
80
79
  }
81
- }
80
+ },
81
+ "additionalProperties": false
82
82
  },
83
83
  "android": {
84
- "type": "object",
85
84
  "description": "Android platform configuration",
85
+ "type": "object",
86
86
  "properties": {
87
87
  "appId": {
88
- "type": "string",
89
88
  "description": "Android application ID",
90
- "examples": ["com.example.app"]
89
+ "type": "string"
91
90
  },
92
91
  "device": {
93
- "type": "string",
94
92
  "description": "Device name or ID to run tests on",
95
- "examples": ["Pixel_4_API_30"]
93
+ "type": "string"
96
94
  }
97
- }
95
+ },
96
+ "additionalProperties": false
98
97
  },
99
98
  "ios": {
100
- "type": "object",
101
99
  "description": "iOS platform configuration",
100
+ "type": "object",
102
101
  "properties": {
103
102
  "bundleId": {
104
- "type": "string",
105
103
  "description": "iOS bundle identifier",
106
- "examples": ["com.example.app"]
104
+ "type": "string"
107
105
  },
108
106
  "simulator": {
109
- "type": "string",
110
107
  "description": "Simulator name to run tests on",
111
- "examples": ["iPhone 14 Pro"]
108
+ "type": "string"
112
109
  }
113
- }
110
+ },
111
+ "additionalProperties": false
114
112
  },
115
113
  "email": {
116
- "type": "object",
117
114
  "description": "Email testing configuration",
115
+ "type": "object",
118
116
  "properties": {
119
117
  "provider": {
118
+ "description": "Email testing provider",
120
119
  "type": "string",
121
- "enum": ["inbucket"],
122
- "description": "Email testing provider"
120
+ "const": "inbucket"
123
121
  },
124
122
  "endpoint": {
125
- "type": "string",
126
- "format": "uri",
127
123
  "description": "Email service endpoint URL",
128
- "examples": ["http://localhost:9000"]
124
+ "type": "string",
125
+ "minLength": 1,
126
+ "format": "uri"
129
127
  }
130
128
  },
131
- "required": ["provider"]
129
+ "required": [
130
+ "provider"
131
+ ],
132
+ "additionalProperties": false
132
133
  },
133
134
  "appwrite": {
134
- "type": "object",
135
135
  "description": "Appwrite backend configuration",
136
+ "type": "object",
136
137
  "properties": {
137
138
  "endpoint": {
138
- "type": "string",
139
- "format": "uri",
140
139
  "description": "Appwrite API endpoint",
141
- "examples": ["https://cloud.appwrite.io/v1"]
140
+ "type": "string",
141
+ "minLength": 1,
142
+ "format": "uri"
142
143
  },
143
144
  "projectId": {
145
+ "description": "Appwrite project ID",
144
146
  "type": "string",
145
- "minLength": 1,
146
- "description": "Appwrite project ID"
147
+ "minLength": 1
147
148
  },
148
149
  "apiKey": {
150
+ "description": "Appwrite API key with appropriate permissions",
149
151
  "type": "string",
150
- "minLength": 1,
151
- "description": "Appwrite API key"
152
+ "minLength": 1
152
153
  },
153
154
  "cleanup": {
154
- "type": "boolean",
155
155
  "description": "Enable automatic cleanup of created resources",
156
- "default": true
156
+ "type": "boolean"
157
157
  },
158
158
  "cleanupOnFailure": {
159
- "type": "boolean",
160
159
  "description": "Clean up resources even when test fails",
161
- "default": true
160
+ "type": "boolean"
162
161
  }
163
162
  },
164
- "required": ["endpoint", "projectId", "apiKey"]
163
+ "required": [
164
+ "endpoint",
165
+ "projectId",
166
+ "apiKey"
167
+ ],
168
+ "additionalProperties": false
165
169
  }
166
- }
170
+ },
171
+ "additionalProperties": false
167
172
  },
168
173
  "steps": {
169
- "type": "array",
170
174
  "description": "The sequence of actions to execute in this test",
171
175
  "minItems": 1,
176
+ "type": "array",
172
177
  "items": {
173
178
  "oneOf": [
174
179
  {
175
- "type": "object",
176
180
  "description": "Navigate to a URL",
177
- "required": ["type", "value"],
181
+ "type": "object",
178
182
  "properties": {
179
183
  "type": {
180
184
  "type": "string",
181
185
  "const": "navigate"
182
186
  },
183
187
  "value": {
184
- "type": "string",
185
- "minLength": 1,
186
188
  "description": "URL or path to navigate to",
187
- "examples": ["/login", "https://example.com/signup"]
189
+ "type": "string",
190
+ "minLength": 1
188
191
  }
189
192
  },
193
+ "required": [
194
+ "type",
195
+ "value"
196
+ ],
190
197
  "additionalProperties": false
191
198
  },
192
199
  {
193
- "type": "object",
194
200
  "description": "Click or tap on an element",
195
- "required": ["type", "target"],
201
+ "type": "object",
196
202
  "properties": {
197
203
  "type": {
198
204
  "type": "string",
199
205
  "const": "tap"
200
206
  },
201
207
  "target": {
202
- "$ref": "#/definitions/locator"
208
+ "type": "object",
209
+ "properties": {
210
+ "description": {
211
+ "description": "AI-friendly description of the element to find",
212
+ "type": "string"
213
+ },
214
+ "testId": {
215
+ "description": "data-testid attribute value",
216
+ "type": "string"
217
+ },
218
+ "text": {
219
+ "description": "Visible text content",
220
+ "type": "string"
221
+ },
222
+ "css": {
223
+ "description": "CSS selector",
224
+ "type": "string"
225
+ },
226
+ "xpath": {
227
+ "description": "XPath selector",
228
+ "type": "string"
229
+ },
230
+ "role": {
231
+ "description": "ARIA role",
232
+ "type": "string"
233
+ },
234
+ "name": {
235
+ "description": "Accessible name",
236
+ "type": "string"
237
+ }
238
+ },
239
+ "additionalProperties": false
203
240
  }
204
241
  },
242
+ "required": [
243
+ "type",
244
+ "target"
245
+ ],
205
246
  "additionalProperties": false
206
247
  },
207
248
  {
208
- "type": "object",
209
249
  "description": "Input text into a field",
210
- "required": ["type", "target", "value"],
250
+ "type": "object",
211
251
  "properties": {
212
252
  "type": {
213
253
  "type": "string",
214
254
  "const": "input"
215
255
  },
216
256
  "target": {
217
- "$ref": "#/definitions/locator"
257
+ "type": "object",
258
+ "properties": {
259
+ "description": {
260
+ "description": "AI-friendly description of the element to find",
261
+ "type": "string"
262
+ },
263
+ "testId": {
264
+ "description": "data-testid attribute value",
265
+ "type": "string"
266
+ },
267
+ "text": {
268
+ "description": "Visible text content",
269
+ "type": "string"
270
+ },
271
+ "css": {
272
+ "description": "CSS selector",
273
+ "type": "string"
274
+ },
275
+ "xpath": {
276
+ "description": "XPath selector",
277
+ "type": "string"
278
+ },
279
+ "role": {
280
+ "description": "ARIA role",
281
+ "type": "string"
282
+ },
283
+ "name": {
284
+ "description": "Accessible name",
285
+ "type": "string"
286
+ }
287
+ },
288
+ "additionalProperties": false
218
289
  },
219
290
  "value": {
220
- "type": "string",
221
291
  "description": "Text to input (can reference variables with ${VAR_NAME})",
222
- "examples": ["user@example.com", "${TEST_EMAIL}", "${PASSWORD}"]
292
+ "type": "string"
223
293
  }
224
294
  },
295
+ "required": [
296
+ "type",
297
+ "target",
298
+ "value"
299
+ ],
225
300
  "additionalProperties": false
226
301
  },
227
302
  {
228
- "type": "object",
229
303
  "description": "Assert that an element exists or contains expected text",
230
- "required": ["type", "target"],
304
+ "type": "object",
231
305
  "properties": {
232
306
  "type": {
233
307
  "type": "string",
234
308
  "const": "assert"
235
309
  },
236
310
  "target": {
237
- "$ref": "#/definitions/locator"
311
+ "type": "object",
312
+ "properties": {
313
+ "description": {
314
+ "description": "AI-friendly description of the element to find",
315
+ "type": "string"
316
+ },
317
+ "testId": {
318
+ "description": "data-testid attribute value",
319
+ "type": "string"
320
+ },
321
+ "text": {
322
+ "description": "Visible text content",
323
+ "type": "string"
324
+ },
325
+ "css": {
326
+ "description": "CSS selector",
327
+ "type": "string"
328
+ },
329
+ "xpath": {
330
+ "description": "XPath selector",
331
+ "type": "string"
332
+ },
333
+ "role": {
334
+ "description": "ARIA role",
335
+ "type": "string"
336
+ },
337
+ "name": {
338
+ "description": "Accessible name",
339
+ "type": "string"
340
+ }
341
+ },
342
+ "additionalProperties": false
238
343
  },
239
344
  "value": {
240
- "type": "string",
241
- "description": "Expected text content (optional)",
242
- "examples": ["Welcome", "Login successful"]
345
+ "description": "Expected text content",
346
+ "type": "string"
243
347
  }
244
348
  },
349
+ "required": [
350
+ "type",
351
+ "target"
352
+ ],
245
353
  "additionalProperties": false
246
354
  },
247
355
  {
248
356
  "type": "object",
249
- "description": "Wait for an element or timeout",
250
- "required": ["type"],
251
357
  "properties": {
252
358
  "type": {
253
359
  "type": "string",
254
360
  "const": "wait"
255
361
  },
256
362
  "target": {
257
- "$ref": "#/definitions/locator",
258
- "description": "Element to wait for (optional if timeout is specified)"
363
+ "description": "Element to wait for",
364
+ "type": "object",
365
+ "properties": {
366
+ "description": {
367
+ "description": "AI-friendly description of the element to find",
368
+ "type": "string"
369
+ },
370
+ "testId": {
371
+ "description": "data-testid attribute value",
372
+ "type": "string"
373
+ },
374
+ "text": {
375
+ "description": "Visible text content",
376
+ "type": "string"
377
+ },
378
+ "css": {
379
+ "description": "CSS selector",
380
+ "type": "string"
381
+ },
382
+ "xpath": {
383
+ "description": "XPath selector",
384
+ "type": "string"
385
+ },
386
+ "role": {
387
+ "description": "ARIA role",
388
+ "type": "string"
389
+ },
390
+ "name": {
391
+ "description": "Accessible name",
392
+ "type": "string"
393
+ }
394
+ },
395
+ "additionalProperties": false
259
396
  },
260
397
  "timeout": {
261
- "type": "integer",
262
- "minimum": 1,
263
398
  "description": "Time to wait in milliseconds",
264
- "examples": [1000, 5000]
399
+ "type": "integer",
400
+ "exclusiveMinimum": 0,
401
+ "maximum": 9007199254740991
265
402
  }
266
403
  },
404
+ "required": [
405
+ "type"
406
+ ],
267
407
  "additionalProperties": false
268
408
  },
269
409
  {
270
- "type": "object",
271
410
  "description": "Scroll the page or an element",
272
- "required": ["type"],
411
+ "type": "object",
273
412
  "properties": {
274
413
  "type": {
275
414
  "type": "string",
276
415
  "const": "scroll"
277
416
  },
278
417
  "target": {
279
- "$ref": "#/definitions/locator",
280
- "description": "Element to scroll (optional, defaults to page)"
418
+ "description": "Element to scroll",
419
+ "type": "object",
420
+ "properties": {
421
+ "description": {
422
+ "description": "AI-friendly description of the element to find",
423
+ "type": "string"
424
+ },
425
+ "testId": {
426
+ "description": "data-testid attribute value",
427
+ "type": "string"
428
+ },
429
+ "text": {
430
+ "description": "Visible text content",
431
+ "type": "string"
432
+ },
433
+ "css": {
434
+ "description": "CSS selector",
435
+ "type": "string"
436
+ },
437
+ "xpath": {
438
+ "description": "XPath selector",
439
+ "type": "string"
440
+ },
441
+ "role": {
442
+ "description": "ARIA role",
443
+ "type": "string"
444
+ },
445
+ "name": {
446
+ "description": "Accessible name",
447
+ "type": "string"
448
+ }
449
+ },
450
+ "additionalProperties": false
281
451
  },
282
452
  "direction": {
283
- "type": "string",
284
- "enum": ["up", "down"],
285
453
  "description": "Direction to scroll",
286
- "default": "down"
454
+ "type": "string",
455
+ "enum": [
456
+ "up",
457
+ "down"
458
+ ]
287
459
  },
288
460
  "amount": {
289
- "type": "integer",
290
- "minimum": 1,
291
461
  "description": "Amount to scroll in pixels",
292
- "examples": [100, 500]
462
+ "type": "integer",
463
+ "exclusiveMinimum": 0,
464
+ "maximum": 9007199254740991
293
465
  }
294
466
  },
467
+ "required": [
468
+ "type"
469
+ ],
295
470
  "additionalProperties": false
296
471
  },
297
472
  {
298
- "type": "object",
299
473
  "description": "Take a screenshot",
300
- "required": ["type"],
474
+ "type": "object",
301
475
  "properties": {
302
476
  "type": {
303
477
  "type": "string",
304
478
  "const": "screenshot"
305
479
  },
306
480
  "name": {
307
- "type": "string",
308
481
  "description": "Name for the screenshot file",
309
- "examples": ["after-login", "checkout-page"]
482
+ "type": "string"
310
483
  }
311
484
  },
485
+ "required": [
486
+ "type"
487
+ ],
312
488
  "additionalProperties": false
313
489
  },
314
490
  {
315
- "type": "object",
316
491
  "description": "Set a variable for use in later steps",
317
- "required": ["type", "name"],
492
+ "type": "object",
318
493
  "properties": {
319
494
  "type": {
320
495
  "type": "string",
321
496
  "const": "setVar"
322
497
  },
323
498
  "name": {
324
- "type": "string",
325
- "minLength": 1,
326
499
  "description": "Variable name to set",
327
- "examples": ["USER_ID", "AUTH_TOKEN"]
500
+ "type": "string",
501
+ "minLength": 1
328
502
  },
329
503
  "value": {
330
- "type": "string",
331
- "description": "Static value to set (optional if from/path is used)",
332
- "examples": ["static-value"]
504
+ "description": "Static value to set",
505
+ "type": "string"
333
506
  },
334
507
  "from": {
508
+ "description": "Extract value from a source",
335
509
  "type": "string",
336
- "enum": ["response", "element", "email"],
337
- "description": "Extract value from a source"
510
+ "enum": [
511
+ "response",
512
+ "element",
513
+ "email"
514
+ ]
338
515
  },
339
516
  "path": {
340
- "type": "string",
341
517
  "description": "JSON path or selector for extraction",
342
- "examples": ["$.data.userId", "data-user-id"]
518
+ "type": "string"
343
519
  },
344
520
  "pattern": {
345
- "type": "string",
346
521
  "description": "Regular expression pattern for extraction",
347
- "examples": ["\\d{6}", "user-([a-z0-9]+)"]
522
+ "type": "string"
348
523
  }
349
524
  },
525
+ "required": [
526
+ "type",
527
+ "name"
528
+ ],
350
529
  "additionalProperties": false
351
530
  },
352
531
  {
353
- "type": "object",
354
532
  "description": "Wait for an email to arrive",
355
- "required": ["type", "mailbox"],
533
+ "type": "object",
356
534
  "properties": {
357
535
  "type": {
358
536
  "type": "string",
359
537
  "const": "email.waitFor"
360
538
  },
361
539
  "mailbox": {
362
- "type": "string",
363
- "minLength": 1,
364
540
  "description": "Email address or mailbox to check",
365
- "examples": ["test@example.com"]
541
+ "type": "string",
542
+ "minLength": 1
366
543
  },
367
544
  "timeout": {
368
- "type": "integer",
369
- "minimum": 1,
370
545
  "description": "How long to wait for email in milliseconds",
371
- "examples": [30000]
546
+ "type": "integer",
547
+ "exclusiveMinimum": 0,
548
+ "maximum": 9007199254740991
372
549
  },
373
550
  "subjectContains": {
374
- "type": "string",
375
551
  "description": "Filter by email subject",
376
- "examples": ["Verification", "Welcome"]
552
+ "type": "string"
377
553
  }
378
554
  },
555
+ "required": [
556
+ "type",
557
+ "mailbox"
558
+ ],
379
559
  "additionalProperties": false
380
560
  },
381
561
  {
382
- "type": "object",
383
562
  "description": "Extract a verification code from email",
384
- "required": ["type", "saveTo"],
563
+ "type": "object",
385
564
  "properties": {
386
565
  "type": {
387
566
  "type": "string",
388
567
  "const": "email.extractCode"
389
568
  },
390
569
  "saveTo": {
391
- "type": "string",
392
- "minLength": 1,
393
570
  "description": "Variable name to save the extracted code",
394
- "examples": ["VERIFICATION_CODE"]
571
+ "type": "string",
572
+ "minLength": 1
395
573
  },
396
574
  "pattern": {
397
- "type": "string",
398
575
  "description": "Regular expression to extract code",
399
- "examples": ["\\d{6}", "code:\\s*(\\w+)"]
576
+ "type": "string"
400
577
  }
401
578
  },
579
+ "required": [
580
+ "type",
581
+ "saveTo"
582
+ ],
402
583
  "additionalProperties": false
403
584
  },
404
585
  {
405
- "type": "object",
406
586
  "description": "Extract a link from email",
407
- "required": ["type", "saveTo"],
587
+ "type": "object",
408
588
  "properties": {
409
589
  "type": {
410
590
  "type": "string",
411
591
  "const": "email.extractLink"
412
592
  },
413
593
  "saveTo": {
414
- "type": "string",
415
- "minLength": 1,
416
594
  "description": "Variable name to save the extracted link",
417
- "examples": ["VERIFY_URL"]
595
+ "type": "string",
596
+ "minLength": 1
418
597
  },
419
598
  "pattern": {
420
- "type": "string",
421
599
  "description": "Regular expression to match specific links",
422
- "examples": ["verify.*"]
600
+ "type": "string"
423
601
  }
424
602
  },
603
+ "required": [
604
+ "type",
605
+ "saveTo"
606
+ ],
425
607
  "additionalProperties": false
426
608
  },
427
609
  {
428
- "type": "object",
429
610
  "description": "Clear emails from a mailbox",
430
- "required": ["type", "mailbox"],
611
+ "type": "object",
431
612
  "properties": {
432
613
  "type": {
433
614
  "type": "string",
434
615
  "const": "email.clear"
435
616
  },
436
617
  "mailbox": {
437
- "type": "string",
438
- "minLength": 1,
439
618
  "description": "Email address or mailbox to clear",
440
- "examples": ["test@example.com"]
619
+ "type": "string",
620
+ "minLength": 1
441
621
  }
442
622
  },
623
+ "required": [
624
+ "type",
625
+ "mailbox"
626
+ ],
443
627
  "additionalProperties": false
444
628
  },
445
629
  {
446
- "type": "object",
447
630
  "description": "Verify email using Appwrite",
448
- "required": ["type"],
631
+ "type": "object",
449
632
  "properties": {
450
633
  "type": {
451
634
  "type": "string",
452
635
  "const": "appwrite.verifyEmail"
453
636
  }
454
637
  },
638
+ "required": [
639
+ "type"
640
+ ],
455
641
  "additionalProperties": false
456
642
  },
457
643
  {
458
- "type": "object",
459
644
  "description": "Pause execution and open Playwright Inspector for debugging",
460
- "required": ["type"],
645
+ "type": "object",
461
646
  "properties": {
462
647
  "type": {
463
648
  "type": "string",
464
649
  "const": "debug"
465
650
  }
466
651
  },
652
+ "required": [
653
+ "type"
654
+ ],
467
655
  "additionalProperties": false
468
656
  }
469
657
  ]
470
658
  }
471
659
  }
472
660
  },
473
- "definitions": {
474
- "locator": {
475
- "type": "object",
476
- "description": "Defines how to locate an element on the page. At least one selector must be provided.",
477
- "properties": {
478
- "description": {
479
- "type": "string",
480
- "description": "AI-friendly description of the element to find (e.g., 'the login button', 'email input field')"
481
- },
482
- "testId": {
483
- "type": "string",
484
- "description": "data-testid attribute value",
485
- "examples": ["login-button", "email-input"]
486
- },
487
- "text": {
488
- "type": "string",
489
- "description": "Visible text content",
490
- "examples": ["Sign In", "Submit"]
491
- },
492
- "css": {
493
- "type": "string",
494
- "description": "CSS selector",
495
- "examples": [".btn-primary", "#submit-button"]
496
- },
497
- "xpath": {
498
- "type": "string",
499
- "description": "XPath selector",
500
- "examples": ["//button[@type='submit']"]
501
- },
502
- "role": {
503
- "type": "string",
504
- "description": "ARIA role",
505
- "examples": ["button", "textbox", "link"]
506
- },
507
- "name": {
508
- "type": "string",
509
- "description": "Accessible name",
510
- "examples": ["Email", "Password"]
511
- }
512
- },
513
- "additionalProperties": false,
514
- "minProperties": 1
515
- }
516
- }
661
+ "required": [
662
+ "name",
663
+ "platform",
664
+ "steps"
665
+ ],
666
+ "additionalProperties": false,
667
+ "title": "IntelliTester Test Definition"
517
668
  }