doc-detective-common 3.0.2 → 3.0.4-dev.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/package.json +6 -5
- package/src/resolvePaths.js +90 -21
- package/src/schemas/dereferenceSchemas.js +1 -0
- package/src/schemas/output_schemas/config_v3.schema.json +79 -0
- package/src/schemas/output_schemas/report_v3.schema.json +4186 -7
- package/src/schemas/output_schemas/resolvedTests_v3.schema.json +19740 -0
- package/src/schemas/output_schemas/spec_v3.schema.json +4186 -7
- package/src/schemas/output_schemas/test_v3.schema.json +4177 -2
- package/src/schemas/schemas.json +51198 -18846
- package/src/schemas/src_schemas/config_v3.schema.json +46 -0
- package/src/schemas/src_schemas/resolvedTests_v3.schema.json +184 -0
- package/src/schemas/src_schemas/spec_v3.schema.json +4 -0
- package/src/schemas/src_schemas/test_v3.schema.json +26 -1
|
@@ -14,6 +14,10 @@
|
|
|
14
14
|
"type": "string",
|
|
15
15
|
"description": "Description of the test specification."
|
|
16
16
|
},
|
|
17
|
+
"specPath": {
|
|
18
|
+
"type": "string",
|
|
19
|
+
"description": "Path to the test specification."
|
|
20
|
+
},
|
|
17
21
|
"contentPath": {
|
|
18
22
|
"type": "string",
|
|
19
23
|
"description": "Path to the content that the specification is associated with."
|
|
@@ -5228,13 +5232,4188 @@
|
|
|
5228
5232
|
}
|
|
5229
5233
|
]
|
|
5230
5234
|
}
|
|
5231
|
-
}
|
|
5232
|
-
|
|
5233
|
-
|
|
5234
|
-
|
|
5235
|
-
|
|
5236
|
-
|
|
5237
|
-
|
|
5235
|
+
},
|
|
5236
|
+
"contexts": {
|
|
5237
|
+
"array": "array",
|
|
5238
|
+
"readOnly": true,
|
|
5239
|
+
"description": "Resolved contexts to run the test in. This is a resolved version of the `runOn` property. It is not user-defined and should not be used in test specifications.",
|
|
5240
|
+
"items": {
|
|
5241
|
+
"type": "object",
|
|
5242
|
+
"properties": {
|
|
5243
|
+
"platform": {
|
|
5244
|
+
"type": "string",
|
|
5245
|
+
"description": "Platform to run the test on. This is a resolved version of the `platforms` property."
|
|
5246
|
+
},
|
|
5247
|
+
"browser": {
|
|
5248
|
+
"type": "object",
|
|
5249
|
+
"description": "Browser configuration.",
|
|
5250
|
+
"required": [
|
|
5251
|
+
"name"
|
|
5252
|
+
],
|
|
5253
|
+
"additionalProperties": false,
|
|
5254
|
+
"properties": {
|
|
5255
|
+
"name": {
|
|
5256
|
+
"type": "string",
|
|
5257
|
+
"description": "Name of the browser.",
|
|
5258
|
+
"enum": [
|
|
5259
|
+
"chrome",
|
|
5260
|
+
"firefox",
|
|
5261
|
+
"safari",
|
|
5262
|
+
"webkit"
|
|
5263
|
+
],
|
|
5264
|
+
"$comment": "`safari` is just a shortcut for `webkit`. Included for visibility and to reduce questions."
|
|
5265
|
+
},
|
|
5266
|
+
"headless": {
|
|
5267
|
+
"type": "boolean",
|
|
5268
|
+
"description": "If `true`, runs the browser in headless mode.",
|
|
5269
|
+
"default": true
|
|
5270
|
+
},
|
|
5271
|
+
"window": {
|
|
5272
|
+
"type": "object",
|
|
5273
|
+
"description": "Browser dimensions.",
|
|
5274
|
+
"additionalProperties": false,
|
|
5275
|
+
"properties": {
|
|
5276
|
+
"width": {
|
|
5277
|
+
"type": "integer",
|
|
5278
|
+
"description": "Width of the browser window in pixels."
|
|
5279
|
+
},
|
|
5280
|
+
"height": {
|
|
5281
|
+
"type": "integer",
|
|
5282
|
+
"description": "Height of the browser window in pixels."
|
|
5283
|
+
}
|
|
5284
|
+
}
|
|
5285
|
+
},
|
|
5286
|
+
"viewport": {
|
|
5287
|
+
"type": "object",
|
|
5288
|
+
"description": "Viewport dimensions.",
|
|
5289
|
+
"additionalProperties": false,
|
|
5290
|
+
"properties": {
|
|
5291
|
+
"width": {
|
|
5292
|
+
"type": "integer",
|
|
5293
|
+
"description": "Width of the viewport in pixels."
|
|
5294
|
+
},
|
|
5295
|
+
"height": {
|
|
5296
|
+
"type": "integer",
|
|
5297
|
+
"description": "Height of the viewport in pixels."
|
|
5298
|
+
}
|
|
5299
|
+
}
|
|
5300
|
+
}
|
|
5301
|
+
}
|
|
5302
|
+
},
|
|
5303
|
+
"steps": {
|
|
5304
|
+
"description": "Steps to perform as part of the test. Performed in the sequence defined. If one or more actions fail, the test fails. By default, if a step fails, the test stops and the remaining steps are not executed.",
|
|
5305
|
+
"type": "array",
|
|
5306
|
+
"minItems": 1,
|
|
5307
|
+
"items": {
|
|
5308
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
5309
|
+
"title": "step",
|
|
5310
|
+
"description": "A step in a test.",
|
|
5311
|
+
"type": "object",
|
|
5312
|
+
"components": {
|
|
5313
|
+
"schemas": {
|
|
5314
|
+
"common": {
|
|
5315
|
+
"type": "object",
|
|
5316
|
+
"dynamicDefaults": {
|
|
5317
|
+
"stepId": "uuid"
|
|
5318
|
+
},
|
|
5319
|
+
"properties": {
|
|
5320
|
+
"stepId": {
|
|
5321
|
+
"type": "string",
|
|
5322
|
+
"description": "ID of the step."
|
|
5323
|
+
},
|
|
5324
|
+
"description": {
|
|
5325
|
+
"type": "string",
|
|
5326
|
+
"description": "Description of the step."
|
|
5327
|
+
},
|
|
5328
|
+
"outputs": {
|
|
5329
|
+
"type": "object",
|
|
5330
|
+
"description": "Outputs from step processes and user-defined expressions. Use the `outputs` object to reference outputs in subsequent steps. If a user-defined output matches the key for a step-defined output, the user-defined output takes precedence.",
|
|
5331
|
+
"default": {},
|
|
5332
|
+
"patternProperties": {
|
|
5333
|
+
"^[A-Za-z0-9_]+$": {
|
|
5334
|
+
"type": "string",
|
|
5335
|
+
"description": "Runtime expression for a user-defined output value."
|
|
5336
|
+
}
|
|
5337
|
+
}
|
|
5338
|
+
},
|
|
5339
|
+
"variables": {
|
|
5340
|
+
"type": "object",
|
|
5341
|
+
"description": "Environment variables to set from user-defined expressions.",
|
|
5342
|
+
"default": {},
|
|
5343
|
+
"patternProperties": {
|
|
5344
|
+
"^[A-Za-z0-9_]+$": {
|
|
5345
|
+
"type": "string",
|
|
5346
|
+
"description": "Runtime expression for a user-defined output value."
|
|
5347
|
+
}
|
|
5348
|
+
}
|
|
5349
|
+
}
|
|
5350
|
+
}
|
|
5351
|
+
},
|
|
5352
|
+
"stepId": {
|
|
5353
|
+
"type": "string",
|
|
5354
|
+
"description": "ID of the step."
|
|
5355
|
+
},
|
|
5356
|
+
"description": {
|
|
5357
|
+
"type": "string",
|
|
5358
|
+
"description": "Description of the step."
|
|
5359
|
+
},
|
|
5360
|
+
"outputs": {
|
|
5361
|
+
"type": "object",
|
|
5362
|
+
"description": "Outputs from step processes and user-defined expressions. Use the `outputs` object to reference outputs in subsequent steps. If a user-defined output matches the key for a step-defined output, the user-defined output takes precedence.",
|
|
5363
|
+
"default": {},
|
|
5364
|
+
"patternProperties": {
|
|
5365
|
+
"^[A-Za-z0-9_]+$": {
|
|
5366
|
+
"type": "string",
|
|
5367
|
+
"description": "Runtime expression for a user-defined output value."
|
|
5368
|
+
}
|
|
5369
|
+
}
|
|
5370
|
+
},
|
|
5371
|
+
"variables": {
|
|
5372
|
+
"type": "object",
|
|
5373
|
+
"description": "Environment variables to set from user-defined expressions.",
|
|
5374
|
+
"default": {},
|
|
5375
|
+
"patternProperties": {
|
|
5376
|
+
"^[A-Za-z0-9_]+$": {
|
|
5377
|
+
"type": "string",
|
|
5378
|
+
"description": "Runtime expression for a user-defined output value."
|
|
5379
|
+
}
|
|
5380
|
+
}
|
|
5381
|
+
}
|
|
5382
|
+
}
|
|
5383
|
+
},
|
|
5384
|
+
"anyOf": [
|
|
5385
|
+
{
|
|
5386
|
+
"allOf": [
|
|
5387
|
+
{
|
|
5388
|
+
"type": "object",
|
|
5389
|
+
"dynamicDefaults": {
|
|
5390
|
+
"stepId": "uuid"
|
|
5391
|
+
},
|
|
5392
|
+
"properties": {
|
|
5393
|
+
"stepId": {
|
|
5394
|
+
"type": "string",
|
|
5395
|
+
"description": "ID of the step."
|
|
5396
|
+
},
|
|
5397
|
+
"description": {
|
|
5398
|
+
"type": "string",
|
|
5399
|
+
"description": "Description of the step."
|
|
5400
|
+
},
|
|
5401
|
+
"outputs": {
|
|
5402
|
+
"type": "object",
|
|
5403
|
+
"description": "Outputs from step processes and user-defined expressions. Use the `outputs` object to reference outputs in subsequent steps. If a user-defined output matches the key for a step-defined output, the user-defined output takes precedence.",
|
|
5404
|
+
"default": {},
|
|
5405
|
+
"patternProperties": {
|
|
5406
|
+
"^[A-Za-z0-9_]+$": {
|
|
5407
|
+
"type": "string",
|
|
5408
|
+
"description": "Runtime expression for a user-defined output value."
|
|
5409
|
+
}
|
|
5410
|
+
}
|
|
5411
|
+
},
|
|
5412
|
+
"variables": {
|
|
5413
|
+
"type": "object",
|
|
5414
|
+
"description": "Environment variables to set from user-defined expressions.",
|
|
5415
|
+
"default": {},
|
|
5416
|
+
"patternProperties": {
|
|
5417
|
+
"^[A-Za-z0-9_]+$": {
|
|
5418
|
+
"type": "string",
|
|
5419
|
+
"description": "Runtime expression for a user-defined output value."
|
|
5420
|
+
}
|
|
5421
|
+
}
|
|
5422
|
+
}
|
|
5423
|
+
}
|
|
5424
|
+
},
|
|
5425
|
+
{
|
|
5426
|
+
"type": "object",
|
|
5427
|
+
"required": [
|
|
5428
|
+
"checkLink"
|
|
5429
|
+
],
|
|
5430
|
+
"properties": {
|
|
5431
|
+
"checkLink": {
|
|
5432
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
5433
|
+
"title": "checkLink",
|
|
5434
|
+
"anyOf": [
|
|
5435
|
+
{
|
|
5436
|
+
"description": "Check if an HTTP or HTTPS URL returns an acceptable status code from a GET request.",
|
|
5437
|
+
"type": "string",
|
|
5438
|
+
"pattern": "(^(http://|https://|\\/).*|\\$[A-Za-z0-9_]+$)",
|
|
5439
|
+
"transform": [
|
|
5440
|
+
"trim"
|
|
5441
|
+
]
|
|
5442
|
+
},
|
|
5443
|
+
{
|
|
5444
|
+
"description": "Check if an HTTP or HTTPS URL returns an acceptable status code from a GET request.",
|
|
5445
|
+
"type": "object",
|
|
5446
|
+
"additionalProperties": false,
|
|
5447
|
+
"required": [
|
|
5448
|
+
"url"
|
|
5449
|
+
],
|
|
5450
|
+
"properties": {
|
|
5451
|
+
"url": {
|
|
5452
|
+
"type": "string",
|
|
5453
|
+
"description": "URL to check. Can be a full URL or a path. If a path is provided, `origin` must be specified.",
|
|
5454
|
+
"pattern": "(^(http://|https://|/).*|\\$[A-Za-z0-9_]+)",
|
|
5455
|
+
"transform": [
|
|
5456
|
+
"trim"
|
|
5457
|
+
]
|
|
5458
|
+
},
|
|
5459
|
+
"origin": {
|
|
5460
|
+
"type": "string",
|
|
5461
|
+
"description": "Protocol and domain to navigate to. Prepended to `url`.",
|
|
5462
|
+
"transform": [
|
|
5463
|
+
"trim"
|
|
5464
|
+
]
|
|
5465
|
+
},
|
|
5466
|
+
"statusCodes": {
|
|
5467
|
+
"description": "Accepted status codes. If the specified URL returns a code other than what is specified here, the action fails.",
|
|
5468
|
+
"anyOf": [
|
|
5469
|
+
{
|
|
5470
|
+
"type": "integer"
|
|
5471
|
+
},
|
|
5472
|
+
{
|
|
5473
|
+
"type": "array",
|
|
5474
|
+
"items": {
|
|
5475
|
+
"oneOf": [
|
|
5476
|
+
{
|
|
5477
|
+
"type": "integer"
|
|
5478
|
+
}
|
|
5479
|
+
]
|
|
5480
|
+
}
|
|
5481
|
+
}
|
|
5482
|
+
],
|
|
5483
|
+
"default": [
|
|
5484
|
+
200,
|
|
5485
|
+
301,
|
|
5486
|
+
302,
|
|
5487
|
+
307,
|
|
5488
|
+
308
|
|
5489
|
+
]
|
|
5490
|
+
}
|
|
5491
|
+
}
|
|
5492
|
+
}
|
|
5493
|
+
],
|
|
5494
|
+
"components": {
|
|
5495
|
+
"schemas": {
|
|
5496
|
+
"string": {
|
|
5497
|
+
"description": "Check if an HTTP or HTTPS URL returns an acceptable status code from a GET request.",
|
|
5498
|
+
"type": "string",
|
|
5499
|
+
"pattern": "(^(http://|https://|\\/).*|\\$[A-Za-z0-9_]+$)",
|
|
5500
|
+
"transform": [
|
|
5501
|
+
"trim"
|
|
5502
|
+
]
|
|
5503
|
+
},
|
|
5504
|
+
"object": {
|
|
5505
|
+
"description": "Check if an HTTP or HTTPS URL returns an acceptable status code from a GET request.",
|
|
5506
|
+
"type": "object",
|
|
5507
|
+
"additionalProperties": false,
|
|
5508
|
+
"required": [
|
|
5509
|
+
"url"
|
|
5510
|
+
],
|
|
5511
|
+
"properties": {
|
|
5512
|
+
"url": {
|
|
5513
|
+
"type": "string",
|
|
5514
|
+
"description": "URL to check. Can be a full URL or a path. If a path is provided, `origin` must be specified.",
|
|
5515
|
+
"pattern": "(^(http://|https://|/).*|\\$[A-Za-z0-9_]+)",
|
|
5516
|
+
"transform": [
|
|
5517
|
+
"trim"
|
|
5518
|
+
]
|
|
5519
|
+
},
|
|
5520
|
+
"origin": {
|
|
5521
|
+
"type": "string",
|
|
5522
|
+
"description": "Protocol and domain to navigate to. Prepended to `url`.",
|
|
5523
|
+
"transform": [
|
|
5524
|
+
"trim"
|
|
5525
|
+
]
|
|
5526
|
+
},
|
|
5527
|
+
"statusCodes": {
|
|
5528
|
+
"description": "Accepted status codes. If the specified URL returns a code other than what is specified here, the action fails.",
|
|
5529
|
+
"anyOf": [
|
|
5530
|
+
{
|
|
5531
|
+
"type": "integer"
|
|
5532
|
+
},
|
|
5533
|
+
{
|
|
5534
|
+
"type": "array",
|
|
5535
|
+
"items": {
|
|
5536
|
+
"oneOf": [
|
|
5537
|
+
{
|
|
5538
|
+
"type": "integer"
|
|
5539
|
+
}
|
|
5540
|
+
]
|
|
5541
|
+
}
|
|
5542
|
+
}
|
|
5543
|
+
],
|
|
5544
|
+
"default": [
|
|
5545
|
+
200,
|
|
5546
|
+
301,
|
|
5547
|
+
302,
|
|
5548
|
+
307,
|
|
5549
|
+
308
|
|
5550
|
+
]
|
|
5551
|
+
}
|
|
5552
|
+
}
|
|
5553
|
+
}
|
|
5554
|
+
}
|
|
5555
|
+
},
|
|
5556
|
+
"examples": [
|
|
5557
|
+
"https://www.google.com",
|
|
5558
|
+
"/search",
|
|
5559
|
+
{
|
|
5560
|
+
"url": "https://www.google.com",
|
|
5561
|
+
"statusCodes": 200
|
|
5562
|
+
},
|
|
5563
|
+
{
|
|
5564
|
+
"url": "/search",
|
|
5565
|
+
"origin": "www.google.com",
|
|
5566
|
+
"statusCodes": [
|
|
5567
|
+
200
|
|
5568
|
+
]
|
|
5569
|
+
}
|
|
5570
|
+
]
|
|
5571
|
+
}
|
|
5572
|
+
}
|
|
5573
|
+
}
|
|
5574
|
+
]
|
|
5575
|
+
},
|
|
5576
|
+
{
|
|
5577
|
+
"allOf": [
|
|
5578
|
+
{
|
|
5579
|
+
"type": "object",
|
|
5580
|
+
"dynamicDefaults": {
|
|
5581
|
+
"stepId": "uuid"
|
|
5582
|
+
},
|
|
5583
|
+
"properties": {
|
|
5584
|
+
"stepId": {
|
|
5585
|
+
"type": "string",
|
|
5586
|
+
"description": "ID of the step."
|
|
5587
|
+
},
|
|
5588
|
+
"description": {
|
|
5589
|
+
"type": "string",
|
|
5590
|
+
"description": "Description of the step."
|
|
5591
|
+
},
|
|
5592
|
+
"outputs": {
|
|
5593
|
+
"type": "object",
|
|
5594
|
+
"description": "Outputs from step processes and user-defined expressions. Use the `outputs` object to reference outputs in subsequent steps. If a user-defined output matches the key for a step-defined output, the user-defined output takes precedence.",
|
|
5595
|
+
"default": {},
|
|
5596
|
+
"patternProperties": {
|
|
5597
|
+
"^[A-Za-z0-9_]+$": {
|
|
5598
|
+
"type": "string",
|
|
5599
|
+
"description": "Runtime expression for a user-defined output value."
|
|
5600
|
+
}
|
|
5601
|
+
}
|
|
5602
|
+
},
|
|
5603
|
+
"variables": {
|
|
5604
|
+
"type": "object",
|
|
5605
|
+
"description": "Environment variables to set from user-defined expressions.",
|
|
5606
|
+
"default": {},
|
|
5607
|
+
"patternProperties": {
|
|
5608
|
+
"^[A-Za-z0-9_]+$": {
|
|
5609
|
+
"type": "string",
|
|
5610
|
+
"description": "Runtime expression for a user-defined output value."
|
|
5611
|
+
}
|
|
5612
|
+
}
|
|
5613
|
+
}
|
|
5614
|
+
}
|
|
5615
|
+
},
|
|
5616
|
+
{
|
|
5617
|
+
"type": "object",
|
|
5618
|
+
"required": [
|
|
5619
|
+
"click"
|
|
5620
|
+
],
|
|
5621
|
+
"properties": {
|
|
5622
|
+
"click": {
|
|
5623
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
5624
|
+
"title": "click",
|
|
5625
|
+
"description": "Click or tap an element.",
|
|
5626
|
+
"anyOf": [
|
|
5627
|
+
{
|
|
5628
|
+
"title": "Find element (simple)",
|
|
5629
|
+
"type": "string",
|
|
5630
|
+
"description": "Display text or selector of the element to find."
|
|
5631
|
+
},
|
|
5632
|
+
{
|
|
5633
|
+
"title": "Click element (detailed)",
|
|
5634
|
+
"type": "object",
|
|
5635
|
+
"anyOf": [
|
|
5636
|
+
{
|
|
5637
|
+
"required": [
|
|
5638
|
+
"selector"
|
|
5639
|
+
]
|
|
5640
|
+
},
|
|
5641
|
+
{
|
|
5642
|
+
"required": [
|
|
5643
|
+
"elementText"
|
|
5644
|
+
]
|
|
5645
|
+
}
|
|
5646
|
+
],
|
|
5647
|
+
"properties": {
|
|
5648
|
+
"button": {
|
|
5649
|
+
"description": "Kind of click to perform.",
|
|
5650
|
+
"type": "string",
|
|
5651
|
+
"enum": [
|
|
5652
|
+
"left",
|
|
5653
|
+
"right",
|
|
5654
|
+
"middle"
|
|
5655
|
+
]
|
|
5656
|
+
},
|
|
5657
|
+
"elementText": {
|
|
5658
|
+
"type": "string",
|
|
5659
|
+
"description": "Display text of the element to click. If combined with `selector`, the element must match both the text and the selector."
|
|
5660
|
+
},
|
|
5661
|
+
"selector": {
|
|
5662
|
+
"type": "string",
|
|
5663
|
+
"description": "Selector of the element to click. If combined with `elementText`, the element must match both the text and the selector."
|
|
5664
|
+
}
|
|
5665
|
+
}
|
|
5666
|
+
},
|
|
5667
|
+
{
|
|
5668
|
+
"type": "boolean"
|
|
5669
|
+
}
|
|
5670
|
+
],
|
|
5671
|
+
"components": {
|
|
5672
|
+
"schemas": {
|
|
5673
|
+
"string": {
|
|
5674
|
+
"title": "Find element (simple)",
|
|
5675
|
+
"type": "string",
|
|
5676
|
+
"description": "Display text or selector of the element to find."
|
|
5677
|
+
},
|
|
5678
|
+
"button": {
|
|
5679
|
+
"description": "Kind of click to perform.",
|
|
5680
|
+
"type": "string",
|
|
5681
|
+
"enum": [
|
|
5682
|
+
"left",
|
|
5683
|
+
"right",
|
|
5684
|
+
"middle"
|
|
5685
|
+
]
|
|
5686
|
+
},
|
|
5687
|
+
"object": {
|
|
5688
|
+
"title": "Click element (detailed)",
|
|
5689
|
+
"type": "object",
|
|
5690
|
+
"anyOf": [
|
|
5691
|
+
{
|
|
5692
|
+
"required": [
|
|
5693
|
+
"selector"
|
|
5694
|
+
]
|
|
5695
|
+
},
|
|
5696
|
+
{
|
|
5697
|
+
"required": [
|
|
5698
|
+
"elementText"
|
|
5699
|
+
]
|
|
5700
|
+
}
|
|
5701
|
+
],
|
|
5702
|
+
"properties": {
|
|
5703
|
+
"button": {
|
|
5704
|
+
"description": "Kind of click to perform.",
|
|
5705
|
+
"type": "string",
|
|
5706
|
+
"enum": [
|
|
5707
|
+
"left",
|
|
5708
|
+
"right",
|
|
5709
|
+
"middle"
|
|
5710
|
+
]
|
|
5711
|
+
},
|
|
5712
|
+
"elementText": {
|
|
5713
|
+
"type": "string",
|
|
5714
|
+
"description": "Display text of the element to click. If combined with `selector`, the element must match both the text and the selector."
|
|
5715
|
+
},
|
|
5716
|
+
"selector": {
|
|
5717
|
+
"type": "string",
|
|
5718
|
+
"description": "Selector of the element to click. If combined with `elementText`, the element must match both the text and the selector."
|
|
5719
|
+
}
|
|
5720
|
+
}
|
|
5721
|
+
}
|
|
5722
|
+
}
|
|
5723
|
+
},
|
|
5724
|
+
"examples": [
|
|
5725
|
+
true,
|
|
5726
|
+
"right",
|
|
5727
|
+
{
|
|
5728
|
+
"button": "left",
|
|
5729
|
+
"elementText": "Element text"
|
|
5730
|
+
},
|
|
5731
|
+
{
|
|
5732
|
+
"selector": "#elementToScreenshot",
|
|
5733
|
+
"elementText": "Element text",
|
|
5734
|
+
"button": "middle"
|
|
5735
|
+
}
|
|
5736
|
+
]
|
|
5737
|
+
}
|
|
5738
|
+
}
|
|
5739
|
+
}
|
|
5740
|
+
]
|
|
5741
|
+
},
|
|
5742
|
+
{
|
|
5743
|
+
"allOf": [
|
|
5744
|
+
{
|
|
5745
|
+
"type": "object",
|
|
5746
|
+
"dynamicDefaults": {
|
|
5747
|
+
"stepId": "uuid"
|
|
5748
|
+
},
|
|
5749
|
+
"properties": {
|
|
5750
|
+
"stepId": {
|
|
5751
|
+
"type": "string",
|
|
5752
|
+
"description": "ID of the step."
|
|
5753
|
+
},
|
|
5754
|
+
"description": {
|
|
5755
|
+
"type": "string",
|
|
5756
|
+
"description": "Description of the step."
|
|
5757
|
+
},
|
|
5758
|
+
"outputs": {
|
|
5759
|
+
"type": "object",
|
|
5760
|
+
"description": "Outputs from step processes and user-defined expressions. Use the `outputs` object to reference outputs in subsequent steps. If a user-defined output matches the key for a step-defined output, the user-defined output takes precedence.",
|
|
5761
|
+
"default": {},
|
|
5762
|
+
"patternProperties": {
|
|
5763
|
+
"^[A-Za-z0-9_]+$": {
|
|
5764
|
+
"type": "string",
|
|
5765
|
+
"description": "Runtime expression for a user-defined output value."
|
|
5766
|
+
}
|
|
5767
|
+
}
|
|
5768
|
+
},
|
|
5769
|
+
"variables": {
|
|
5770
|
+
"type": "object",
|
|
5771
|
+
"description": "Environment variables to set from user-defined expressions.",
|
|
5772
|
+
"default": {},
|
|
5773
|
+
"patternProperties": {
|
|
5774
|
+
"^[A-Za-z0-9_]+$": {
|
|
5775
|
+
"type": "string",
|
|
5776
|
+
"description": "Runtime expression for a user-defined output value."
|
|
5777
|
+
}
|
|
5778
|
+
}
|
|
5779
|
+
}
|
|
5780
|
+
}
|
|
5781
|
+
},
|
|
5782
|
+
{
|
|
5783
|
+
"type": "object",
|
|
5784
|
+
"required": [
|
|
5785
|
+
"find"
|
|
5786
|
+
],
|
|
5787
|
+
"properties": {
|
|
5788
|
+
"find": {
|
|
5789
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
5790
|
+
"title": "find",
|
|
5791
|
+
"description": "Find an element based on display text or a selector, then optionally interact with it.",
|
|
5792
|
+
"anyOf": [
|
|
5793
|
+
{
|
|
5794
|
+
"title": "Find element (simple)",
|
|
5795
|
+
"type": "string",
|
|
5796
|
+
"description": "Display text or selector of the element to find."
|
|
5797
|
+
},
|
|
5798
|
+
{
|
|
5799
|
+
"title": "Find element (detailed)",
|
|
5800
|
+
"type": "object",
|
|
5801
|
+
"anyOf": [
|
|
5802
|
+
{
|
|
5803
|
+
"required": [
|
|
5804
|
+
"selector"
|
|
5805
|
+
]
|
|
5806
|
+
},
|
|
5807
|
+
{
|
|
5808
|
+
"required": [
|
|
5809
|
+
"elementText"
|
|
5810
|
+
]
|
|
5811
|
+
}
|
|
5812
|
+
],
|
|
5813
|
+
"additionalProperties": false,
|
|
5814
|
+
"properties": {
|
|
5815
|
+
"elementText": {
|
|
5816
|
+
"type": "string",
|
|
5817
|
+
"description": "Display text of the element to find. If combined with `selector`, the element must match both the text and the selector."
|
|
5818
|
+
},
|
|
5819
|
+
"selector": {
|
|
5820
|
+
"type": "string",
|
|
5821
|
+
"description": "Selector of the element to find. If combined with `elementText`, the element must match both the text and the selector."
|
|
5822
|
+
},
|
|
5823
|
+
"timeout": {
|
|
5824
|
+
"type": "integer",
|
|
5825
|
+
"description": "Max duration in milliseconds to wait for the element to exist.",
|
|
5826
|
+
"default": 5000
|
|
5827
|
+
},
|
|
5828
|
+
"moveTo": {
|
|
5829
|
+
"description": "Move to the element. If the element isn't visible, it's scrolled into view.",
|
|
5830
|
+
"type": "boolean",
|
|
5831
|
+
"default": true
|
|
5832
|
+
},
|
|
5833
|
+
"click": {
|
|
5834
|
+
"description": "Click the element.",
|
|
5835
|
+
"anyOf": [
|
|
5836
|
+
{
|
|
5837
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
5838
|
+
"title": "click",
|
|
5839
|
+
"description": "Click or tap an element.",
|
|
5840
|
+
"anyOf": [
|
|
5841
|
+
{
|
|
5842
|
+
"title": "Find element (simple)",
|
|
5843
|
+
"type": "string",
|
|
5844
|
+
"description": "Display text or selector of the element to find."
|
|
5845
|
+
},
|
|
5846
|
+
{
|
|
5847
|
+
"title": "Click element (detailed)",
|
|
5848
|
+
"type": "object",
|
|
5849
|
+
"anyOf": [
|
|
5850
|
+
{
|
|
5851
|
+
"required": [
|
|
5852
|
+
"selector"
|
|
5853
|
+
]
|
|
5854
|
+
},
|
|
5855
|
+
{
|
|
5856
|
+
"required": [
|
|
5857
|
+
"elementText"
|
|
5858
|
+
]
|
|
5859
|
+
}
|
|
5860
|
+
],
|
|
5861
|
+
"properties": {
|
|
5862
|
+
"button": {
|
|
5863
|
+
"description": "Kind of click to perform.",
|
|
5864
|
+
"type": "string",
|
|
5865
|
+
"enum": [
|
|
5866
|
+
"left",
|
|
5867
|
+
"right",
|
|
5868
|
+
"middle"
|
|
5869
|
+
]
|
|
5870
|
+
},
|
|
5871
|
+
"elementText": {
|
|
5872
|
+
"type": "string",
|
|
5873
|
+
"description": "Display text of the element to click. If combined with `selector`, the element must match both the text and the selector."
|
|
5874
|
+
},
|
|
5875
|
+
"selector": {
|
|
5876
|
+
"type": "string",
|
|
5877
|
+
"description": "Selector of the element to click. If combined with `elementText`, the element must match both the text and the selector."
|
|
5878
|
+
}
|
|
5879
|
+
}
|
|
5880
|
+
},
|
|
5881
|
+
{
|
|
5882
|
+
"type": "boolean"
|
|
5883
|
+
}
|
|
5884
|
+
],
|
|
5885
|
+
"components": {
|
|
5886
|
+
"schemas": {
|
|
5887
|
+
"string": {
|
|
5888
|
+
"title": "Find element (simple)",
|
|
5889
|
+
"type": "string",
|
|
5890
|
+
"description": "Display text or selector of the element to find."
|
|
5891
|
+
},
|
|
5892
|
+
"button": {
|
|
5893
|
+
"description": "Kind of click to perform.",
|
|
5894
|
+
"type": "string",
|
|
5895
|
+
"enum": [
|
|
5896
|
+
"left",
|
|
5897
|
+
"right",
|
|
5898
|
+
"middle"
|
|
5899
|
+
]
|
|
5900
|
+
},
|
|
5901
|
+
"object": {
|
|
5902
|
+
"title": "Click element (detailed)",
|
|
5903
|
+
"type": "object",
|
|
5904
|
+
"anyOf": [
|
|
5905
|
+
{
|
|
5906
|
+
"required": [
|
|
5907
|
+
"selector"
|
|
5908
|
+
]
|
|
5909
|
+
},
|
|
5910
|
+
{
|
|
5911
|
+
"required": [
|
|
5912
|
+
"elementText"
|
|
5913
|
+
]
|
|
5914
|
+
}
|
|
5915
|
+
],
|
|
5916
|
+
"properties": {
|
|
5917
|
+
"button": {
|
|
5918
|
+
"description": "Kind of click to perform.",
|
|
5919
|
+
"type": "string",
|
|
5920
|
+
"enum": [
|
|
5921
|
+
"left",
|
|
5922
|
+
"right",
|
|
5923
|
+
"middle"
|
|
5924
|
+
]
|
|
5925
|
+
},
|
|
5926
|
+
"elementText": {
|
|
5927
|
+
"type": "string",
|
|
5928
|
+
"description": "Display text of the element to click. If combined with `selector`, the element must match both the text and the selector."
|
|
5929
|
+
},
|
|
5930
|
+
"selector": {
|
|
5931
|
+
"type": "string",
|
|
5932
|
+
"description": "Selector of the element to click. If combined with `elementText`, the element must match both the text and the selector."
|
|
5933
|
+
}
|
|
5934
|
+
}
|
|
5935
|
+
}
|
|
5936
|
+
}
|
|
5937
|
+
},
|
|
5938
|
+
"examples": [
|
|
5939
|
+
true,
|
|
5940
|
+
"right",
|
|
5941
|
+
{
|
|
5942
|
+
"button": "left",
|
|
5943
|
+
"elementText": "Element text"
|
|
5944
|
+
},
|
|
5945
|
+
{
|
|
5946
|
+
"selector": "#elementToScreenshot",
|
|
5947
|
+
"elementText": "Element text",
|
|
5948
|
+
"button": "middle"
|
|
5949
|
+
}
|
|
5950
|
+
]
|
|
5951
|
+
},
|
|
5952
|
+
{
|
|
5953
|
+
"type": "object",
|
|
5954
|
+
"properties": {
|
|
5955
|
+
"button": {
|
|
5956
|
+
"description": "Kind of click to perform.",
|
|
5957
|
+
"type": "string",
|
|
5958
|
+
"enum": [
|
|
5959
|
+
"left",
|
|
5960
|
+
"right",
|
|
5961
|
+
"middle"
|
|
5962
|
+
]
|
|
5963
|
+
}
|
|
5964
|
+
}
|
|
5965
|
+
}
|
|
5966
|
+
]
|
|
5967
|
+
},
|
|
5968
|
+
"type": {
|
|
5969
|
+
"description": "Type keys after finding the element. Either a string or an object with a `keys` field as defined in [`type`](type). To type in the element, make the element active with the `click` parameter.",
|
|
5970
|
+
"allOf": [
|
|
5971
|
+
{
|
|
5972
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
5973
|
+
"title": "typeKeys",
|
|
5974
|
+
"description": "Type keys. To type special keys, begin and end the string with `$` and use the special key's keyword. For example, to type the Escape key, enter `$ESCAPE$`.",
|
|
5975
|
+
"anyOf": [
|
|
5976
|
+
{
|
|
5977
|
+
"description": "Sequence of keys to enter.",
|
|
5978
|
+
"anyOf": [
|
|
5979
|
+
{
|
|
5980
|
+
"type": "string"
|
|
5981
|
+
},
|
|
5982
|
+
{
|
|
5983
|
+
"type": "array",
|
|
5984
|
+
"items": {
|
|
5985
|
+
"oneOf": [
|
|
5986
|
+
{
|
|
5987
|
+
"type": "string"
|
|
5988
|
+
}
|
|
5989
|
+
]
|
|
5990
|
+
}
|
|
5991
|
+
}
|
|
5992
|
+
]
|
|
5993
|
+
},
|
|
5994
|
+
{
|
|
5995
|
+
"type": "object",
|
|
5996
|
+
"properties": {
|
|
5997
|
+
"keys": {
|
|
5998
|
+
"description": "Sequence of keys to enter.",
|
|
5999
|
+
"anyOf": [
|
|
6000
|
+
{
|
|
6001
|
+
"type": "string"
|
|
6002
|
+
},
|
|
6003
|
+
{
|
|
6004
|
+
"type": "array",
|
|
6005
|
+
"items": {
|
|
6006
|
+
"oneOf": [
|
|
6007
|
+
{
|
|
6008
|
+
"type": "string"
|
|
6009
|
+
}
|
|
6010
|
+
]
|
|
6011
|
+
}
|
|
6012
|
+
}
|
|
6013
|
+
]
|
|
6014
|
+
},
|
|
6015
|
+
"inputDelay": {
|
|
6016
|
+
"type": "number",
|
|
6017
|
+
"description": "Delay in milliseconds between each key press during a recording",
|
|
6018
|
+
"default": 100
|
|
6019
|
+
},
|
|
6020
|
+
"selector": {
|
|
6021
|
+
"type": "string",
|
|
6022
|
+
"description": "Selector for the element to type into. If not specified, the typing occurs in the active element."
|
|
6023
|
+
}
|
|
6024
|
+
},
|
|
6025
|
+
"required": [
|
|
6026
|
+
"keys"
|
|
6027
|
+
],
|
|
6028
|
+
"additionalProperties": false
|
|
6029
|
+
}
|
|
6030
|
+
],
|
|
6031
|
+
"components": {
|
|
6032
|
+
"schemas": {
|
|
6033
|
+
"keys": {
|
|
6034
|
+
"description": "Sequence of keys to enter.",
|
|
6035
|
+
"anyOf": [
|
|
6036
|
+
{
|
|
6037
|
+
"type": "string"
|
|
6038
|
+
},
|
|
6039
|
+
{
|
|
6040
|
+
"type": "array",
|
|
6041
|
+
"items": {
|
|
6042
|
+
"oneOf": [
|
|
6043
|
+
{
|
|
6044
|
+
"type": "string"
|
|
6045
|
+
}
|
|
6046
|
+
]
|
|
6047
|
+
}
|
|
6048
|
+
}
|
|
6049
|
+
]
|
|
6050
|
+
},
|
|
6051
|
+
"object": {
|
|
6052
|
+
"type": "object",
|
|
6053
|
+
"properties": {
|
|
6054
|
+
"keys": {
|
|
6055
|
+
"description": "Sequence of keys to enter.",
|
|
6056
|
+
"anyOf": [
|
|
6057
|
+
{
|
|
6058
|
+
"type": "string"
|
|
6059
|
+
},
|
|
6060
|
+
{
|
|
6061
|
+
"type": "array",
|
|
6062
|
+
"items": {
|
|
6063
|
+
"oneOf": [
|
|
6064
|
+
{
|
|
6065
|
+
"type": "string"
|
|
6066
|
+
}
|
|
6067
|
+
]
|
|
6068
|
+
}
|
|
6069
|
+
}
|
|
6070
|
+
]
|
|
6071
|
+
},
|
|
6072
|
+
"inputDelay": {
|
|
6073
|
+
"type": "number",
|
|
6074
|
+
"description": "Delay in milliseconds between each key press during a recording",
|
|
6075
|
+
"default": 100
|
|
6076
|
+
},
|
|
6077
|
+
"selector": {
|
|
6078
|
+
"type": "string",
|
|
6079
|
+
"description": "Selector for the element to type into. If not specified, the typing occurs in the active element."
|
|
6080
|
+
}
|
|
6081
|
+
},
|
|
6082
|
+
"required": [
|
|
6083
|
+
"keys"
|
|
6084
|
+
],
|
|
6085
|
+
"additionalProperties": false
|
|
6086
|
+
}
|
|
6087
|
+
}
|
|
6088
|
+
},
|
|
6089
|
+
"examples": [
|
|
6090
|
+
"kittens",
|
|
6091
|
+
[
|
|
6092
|
+
"$ENTER$"
|
|
6093
|
+
],
|
|
6094
|
+
[
|
|
6095
|
+
"kittens",
|
|
6096
|
+
"$ENTER$"
|
|
6097
|
+
],
|
|
6098
|
+
{
|
|
6099
|
+
"keys": "kittens"
|
|
6100
|
+
},
|
|
6101
|
+
{
|
|
6102
|
+
"keys": [
|
|
6103
|
+
"$ENTER$"
|
|
6104
|
+
]
|
|
6105
|
+
},
|
|
6106
|
+
{
|
|
6107
|
+
"keys": [
|
|
6108
|
+
"kittens",
|
|
6109
|
+
"$ENTER$"
|
|
6110
|
+
],
|
|
6111
|
+
"inputDelay": 500
|
|
6112
|
+
}
|
|
6113
|
+
]
|
|
6114
|
+
},
|
|
6115
|
+
{
|
|
6116
|
+
"not": {
|
|
6117
|
+
"type": "object",
|
|
6118
|
+
"required": [
|
|
6119
|
+
"selector",
|
|
6120
|
+
"elementText"
|
|
6121
|
+
]
|
|
6122
|
+
}
|
|
6123
|
+
}
|
|
6124
|
+
]
|
|
6125
|
+
}
|
|
6126
|
+
}
|
|
6127
|
+
}
|
|
6128
|
+
],
|
|
6129
|
+
"components": {
|
|
6130
|
+
"schemas": {
|
|
6131
|
+
"string": {
|
|
6132
|
+
"title": "Find element (simple)",
|
|
6133
|
+
"type": "string",
|
|
6134
|
+
"description": "Display text or selector of the element to find."
|
|
6135
|
+
},
|
|
6136
|
+
"object": {
|
|
6137
|
+
"title": "Find element (detailed)",
|
|
6138
|
+
"type": "object",
|
|
6139
|
+
"anyOf": [
|
|
6140
|
+
{
|
|
6141
|
+
"required": [
|
|
6142
|
+
"selector"
|
|
6143
|
+
]
|
|
6144
|
+
},
|
|
6145
|
+
{
|
|
6146
|
+
"required": [
|
|
6147
|
+
"elementText"
|
|
6148
|
+
]
|
|
6149
|
+
}
|
|
6150
|
+
],
|
|
6151
|
+
"additionalProperties": false,
|
|
6152
|
+
"properties": {
|
|
6153
|
+
"elementText": {
|
|
6154
|
+
"type": "string",
|
|
6155
|
+
"description": "Display text of the element to find. If combined with `selector`, the element must match both the text and the selector."
|
|
6156
|
+
},
|
|
6157
|
+
"selector": {
|
|
6158
|
+
"type": "string",
|
|
6159
|
+
"description": "Selector of the element to find. If combined with `elementText`, the element must match both the text and the selector."
|
|
6160
|
+
},
|
|
6161
|
+
"timeout": {
|
|
6162
|
+
"type": "integer",
|
|
6163
|
+
"description": "Max duration in milliseconds to wait for the element to exist.",
|
|
6164
|
+
"default": 5000
|
|
6165
|
+
},
|
|
6166
|
+
"moveTo": {
|
|
6167
|
+
"description": "Move to the element. If the element isn't visible, it's scrolled into view.",
|
|
6168
|
+
"type": "boolean",
|
|
6169
|
+
"default": true
|
|
6170
|
+
},
|
|
6171
|
+
"click": {
|
|
6172
|
+
"description": "Click the element.",
|
|
6173
|
+
"anyOf": [
|
|
6174
|
+
{
|
|
6175
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
6176
|
+
"title": "click",
|
|
6177
|
+
"description": "Click or tap an element.",
|
|
6178
|
+
"anyOf": [
|
|
6179
|
+
{
|
|
6180
|
+
"title": "Find element (simple)",
|
|
6181
|
+
"type": "string",
|
|
6182
|
+
"description": "Display text or selector of the element to find."
|
|
6183
|
+
},
|
|
6184
|
+
{
|
|
6185
|
+
"title": "Click element (detailed)",
|
|
6186
|
+
"type": "object",
|
|
6187
|
+
"anyOf": [
|
|
6188
|
+
{
|
|
6189
|
+
"required": [
|
|
6190
|
+
"selector"
|
|
6191
|
+
]
|
|
6192
|
+
},
|
|
6193
|
+
{
|
|
6194
|
+
"required": [
|
|
6195
|
+
"elementText"
|
|
6196
|
+
]
|
|
6197
|
+
}
|
|
6198
|
+
],
|
|
6199
|
+
"properties": {
|
|
6200
|
+
"button": {
|
|
6201
|
+
"description": "Kind of click to perform.",
|
|
6202
|
+
"type": "string",
|
|
6203
|
+
"enum": [
|
|
6204
|
+
"left",
|
|
6205
|
+
"right",
|
|
6206
|
+
"middle"
|
|
6207
|
+
]
|
|
6208
|
+
},
|
|
6209
|
+
"elementText": {
|
|
6210
|
+
"type": "string",
|
|
6211
|
+
"description": "Display text of the element to click. If combined with `selector`, the element must match both the text and the selector."
|
|
6212
|
+
},
|
|
6213
|
+
"selector": {
|
|
6214
|
+
"type": "string",
|
|
6215
|
+
"description": "Selector of the element to click. If combined with `elementText`, the element must match both the text and the selector."
|
|
6216
|
+
}
|
|
6217
|
+
}
|
|
6218
|
+
},
|
|
6219
|
+
{
|
|
6220
|
+
"type": "boolean"
|
|
6221
|
+
}
|
|
6222
|
+
],
|
|
6223
|
+
"components": {
|
|
6224
|
+
"schemas": {
|
|
6225
|
+
"string": {
|
|
6226
|
+
"title": "Find element (simple)",
|
|
6227
|
+
"type": "string",
|
|
6228
|
+
"description": "Display text or selector of the element to find."
|
|
6229
|
+
},
|
|
6230
|
+
"button": {
|
|
6231
|
+
"description": "Kind of click to perform.",
|
|
6232
|
+
"type": "string",
|
|
6233
|
+
"enum": [
|
|
6234
|
+
"left",
|
|
6235
|
+
"right",
|
|
6236
|
+
"middle"
|
|
6237
|
+
]
|
|
6238
|
+
},
|
|
6239
|
+
"object": {
|
|
6240
|
+
"title": "Click element (detailed)",
|
|
6241
|
+
"type": "object",
|
|
6242
|
+
"anyOf": [
|
|
6243
|
+
{
|
|
6244
|
+
"required": [
|
|
6245
|
+
"selector"
|
|
6246
|
+
]
|
|
6247
|
+
},
|
|
6248
|
+
{
|
|
6249
|
+
"required": [
|
|
6250
|
+
"elementText"
|
|
6251
|
+
]
|
|
6252
|
+
}
|
|
6253
|
+
],
|
|
6254
|
+
"properties": {
|
|
6255
|
+
"button": {
|
|
6256
|
+
"description": "Kind of click to perform.",
|
|
6257
|
+
"type": "string",
|
|
6258
|
+
"enum": [
|
|
6259
|
+
"left",
|
|
6260
|
+
"right",
|
|
6261
|
+
"middle"
|
|
6262
|
+
]
|
|
6263
|
+
},
|
|
6264
|
+
"elementText": {
|
|
6265
|
+
"type": "string",
|
|
6266
|
+
"description": "Display text of the element to click. If combined with `selector`, the element must match both the text and the selector."
|
|
6267
|
+
},
|
|
6268
|
+
"selector": {
|
|
6269
|
+
"type": "string",
|
|
6270
|
+
"description": "Selector of the element to click. If combined with `elementText`, the element must match both the text and the selector."
|
|
6271
|
+
}
|
|
6272
|
+
}
|
|
6273
|
+
}
|
|
6274
|
+
}
|
|
6275
|
+
},
|
|
6276
|
+
"examples": [
|
|
6277
|
+
true,
|
|
6278
|
+
"right",
|
|
6279
|
+
{
|
|
6280
|
+
"button": "left",
|
|
6281
|
+
"elementText": "Element text"
|
|
6282
|
+
},
|
|
6283
|
+
{
|
|
6284
|
+
"selector": "#elementToScreenshot",
|
|
6285
|
+
"elementText": "Element text",
|
|
6286
|
+
"button": "middle"
|
|
6287
|
+
}
|
|
6288
|
+
]
|
|
6289
|
+
},
|
|
6290
|
+
{
|
|
6291
|
+
"type": "object",
|
|
6292
|
+
"properties": {
|
|
6293
|
+
"button": {
|
|
6294
|
+
"description": "Kind of click to perform.",
|
|
6295
|
+
"type": "string",
|
|
6296
|
+
"enum": [
|
|
6297
|
+
"left",
|
|
6298
|
+
"right",
|
|
6299
|
+
"middle"
|
|
6300
|
+
]
|
|
6301
|
+
}
|
|
6302
|
+
}
|
|
6303
|
+
}
|
|
6304
|
+
]
|
|
6305
|
+
},
|
|
6306
|
+
"type": {
|
|
6307
|
+
"description": "Type keys after finding the element. Either a string or an object with a `keys` field as defined in [`type`](type). To type in the element, make the element active with the `click` parameter.",
|
|
6308
|
+
"allOf": [
|
|
6309
|
+
{
|
|
6310
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
6311
|
+
"title": "typeKeys",
|
|
6312
|
+
"description": "Type keys. To type special keys, begin and end the string with `$` and use the special key's keyword. For example, to type the Escape key, enter `$ESCAPE$`.",
|
|
6313
|
+
"anyOf": [
|
|
6314
|
+
{
|
|
6315
|
+
"description": "Sequence of keys to enter.",
|
|
6316
|
+
"anyOf": [
|
|
6317
|
+
{
|
|
6318
|
+
"type": "string"
|
|
6319
|
+
},
|
|
6320
|
+
{
|
|
6321
|
+
"type": "array",
|
|
6322
|
+
"items": {
|
|
6323
|
+
"oneOf": [
|
|
6324
|
+
{
|
|
6325
|
+
"type": "string"
|
|
6326
|
+
}
|
|
6327
|
+
]
|
|
6328
|
+
}
|
|
6329
|
+
}
|
|
6330
|
+
]
|
|
6331
|
+
},
|
|
6332
|
+
{
|
|
6333
|
+
"type": "object",
|
|
6334
|
+
"properties": {
|
|
6335
|
+
"keys": {
|
|
6336
|
+
"description": "Sequence of keys to enter.",
|
|
6337
|
+
"anyOf": [
|
|
6338
|
+
{
|
|
6339
|
+
"type": "string"
|
|
6340
|
+
},
|
|
6341
|
+
{
|
|
6342
|
+
"type": "array",
|
|
6343
|
+
"items": {
|
|
6344
|
+
"oneOf": [
|
|
6345
|
+
{
|
|
6346
|
+
"type": "string"
|
|
6347
|
+
}
|
|
6348
|
+
]
|
|
6349
|
+
}
|
|
6350
|
+
}
|
|
6351
|
+
]
|
|
6352
|
+
},
|
|
6353
|
+
"inputDelay": {
|
|
6354
|
+
"type": "number",
|
|
6355
|
+
"description": "Delay in milliseconds between each key press during a recording",
|
|
6356
|
+
"default": 100
|
|
6357
|
+
},
|
|
6358
|
+
"selector": {
|
|
6359
|
+
"type": "string",
|
|
6360
|
+
"description": "Selector for the element to type into. If not specified, the typing occurs in the active element."
|
|
6361
|
+
}
|
|
6362
|
+
},
|
|
6363
|
+
"required": [
|
|
6364
|
+
"keys"
|
|
6365
|
+
],
|
|
6366
|
+
"additionalProperties": false
|
|
6367
|
+
}
|
|
6368
|
+
],
|
|
6369
|
+
"components": {
|
|
6370
|
+
"schemas": {
|
|
6371
|
+
"keys": {
|
|
6372
|
+
"description": "Sequence of keys to enter.",
|
|
6373
|
+
"anyOf": [
|
|
6374
|
+
{
|
|
6375
|
+
"type": "string"
|
|
6376
|
+
},
|
|
6377
|
+
{
|
|
6378
|
+
"type": "array",
|
|
6379
|
+
"items": {
|
|
6380
|
+
"oneOf": [
|
|
6381
|
+
{
|
|
6382
|
+
"type": "string"
|
|
6383
|
+
}
|
|
6384
|
+
]
|
|
6385
|
+
}
|
|
6386
|
+
}
|
|
6387
|
+
]
|
|
6388
|
+
},
|
|
6389
|
+
"object": {
|
|
6390
|
+
"type": "object",
|
|
6391
|
+
"properties": {
|
|
6392
|
+
"keys": {
|
|
6393
|
+
"description": "Sequence of keys to enter.",
|
|
6394
|
+
"anyOf": [
|
|
6395
|
+
{
|
|
6396
|
+
"type": "string"
|
|
6397
|
+
},
|
|
6398
|
+
{
|
|
6399
|
+
"type": "array",
|
|
6400
|
+
"items": {
|
|
6401
|
+
"oneOf": [
|
|
6402
|
+
{
|
|
6403
|
+
"type": "string"
|
|
6404
|
+
}
|
|
6405
|
+
]
|
|
6406
|
+
}
|
|
6407
|
+
}
|
|
6408
|
+
]
|
|
6409
|
+
},
|
|
6410
|
+
"inputDelay": {
|
|
6411
|
+
"type": "number",
|
|
6412
|
+
"description": "Delay in milliseconds between each key press during a recording",
|
|
6413
|
+
"default": 100
|
|
6414
|
+
},
|
|
6415
|
+
"selector": {
|
|
6416
|
+
"type": "string",
|
|
6417
|
+
"description": "Selector for the element to type into. If not specified, the typing occurs in the active element."
|
|
6418
|
+
}
|
|
6419
|
+
},
|
|
6420
|
+
"required": [
|
|
6421
|
+
"keys"
|
|
6422
|
+
],
|
|
6423
|
+
"additionalProperties": false
|
|
6424
|
+
}
|
|
6425
|
+
}
|
|
6426
|
+
},
|
|
6427
|
+
"examples": [
|
|
6428
|
+
"kittens",
|
|
6429
|
+
[
|
|
6430
|
+
"$ENTER$"
|
|
6431
|
+
],
|
|
6432
|
+
[
|
|
6433
|
+
"kittens",
|
|
6434
|
+
"$ENTER$"
|
|
6435
|
+
],
|
|
6436
|
+
{
|
|
6437
|
+
"keys": "kittens"
|
|
6438
|
+
},
|
|
6439
|
+
{
|
|
6440
|
+
"keys": [
|
|
6441
|
+
"$ENTER$"
|
|
6442
|
+
]
|
|
6443
|
+
},
|
|
6444
|
+
{
|
|
6445
|
+
"keys": [
|
|
6446
|
+
"kittens",
|
|
6447
|
+
"$ENTER$"
|
|
6448
|
+
],
|
|
6449
|
+
"inputDelay": 500
|
|
6450
|
+
}
|
|
6451
|
+
]
|
|
6452
|
+
},
|
|
6453
|
+
{
|
|
6454
|
+
"not": {
|
|
6455
|
+
"type": "object",
|
|
6456
|
+
"required": [
|
|
6457
|
+
"selector",
|
|
6458
|
+
"elementText"
|
|
6459
|
+
]
|
|
6460
|
+
}
|
|
6461
|
+
}
|
|
6462
|
+
]
|
|
6463
|
+
}
|
|
6464
|
+
}
|
|
6465
|
+
}
|
|
6466
|
+
}
|
|
6467
|
+
},
|
|
6468
|
+
"examples": [
|
|
6469
|
+
"Find me!",
|
|
6470
|
+
{
|
|
6471
|
+
"selector": "[title=Search]"
|
|
6472
|
+
},
|
|
6473
|
+
{
|
|
6474
|
+
"selector": "[title=Search]",
|
|
6475
|
+
"timeout": 10000,
|
|
6476
|
+
"elementText": "Search",
|
|
6477
|
+
"moveTo": true,
|
|
6478
|
+
"click": true,
|
|
6479
|
+
"type": "shorthair cat"
|
|
6480
|
+
},
|
|
6481
|
+
{
|
|
6482
|
+
"selector": "[title=Search]",
|
|
6483
|
+
"click": {
|
|
6484
|
+
"button": "right"
|
|
6485
|
+
}
|
|
6486
|
+
},
|
|
6487
|
+
{
|
|
6488
|
+
"selector": "[title=Search]",
|
|
6489
|
+
"timeout": 10000,
|
|
6490
|
+
"elementText": "Search",
|
|
6491
|
+
"moveTo": true,
|
|
6492
|
+
"click": true,
|
|
6493
|
+
"type": {
|
|
6494
|
+
"keys": [
|
|
6495
|
+
"shorthair cat"
|
|
6496
|
+
],
|
|
6497
|
+
"inputDelay": 100
|
|
6498
|
+
}
|
|
6499
|
+
}
|
|
6500
|
+
]
|
|
6501
|
+
}
|
|
6502
|
+
}
|
|
6503
|
+
}
|
|
6504
|
+
]
|
|
6505
|
+
},
|
|
6506
|
+
{
|
|
6507
|
+
"allOf": [
|
|
6508
|
+
{
|
|
6509
|
+
"type": "object",
|
|
6510
|
+
"dynamicDefaults": {
|
|
6511
|
+
"stepId": "uuid"
|
|
6512
|
+
},
|
|
6513
|
+
"properties": {
|
|
6514
|
+
"stepId": {
|
|
6515
|
+
"type": "string",
|
|
6516
|
+
"description": "ID of the step."
|
|
6517
|
+
},
|
|
6518
|
+
"description": {
|
|
6519
|
+
"type": "string",
|
|
6520
|
+
"description": "Description of the step."
|
|
6521
|
+
},
|
|
6522
|
+
"outputs": {
|
|
6523
|
+
"type": "object",
|
|
6524
|
+
"description": "Outputs from step processes and user-defined expressions. Use the `outputs` object to reference outputs in subsequent steps. If a user-defined output matches the key for a step-defined output, the user-defined output takes precedence.",
|
|
6525
|
+
"default": {},
|
|
6526
|
+
"patternProperties": {
|
|
6527
|
+
"^[A-Za-z0-9_]+$": {
|
|
6528
|
+
"type": "string",
|
|
6529
|
+
"description": "Runtime expression for a user-defined output value."
|
|
6530
|
+
}
|
|
6531
|
+
}
|
|
6532
|
+
},
|
|
6533
|
+
"variables": {
|
|
6534
|
+
"type": "object",
|
|
6535
|
+
"description": "Environment variables to set from user-defined expressions.",
|
|
6536
|
+
"default": {},
|
|
6537
|
+
"patternProperties": {
|
|
6538
|
+
"^[A-Za-z0-9_]+$": {
|
|
6539
|
+
"type": "string",
|
|
6540
|
+
"description": "Runtime expression for a user-defined output value."
|
|
6541
|
+
}
|
|
6542
|
+
}
|
|
6543
|
+
}
|
|
6544
|
+
}
|
|
6545
|
+
},
|
|
6546
|
+
{
|
|
6547
|
+
"type": "object",
|
|
6548
|
+
"required": [
|
|
6549
|
+
"goTo"
|
|
6550
|
+
],
|
|
6551
|
+
"properties": {
|
|
6552
|
+
"goTo": {
|
|
6553
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
6554
|
+
"title": "goTo",
|
|
6555
|
+
"anyOf": [
|
|
6556
|
+
{
|
|
6557
|
+
"description": "Navigate to an HTTP or HTTPS URL. Can be a full URL or a path. If a path is provided, navigates relative to the current URL, if any.",
|
|
6558
|
+
"type": "string",
|
|
6559
|
+
"pattern": "(^(http://|https://|/).*|\\$[A-Za-z0-9_]+)",
|
|
6560
|
+
"transform": [
|
|
6561
|
+
"trim"
|
|
6562
|
+
]
|
|
6563
|
+
},
|
|
6564
|
+
{
|
|
6565
|
+
"description": "Navigate to an HTTP or HTTPS URL.",
|
|
6566
|
+
"type": "object",
|
|
6567
|
+
"additionalProperties": false,
|
|
6568
|
+
"required": [
|
|
6569
|
+
"url"
|
|
6570
|
+
],
|
|
6571
|
+
"properties": {
|
|
6572
|
+
"url": {
|
|
6573
|
+
"type": "string",
|
|
6574
|
+
"description": "URL to navigate to. Can be a full URL or a path. If a path is provided and `origin` is specified, prepends `origin` to `url`. If a path is provided but `origin` isn't specified, attempts to navigate relative to the current URL, if any.",
|
|
6575
|
+
"pattern": "(^(http://|https://|/).*|\\$[A-Za-z0-9_]+)",
|
|
6576
|
+
"transform": [
|
|
6577
|
+
"trim"
|
|
6578
|
+
]
|
|
6579
|
+
},
|
|
6580
|
+
"origin": {
|
|
6581
|
+
"type": "string",
|
|
6582
|
+
"description": "Protocol and domain to navigate to. Prepended to `url`.",
|
|
6583
|
+
"transform": [
|
|
6584
|
+
"trim"
|
|
6585
|
+
]
|
|
6586
|
+
}
|
|
6587
|
+
}
|
|
6588
|
+
}
|
|
6589
|
+
],
|
|
6590
|
+
"components": {
|
|
6591
|
+
"schemas": {
|
|
6592
|
+
"string": {
|
|
6593
|
+
"description": "Navigate to an HTTP or HTTPS URL. Can be a full URL or a path. If a path is provided, navigates relative to the current URL, if any.",
|
|
6594
|
+
"type": "string",
|
|
6595
|
+
"pattern": "(^(http://|https://|/).*|\\$[A-Za-z0-9_]+)",
|
|
6596
|
+
"transform": [
|
|
6597
|
+
"trim"
|
|
6598
|
+
]
|
|
6599
|
+
},
|
|
6600
|
+
"object": {
|
|
6601
|
+
"description": "Navigate to an HTTP or HTTPS URL.",
|
|
6602
|
+
"type": "object",
|
|
6603
|
+
"additionalProperties": false,
|
|
6604
|
+
"required": [
|
|
6605
|
+
"url"
|
|
6606
|
+
],
|
|
6607
|
+
"properties": {
|
|
6608
|
+
"url": {
|
|
6609
|
+
"type": "string",
|
|
6610
|
+
"description": "URL to navigate to. Can be a full URL or a path. If a path is provided and `origin` is specified, prepends `origin` to `url`. If a path is provided but `origin` isn't specified, attempts to navigate relative to the current URL, if any.",
|
|
6611
|
+
"pattern": "(^(http://|https://|/).*|\\$[A-Za-z0-9_]+)",
|
|
6612
|
+
"transform": [
|
|
6613
|
+
"trim"
|
|
6614
|
+
]
|
|
6615
|
+
},
|
|
6616
|
+
"origin": {
|
|
6617
|
+
"type": "string",
|
|
6618
|
+
"description": "Protocol and domain to navigate to. Prepended to `url`.",
|
|
6619
|
+
"transform": [
|
|
6620
|
+
"trim"
|
|
6621
|
+
]
|
|
6622
|
+
}
|
|
6623
|
+
}
|
|
6624
|
+
}
|
|
6625
|
+
}
|
|
6626
|
+
},
|
|
6627
|
+
"examples": [
|
|
6628
|
+
"https://www.google.com",
|
|
6629
|
+
"/search",
|
|
6630
|
+
{
|
|
6631
|
+
"url": "https://www.google.com"
|
|
6632
|
+
},
|
|
6633
|
+
{
|
|
6634
|
+
"url": "/search",
|
|
6635
|
+
"origin": "www.google.com"
|
|
6636
|
+
}
|
|
6637
|
+
]
|
|
6638
|
+
}
|
|
6639
|
+
}
|
|
6640
|
+
}
|
|
6641
|
+
]
|
|
6642
|
+
},
|
|
6643
|
+
{
|
|
6644
|
+
"allOf": [
|
|
6645
|
+
{
|
|
6646
|
+
"type": "object",
|
|
6647
|
+
"dynamicDefaults": {
|
|
6648
|
+
"stepId": "uuid"
|
|
6649
|
+
},
|
|
6650
|
+
"properties": {
|
|
6651
|
+
"stepId": {
|
|
6652
|
+
"type": "string",
|
|
6653
|
+
"description": "ID of the step."
|
|
6654
|
+
},
|
|
6655
|
+
"description": {
|
|
6656
|
+
"type": "string",
|
|
6657
|
+
"description": "Description of the step."
|
|
6658
|
+
},
|
|
6659
|
+
"outputs": {
|
|
6660
|
+
"type": "object",
|
|
6661
|
+
"description": "Outputs from step processes and user-defined expressions. Use the `outputs` object to reference outputs in subsequent steps. If a user-defined output matches the key for a step-defined output, the user-defined output takes precedence.",
|
|
6662
|
+
"default": {},
|
|
6663
|
+
"patternProperties": {
|
|
6664
|
+
"^[A-Za-z0-9_]+$": {
|
|
6665
|
+
"type": "string",
|
|
6666
|
+
"description": "Runtime expression for a user-defined output value."
|
|
6667
|
+
}
|
|
6668
|
+
}
|
|
6669
|
+
},
|
|
6670
|
+
"variables": {
|
|
6671
|
+
"type": "object",
|
|
6672
|
+
"description": "Environment variables to set from user-defined expressions.",
|
|
6673
|
+
"default": {},
|
|
6674
|
+
"patternProperties": {
|
|
6675
|
+
"^[A-Za-z0-9_]+$": {
|
|
6676
|
+
"type": "string",
|
|
6677
|
+
"description": "Runtime expression for a user-defined output value."
|
|
6678
|
+
}
|
|
6679
|
+
}
|
|
6680
|
+
}
|
|
6681
|
+
}
|
|
6682
|
+
},
|
|
6683
|
+
{
|
|
6684
|
+
"type": "object",
|
|
6685
|
+
"required": [
|
|
6686
|
+
"httpRequest"
|
|
6687
|
+
],
|
|
6688
|
+
"properties": {
|
|
6689
|
+
"httpRequest": {
|
|
6690
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
6691
|
+
"title": "httpRequest",
|
|
6692
|
+
"description": "Perform a generic HTTP request, for example to an API.",
|
|
6693
|
+
"anyOf": [
|
|
6694
|
+
{
|
|
6695
|
+
"title": "URL",
|
|
6696
|
+
"type": "string",
|
|
6697
|
+
"description": "URL for the HTTP request.",
|
|
6698
|
+
"pattern": "(^(http://|https://).*|\\$[A-Za-z0-9_]+)",
|
|
6699
|
+
"transform": [
|
|
6700
|
+
"trim"
|
|
6701
|
+
]
|
|
6702
|
+
},
|
|
6703
|
+
{
|
|
6704
|
+
"type": "object",
|
|
6705
|
+
"anyOf": [
|
|
6706
|
+
{
|
|
6707
|
+
"required": [
|
|
6708
|
+
"url"
|
|
6709
|
+
]
|
|
6710
|
+
},
|
|
6711
|
+
{
|
|
6712
|
+
"required": [
|
|
6713
|
+
"openApi"
|
|
6714
|
+
]
|
|
6715
|
+
}
|
|
6716
|
+
],
|
|
6717
|
+
"additionalProperties": false,
|
|
6718
|
+
"properties": {
|
|
6719
|
+
"url": {
|
|
6720
|
+
"title": "URL",
|
|
6721
|
+
"type": "string",
|
|
6722
|
+
"description": "URL for the HTTP request.",
|
|
6723
|
+
"pattern": "(^(http://|https://).*|\\$[A-Za-z0-9_]+)",
|
|
6724
|
+
"transform": [
|
|
6725
|
+
"trim"
|
|
6726
|
+
]
|
|
6727
|
+
},
|
|
6728
|
+
"openApi": {
|
|
6729
|
+
"anyOf": [
|
|
6730
|
+
{
|
|
6731
|
+
"allOf": [
|
|
6732
|
+
{
|
|
6733
|
+
"type": "string",
|
|
6734
|
+
"description": "ID of the operation to use for the request."
|
|
6735
|
+
},
|
|
6736
|
+
{
|
|
6737
|
+
"title": "Operation ID",
|
|
6738
|
+
"description": "Operation ID from the OpenAPI schema. Only valid if the OpenAPI description path is specified elsewhere and the operation ID is unique among all specified OpenAPI descriptions."
|
|
6739
|
+
}
|
|
6740
|
+
]
|
|
6741
|
+
},
|
|
6742
|
+
{
|
|
6743
|
+
"allOf": [
|
|
6744
|
+
{
|
|
6745
|
+
"version": "1.0.0",
|
|
6746
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
6747
|
+
"title": "openApi",
|
|
6748
|
+
"type": "object",
|
|
6749
|
+
"description": "OpenAPI description and configuration.",
|
|
6750
|
+
"additionalProperties": false,
|
|
6751
|
+
"anyOf": [
|
|
6752
|
+
{
|
|
6753
|
+
"required": [
|
|
6754
|
+
"descriptionPath"
|
|
6755
|
+
]
|
|
6756
|
+
},
|
|
6757
|
+
{
|
|
6758
|
+
"required": [
|
|
6759
|
+
"operationId"
|
|
6760
|
+
]
|
|
6761
|
+
}
|
|
6762
|
+
],
|
|
6763
|
+
"properties": {
|
|
6764
|
+
"name": {
|
|
6765
|
+
"type": "string",
|
|
6766
|
+
"description": "Name of the OpenAPI description, as defined in your configuration."
|
|
6767
|
+
},
|
|
6768
|
+
"descriptionPath": {
|
|
6769
|
+
"type": "string",
|
|
6770
|
+
"description": "URL or local path to the OpenAPI description."
|
|
6771
|
+
},
|
|
6772
|
+
"operationId": {
|
|
6773
|
+
"type": "string",
|
|
6774
|
+
"description": "ID of the operation to use for the request."
|
|
6775
|
+
},
|
|
6776
|
+
"server": {
|
|
6777
|
+
"type": "string",
|
|
6778
|
+
"description": "Server to use for example requests. Only valid if `useExample` is `request` or `both`. If not specified but an example is used for the request, uses the first server defined in the OpenAPI description."
|
|
6779
|
+
},
|
|
6780
|
+
"validateAgainstSchema": {
|
|
6781
|
+
"type": "string",
|
|
6782
|
+
"description": "Validates the request and/or response against the schema in the OpenAPI description. If the request or response doesn't match the schema, the step fails.",
|
|
6783
|
+
"enum": [
|
|
6784
|
+
"request",
|
|
6785
|
+
"response",
|
|
6786
|
+
"both",
|
|
6787
|
+
"none"
|
|
6788
|
+
],
|
|
6789
|
+
"default": "both"
|
|
6790
|
+
},
|
|
6791
|
+
"mockResponse": {
|
|
6792
|
+
"type": "boolean",
|
|
6793
|
+
"description": "If `true`, doesn't make the HTTP request, but instead uses the response example or schema from the OpenAPI description as the response data. Useful for creating tests when an API isn't fully implemented yet. If `statusCode` isn't specified, uses the first defined response code."
|
|
6794
|
+
},
|
|
6795
|
+
"statusCode": {
|
|
6796
|
+
"type": "integer",
|
|
6797
|
+
"description": "Response code to use for validation, examples, and status code checking. If the response code doesn't match, the step fails. `statusCodes` overrides this value when specified."
|
|
6798
|
+
},
|
|
6799
|
+
"useExample": {
|
|
6800
|
+
"type": [
|
|
6801
|
+
"string"
|
|
6802
|
+
],
|
|
6803
|
+
"description": "Uses the example from the OpenAPI description as the request and response data. If the request or response has multiple examples, specify `exampleKey`. If `statusCode` isn't specified, uses the first defined response code. `requestData`, `requestParams`, and `requestHeaders` override portions of request examples when specified. `responseData` overrides portions of response examples when specified.",
|
|
6804
|
+
"enum": [
|
|
6805
|
+
"request",
|
|
6806
|
+
"response",
|
|
6807
|
+
"both",
|
|
6808
|
+
"none"
|
|
6809
|
+
],
|
|
6810
|
+
"default": "none"
|
|
6811
|
+
},
|
|
6812
|
+
"exampleKey": {
|
|
6813
|
+
"type": "string",
|
|
6814
|
+
"description": "Key of the example to use from the `examples` property in the OpenAPI description. If an `examples` key isn't specified or isn't available for a given parameter or object, the `example` property value is used.",
|
|
6815
|
+
"default": ""
|
|
6816
|
+
},
|
|
6817
|
+
"headers": {
|
|
6818
|
+
"type": "object",
|
|
6819
|
+
"description": "Request headers to add to requests. For example, to set `Authorization` headers for all requests from the specified OpenAPI document. If specified in both a config and a step, the step value overrides the config value.",
|
|
6820
|
+
"additionalProperties": {
|
|
6821
|
+
"type": "string"
|
|
6822
|
+
}
|
|
6823
|
+
}
|
|
6824
|
+
},
|
|
6825
|
+
"components": {
|
|
6826
|
+
"schemas": {
|
|
6827
|
+
"operationId": {
|
|
6828
|
+
"type": "string",
|
|
6829
|
+
"description": "ID of the operation to use for the request."
|
|
6830
|
+
},
|
|
6831
|
+
"descriptionPath": {
|
|
6832
|
+
"type": "string",
|
|
6833
|
+
"description": "URL or local path to the OpenAPI description."
|
|
6834
|
+
}
|
|
6835
|
+
}
|
|
6836
|
+
},
|
|
6837
|
+
"examples": [
|
|
6838
|
+
{
|
|
6839
|
+
"descriptionPath": "https://petstore.swagger.io/v2/swagger.json"
|
|
6840
|
+
},
|
|
6841
|
+
{
|
|
6842
|
+
"name": "Reqres",
|
|
6843
|
+
"operationId": "getUserById"
|
|
6844
|
+
},
|
|
6845
|
+
{
|
|
6846
|
+
"descriptionPath": "https://api.example.com/openapi.json",
|
|
6847
|
+
"operationId": "getUserById"
|
|
6848
|
+
},
|
|
6849
|
+
{
|
|
6850
|
+
"descriptionPath": "https://api.example.com/openapi.json",
|
|
6851
|
+
"operationId": "createUser",
|
|
6852
|
+
"useExample": "both"
|
|
6853
|
+
},
|
|
6854
|
+
{
|
|
6855
|
+
"descriptionPath": "https://api.example.com/openapi.json",
|
|
6856
|
+
"operationId": "createUser",
|
|
6857
|
+
"useExample": "both",
|
|
6858
|
+
"exampleKey": "example1"
|
|
6859
|
+
},
|
|
6860
|
+
{
|
|
6861
|
+
"descriptionPath": "https://api.example.com/openapi.json",
|
|
6862
|
+
"operationId": "createUser",
|
|
6863
|
+
"useExample": "both",
|
|
6864
|
+
"exampleKey": "example1",
|
|
6865
|
+
"statusCode": 201
|
|
6866
|
+
},
|
|
6867
|
+
{
|
|
6868
|
+
"descriptionPath": "https://api.example.com/openapi.json",
|
|
6869
|
+
"operationId": "createUser",
|
|
6870
|
+
"useExample": "both",
|
|
6871
|
+
"exampleKey": "example1",
|
|
6872
|
+
"statusCode": 201,
|
|
6873
|
+
"validateAgainstSchema": "none"
|
|
6874
|
+
},
|
|
6875
|
+
{
|
|
6876
|
+
"descriptionPath": "https://api.example.com/openapi.json",
|
|
6877
|
+
"operationId": "createUser",
|
|
6878
|
+
"useExample": "both",
|
|
6879
|
+
"exampleKey": "example1",
|
|
6880
|
+
"statusCode": 201,
|
|
6881
|
+
"validateAgainstSchema": "none",
|
|
6882
|
+
"mockResponse": true
|
|
6883
|
+
},
|
|
6884
|
+
{
|
|
6885
|
+
"descriptionPath": "https://api.example.com/openapi.json",
|
|
6886
|
+
"operationId": "createUser",
|
|
6887
|
+
"useExample": "both",
|
|
6888
|
+
"exampleKey": "example1",
|
|
6889
|
+
"statusCode": 201,
|
|
6890
|
+
"validateAgainstSchema": "none",
|
|
6891
|
+
"mockResponse": true,
|
|
6892
|
+
"headers": {
|
|
6893
|
+
"Authorization": "Bearer 12345"
|
|
6894
|
+
}
|
|
6895
|
+
}
|
|
6896
|
+
]
|
|
6897
|
+
},
|
|
6898
|
+
{
|
|
6899
|
+
"type": "object",
|
|
6900
|
+
"required": [
|
|
6901
|
+
"operationId"
|
|
6902
|
+
]
|
|
6903
|
+
}
|
|
6904
|
+
]
|
|
6905
|
+
}
|
|
6906
|
+
]
|
|
6907
|
+
},
|
|
6908
|
+
"statusCodes": {
|
|
6909
|
+
"description": "Accepted status codes. If the specified URL returns a code other than what is specified here, the action fails.",
|
|
6910
|
+
"type": "array",
|
|
6911
|
+
"items": {
|
|
6912
|
+
"oneOf": [
|
|
6913
|
+
{
|
|
6914
|
+
"type": "integer"
|
|
6915
|
+
}
|
|
6916
|
+
]
|
|
6917
|
+
},
|
|
6918
|
+
"default": [
|
|
6919
|
+
200,
|
|
6920
|
+
201
|
|
6921
|
+
]
|
|
6922
|
+
},
|
|
6923
|
+
"method": {
|
|
6924
|
+
"type": "string",
|
|
6925
|
+
"description": "Method of the HTTP request",
|
|
6926
|
+
"enum": [
|
|
6927
|
+
"get",
|
|
6928
|
+
"put",
|
|
6929
|
+
"post",
|
|
6930
|
+
"patch",
|
|
6931
|
+
"delete"
|
|
6932
|
+
],
|
|
6933
|
+
"transform": [
|
|
6934
|
+
"trim",
|
|
6935
|
+
"toEnumCase"
|
|
6936
|
+
],
|
|
6937
|
+
"default": "get"
|
|
6938
|
+
},
|
|
6939
|
+
"timeout": {
|
|
6940
|
+
"type": "integer",
|
|
6941
|
+
"description": "Timeout for the HTTP request, in milliseconds.",
|
|
6942
|
+
"default": 60000
|
|
6943
|
+
},
|
|
6944
|
+
"request": {
|
|
6945
|
+
"type": "object",
|
|
6946
|
+
"additionalProperties": false,
|
|
6947
|
+
"properties": {
|
|
6948
|
+
"headers": {
|
|
6949
|
+
"description": "Headers to include in the HTTP request, in key/value format.",
|
|
6950
|
+
"type": "object",
|
|
6951
|
+
"additionalProperties": true,
|
|
6952
|
+
"properties": {},
|
|
6953
|
+
"default": {}
|
|
6954
|
+
},
|
|
6955
|
+
"parameters": {
|
|
6956
|
+
"description": "URL parameters to include in the HTTP request, in key/value format.",
|
|
6957
|
+
"type": "object",
|
|
6958
|
+
"additionalProperties": true,
|
|
6959
|
+
"default": {},
|
|
6960
|
+
"properties": {}
|
|
6961
|
+
},
|
|
6962
|
+
"body": {
|
|
6963
|
+
"description": "JSON object to include as the body of the HTTP request.",
|
|
6964
|
+
"anyOf": [
|
|
6965
|
+
{
|
|
6966
|
+
"type": "object",
|
|
6967
|
+
"additionalProperties": true,
|
|
6968
|
+
"properties": {}
|
|
6969
|
+
},
|
|
6970
|
+
{
|
|
6971
|
+
"type": "array",
|
|
6972
|
+
"items": {}
|
|
6973
|
+
},
|
|
6974
|
+
{
|
|
6975
|
+
"type": "string"
|
|
6976
|
+
}
|
|
6977
|
+
],
|
|
6978
|
+
"default": {}
|
|
6979
|
+
}
|
|
6980
|
+
}
|
|
6981
|
+
},
|
|
6982
|
+
"response": {
|
|
6983
|
+
"type": "object",
|
|
6984
|
+
"additionalProperties": false,
|
|
6985
|
+
"properties": {
|
|
6986
|
+
"headers": {
|
|
6987
|
+
"description": "Headers expected in the response, in key/value format. If one or more `responseHeaders` entries aren't present in the response, the step fails.",
|
|
6988
|
+
"type": "object",
|
|
6989
|
+
"additionalProperties": true,
|
|
6990
|
+
"properties": {},
|
|
6991
|
+
"default": {}
|
|
6992
|
+
},
|
|
6993
|
+
"body": {
|
|
6994
|
+
"description": "JSON object expected in the response. If one or more key/value pairs aren't present in the response, the step fails.",
|
|
6995
|
+
"anyOf": [
|
|
6996
|
+
{
|
|
6997
|
+
"type": "object",
|
|
6998
|
+
"additionalProperties": true,
|
|
6999
|
+
"properties": {}
|
|
7000
|
+
},
|
|
7001
|
+
{
|
|
7002
|
+
"type": "array",
|
|
7003
|
+
"items": {}
|
|
7004
|
+
},
|
|
7005
|
+
{
|
|
7006
|
+
"type": "string"
|
|
7007
|
+
}
|
|
7008
|
+
],
|
|
7009
|
+
"default": {}
|
|
7010
|
+
}
|
|
7011
|
+
}
|
|
7012
|
+
},
|
|
7013
|
+
"allowAdditionalFields": {
|
|
7014
|
+
"type": "boolean",
|
|
7015
|
+
"description": "If `false`, the step fails when the response data contains fields not specified in the response body.",
|
|
7016
|
+
"default": true
|
|
7017
|
+
},
|
|
7018
|
+
"path": {
|
|
7019
|
+
"type": "string",
|
|
7020
|
+
"description": "File path to save the command's output, relative to `directory`. Specify a file extension that matches the expected response type, such as `.json` for JSON content or `.txt` for strings."
|
|
7021
|
+
},
|
|
7022
|
+
"directory": {
|
|
7023
|
+
"type": "string",
|
|
7024
|
+
"description": "Directory to save the command's output. If the directory doesn't exist, creates the directory. If not specified, the directory is your media directory."
|
|
7025
|
+
},
|
|
7026
|
+
"maxVariation": {
|
|
7027
|
+
"type": "number",
|
|
7028
|
+
"description": "Allowed variation in percentage of text different between the current output and previously saved output. If the difference between the current output and the previous output is greater than `maxVariation`, the step fails. If output doesn't exist at `path`, this value is ignored.",
|
|
7029
|
+
"default": 0,
|
|
7030
|
+
"minimum": 0,
|
|
7031
|
+
"maximum": 1
|
|
7032
|
+
},
|
|
7033
|
+
"overwrite": {
|
|
7034
|
+
"type": "string",
|
|
7035
|
+
"description": "If `true`, overwrites the existing output at `path` if it exists.\nIf `aboveVariation`, overwrites the existing output at `path` if the difference between the new output and the existing output is greater than `maxVariation`.",
|
|
7036
|
+
"enum": [
|
|
7037
|
+
"true",
|
|
7038
|
+
"false",
|
|
7039
|
+
"aboveVariation"
|
|
7040
|
+
],
|
|
7041
|
+
"default": "aboveVariation"
|
|
7042
|
+
}
|
|
7043
|
+
}
|
|
7044
|
+
}
|
|
7045
|
+
],
|
|
7046
|
+
"components": {
|
|
7047
|
+
"schemas": {
|
|
7048
|
+
"url": {
|
|
7049
|
+
"title": "URL",
|
|
7050
|
+
"type": "string",
|
|
7051
|
+
"description": "URL for the HTTP request.",
|
|
7052
|
+
"pattern": "(^(http://|https://).*|\\$[A-Za-z0-9_]+)",
|
|
7053
|
+
"transform": [
|
|
7054
|
+
"trim"
|
|
7055
|
+
]
|
|
7056
|
+
},
|
|
7057
|
+
"object": {
|
|
7058
|
+
"type": "object",
|
|
7059
|
+
"anyOf": [
|
|
7060
|
+
{
|
|
7061
|
+
"required": [
|
|
7062
|
+
"url"
|
|
7063
|
+
]
|
|
7064
|
+
},
|
|
7065
|
+
{
|
|
7066
|
+
"required": [
|
|
7067
|
+
"openApi"
|
|
7068
|
+
]
|
|
7069
|
+
}
|
|
7070
|
+
],
|
|
7071
|
+
"additionalProperties": false,
|
|
7072
|
+
"properties": {
|
|
7073
|
+
"url": {
|
|
7074
|
+
"title": "URL",
|
|
7075
|
+
"type": "string",
|
|
7076
|
+
"description": "URL for the HTTP request.",
|
|
7077
|
+
"pattern": "(^(http://|https://).*|\\$[A-Za-z0-9_]+)",
|
|
7078
|
+
"transform": [
|
|
7079
|
+
"trim"
|
|
7080
|
+
]
|
|
7081
|
+
},
|
|
7082
|
+
"openApi": {
|
|
7083
|
+
"anyOf": [
|
|
7084
|
+
{
|
|
7085
|
+
"allOf": [
|
|
7086
|
+
{
|
|
7087
|
+
"type": "string",
|
|
7088
|
+
"description": "ID of the operation to use for the request."
|
|
7089
|
+
},
|
|
7090
|
+
{
|
|
7091
|
+
"title": "Operation ID",
|
|
7092
|
+
"description": "Operation ID from the OpenAPI schema. Only valid if the OpenAPI description path is specified elsewhere and the operation ID is unique among all specified OpenAPI descriptions."
|
|
7093
|
+
}
|
|
7094
|
+
]
|
|
7095
|
+
},
|
|
7096
|
+
{
|
|
7097
|
+
"allOf": [
|
|
7098
|
+
{
|
|
7099
|
+
"version": "1.0.0",
|
|
7100
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
7101
|
+
"title": "openApi",
|
|
7102
|
+
"type": "object",
|
|
7103
|
+
"description": "OpenAPI description and configuration.",
|
|
7104
|
+
"additionalProperties": false,
|
|
7105
|
+
"anyOf": [
|
|
7106
|
+
{
|
|
7107
|
+
"required": [
|
|
7108
|
+
"descriptionPath"
|
|
7109
|
+
]
|
|
7110
|
+
},
|
|
7111
|
+
{
|
|
7112
|
+
"required": [
|
|
7113
|
+
"operationId"
|
|
7114
|
+
]
|
|
7115
|
+
}
|
|
7116
|
+
],
|
|
7117
|
+
"properties": {
|
|
7118
|
+
"name": {
|
|
7119
|
+
"type": "string",
|
|
7120
|
+
"description": "Name of the OpenAPI description, as defined in your configuration."
|
|
7121
|
+
},
|
|
7122
|
+
"descriptionPath": {
|
|
7123
|
+
"type": "string",
|
|
7124
|
+
"description": "URL or local path to the OpenAPI description."
|
|
7125
|
+
},
|
|
7126
|
+
"operationId": {
|
|
7127
|
+
"type": "string",
|
|
7128
|
+
"description": "ID of the operation to use for the request."
|
|
7129
|
+
},
|
|
7130
|
+
"server": {
|
|
7131
|
+
"type": "string",
|
|
7132
|
+
"description": "Server to use for example requests. Only valid if `useExample` is `request` or `both`. If not specified but an example is used for the request, uses the first server defined in the OpenAPI description."
|
|
7133
|
+
},
|
|
7134
|
+
"validateAgainstSchema": {
|
|
7135
|
+
"type": "string",
|
|
7136
|
+
"description": "Validates the request and/or response against the schema in the OpenAPI description. If the request or response doesn't match the schema, the step fails.",
|
|
7137
|
+
"enum": [
|
|
7138
|
+
"request",
|
|
7139
|
+
"response",
|
|
7140
|
+
"both",
|
|
7141
|
+
"none"
|
|
7142
|
+
],
|
|
7143
|
+
"default": "both"
|
|
7144
|
+
},
|
|
7145
|
+
"mockResponse": {
|
|
7146
|
+
"type": "boolean",
|
|
7147
|
+
"description": "If `true`, doesn't make the HTTP request, but instead uses the response example or schema from the OpenAPI description as the response data. Useful for creating tests when an API isn't fully implemented yet. If `statusCode` isn't specified, uses the first defined response code."
|
|
7148
|
+
},
|
|
7149
|
+
"statusCode": {
|
|
7150
|
+
"type": "integer",
|
|
7151
|
+
"description": "Response code to use for validation, examples, and status code checking. If the response code doesn't match, the step fails. `statusCodes` overrides this value when specified."
|
|
7152
|
+
},
|
|
7153
|
+
"useExample": {
|
|
7154
|
+
"type": [
|
|
7155
|
+
"string"
|
|
7156
|
+
],
|
|
7157
|
+
"description": "Uses the example from the OpenAPI description as the request and response data. If the request or response has multiple examples, specify `exampleKey`. If `statusCode` isn't specified, uses the first defined response code. `requestData`, `requestParams`, and `requestHeaders` override portions of request examples when specified. `responseData` overrides portions of response examples when specified.",
|
|
7158
|
+
"enum": [
|
|
7159
|
+
"request",
|
|
7160
|
+
"response",
|
|
7161
|
+
"both",
|
|
7162
|
+
"none"
|
|
7163
|
+
],
|
|
7164
|
+
"default": "none"
|
|
7165
|
+
},
|
|
7166
|
+
"exampleKey": {
|
|
7167
|
+
"type": "string",
|
|
7168
|
+
"description": "Key of the example to use from the `examples` property in the OpenAPI description. If an `examples` key isn't specified or isn't available for a given parameter or object, the `example` property value is used.",
|
|
7169
|
+
"default": ""
|
|
7170
|
+
},
|
|
7171
|
+
"headers": {
|
|
7172
|
+
"type": "object",
|
|
7173
|
+
"description": "Request headers to add to requests. For example, to set `Authorization` headers for all requests from the specified OpenAPI document. If specified in both a config and a step, the step value overrides the config value.",
|
|
7174
|
+
"additionalProperties": {
|
|
7175
|
+
"type": "string"
|
|
7176
|
+
}
|
|
7177
|
+
}
|
|
7178
|
+
},
|
|
7179
|
+
"components": {
|
|
7180
|
+
"schemas": {
|
|
7181
|
+
"operationId": {
|
|
7182
|
+
"type": "string",
|
|
7183
|
+
"description": "ID of the operation to use for the request."
|
|
7184
|
+
},
|
|
7185
|
+
"descriptionPath": {
|
|
7186
|
+
"type": "string",
|
|
7187
|
+
"description": "URL or local path to the OpenAPI description."
|
|
7188
|
+
}
|
|
7189
|
+
}
|
|
7190
|
+
},
|
|
7191
|
+
"examples": [
|
|
7192
|
+
{
|
|
7193
|
+
"descriptionPath": "https://petstore.swagger.io/v2/swagger.json"
|
|
7194
|
+
},
|
|
7195
|
+
{
|
|
7196
|
+
"name": "Reqres",
|
|
7197
|
+
"operationId": "getUserById"
|
|
7198
|
+
},
|
|
7199
|
+
{
|
|
7200
|
+
"descriptionPath": "https://api.example.com/openapi.json",
|
|
7201
|
+
"operationId": "getUserById"
|
|
7202
|
+
},
|
|
7203
|
+
{
|
|
7204
|
+
"descriptionPath": "https://api.example.com/openapi.json",
|
|
7205
|
+
"operationId": "createUser",
|
|
7206
|
+
"useExample": "both"
|
|
7207
|
+
},
|
|
7208
|
+
{
|
|
7209
|
+
"descriptionPath": "https://api.example.com/openapi.json",
|
|
7210
|
+
"operationId": "createUser",
|
|
7211
|
+
"useExample": "both",
|
|
7212
|
+
"exampleKey": "example1"
|
|
7213
|
+
},
|
|
7214
|
+
{
|
|
7215
|
+
"descriptionPath": "https://api.example.com/openapi.json",
|
|
7216
|
+
"operationId": "createUser",
|
|
7217
|
+
"useExample": "both",
|
|
7218
|
+
"exampleKey": "example1",
|
|
7219
|
+
"statusCode": 201
|
|
7220
|
+
},
|
|
7221
|
+
{
|
|
7222
|
+
"descriptionPath": "https://api.example.com/openapi.json",
|
|
7223
|
+
"operationId": "createUser",
|
|
7224
|
+
"useExample": "both",
|
|
7225
|
+
"exampleKey": "example1",
|
|
7226
|
+
"statusCode": 201,
|
|
7227
|
+
"validateAgainstSchema": "none"
|
|
7228
|
+
},
|
|
7229
|
+
{
|
|
7230
|
+
"descriptionPath": "https://api.example.com/openapi.json",
|
|
7231
|
+
"operationId": "createUser",
|
|
7232
|
+
"useExample": "both",
|
|
7233
|
+
"exampleKey": "example1",
|
|
7234
|
+
"statusCode": 201,
|
|
7235
|
+
"validateAgainstSchema": "none",
|
|
7236
|
+
"mockResponse": true
|
|
7237
|
+
},
|
|
7238
|
+
{
|
|
7239
|
+
"descriptionPath": "https://api.example.com/openapi.json",
|
|
7240
|
+
"operationId": "createUser",
|
|
7241
|
+
"useExample": "both",
|
|
7242
|
+
"exampleKey": "example1",
|
|
7243
|
+
"statusCode": 201,
|
|
7244
|
+
"validateAgainstSchema": "none",
|
|
7245
|
+
"mockResponse": true,
|
|
7246
|
+
"headers": {
|
|
7247
|
+
"Authorization": "Bearer 12345"
|
|
7248
|
+
}
|
|
7249
|
+
}
|
|
7250
|
+
]
|
|
7251
|
+
},
|
|
7252
|
+
{
|
|
7253
|
+
"type": "object",
|
|
7254
|
+
"required": [
|
|
7255
|
+
"operationId"
|
|
7256
|
+
]
|
|
7257
|
+
}
|
|
7258
|
+
]
|
|
7259
|
+
}
|
|
7260
|
+
]
|
|
7261
|
+
},
|
|
7262
|
+
"statusCodes": {
|
|
7263
|
+
"description": "Accepted status codes. If the specified URL returns a code other than what is specified here, the action fails.",
|
|
7264
|
+
"type": "array",
|
|
7265
|
+
"items": {
|
|
7266
|
+
"oneOf": [
|
|
7267
|
+
{
|
|
7268
|
+
"type": "integer"
|
|
7269
|
+
}
|
|
7270
|
+
]
|
|
7271
|
+
},
|
|
7272
|
+
"default": [
|
|
7273
|
+
200,
|
|
7274
|
+
201
|
|
7275
|
+
]
|
|
7276
|
+
},
|
|
7277
|
+
"method": {
|
|
7278
|
+
"type": "string",
|
|
7279
|
+
"description": "Method of the HTTP request",
|
|
7280
|
+
"enum": [
|
|
7281
|
+
"get",
|
|
7282
|
+
"put",
|
|
7283
|
+
"post",
|
|
7284
|
+
"patch",
|
|
7285
|
+
"delete"
|
|
7286
|
+
],
|
|
7287
|
+
"transform": [
|
|
7288
|
+
"trim",
|
|
7289
|
+
"toEnumCase"
|
|
7290
|
+
],
|
|
7291
|
+
"default": "get"
|
|
7292
|
+
},
|
|
7293
|
+
"timeout": {
|
|
7294
|
+
"type": "integer",
|
|
7295
|
+
"description": "Timeout for the HTTP request, in milliseconds.",
|
|
7296
|
+
"default": 60000
|
|
7297
|
+
},
|
|
7298
|
+
"request": {
|
|
7299
|
+
"type": "object",
|
|
7300
|
+
"additionalProperties": false,
|
|
7301
|
+
"properties": {
|
|
7302
|
+
"headers": {
|
|
7303
|
+
"description": "Headers to include in the HTTP request, in key/value format.",
|
|
7304
|
+
"type": "object",
|
|
7305
|
+
"additionalProperties": true,
|
|
7306
|
+
"properties": {},
|
|
7307
|
+
"default": {}
|
|
7308
|
+
},
|
|
7309
|
+
"parameters": {
|
|
7310
|
+
"description": "URL parameters to include in the HTTP request, in key/value format.",
|
|
7311
|
+
"type": "object",
|
|
7312
|
+
"additionalProperties": true,
|
|
7313
|
+
"default": {},
|
|
7314
|
+
"properties": {}
|
|
7315
|
+
},
|
|
7316
|
+
"body": {
|
|
7317
|
+
"description": "JSON object to include as the body of the HTTP request.",
|
|
7318
|
+
"anyOf": [
|
|
7319
|
+
{
|
|
7320
|
+
"type": "object",
|
|
7321
|
+
"additionalProperties": true,
|
|
7322
|
+
"properties": {}
|
|
7323
|
+
},
|
|
7324
|
+
{
|
|
7325
|
+
"type": "array",
|
|
7326
|
+
"items": {}
|
|
7327
|
+
},
|
|
7328
|
+
{
|
|
7329
|
+
"type": "string"
|
|
7330
|
+
}
|
|
7331
|
+
],
|
|
7332
|
+
"default": {}
|
|
7333
|
+
}
|
|
7334
|
+
}
|
|
7335
|
+
},
|
|
7336
|
+
"response": {
|
|
7337
|
+
"type": "object",
|
|
7338
|
+
"additionalProperties": false,
|
|
7339
|
+
"properties": {
|
|
7340
|
+
"headers": {
|
|
7341
|
+
"description": "Headers expected in the response, in key/value format. If one or more `responseHeaders` entries aren't present in the response, the step fails.",
|
|
7342
|
+
"type": "object",
|
|
7343
|
+
"additionalProperties": true,
|
|
7344
|
+
"properties": {},
|
|
7345
|
+
"default": {}
|
|
7346
|
+
},
|
|
7347
|
+
"body": {
|
|
7348
|
+
"description": "JSON object expected in the response. If one or more key/value pairs aren't present in the response, the step fails.",
|
|
7349
|
+
"anyOf": [
|
|
7350
|
+
{
|
|
7351
|
+
"type": "object",
|
|
7352
|
+
"additionalProperties": true,
|
|
7353
|
+
"properties": {}
|
|
7354
|
+
},
|
|
7355
|
+
{
|
|
7356
|
+
"type": "array",
|
|
7357
|
+
"items": {}
|
|
7358
|
+
},
|
|
7359
|
+
{
|
|
7360
|
+
"type": "string"
|
|
7361
|
+
}
|
|
7362
|
+
],
|
|
7363
|
+
"default": {}
|
|
7364
|
+
}
|
|
7365
|
+
}
|
|
7366
|
+
},
|
|
7367
|
+
"allowAdditionalFields": {
|
|
7368
|
+
"type": "boolean",
|
|
7369
|
+
"description": "If `false`, the step fails when the response data contains fields not specified in the response body.",
|
|
7370
|
+
"default": true
|
|
7371
|
+
},
|
|
7372
|
+
"path": {
|
|
7373
|
+
"type": "string",
|
|
7374
|
+
"description": "File path to save the command's output, relative to `directory`. Specify a file extension that matches the expected response type, such as `.json` for JSON content or `.txt` for strings."
|
|
7375
|
+
},
|
|
7376
|
+
"directory": {
|
|
7377
|
+
"type": "string",
|
|
7378
|
+
"description": "Directory to save the command's output. If the directory doesn't exist, creates the directory. If not specified, the directory is your media directory."
|
|
7379
|
+
},
|
|
7380
|
+
"maxVariation": {
|
|
7381
|
+
"type": "number",
|
|
7382
|
+
"description": "Allowed variation in percentage of text different between the current output and previously saved output. If the difference between the current output and the previous output is greater than `maxVariation`, the step fails. If output doesn't exist at `path`, this value is ignored.",
|
|
7383
|
+
"default": 0,
|
|
7384
|
+
"minimum": 0,
|
|
7385
|
+
"maximum": 1
|
|
7386
|
+
},
|
|
7387
|
+
"overwrite": {
|
|
7388
|
+
"type": "string",
|
|
7389
|
+
"description": "If `true`, overwrites the existing output at `path` if it exists.\nIf `aboveVariation`, overwrites the existing output at `path` if the difference between the new output and the existing output is greater than `maxVariation`.",
|
|
7390
|
+
"enum": [
|
|
7391
|
+
"true",
|
|
7392
|
+
"false",
|
|
7393
|
+
"aboveVariation"
|
|
7394
|
+
],
|
|
7395
|
+
"default": "aboveVariation"
|
|
7396
|
+
}
|
|
7397
|
+
}
|
|
7398
|
+
}
|
|
7399
|
+
}
|
|
7400
|
+
},
|
|
7401
|
+
"examples": [
|
|
7402
|
+
"https://reqres.in/api/users",
|
|
7403
|
+
{
|
|
7404
|
+
"url": "https://reqres.in/api/users"
|
|
7405
|
+
},
|
|
7406
|
+
{
|
|
7407
|
+
"url": "https://reqres.in/api/users/2",
|
|
7408
|
+
"method": "put",
|
|
7409
|
+
"request": {
|
|
7410
|
+
"body": {
|
|
7411
|
+
"name": "morpheus",
|
|
7412
|
+
"job": "zion resident"
|
|
7413
|
+
}
|
|
7414
|
+
}
|
|
7415
|
+
},
|
|
7416
|
+
{
|
|
7417
|
+
"url": "https://reqres.in/api/users",
|
|
7418
|
+
"method": "post",
|
|
7419
|
+
"request": {
|
|
7420
|
+
"body": {
|
|
7421
|
+
"name": "morpheus",
|
|
7422
|
+
"job": "leader"
|
|
7423
|
+
}
|
|
7424
|
+
},
|
|
7425
|
+
"response": {
|
|
7426
|
+
"body": {
|
|
7427
|
+
"name": "morpheus",
|
|
7428
|
+
"job": "leader"
|
|
7429
|
+
}
|
|
7430
|
+
},
|
|
7431
|
+
"statusCodes": [
|
|
7432
|
+
200,
|
|
7433
|
+
201
|
|
7434
|
+
]
|
|
7435
|
+
},
|
|
7436
|
+
{
|
|
7437
|
+
"url": "https://www.api-server.com",
|
|
7438
|
+
"method": "post",
|
|
7439
|
+
"timeout": 30000,
|
|
7440
|
+
"request": {
|
|
7441
|
+
"body": {
|
|
7442
|
+
"field": "value"
|
|
7443
|
+
},
|
|
7444
|
+
"headers": {
|
|
7445
|
+
"header": "value"
|
|
7446
|
+
},
|
|
7447
|
+
"parameters": {
|
|
7448
|
+
"param": "value"
|
|
7449
|
+
}
|
|
7450
|
+
},
|
|
7451
|
+
"response": {
|
|
7452
|
+
"body": {
|
|
7453
|
+
"field": "value"
|
|
7454
|
+
},
|
|
7455
|
+
"headers": {
|
|
7456
|
+
"header": "value"
|
|
7457
|
+
}
|
|
7458
|
+
},
|
|
7459
|
+
"statusCodes": [
|
|
7460
|
+
200
|
|
7461
|
+
]
|
|
7462
|
+
},
|
|
7463
|
+
{
|
|
7464
|
+
"url": "https://reqres.in/api/users",
|
|
7465
|
+
"method": "post",
|
|
7466
|
+
"request": {
|
|
7467
|
+
"body": {
|
|
7468
|
+
"name": "morpheus",
|
|
7469
|
+
"job": "leader"
|
|
7470
|
+
}
|
|
7471
|
+
},
|
|
7472
|
+
"response": {
|
|
7473
|
+
"body": {
|
|
7474
|
+
"name": "morpheus",
|
|
7475
|
+
"job": "leader"
|
|
7476
|
+
}
|
|
7477
|
+
},
|
|
7478
|
+
"statusCodes": [
|
|
7479
|
+
200,
|
|
7480
|
+
201
|
|
7481
|
+
],
|
|
7482
|
+
"path": "response.json",
|
|
7483
|
+
"directory": "media",
|
|
7484
|
+
"maxVariation": 0.05,
|
|
7485
|
+
"overwrite": "aboveVariation"
|
|
7486
|
+
},
|
|
7487
|
+
{
|
|
7488
|
+
"openApi": "getUserById"
|
|
7489
|
+
},
|
|
7490
|
+
{
|
|
7491
|
+
"openApi": {
|
|
7492
|
+
"name": "Reqres",
|
|
7493
|
+
"operationId": "getUserById"
|
|
7494
|
+
},
|
|
7495
|
+
"request": {
|
|
7496
|
+
"parameters": {
|
|
7497
|
+
"id": 123
|
|
7498
|
+
}
|
|
7499
|
+
}
|
|
7500
|
+
},
|
|
7501
|
+
{
|
|
7502
|
+
"openApi": {
|
|
7503
|
+
"descriptionPath": "https://api.example.com/openapi.json",
|
|
7504
|
+
"operationId": "getUserById"
|
|
7505
|
+
},
|
|
7506
|
+
"request": {
|
|
7507
|
+
"parameters": {
|
|
7508
|
+
"id": 123
|
|
7509
|
+
}
|
|
7510
|
+
}
|
|
7511
|
+
},
|
|
7512
|
+
{
|
|
7513
|
+
"openApi": {
|
|
7514
|
+
"descriptionPath": "https://api.example.com/openapi.json",
|
|
7515
|
+
"operationId": "createUser",
|
|
7516
|
+
"useExample": "both"
|
|
7517
|
+
}
|
|
7518
|
+
},
|
|
7519
|
+
{
|
|
7520
|
+
"openApi": {
|
|
7521
|
+
"descriptionPath": "https://api.example.com/openapi.json",
|
|
7522
|
+
"operationId": "updateUser",
|
|
7523
|
+
"useExample": "request",
|
|
7524
|
+
"exampleKey": "acme"
|
|
7525
|
+
}
|
|
7526
|
+
},
|
|
7527
|
+
{
|
|
7528
|
+
"openApi": {
|
|
7529
|
+
"descriptionPath": "https://api.example.com/openapi.json",
|
|
7530
|
+
"operationId": "updateUser",
|
|
7531
|
+
"useExample": "request",
|
|
7532
|
+
"exampleKey": "acme",
|
|
7533
|
+
"headers": {
|
|
7534
|
+
"Authorization": "Bearer $TOKEN"
|
|
7535
|
+
}
|
|
7536
|
+
}
|
|
7537
|
+
}
|
|
7538
|
+
]
|
|
7539
|
+
}
|
|
7540
|
+
}
|
|
7541
|
+
}
|
|
7542
|
+
]
|
|
7543
|
+
},
|
|
7544
|
+
{
|
|
7545
|
+
"allOf": [
|
|
7546
|
+
{
|
|
7547
|
+
"type": "object",
|
|
7548
|
+
"dynamicDefaults": {
|
|
7549
|
+
"stepId": "uuid"
|
|
7550
|
+
},
|
|
7551
|
+
"properties": {
|
|
7552
|
+
"stepId": {
|
|
7553
|
+
"type": "string",
|
|
7554
|
+
"description": "ID of the step."
|
|
7555
|
+
},
|
|
7556
|
+
"description": {
|
|
7557
|
+
"type": "string",
|
|
7558
|
+
"description": "Description of the step."
|
|
7559
|
+
},
|
|
7560
|
+
"outputs": {
|
|
7561
|
+
"type": "object",
|
|
7562
|
+
"description": "Outputs from step processes and user-defined expressions. Use the `outputs` object to reference outputs in subsequent steps. If a user-defined output matches the key for a step-defined output, the user-defined output takes precedence.",
|
|
7563
|
+
"default": {},
|
|
7564
|
+
"patternProperties": {
|
|
7565
|
+
"^[A-Za-z0-9_]+$": {
|
|
7566
|
+
"type": "string",
|
|
7567
|
+
"description": "Runtime expression for a user-defined output value."
|
|
7568
|
+
}
|
|
7569
|
+
}
|
|
7570
|
+
},
|
|
7571
|
+
"variables": {
|
|
7572
|
+
"type": "object",
|
|
7573
|
+
"description": "Environment variables to set from user-defined expressions.",
|
|
7574
|
+
"default": {},
|
|
7575
|
+
"patternProperties": {
|
|
7576
|
+
"^[A-Za-z0-9_]+$": {
|
|
7577
|
+
"type": "string",
|
|
7578
|
+
"description": "Runtime expression for a user-defined output value."
|
|
7579
|
+
}
|
|
7580
|
+
}
|
|
7581
|
+
}
|
|
7582
|
+
}
|
|
7583
|
+
},
|
|
7584
|
+
{
|
|
7585
|
+
"type": "object",
|
|
7586
|
+
"required": [
|
|
7587
|
+
"runShell"
|
|
7588
|
+
],
|
|
7589
|
+
"properties": {
|
|
7590
|
+
"runShell": {
|
|
7591
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
7592
|
+
"title": "runShell",
|
|
7593
|
+
"description": "Perform a native shell command.",
|
|
7594
|
+
"anyOf": [
|
|
7595
|
+
{
|
|
7596
|
+
"type": "string",
|
|
7597
|
+
"transform": [
|
|
7598
|
+
"trim"
|
|
7599
|
+
]
|
|
7600
|
+
},
|
|
7601
|
+
{
|
|
7602
|
+
"type": "object",
|
|
7603
|
+
"required": [
|
|
7604
|
+
"command"
|
|
7605
|
+
],
|
|
7606
|
+
"additionalProperties": false,
|
|
7607
|
+
"properties": {
|
|
7608
|
+
"command": {
|
|
7609
|
+
"type": "string",
|
|
7610
|
+
"description": "Command to perform in the machine's default shell."
|
|
7611
|
+
},
|
|
7612
|
+
"args": {
|
|
7613
|
+
"type": "array",
|
|
7614
|
+
"description": "Arguments for the command.",
|
|
7615
|
+
"items": {
|
|
7616
|
+
"oneOf": [
|
|
7617
|
+
{
|
|
7618
|
+
"type": "string"
|
|
7619
|
+
}
|
|
7620
|
+
]
|
|
7621
|
+
},
|
|
7622
|
+
"default": []
|
|
7623
|
+
},
|
|
7624
|
+
"workingDirectory": {
|
|
7625
|
+
"type": "string",
|
|
7626
|
+
"description": "Working directory for the command.",
|
|
7627
|
+
"default": "."
|
|
7628
|
+
},
|
|
7629
|
+
"exitCodes": {
|
|
7630
|
+
"type": "array",
|
|
7631
|
+
"description": "Expected exit codes of the command. If the command's actual exit code isn't in this list, the step fails.",
|
|
7632
|
+
"items": {
|
|
7633
|
+
"oneOf": [
|
|
7634
|
+
{
|
|
7635
|
+
"type": "integer"
|
|
7636
|
+
}
|
|
7637
|
+
]
|
|
7638
|
+
},
|
|
7639
|
+
"default": [
|
|
7640
|
+
0
|
|
7641
|
+
]
|
|
7642
|
+
},
|
|
7643
|
+
"stdio": {
|
|
7644
|
+
"type": "string",
|
|
7645
|
+
"description": "Content expected in the command's stdout or stderr. If the expected content can't be found in the command's stdout or stderr, the step fails. Supports strings and regular expressions. To use a regular expression, the string must start and end with a forward slash, like in `/^hello-world.*/`."
|
|
7646
|
+
},
|
|
7647
|
+
"path": {
|
|
7648
|
+
"type": "string",
|
|
7649
|
+
"description": "File path to save the command's output, relative to `directory`."
|
|
7650
|
+
},
|
|
7651
|
+
"directory": {
|
|
7652
|
+
"type": "string",
|
|
7653
|
+
"description": "Directory to save the command's output. If the directory doesn't exist, creates the directory. If not specified, the directory is your media directory."
|
|
7654
|
+
},
|
|
7655
|
+
"maxVariation": {
|
|
7656
|
+
"type": "number",
|
|
7657
|
+
"description": "Allowed variation in percentage of text different between the current output and previously saved output. If the difference between the current output and the previous output is greater than `maxVariation`, the step fails. If output doesn't exist at `path`, this value is ignored.",
|
|
7658
|
+
"default": 0,
|
|
7659
|
+
"minimum": 0,
|
|
7660
|
+
"maximum": 1
|
|
7661
|
+
},
|
|
7662
|
+
"overwrite": {
|
|
7663
|
+
"type": "string",
|
|
7664
|
+
"description": "If `true`, overwrites the existing output at `path` if it exists.\nIf `aboveVariation`, overwrites the existing output at `path` if the difference between the new output and the existing output is greater than `maxVariation`.",
|
|
7665
|
+
"enum": [
|
|
7666
|
+
"true",
|
|
7667
|
+
"false",
|
|
7668
|
+
"aboveVariation"
|
|
7669
|
+
],
|
|
7670
|
+
"default": "aboveVariation"
|
|
7671
|
+
},
|
|
7672
|
+
"timeout": {
|
|
7673
|
+
"type": "integer",
|
|
7674
|
+
"description": "Max time in milliseconds the command is allowed to run. If the command runs longer than this, the step fails.",
|
|
7675
|
+
"default": 60000
|
|
7676
|
+
}
|
|
7677
|
+
}
|
|
7678
|
+
}
|
|
7679
|
+
],
|
|
7680
|
+
"components": {
|
|
7681
|
+
"schemas": {
|
|
7682
|
+
"string": {
|
|
7683
|
+
"type": "string",
|
|
7684
|
+
"transform": [
|
|
7685
|
+
"trim"
|
|
7686
|
+
]
|
|
7687
|
+
},
|
|
7688
|
+
"object": {
|
|
7689
|
+
"type": "object",
|
|
7690
|
+
"required": [
|
|
7691
|
+
"command"
|
|
7692
|
+
],
|
|
7693
|
+
"additionalProperties": false,
|
|
7694
|
+
"properties": {
|
|
7695
|
+
"command": {
|
|
7696
|
+
"type": "string",
|
|
7697
|
+
"description": "Command to perform in the machine's default shell."
|
|
7698
|
+
},
|
|
7699
|
+
"args": {
|
|
7700
|
+
"type": "array",
|
|
7701
|
+
"description": "Arguments for the command.",
|
|
7702
|
+
"items": {
|
|
7703
|
+
"oneOf": [
|
|
7704
|
+
{
|
|
7705
|
+
"type": "string"
|
|
7706
|
+
}
|
|
7707
|
+
]
|
|
7708
|
+
},
|
|
7709
|
+
"default": []
|
|
7710
|
+
},
|
|
7711
|
+
"workingDirectory": {
|
|
7712
|
+
"type": "string",
|
|
7713
|
+
"description": "Working directory for the command.",
|
|
7714
|
+
"default": "."
|
|
7715
|
+
},
|
|
7716
|
+
"exitCodes": {
|
|
7717
|
+
"type": "array",
|
|
7718
|
+
"description": "Expected exit codes of the command. If the command's actual exit code isn't in this list, the step fails.",
|
|
7719
|
+
"items": {
|
|
7720
|
+
"oneOf": [
|
|
7721
|
+
{
|
|
7722
|
+
"type": "integer"
|
|
7723
|
+
}
|
|
7724
|
+
]
|
|
7725
|
+
},
|
|
7726
|
+
"default": [
|
|
7727
|
+
0
|
|
7728
|
+
]
|
|
7729
|
+
},
|
|
7730
|
+
"stdio": {
|
|
7731
|
+
"type": "string",
|
|
7732
|
+
"description": "Content expected in the command's stdout or stderr. If the expected content can't be found in the command's stdout or stderr, the step fails. Supports strings and regular expressions. To use a regular expression, the string must start and end with a forward slash, like in `/^hello-world.*/`."
|
|
7733
|
+
},
|
|
7734
|
+
"path": {
|
|
7735
|
+
"type": "string",
|
|
7736
|
+
"description": "File path to save the command's output, relative to `directory`."
|
|
7737
|
+
},
|
|
7738
|
+
"directory": {
|
|
7739
|
+
"type": "string",
|
|
7740
|
+
"description": "Directory to save the command's output. If the directory doesn't exist, creates the directory. If not specified, the directory is your media directory."
|
|
7741
|
+
},
|
|
7742
|
+
"maxVariation": {
|
|
7743
|
+
"type": "number",
|
|
7744
|
+
"description": "Allowed variation in percentage of text different between the current output and previously saved output. If the difference between the current output and the previous output is greater than `maxVariation`, the step fails. If output doesn't exist at `path`, this value is ignored.",
|
|
7745
|
+
"default": 0,
|
|
7746
|
+
"minimum": 0,
|
|
7747
|
+
"maximum": 1
|
|
7748
|
+
},
|
|
7749
|
+
"overwrite": {
|
|
7750
|
+
"type": "string",
|
|
7751
|
+
"description": "If `true`, overwrites the existing output at `path` if it exists.\nIf `aboveVariation`, overwrites the existing output at `path` if the difference between the new output and the existing output is greater than `maxVariation`.",
|
|
7752
|
+
"enum": [
|
|
7753
|
+
"true",
|
|
7754
|
+
"false",
|
|
7755
|
+
"aboveVariation"
|
|
7756
|
+
],
|
|
7757
|
+
"default": "aboveVariation"
|
|
7758
|
+
},
|
|
7759
|
+
"timeout": {
|
|
7760
|
+
"type": "integer",
|
|
7761
|
+
"description": "Max time in milliseconds the command is allowed to run. If the command runs longer than this, the step fails.",
|
|
7762
|
+
"default": 60000
|
|
7763
|
+
}
|
|
7764
|
+
}
|
|
7765
|
+
}
|
|
7766
|
+
}
|
|
7767
|
+
},
|
|
7768
|
+
"examples": [
|
|
7769
|
+
"docker run hello-world",
|
|
7770
|
+
{
|
|
7771
|
+
"command": "echo",
|
|
7772
|
+
"args": [
|
|
7773
|
+
"$USER"
|
|
7774
|
+
]
|
|
7775
|
+
},
|
|
7776
|
+
{
|
|
7777
|
+
"command": "echo",
|
|
7778
|
+
"args": [
|
|
7779
|
+
"hello-world"
|
|
7780
|
+
]
|
|
7781
|
+
},
|
|
7782
|
+
{
|
|
7783
|
+
"command": "docker run hello-world",
|
|
7784
|
+
"timeout": 20000,
|
|
7785
|
+
"exitCodes": [
|
|
7786
|
+
0
|
|
7787
|
+
],
|
|
7788
|
+
"stdio": "Hello from Docker!"
|
|
7789
|
+
},
|
|
7790
|
+
{
|
|
7791
|
+
"command": "false",
|
|
7792
|
+
"exitCodes": [
|
|
7793
|
+
1
|
|
7794
|
+
]
|
|
7795
|
+
},
|
|
7796
|
+
{
|
|
7797
|
+
"command": "echo",
|
|
7798
|
+
"args": [
|
|
7799
|
+
"setup"
|
|
7800
|
+
],
|
|
7801
|
+
"exitCodes": [
|
|
7802
|
+
0
|
|
7803
|
+
],
|
|
7804
|
+
"stdio": "/.*?/"
|
|
7805
|
+
},
|
|
7806
|
+
{
|
|
7807
|
+
"command": "docker run hello-world",
|
|
7808
|
+
"workingDirectory": ".",
|
|
7809
|
+
"exitCodes": [
|
|
7810
|
+
0
|
|
7811
|
+
],
|
|
7812
|
+
"stdio": "Hello from Docker!",
|
|
7813
|
+
"path": "docker-output.txt",
|
|
7814
|
+
"directory": "output",
|
|
7815
|
+
"maxVariation": 0.1,
|
|
7816
|
+
"overwrite": "aboveVariation"
|
|
7817
|
+
}
|
|
7818
|
+
]
|
|
7819
|
+
}
|
|
7820
|
+
}
|
|
7821
|
+
}
|
|
7822
|
+
]
|
|
7823
|
+
},
|
|
7824
|
+
{
|
|
7825
|
+
"allOf": [
|
|
7826
|
+
{
|
|
7827
|
+
"type": "object",
|
|
7828
|
+
"dynamicDefaults": {
|
|
7829
|
+
"stepId": "uuid"
|
|
7830
|
+
},
|
|
7831
|
+
"properties": {
|
|
7832
|
+
"stepId": {
|
|
7833
|
+
"type": "string",
|
|
7834
|
+
"description": "ID of the step."
|
|
7835
|
+
},
|
|
7836
|
+
"description": {
|
|
7837
|
+
"type": "string",
|
|
7838
|
+
"description": "Description of the step."
|
|
7839
|
+
},
|
|
7840
|
+
"outputs": {
|
|
7841
|
+
"type": "object",
|
|
7842
|
+
"description": "Outputs from step processes and user-defined expressions. Use the `outputs` object to reference outputs in subsequent steps. If a user-defined output matches the key for a step-defined output, the user-defined output takes precedence.",
|
|
7843
|
+
"default": {},
|
|
7844
|
+
"patternProperties": {
|
|
7845
|
+
"^[A-Za-z0-9_]+$": {
|
|
7846
|
+
"type": "string",
|
|
7847
|
+
"description": "Runtime expression for a user-defined output value."
|
|
7848
|
+
}
|
|
7849
|
+
}
|
|
7850
|
+
},
|
|
7851
|
+
"variables": {
|
|
7852
|
+
"type": "object",
|
|
7853
|
+
"description": "Environment variables to set from user-defined expressions.",
|
|
7854
|
+
"default": {},
|
|
7855
|
+
"patternProperties": {
|
|
7856
|
+
"^[A-Za-z0-9_]+$": {
|
|
7857
|
+
"type": "string",
|
|
7858
|
+
"description": "Runtime expression for a user-defined output value."
|
|
7859
|
+
}
|
|
7860
|
+
}
|
|
7861
|
+
}
|
|
7862
|
+
}
|
|
7863
|
+
},
|
|
7864
|
+
{
|
|
7865
|
+
"type": "object",
|
|
7866
|
+
"required": [
|
|
7867
|
+
"runCode"
|
|
7868
|
+
],
|
|
7869
|
+
"properties": {
|
|
7870
|
+
"runCode": {
|
|
7871
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
7872
|
+
"title": "runCode",
|
|
7873
|
+
"description": "Assemble and run code.",
|
|
7874
|
+
"anyOf": [
|
|
7875
|
+
{
|
|
7876
|
+
"type": "object",
|
|
7877
|
+
"required": [
|
|
7878
|
+
"code",
|
|
7879
|
+
"language"
|
|
7880
|
+
],
|
|
7881
|
+
"properties": {
|
|
7882
|
+
"language": {
|
|
7883
|
+
"type": "string",
|
|
7884
|
+
"description": "Language of the code to run.",
|
|
7885
|
+
"enum": [
|
|
7886
|
+
"python",
|
|
7887
|
+
"bash",
|
|
7888
|
+
"javascript"
|
|
7889
|
+
]
|
|
7890
|
+
},
|
|
7891
|
+
"code": {
|
|
7892
|
+
"description": "Code to run.",
|
|
7893
|
+
"type": "string"
|
|
7894
|
+
},
|
|
7895
|
+
"args": {
|
|
7896
|
+
"type": "array",
|
|
7897
|
+
"description": "Arguments for the command.",
|
|
7898
|
+
"items": {
|
|
7899
|
+
"oneOf": [
|
|
7900
|
+
{
|
|
7901
|
+
"type": "string"
|
|
7902
|
+
}
|
|
7903
|
+
]
|
|
7904
|
+
},
|
|
7905
|
+
"default": []
|
|
7906
|
+
},
|
|
7907
|
+
"workingDirectory": {
|
|
7908
|
+
"type": "string",
|
|
7909
|
+
"description": "Working directory for the command.",
|
|
7910
|
+
"default": "."
|
|
7911
|
+
},
|
|
7912
|
+
"exitCodes": {
|
|
7913
|
+
"type": "array",
|
|
7914
|
+
"description": "Expected exit codes of the command. If the command's actual exit code isn't in this list, the step fails.",
|
|
7915
|
+
"items": {
|
|
7916
|
+
"oneOf": [
|
|
7917
|
+
{
|
|
7918
|
+
"type": "integer"
|
|
7919
|
+
}
|
|
7920
|
+
]
|
|
7921
|
+
},
|
|
7922
|
+
"default": [
|
|
7923
|
+
0
|
|
7924
|
+
]
|
|
7925
|
+
},
|
|
7926
|
+
"stdio": {
|
|
7927
|
+
"type": "string",
|
|
7928
|
+
"description": "Content expected in the command's output. If the expected content can't be found in the command's output (either stdout or stderr), the step fails. Supports strings and regular expressions. To use a regular expression, the string must start and end with a forward slash, like in `/^hello-world.*/`."
|
|
7929
|
+
},
|
|
7930
|
+
"path": {
|
|
7931
|
+
"type": "string",
|
|
7932
|
+
"description": "File path to save the command's output, relative to `directory`."
|
|
7933
|
+
},
|
|
7934
|
+
"directory": {
|
|
7935
|
+
"type": "string",
|
|
7936
|
+
"description": "Directory to save the command's output. If the directory doesn't exist, creates the directory. If not specified, the directory is your media directory."
|
|
7937
|
+
},
|
|
7938
|
+
"maxVariation": {
|
|
7939
|
+
"type": "number",
|
|
7940
|
+
"description": "Allowed variation in percentage of text different between the current output and previously saved output. If the difference between the current output and the previous output is greater than `maxVariation`, the step fails. If output doesn't exist at `path`, this value is ignored.",
|
|
7941
|
+
"default": 0,
|
|
7942
|
+
"minimum": 0,
|
|
7943
|
+
"maximum": 1
|
|
7944
|
+
},
|
|
7945
|
+
"overwrite": {
|
|
7946
|
+
"type": "string",
|
|
7947
|
+
"description": "If `true`, overwrites the existing output at `path` if it exists.\nIf `aboveVariation`, overwrites the existing output at `path` if the difference between the new output and the existing output is greater than `maxVariation`.",
|
|
7948
|
+
"enum": [
|
|
7949
|
+
"true",
|
|
7950
|
+
"false",
|
|
7951
|
+
"aboveVariation"
|
|
7952
|
+
],
|
|
7953
|
+
"default": "aboveVariation"
|
|
7954
|
+
},
|
|
7955
|
+
"timeout": {
|
|
7956
|
+
"type": "integer",
|
|
7957
|
+
"description": "Max time in milliseconds the command is allowed to run. If the command runs longer than this, the step fails.",
|
|
7958
|
+
"default": 60000
|
|
7959
|
+
}
|
|
7960
|
+
}
|
|
7961
|
+
}
|
|
7962
|
+
],
|
|
7963
|
+
"components": {
|
|
7964
|
+
"schemas": {
|
|
7965
|
+
"object": {
|
|
7966
|
+
"type": "object",
|
|
7967
|
+
"required": [
|
|
7968
|
+
"code",
|
|
7969
|
+
"language"
|
|
7970
|
+
],
|
|
7971
|
+
"properties": {
|
|
7972
|
+
"language": {
|
|
7973
|
+
"type": "string",
|
|
7974
|
+
"description": "Language of the code to run.",
|
|
7975
|
+
"enum": [
|
|
7976
|
+
"python",
|
|
7977
|
+
"bash",
|
|
7978
|
+
"javascript"
|
|
7979
|
+
]
|
|
7980
|
+
},
|
|
7981
|
+
"code": {
|
|
7982
|
+
"description": "Code to run.",
|
|
7983
|
+
"type": "string"
|
|
7984
|
+
},
|
|
7985
|
+
"args": {
|
|
7986
|
+
"type": "array",
|
|
7987
|
+
"description": "Arguments for the command.",
|
|
7988
|
+
"items": {
|
|
7989
|
+
"oneOf": [
|
|
7990
|
+
{
|
|
7991
|
+
"type": "string"
|
|
7992
|
+
}
|
|
7993
|
+
]
|
|
7994
|
+
},
|
|
7995
|
+
"default": []
|
|
7996
|
+
},
|
|
7997
|
+
"workingDirectory": {
|
|
7998
|
+
"type": "string",
|
|
7999
|
+
"description": "Working directory for the command.",
|
|
8000
|
+
"default": "."
|
|
8001
|
+
},
|
|
8002
|
+
"exitCodes": {
|
|
8003
|
+
"type": "array",
|
|
8004
|
+
"description": "Expected exit codes of the command. If the command's actual exit code isn't in this list, the step fails.",
|
|
8005
|
+
"items": {
|
|
8006
|
+
"oneOf": [
|
|
8007
|
+
{
|
|
8008
|
+
"type": "integer"
|
|
8009
|
+
}
|
|
8010
|
+
]
|
|
8011
|
+
},
|
|
8012
|
+
"default": [
|
|
8013
|
+
0
|
|
8014
|
+
]
|
|
8015
|
+
},
|
|
8016
|
+
"stdio": {
|
|
8017
|
+
"type": "string",
|
|
8018
|
+
"description": "Content expected in the command's output. If the expected content can't be found in the command's output (either stdout or stderr), the step fails. Supports strings and regular expressions. To use a regular expression, the string must start and end with a forward slash, like in `/^hello-world.*/`."
|
|
8019
|
+
},
|
|
8020
|
+
"path": {
|
|
8021
|
+
"type": "string",
|
|
8022
|
+
"description": "File path to save the command's output, relative to `directory`."
|
|
8023
|
+
},
|
|
8024
|
+
"directory": {
|
|
8025
|
+
"type": "string",
|
|
8026
|
+
"description": "Directory to save the command's output. If the directory doesn't exist, creates the directory. If not specified, the directory is your media directory."
|
|
8027
|
+
},
|
|
8028
|
+
"maxVariation": {
|
|
8029
|
+
"type": "number",
|
|
8030
|
+
"description": "Allowed variation in percentage of text different between the current output and previously saved output. If the difference between the current output and the previous output is greater than `maxVariation`, the step fails. If output doesn't exist at `path`, this value is ignored.",
|
|
8031
|
+
"default": 0,
|
|
8032
|
+
"minimum": 0,
|
|
8033
|
+
"maximum": 1
|
|
8034
|
+
},
|
|
8035
|
+
"overwrite": {
|
|
8036
|
+
"type": "string",
|
|
8037
|
+
"description": "If `true`, overwrites the existing output at `path` if it exists.\nIf `aboveVariation`, overwrites the existing output at `path` if the difference between the new output and the existing output is greater than `maxVariation`.",
|
|
8038
|
+
"enum": [
|
|
8039
|
+
"true",
|
|
8040
|
+
"false",
|
|
8041
|
+
"aboveVariation"
|
|
8042
|
+
],
|
|
8043
|
+
"default": "aboveVariation"
|
|
8044
|
+
},
|
|
8045
|
+
"timeout": {
|
|
8046
|
+
"type": "integer",
|
|
8047
|
+
"description": "Max time in milliseconds the command is allowed to run. If the command runs longer than this, the step fails.",
|
|
8048
|
+
"default": 60000
|
|
8049
|
+
}
|
|
8050
|
+
}
|
|
8051
|
+
}
|
|
8052
|
+
}
|
|
8053
|
+
},
|
|
8054
|
+
"examples": [
|
|
8055
|
+
{
|
|
8056
|
+
"language": "javascript",
|
|
8057
|
+
"code": "console.log('Hello, ${process.env.USER}!');"
|
|
8058
|
+
},
|
|
8059
|
+
{
|
|
8060
|
+
"language": "bash",
|
|
8061
|
+
"code": "docker run hello-world",
|
|
8062
|
+
"timeout": 20000,
|
|
8063
|
+
"exitCodes": [
|
|
8064
|
+
0
|
|
8065
|
+
],
|
|
8066
|
+
"stdio": "Hello from Docker!"
|
|
8067
|
+
},
|
|
8068
|
+
{
|
|
8069
|
+
"language": "javascript",
|
|
8070
|
+
"code": "return false",
|
|
8071
|
+
"exitCodes": [
|
|
8072
|
+
1
|
|
8073
|
+
]
|
|
8074
|
+
},
|
|
8075
|
+
{
|
|
8076
|
+
"language": "python",
|
|
8077
|
+
"code": "print('Hello from Python')",
|
|
8078
|
+
"workingDirectory": ".",
|
|
8079
|
+
"exitCodes": [
|
|
8080
|
+
0
|
|
8081
|
+
],
|
|
8082
|
+
"stdio": "Hello from Python!",
|
|
8083
|
+
"path": "python-output.txt",
|
|
8084
|
+
"directory": "output",
|
|
8085
|
+
"maxVariation": 0.1,
|
|
8086
|
+
"overwrite": "aboveVariation"
|
|
8087
|
+
}
|
|
8088
|
+
]
|
|
8089
|
+
}
|
|
8090
|
+
}
|
|
8091
|
+
}
|
|
8092
|
+
]
|
|
8093
|
+
},
|
|
8094
|
+
{
|
|
8095
|
+
"allOf": [
|
|
8096
|
+
{
|
|
8097
|
+
"type": "object",
|
|
8098
|
+
"dynamicDefaults": {
|
|
8099
|
+
"stepId": "uuid"
|
|
8100
|
+
},
|
|
8101
|
+
"properties": {
|
|
8102
|
+
"stepId": {
|
|
8103
|
+
"type": "string",
|
|
8104
|
+
"description": "ID of the step."
|
|
8105
|
+
},
|
|
8106
|
+
"description": {
|
|
8107
|
+
"type": "string",
|
|
8108
|
+
"description": "Description of the step."
|
|
8109
|
+
},
|
|
8110
|
+
"outputs": {
|
|
8111
|
+
"type": "object",
|
|
8112
|
+
"description": "Outputs from step processes and user-defined expressions. Use the `outputs` object to reference outputs in subsequent steps. If a user-defined output matches the key for a step-defined output, the user-defined output takes precedence.",
|
|
8113
|
+
"default": {},
|
|
8114
|
+
"patternProperties": {
|
|
8115
|
+
"^[A-Za-z0-9_]+$": {
|
|
8116
|
+
"type": "string",
|
|
8117
|
+
"description": "Runtime expression for a user-defined output value."
|
|
8118
|
+
}
|
|
8119
|
+
}
|
|
8120
|
+
},
|
|
8121
|
+
"variables": {
|
|
8122
|
+
"type": "object",
|
|
8123
|
+
"description": "Environment variables to set from user-defined expressions.",
|
|
8124
|
+
"default": {},
|
|
8125
|
+
"patternProperties": {
|
|
8126
|
+
"^[A-Za-z0-9_]+$": {
|
|
8127
|
+
"type": "string",
|
|
8128
|
+
"description": "Runtime expression for a user-defined output value."
|
|
8129
|
+
}
|
|
8130
|
+
}
|
|
8131
|
+
}
|
|
8132
|
+
}
|
|
8133
|
+
},
|
|
8134
|
+
{
|
|
8135
|
+
"type": "object",
|
|
8136
|
+
"required": [
|
|
8137
|
+
"type"
|
|
8138
|
+
],
|
|
8139
|
+
"properties": {
|
|
8140
|
+
"type": {
|
|
8141
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
8142
|
+
"title": "typeKeys",
|
|
8143
|
+
"description": "Type keys. To type special keys, begin and end the string with `$` and use the special key's keyword. For example, to type the Escape key, enter `$ESCAPE$`.",
|
|
8144
|
+
"anyOf": [
|
|
8145
|
+
{
|
|
8146
|
+
"description": "Sequence of keys to enter.",
|
|
8147
|
+
"anyOf": [
|
|
8148
|
+
{
|
|
8149
|
+
"type": "string"
|
|
8150
|
+
},
|
|
8151
|
+
{
|
|
8152
|
+
"type": "array",
|
|
8153
|
+
"items": {
|
|
8154
|
+
"oneOf": [
|
|
8155
|
+
{
|
|
8156
|
+
"type": "string"
|
|
8157
|
+
}
|
|
8158
|
+
]
|
|
8159
|
+
}
|
|
8160
|
+
}
|
|
8161
|
+
]
|
|
8162
|
+
},
|
|
8163
|
+
{
|
|
8164
|
+
"type": "object",
|
|
8165
|
+
"properties": {
|
|
8166
|
+
"keys": {
|
|
8167
|
+
"description": "Sequence of keys to enter.",
|
|
8168
|
+
"anyOf": [
|
|
8169
|
+
{
|
|
8170
|
+
"type": "string"
|
|
8171
|
+
},
|
|
8172
|
+
{
|
|
8173
|
+
"type": "array",
|
|
8174
|
+
"items": {
|
|
8175
|
+
"oneOf": [
|
|
8176
|
+
{
|
|
8177
|
+
"type": "string"
|
|
8178
|
+
}
|
|
8179
|
+
]
|
|
8180
|
+
}
|
|
8181
|
+
}
|
|
8182
|
+
]
|
|
8183
|
+
},
|
|
8184
|
+
"inputDelay": {
|
|
8185
|
+
"type": "number",
|
|
8186
|
+
"description": "Delay in milliseconds between each key press during a recording",
|
|
8187
|
+
"default": 100
|
|
8188
|
+
},
|
|
8189
|
+
"selector": {
|
|
8190
|
+
"type": "string",
|
|
8191
|
+
"description": "Selector for the element to type into. If not specified, the typing occurs in the active element."
|
|
8192
|
+
}
|
|
8193
|
+
},
|
|
8194
|
+
"required": [
|
|
8195
|
+
"keys"
|
|
8196
|
+
],
|
|
8197
|
+
"additionalProperties": false
|
|
8198
|
+
}
|
|
8199
|
+
],
|
|
8200
|
+
"components": {
|
|
8201
|
+
"schemas": {
|
|
8202
|
+
"keys": {
|
|
8203
|
+
"description": "Sequence of keys to enter.",
|
|
8204
|
+
"anyOf": [
|
|
8205
|
+
{
|
|
8206
|
+
"type": "string"
|
|
8207
|
+
},
|
|
8208
|
+
{
|
|
8209
|
+
"type": "array",
|
|
8210
|
+
"items": {
|
|
8211
|
+
"oneOf": [
|
|
8212
|
+
{
|
|
8213
|
+
"type": "string"
|
|
8214
|
+
}
|
|
8215
|
+
]
|
|
8216
|
+
}
|
|
8217
|
+
}
|
|
8218
|
+
]
|
|
8219
|
+
},
|
|
8220
|
+
"object": {
|
|
8221
|
+
"type": "object",
|
|
8222
|
+
"properties": {
|
|
8223
|
+
"keys": {
|
|
8224
|
+
"description": "Sequence of keys to enter.",
|
|
8225
|
+
"anyOf": [
|
|
8226
|
+
{
|
|
8227
|
+
"type": "string"
|
|
8228
|
+
},
|
|
8229
|
+
{
|
|
8230
|
+
"type": "array",
|
|
8231
|
+
"items": {
|
|
8232
|
+
"oneOf": [
|
|
8233
|
+
{
|
|
8234
|
+
"type": "string"
|
|
8235
|
+
}
|
|
8236
|
+
]
|
|
8237
|
+
}
|
|
8238
|
+
}
|
|
8239
|
+
]
|
|
8240
|
+
},
|
|
8241
|
+
"inputDelay": {
|
|
8242
|
+
"type": "number",
|
|
8243
|
+
"description": "Delay in milliseconds between each key press during a recording",
|
|
8244
|
+
"default": 100
|
|
8245
|
+
},
|
|
8246
|
+
"selector": {
|
|
8247
|
+
"type": "string",
|
|
8248
|
+
"description": "Selector for the element to type into. If not specified, the typing occurs in the active element."
|
|
8249
|
+
}
|
|
8250
|
+
},
|
|
8251
|
+
"required": [
|
|
8252
|
+
"keys"
|
|
8253
|
+
],
|
|
8254
|
+
"additionalProperties": false
|
|
8255
|
+
}
|
|
8256
|
+
}
|
|
8257
|
+
},
|
|
8258
|
+
"examples": [
|
|
8259
|
+
"kittens",
|
|
8260
|
+
[
|
|
8261
|
+
"$ENTER$"
|
|
8262
|
+
],
|
|
8263
|
+
[
|
|
8264
|
+
"kittens",
|
|
8265
|
+
"$ENTER$"
|
|
8266
|
+
],
|
|
8267
|
+
{
|
|
8268
|
+
"keys": "kittens"
|
|
8269
|
+
},
|
|
8270
|
+
{
|
|
8271
|
+
"keys": [
|
|
8272
|
+
"$ENTER$"
|
|
8273
|
+
]
|
|
8274
|
+
},
|
|
8275
|
+
{
|
|
8276
|
+
"keys": [
|
|
8277
|
+
"kittens",
|
|
8278
|
+
"$ENTER$"
|
|
8279
|
+
],
|
|
8280
|
+
"inputDelay": 500
|
|
8281
|
+
}
|
|
8282
|
+
]
|
|
8283
|
+
}
|
|
8284
|
+
}
|
|
8285
|
+
}
|
|
8286
|
+
]
|
|
8287
|
+
},
|
|
8288
|
+
{
|
|
8289
|
+
"allOf": [
|
|
8290
|
+
{
|
|
8291
|
+
"type": "object",
|
|
8292
|
+
"dynamicDefaults": {
|
|
8293
|
+
"stepId": "uuid"
|
|
8294
|
+
},
|
|
8295
|
+
"properties": {
|
|
8296
|
+
"stepId": {
|
|
8297
|
+
"type": "string",
|
|
8298
|
+
"description": "ID of the step."
|
|
8299
|
+
},
|
|
8300
|
+
"description": {
|
|
8301
|
+
"type": "string",
|
|
8302
|
+
"description": "Description of the step."
|
|
8303
|
+
},
|
|
8304
|
+
"outputs": {
|
|
8305
|
+
"type": "object",
|
|
8306
|
+
"description": "Outputs from step processes and user-defined expressions. Use the `outputs` object to reference outputs in subsequent steps. If a user-defined output matches the key for a step-defined output, the user-defined output takes precedence.",
|
|
8307
|
+
"default": {},
|
|
8308
|
+
"patternProperties": {
|
|
8309
|
+
"^[A-Za-z0-9_]+$": {
|
|
8310
|
+
"type": "string",
|
|
8311
|
+
"description": "Runtime expression for a user-defined output value."
|
|
8312
|
+
}
|
|
8313
|
+
}
|
|
8314
|
+
},
|
|
8315
|
+
"variables": {
|
|
8316
|
+
"type": "object",
|
|
8317
|
+
"description": "Environment variables to set from user-defined expressions.",
|
|
8318
|
+
"default": {},
|
|
8319
|
+
"patternProperties": {
|
|
8320
|
+
"^[A-Za-z0-9_]+$": {
|
|
8321
|
+
"type": "string",
|
|
8322
|
+
"description": "Runtime expression for a user-defined output value."
|
|
8323
|
+
}
|
|
8324
|
+
}
|
|
8325
|
+
}
|
|
8326
|
+
}
|
|
8327
|
+
},
|
|
8328
|
+
{
|
|
8329
|
+
"type": "object",
|
|
8330
|
+
"required": [
|
|
8331
|
+
"screenshot"
|
|
8332
|
+
],
|
|
8333
|
+
"properties": {
|
|
8334
|
+
"screenshot": {
|
|
8335
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
8336
|
+
"title": "screenshot",
|
|
8337
|
+
"description": "Takes a screenshot in PNG format.",
|
|
8338
|
+
"anyOf": [
|
|
8339
|
+
{
|
|
8340
|
+
"description": "File path of the PNG file. Accepts absolute paths. If not specified, the file name is the ID of the step.",
|
|
8341
|
+
"type": "string",
|
|
8342
|
+
"pattern": "([A-Za-z0-9_-]*\\.(png|PNG)$|\\$[A-Za-z0-9_]+)",
|
|
8343
|
+
"transform": [
|
|
8344
|
+
"trim"
|
|
8345
|
+
]
|
|
8346
|
+
},
|
|
8347
|
+
{
|
|
8348
|
+
"type": "object",
|
|
8349
|
+
"additionalProperties": false,
|
|
8350
|
+
"properties": {
|
|
8351
|
+
"path": {
|
|
8352
|
+
"description": "File path of the PNG file. Accepts absolute paths. If not specified, the file name is the ID of the step.",
|
|
8353
|
+
"type": "string",
|
|
8354
|
+
"pattern": "([A-Za-z0-9_-]*\\.(png|PNG)$|\\$[A-Za-z0-9_]+)",
|
|
8355
|
+
"transform": [
|
|
8356
|
+
"trim"
|
|
8357
|
+
]
|
|
8358
|
+
},
|
|
8359
|
+
"directory": {
|
|
8360
|
+
"type": "string",
|
|
8361
|
+
"description": "Directory of the PNG file. If the directory doesn't exist, creates the directory.",
|
|
8362
|
+
"transform": [
|
|
8363
|
+
"trim"
|
|
8364
|
+
]
|
|
8365
|
+
},
|
|
8366
|
+
"maxVariation": {
|
|
8367
|
+
"type": "number",
|
|
8368
|
+
"description": "Allowed variation in percentage of pixels between the new screenshot and the existing screenshot at `path`. If the difference between the new screenshot and the existing screenshot is greater than `maxVariation`, the step fails. If a screenshot doesn't exist at `path`, this value is ignored.",
|
|
8369
|
+
"default": 0.05,
|
|
8370
|
+
"minimum": 0,
|
|
8371
|
+
"maximum": 1
|
|
8372
|
+
},
|
|
8373
|
+
"overwrite": {
|
|
8374
|
+
"type": "string",
|
|
8375
|
+
"description": "If `true`, overwrites the existing screenshot at `path` if it exists.\nIf `aboveVariation`, overwrites the existing screenshot at `path` if the difference between the new screenshot and the existing screenshot is greater than `maxVariation`.",
|
|
8376
|
+
"enum": [
|
|
8377
|
+
"true",
|
|
8378
|
+
"false",
|
|
8379
|
+
"aboveVariation"
|
|
8380
|
+
],
|
|
8381
|
+
"default": "aboveVariation"
|
|
8382
|
+
},
|
|
8383
|
+
"crop": {
|
|
8384
|
+
"anyOf": [
|
|
8385
|
+
{
|
|
8386
|
+
"title": "Crop by element",
|
|
8387
|
+
"type": "string",
|
|
8388
|
+
"description": "Display text or selector of the element to screenshot."
|
|
8389
|
+
},
|
|
8390
|
+
{
|
|
8391
|
+
"title": "Crop by element (detailed)",
|
|
8392
|
+
"type": "object",
|
|
8393
|
+
"description": "Crop the screenshot to a specific element.",
|
|
8394
|
+
"additionalProperties": false,
|
|
8395
|
+
"anyOf": [
|
|
8396
|
+
{
|
|
8397
|
+
"required": [
|
|
8398
|
+
"selector"
|
|
8399
|
+
]
|
|
8400
|
+
},
|
|
8401
|
+
{
|
|
8402
|
+
"required": [
|
|
8403
|
+
"elementText"
|
|
8404
|
+
]
|
|
8405
|
+
}
|
|
8406
|
+
],
|
|
8407
|
+
"properties": {
|
|
8408
|
+
"elementText": {
|
|
8409
|
+
"type": "string",
|
|
8410
|
+
"description": "Display text of the element to screenshot."
|
|
8411
|
+
},
|
|
8412
|
+
"selector": {
|
|
8413
|
+
"type": "string",
|
|
8414
|
+
"description": "Selector of the element to screenshot."
|
|
8415
|
+
},
|
|
8416
|
+
"padding": {
|
|
8417
|
+
"anyOf": [
|
|
8418
|
+
{
|
|
8419
|
+
"type": "number",
|
|
8420
|
+
"description": "Padding in pixels to add to the bounds of the element.",
|
|
8421
|
+
"minimum": 0
|
|
8422
|
+
},
|
|
8423
|
+
{
|
|
8424
|
+
"type": "object",
|
|
8425
|
+
"additionalProperties": false,
|
|
8426
|
+
"properties": {
|
|
8427
|
+
"top": {
|
|
8428
|
+
"type": "number",
|
|
8429
|
+
"minimum": 0
|
|
8430
|
+
},
|
|
8431
|
+
"right": {
|
|
8432
|
+
"type": "number",
|
|
8433
|
+
"minimum": 0
|
|
8434
|
+
},
|
|
8435
|
+
"bottom": {
|
|
8436
|
+
"type": "number",
|
|
8437
|
+
"minimum": 0
|
|
8438
|
+
},
|
|
8439
|
+
"left": {
|
|
8440
|
+
"type": "number",
|
|
8441
|
+
"minimum": 0
|
|
8442
|
+
}
|
|
8443
|
+
}
|
|
8444
|
+
}
|
|
8445
|
+
]
|
|
8446
|
+
}
|
|
8447
|
+
}
|
|
8448
|
+
}
|
|
8449
|
+
]
|
|
8450
|
+
}
|
|
8451
|
+
}
|
|
8452
|
+
},
|
|
8453
|
+
{
|
|
8454
|
+
"type": "boolean"
|
|
8455
|
+
}
|
|
8456
|
+
],
|
|
8457
|
+
"components": {
|
|
8458
|
+
"schemas": {
|
|
8459
|
+
"path": {
|
|
8460
|
+
"description": "File path of the PNG file. Accepts absolute paths. If not specified, the file name is the ID of the step.",
|
|
8461
|
+
"type": "string",
|
|
8462
|
+
"pattern": "([A-Za-z0-9_-]*\\.(png|PNG)$|\\$[A-Za-z0-9_]+)",
|
|
8463
|
+
"transform": [
|
|
8464
|
+
"trim"
|
|
8465
|
+
]
|
|
8466
|
+
},
|
|
8467
|
+
"object": {
|
|
8468
|
+
"type": "object",
|
|
8469
|
+
"additionalProperties": false,
|
|
8470
|
+
"properties": {
|
|
8471
|
+
"path": {
|
|
8472
|
+
"description": "File path of the PNG file. Accepts absolute paths. If not specified, the file name is the ID of the step.",
|
|
8473
|
+
"type": "string",
|
|
8474
|
+
"pattern": "([A-Za-z0-9_-]*\\.(png|PNG)$|\\$[A-Za-z0-9_]+)",
|
|
8475
|
+
"transform": [
|
|
8476
|
+
"trim"
|
|
8477
|
+
]
|
|
8478
|
+
},
|
|
8479
|
+
"directory": {
|
|
8480
|
+
"type": "string",
|
|
8481
|
+
"description": "Directory of the PNG file. If the directory doesn't exist, creates the directory.",
|
|
8482
|
+
"transform": [
|
|
8483
|
+
"trim"
|
|
8484
|
+
]
|
|
8485
|
+
},
|
|
8486
|
+
"maxVariation": {
|
|
8487
|
+
"type": "number",
|
|
8488
|
+
"description": "Allowed variation in percentage of pixels between the new screenshot and the existing screenshot at `path`. If the difference between the new screenshot and the existing screenshot is greater than `maxVariation`, the step fails. If a screenshot doesn't exist at `path`, this value is ignored.",
|
|
8489
|
+
"default": 0.05,
|
|
8490
|
+
"minimum": 0,
|
|
8491
|
+
"maximum": 1
|
|
8492
|
+
},
|
|
8493
|
+
"overwrite": {
|
|
8494
|
+
"type": "string",
|
|
8495
|
+
"description": "If `true`, overwrites the existing screenshot at `path` if it exists.\nIf `aboveVariation`, overwrites the existing screenshot at `path` if the difference between the new screenshot and the existing screenshot is greater than `maxVariation`.",
|
|
8496
|
+
"enum": [
|
|
8497
|
+
"true",
|
|
8498
|
+
"false",
|
|
8499
|
+
"aboveVariation"
|
|
8500
|
+
],
|
|
8501
|
+
"default": "aboveVariation"
|
|
8502
|
+
},
|
|
8503
|
+
"crop": {
|
|
8504
|
+
"anyOf": [
|
|
8505
|
+
{
|
|
8506
|
+
"title": "Crop by element",
|
|
8507
|
+
"type": "string",
|
|
8508
|
+
"description": "Display text or selector of the element to screenshot."
|
|
8509
|
+
},
|
|
8510
|
+
{
|
|
8511
|
+
"title": "Crop by element (detailed)",
|
|
8512
|
+
"type": "object",
|
|
8513
|
+
"description": "Crop the screenshot to a specific element.",
|
|
8514
|
+
"additionalProperties": false,
|
|
8515
|
+
"anyOf": [
|
|
8516
|
+
{
|
|
8517
|
+
"required": [
|
|
8518
|
+
"selector"
|
|
8519
|
+
]
|
|
8520
|
+
},
|
|
8521
|
+
{
|
|
8522
|
+
"required": [
|
|
8523
|
+
"elementText"
|
|
8524
|
+
]
|
|
8525
|
+
}
|
|
8526
|
+
],
|
|
8527
|
+
"properties": {
|
|
8528
|
+
"elementText": {
|
|
8529
|
+
"type": "string",
|
|
8530
|
+
"description": "Display text of the element to screenshot."
|
|
8531
|
+
},
|
|
8532
|
+
"selector": {
|
|
8533
|
+
"type": "string",
|
|
8534
|
+
"description": "Selector of the element to screenshot."
|
|
8535
|
+
},
|
|
8536
|
+
"padding": {
|
|
8537
|
+
"anyOf": [
|
|
8538
|
+
{
|
|
8539
|
+
"type": "number",
|
|
8540
|
+
"description": "Padding in pixels to add to the bounds of the element.",
|
|
8541
|
+
"minimum": 0
|
|
8542
|
+
},
|
|
8543
|
+
{
|
|
8544
|
+
"type": "object",
|
|
8545
|
+
"additionalProperties": false,
|
|
8546
|
+
"properties": {
|
|
8547
|
+
"top": {
|
|
8548
|
+
"type": "number",
|
|
8549
|
+
"minimum": 0
|
|
8550
|
+
},
|
|
8551
|
+
"right": {
|
|
8552
|
+
"type": "number",
|
|
8553
|
+
"minimum": 0
|
|
8554
|
+
},
|
|
8555
|
+
"bottom": {
|
|
8556
|
+
"type": "number",
|
|
8557
|
+
"minimum": 0
|
|
8558
|
+
},
|
|
8559
|
+
"left": {
|
|
8560
|
+
"type": "number",
|
|
8561
|
+
"minimum": 0
|
|
8562
|
+
}
|
|
8563
|
+
}
|
|
8564
|
+
}
|
|
8565
|
+
]
|
|
8566
|
+
}
|
|
8567
|
+
}
|
|
8568
|
+
}
|
|
8569
|
+
]
|
|
8570
|
+
}
|
|
8571
|
+
}
|
|
8572
|
+
},
|
|
8573
|
+
"crop_element": {
|
|
8574
|
+
"title": "Crop by element (detailed)",
|
|
8575
|
+
"type": "object",
|
|
8576
|
+
"description": "Crop the screenshot to a specific element.",
|
|
8577
|
+
"additionalProperties": false,
|
|
8578
|
+
"anyOf": [
|
|
8579
|
+
{
|
|
8580
|
+
"required": [
|
|
8581
|
+
"selector"
|
|
8582
|
+
]
|
|
8583
|
+
},
|
|
8584
|
+
{
|
|
8585
|
+
"required": [
|
|
8586
|
+
"elementText"
|
|
8587
|
+
]
|
|
8588
|
+
}
|
|
8589
|
+
],
|
|
8590
|
+
"properties": {
|
|
8591
|
+
"elementText": {
|
|
8592
|
+
"type": "string",
|
|
8593
|
+
"description": "Display text of the element to screenshot."
|
|
8594
|
+
},
|
|
8595
|
+
"selector": {
|
|
8596
|
+
"type": "string",
|
|
8597
|
+
"description": "Selector of the element to screenshot."
|
|
8598
|
+
},
|
|
8599
|
+
"padding": {
|
|
8600
|
+
"anyOf": [
|
|
8601
|
+
{
|
|
8602
|
+
"type": "number",
|
|
8603
|
+
"description": "Padding in pixels to add to the bounds of the element.",
|
|
8604
|
+
"minimum": 0
|
|
8605
|
+
},
|
|
8606
|
+
{
|
|
8607
|
+
"type": "object",
|
|
8608
|
+
"additionalProperties": false,
|
|
8609
|
+
"properties": {
|
|
8610
|
+
"top": {
|
|
8611
|
+
"type": "number",
|
|
8612
|
+
"minimum": 0
|
|
8613
|
+
},
|
|
8614
|
+
"right": {
|
|
8615
|
+
"type": "number",
|
|
8616
|
+
"minimum": 0
|
|
8617
|
+
},
|
|
8618
|
+
"bottom": {
|
|
8619
|
+
"type": "number",
|
|
8620
|
+
"minimum": 0
|
|
8621
|
+
},
|
|
8622
|
+
"left": {
|
|
8623
|
+
"type": "number",
|
|
8624
|
+
"minimum": 0
|
|
8625
|
+
}
|
|
8626
|
+
}
|
|
8627
|
+
}
|
|
8628
|
+
]
|
|
8629
|
+
}
|
|
8630
|
+
}
|
|
8631
|
+
},
|
|
8632
|
+
"padding": {
|
|
8633
|
+
"type": "object",
|
|
8634
|
+
"additionalProperties": false,
|
|
8635
|
+
"properties": {
|
|
8636
|
+
"top": {
|
|
8637
|
+
"type": "number",
|
|
8638
|
+
"minimum": 0
|
|
8639
|
+
},
|
|
8640
|
+
"right": {
|
|
8641
|
+
"type": "number",
|
|
8642
|
+
"minimum": 0
|
|
8643
|
+
},
|
|
8644
|
+
"bottom": {
|
|
8645
|
+
"type": "number",
|
|
8646
|
+
"minimum": 0
|
|
8647
|
+
},
|
|
8648
|
+
"left": {
|
|
8649
|
+
"type": "number",
|
|
8650
|
+
"minimum": 0
|
|
8651
|
+
}
|
|
8652
|
+
}
|
|
8653
|
+
}
|
|
8654
|
+
}
|
|
8655
|
+
},
|
|
8656
|
+
"examples": [
|
|
8657
|
+
true,
|
|
8658
|
+
"image.png",
|
|
8659
|
+
"static/images/image.png",
|
|
8660
|
+
"/User/manny/projects/doc-detective/static/images/image.png",
|
|
8661
|
+
{
|
|
8662
|
+
"path": "image.png",
|
|
8663
|
+
"directory": "static/images",
|
|
8664
|
+
"maxVariation": 0.1,
|
|
8665
|
+
"overwrite": "aboveVariation",
|
|
8666
|
+
"crop": "#elementToScreenshot"
|
|
8667
|
+
},
|
|
8668
|
+
{
|
|
8669
|
+
"path": "image.png",
|
|
8670
|
+
"directory": "static/images",
|
|
8671
|
+
"maxVariation": 0.1,
|
|
8672
|
+
"overwrite": "aboveVariation"
|
|
8673
|
+
},
|
|
8674
|
+
{
|
|
8675
|
+
"path": "image.png",
|
|
8676
|
+
"directory": "static/images",
|
|
8677
|
+
"maxVariation": 0.1,
|
|
8678
|
+
"overwrite": "aboveVariation",
|
|
8679
|
+
"crop": {
|
|
8680
|
+
"selector": "#elementToScreenshot",
|
|
8681
|
+
"elementText": "Element text",
|
|
8682
|
+
"padding": {
|
|
8683
|
+
"top": 0,
|
|
8684
|
+
"right": 0,
|
|
8685
|
+
"bottom": 0,
|
|
8686
|
+
"left": 0
|
|
8687
|
+
}
|
|
8688
|
+
}
|
|
8689
|
+
}
|
|
8690
|
+
]
|
|
8691
|
+
}
|
|
8692
|
+
}
|
|
8693
|
+
}
|
|
8694
|
+
]
|
|
8695
|
+
},
|
|
8696
|
+
{
|
|
8697
|
+
"allOf": [
|
|
8698
|
+
{
|
|
8699
|
+
"type": "object",
|
|
8700
|
+
"dynamicDefaults": {
|
|
8701
|
+
"stepId": "uuid"
|
|
8702
|
+
},
|
|
8703
|
+
"properties": {
|
|
8704
|
+
"stepId": {
|
|
8705
|
+
"type": "string",
|
|
8706
|
+
"description": "ID of the step."
|
|
8707
|
+
},
|
|
8708
|
+
"description": {
|
|
8709
|
+
"type": "string",
|
|
8710
|
+
"description": "Description of the step."
|
|
8711
|
+
},
|
|
8712
|
+
"outputs": {
|
|
8713
|
+
"type": "object",
|
|
8714
|
+
"description": "Outputs from step processes and user-defined expressions. Use the `outputs` object to reference outputs in subsequent steps. If a user-defined output matches the key for a step-defined output, the user-defined output takes precedence.",
|
|
8715
|
+
"default": {},
|
|
8716
|
+
"patternProperties": {
|
|
8717
|
+
"^[A-Za-z0-9_]+$": {
|
|
8718
|
+
"type": "string",
|
|
8719
|
+
"description": "Runtime expression for a user-defined output value."
|
|
8720
|
+
}
|
|
8721
|
+
}
|
|
8722
|
+
},
|
|
8723
|
+
"variables": {
|
|
8724
|
+
"type": "object",
|
|
8725
|
+
"description": "Environment variables to set from user-defined expressions.",
|
|
8726
|
+
"default": {},
|
|
8727
|
+
"patternProperties": {
|
|
8728
|
+
"^[A-Za-z0-9_]+$": {
|
|
8729
|
+
"type": "string",
|
|
8730
|
+
"description": "Runtime expression for a user-defined output value."
|
|
8731
|
+
}
|
|
8732
|
+
}
|
|
8733
|
+
}
|
|
8734
|
+
}
|
|
8735
|
+
},
|
|
8736
|
+
{
|
|
8737
|
+
"type": "object",
|
|
8738
|
+
"required": [
|
|
8739
|
+
"record"
|
|
8740
|
+
],
|
|
8741
|
+
"properties": {
|
|
8742
|
+
"record": {
|
|
8743
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
8744
|
+
"title": "record",
|
|
8745
|
+
"description": "Start recording the current browser viewport. Must be followed by a `stopRecord` step. Only runs in Chrome browsers when they are visible. Supported extensions: [ '.mp4', '.webm', '.gif' ]",
|
|
8746
|
+
"anyOf": [
|
|
8747
|
+
{
|
|
8748
|
+
"type": "string",
|
|
8749
|
+
"description": "File path of the recording. Supports the `.mp4`, `.webm`, and `.gif` extensions. If not specified, the file name is the ID of the step, and the extension is `.mp4`.",
|
|
8750
|
+
"pattern": "([A-Za-z0-9_-]*\\.(mp4|webm|gif)$|\\$[A-Za-z0-9_]+)",
|
|
8751
|
+
"transform": [
|
|
8752
|
+
"trim"
|
|
8753
|
+
]
|
|
8754
|
+
},
|
|
8755
|
+
{
|
|
8756
|
+
"type": "object",
|
|
8757
|
+
"properties": {
|
|
8758
|
+
"path": {
|
|
8759
|
+
"type": "string",
|
|
8760
|
+
"description": "File path of the recording. Supports the `.mp4`, `.webm`, and `.gif` extensions. If not specified, the file name is the ID of the step, and the extension is `.mp4`.",
|
|
8761
|
+
"pattern": "([A-Za-z0-9_-]*\\.(mp4|webm|gif)$|\\$[A-Za-z0-9_]+)",
|
|
8762
|
+
"transform": [
|
|
8763
|
+
"trim"
|
|
8764
|
+
]
|
|
8765
|
+
},
|
|
8766
|
+
"directory": {
|
|
8767
|
+
"type": "string",
|
|
8768
|
+
"description": "Directory of the file. If the directory doesn't exist, creates the directory.",
|
|
8769
|
+
"transform": [
|
|
8770
|
+
"trim"
|
|
8771
|
+
]
|
|
8772
|
+
},
|
|
8773
|
+
"overwrite": {
|
|
8774
|
+
"type": "string",
|
|
8775
|
+
"description": "If `true`, overwrites the existing recording at `path` if it exists.",
|
|
8776
|
+
"enum": [
|
|
8777
|
+
"true",
|
|
8778
|
+
"false"
|
|
8779
|
+
]
|
|
8780
|
+
}
|
|
8781
|
+
}
|
|
8782
|
+
},
|
|
8783
|
+
{
|
|
8784
|
+
"type": "boolean"
|
|
8785
|
+
}
|
|
8786
|
+
],
|
|
8787
|
+
"components": {
|
|
8788
|
+
"schemas": {
|
|
8789
|
+
"string": {
|
|
8790
|
+
"type": "string",
|
|
8791
|
+
"description": "File path of the recording. Supports the `.mp4`, `.webm`, and `.gif` extensions. If not specified, the file name is the ID of the step, and the extension is `.mp4`.",
|
|
8792
|
+
"pattern": "([A-Za-z0-9_-]*\\.(mp4|webm|gif)$|\\$[A-Za-z0-9_]+)",
|
|
8793
|
+
"transform": [
|
|
8794
|
+
"trim"
|
|
8795
|
+
]
|
|
8796
|
+
},
|
|
8797
|
+
"object": {
|
|
8798
|
+
"type": "object",
|
|
8799
|
+
"properties": {
|
|
8800
|
+
"path": {
|
|
8801
|
+
"type": "string",
|
|
8802
|
+
"description": "File path of the recording. Supports the `.mp4`, `.webm`, and `.gif` extensions. If not specified, the file name is the ID of the step, and the extension is `.mp4`.",
|
|
8803
|
+
"pattern": "([A-Za-z0-9_-]*\\.(mp4|webm|gif)$|\\$[A-Za-z0-9_]+)",
|
|
8804
|
+
"transform": [
|
|
8805
|
+
"trim"
|
|
8806
|
+
]
|
|
8807
|
+
},
|
|
8808
|
+
"directory": {
|
|
8809
|
+
"type": "string",
|
|
8810
|
+
"description": "Directory of the file. If the directory doesn't exist, creates the directory.",
|
|
8811
|
+
"transform": [
|
|
8812
|
+
"trim"
|
|
8813
|
+
]
|
|
8814
|
+
},
|
|
8815
|
+
"overwrite": {
|
|
8816
|
+
"type": "string",
|
|
8817
|
+
"description": "If `true`, overwrites the existing recording at `path` if it exists.",
|
|
8818
|
+
"enum": [
|
|
8819
|
+
"true",
|
|
8820
|
+
"false"
|
|
8821
|
+
]
|
|
8822
|
+
}
|
|
8823
|
+
}
|
|
8824
|
+
}
|
|
8825
|
+
}
|
|
8826
|
+
},
|
|
8827
|
+
"examples": [
|
|
8828
|
+
true,
|
|
8829
|
+
"results.mp4",
|
|
8830
|
+
{
|
|
8831
|
+
"path": "results.mp4",
|
|
8832
|
+
"directory": "static/media",
|
|
8833
|
+
"overwrite": "true"
|
|
8834
|
+
}
|
|
8835
|
+
]
|
|
8836
|
+
}
|
|
8837
|
+
}
|
|
8838
|
+
}
|
|
8839
|
+
]
|
|
8840
|
+
},
|
|
8841
|
+
{
|
|
8842
|
+
"allOf": [
|
|
8843
|
+
{
|
|
8844
|
+
"type": "object",
|
|
8845
|
+
"dynamicDefaults": {
|
|
8846
|
+
"stepId": "uuid"
|
|
8847
|
+
},
|
|
8848
|
+
"properties": {
|
|
8849
|
+
"stepId": {
|
|
8850
|
+
"type": "string",
|
|
8851
|
+
"description": "ID of the step."
|
|
8852
|
+
},
|
|
8853
|
+
"description": {
|
|
8854
|
+
"type": "string",
|
|
8855
|
+
"description": "Description of the step."
|
|
8856
|
+
},
|
|
8857
|
+
"outputs": {
|
|
8858
|
+
"type": "object",
|
|
8859
|
+
"description": "Outputs from step processes and user-defined expressions. Use the `outputs` object to reference outputs in subsequent steps. If a user-defined output matches the key for a step-defined output, the user-defined output takes precedence.",
|
|
8860
|
+
"default": {},
|
|
8861
|
+
"patternProperties": {
|
|
8862
|
+
"^[A-Za-z0-9_]+$": {
|
|
8863
|
+
"type": "string",
|
|
8864
|
+
"description": "Runtime expression for a user-defined output value."
|
|
8865
|
+
}
|
|
8866
|
+
}
|
|
8867
|
+
},
|
|
8868
|
+
"variables": {
|
|
8869
|
+
"type": "object",
|
|
8870
|
+
"description": "Environment variables to set from user-defined expressions.",
|
|
8871
|
+
"default": {},
|
|
8872
|
+
"patternProperties": {
|
|
8873
|
+
"^[A-Za-z0-9_]+$": {
|
|
8874
|
+
"type": "string",
|
|
8875
|
+
"description": "Runtime expression for a user-defined output value."
|
|
8876
|
+
}
|
|
8877
|
+
}
|
|
8878
|
+
}
|
|
8879
|
+
}
|
|
8880
|
+
},
|
|
8881
|
+
{
|
|
8882
|
+
"type": "object",
|
|
8883
|
+
"required": [
|
|
8884
|
+
"stopRecord"
|
|
8885
|
+
],
|
|
8886
|
+
"properties": {
|
|
8887
|
+
"stopRecord": {
|
|
8888
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
8889
|
+
"title": "stopRecord",
|
|
8890
|
+
"description": "Stop the current recording.",
|
|
8891
|
+
"anyOf": [
|
|
8892
|
+
{
|
|
8893
|
+
"type": "boolean",
|
|
8894
|
+
"nullable": true
|
|
8895
|
+
}
|
|
8896
|
+
],
|
|
8897
|
+
"examples": [
|
|
8898
|
+
true
|
|
8899
|
+
]
|
|
8900
|
+
}
|
|
8901
|
+
}
|
|
8902
|
+
}
|
|
8903
|
+
]
|
|
8904
|
+
},
|
|
8905
|
+
{
|
|
8906
|
+
"allOf": [
|
|
8907
|
+
{
|
|
8908
|
+
"type": "object",
|
|
8909
|
+
"dynamicDefaults": {
|
|
8910
|
+
"stepId": "uuid"
|
|
8911
|
+
},
|
|
8912
|
+
"properties": {
|
|
8913
|
+
"stepId": {
|
|
8914
|
+
"type": "string",
|
|
8915
|
+
"description": "ID of the step."
|
|
8916
|
+
},
|
|
8917
|
+
"description": {
|
|
8918
|
+
"type": "string",
|
|
8919
|
+
"description": "Description of the step."
|
|
8920
|
+
},
|
|
8921
|
+
"outputs": {
|
|
8922
|
+
"type": "object",
|
|
8923
|
+
"description": "Outputs from step processes and user-defined expressions. Use the `outputs` object to reference outputs in subsequent steps. If a user-defined output matches the key for a step-defined output, the user-defined output takes precedence.",
|
|
8924
|
+
"default": {},
|
|
8925
|
+
"patternProperties": {
|
|
8926
|
+
"^[A-Za-z0-9_]+$": {
|
|
8927
|
+
"type": "string",
|
|
8928
|
+
"description": "Runtime expression for a user-defined output value."
|
|
8929
|
+
}
|
|
8930
|
+
}
|
|
8931
|
+
},
|
|
8932
|
+
"variables": {
|
|
8933
|
+
"type": "object",
|
|
8934
|
+
"description": "Environment variables to set from user-defined expressions.",
|
|
8935
|
+
"default": {},
|
|
8936
|
+
"patternProperties": {
|
|
8937
|
+
"^[A-Za-z0-9_]+$": {
|
|
8938
|
+
"type": "string",
|
|
8939
|
+
"description": "Runtime expression for a user-defined output value."
|
|
8940
|
+
}
|
|
8941
|
+
}
|
|
8942
|
+
}
|
|
8943
|
+
}
|
|
8944
|
+
},
|
|
8945
|
+
{
|
|
8946
|
+
"required": [
|
|
8947
|
+
"loadVariables"
|
|
8948
|
+
],
|
|
8949
|
+
"properties": {
|
|
8950
|
+
"loadVariables": {
|
|
8951
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
8952
|
+
"title": "loadVariables",
|
|
8953
|
+
"type": "string",
|
|
8954
|
+
"description": "Load environment variables from the specified `.env` file.",
|
|
8955
|
+
"examples": [
|
|
8956
|
+
".env"
|
|
8957
|
+
]
|
|
8958
|
+
}
|
|
8959
|
+
}
|
|
8960
|
+
}
|
|
8961
|
+
]
|
|
8962
|
+
},
|
|
8963
|
+
{
|
|
8964
|
+
"allOf": [
|
|
8965
|
+
{
|
|
8966
|
+
"type": "object",
|
|
8967
|
+
"dynamicDefaults": {
|
|
8968
|
+
"stepId": "uuid"
|
|
8969
|
+
},
|
|
8970
|
+
"properties": {
|
|
8971
|
+
"stepId": {
|
|
8972
|
+
"type": "string",
|
|
8973
|
+
"description": "ID of the step."
|
|
8974
|
+
},
|
|
8975
|
+
"description": {
|
|
8976
|
+
"type": "string",
|
|
8977
|
+
"description": "Description of the step."
|
|
8978
|
+
},
|
|
8979
|
+
"outputs": {
|
|
8980
|
+
"type": "object",
|
|
8981
|
+
"description": "Outputs from step processes and user-defined expressions. Use the `outputs` object to reference outputs in subsequent steps. If a user-defined output matches the key for a step-defined output, the user-defined output takes precedence.",
|
|
8982
|
+
"default": {},
|
|
8983
|
+
"patternProperties": {
|
|
8984
|
+
"^[A-Za-z0-9_]+$": {
|
|
8985
|
+
"type": "string",
|
|
8986
|
+
"description": "Runtime expression for a user-defined output value."
|
|
8987
|
+
}
|
|
8988
|
+
}
|
|
8989
|
+
},
|
|
8990
|
+
"variables": {
|
|
8991
|
+
"type": "object",
|
|
8992
|
+
"description": "Environment variables to set from user-defined expressions.",
|
|
8993
|
+
"default": {},
|
|
8994
|
+
"patternProperties": {
|
|
8995
|
+
"^[A-Za-z0-9_]+$": {
|
|
8996
|
+
"type": "string",
|
|
8997
|
+
"description": "Runtime expression for a user-defined output value."
|
|
8998
|
+
}
|
|
8999
|
+
}
|
|
9000
|
+
}
|
|
9001
|
+
}
|
|
9002
|
+
},
|
|
9003
|
+
{
|
|
9004
|
+
"required": [
|
|
9005
|
+
"wait"
|
|
9006
|
+
],
|
|
9007
|
+
"properties": {
|
|
9008
|
+
"wait": {
|
|
9009
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
9010
|
+
"title": "wait",
|
|
9011
|
+
"description": "Pause (in milliseconds) before performing the next action.",
|
|
9012
|
+
"default": 5000,
|
|
9013
|
+
"anyOf": [
|
|
9014
|
+
{
|
|
9015
|
+
"type": "number"
|
|
9016
|
+
},
|
|
9017
|
+
{
|
|
9018
|
+
"type": "string",
|
|
9019
|
+
"pattern": "(\\$[A-Za-z0-9_]+)",
|
|
9020
|
+
"transform": [
|
|
9021
|
+
"trim"
|
|
9022
|
+
]
|
|
9023
|
+
},
|
|
9024
|
+
{
|
|
9025
|
+
"type": "boolean"
|
|
9026
|
+
}
|
|
9027
|
+
],
|
|
9028
|
+
"components": {
|
|
9029
|
+
"schemas": {
|
|
9030
|
+
"string": {
|
|
9031
|
+
"type": "string",
|
|
9032
|
+
"pattern": "(\\$[A-Za-z0-9_]+)",
|
|
9033
|
+
"transform": [
|
|
9034
|
+
"trim"
|
|
9035
|
+
]
|
|
9036
|
+
}
|
|
9037
|
+
}
|
|
9038
|
+
},
|
|
9039
|
+
"examples": [
|
|
9040
|
+
5000,
|
|
9041
|
+
"$WAIT_DURATION",
|
|
9042
|
+
true
|
|
9043
|
+
]
|
|
9044
|
+
}
|
|
9045
|
+
}
|
|
9046
|
+
}
|
|
9047
|
+
]
|
|
9048
|
+
}
|
|
9049
|
+
],
|
|
9050
|
+
"examples": [
|
|
9051
|
+
{
|
|
9052
|
+
"stepId": "uuid",
|
|
9053
|
+
"description": "Description of the step.",
|
|
9054
|
+
"checkLink": "https://www.google.com",
|
|
9055
|
+
"outputs": {
|
|
9056
|
+
"outputKey": "outputValue"
|
|
9057
|
+
},
|
|
9058
|
+
"variables": {
|
|
9059
|
+
"variableKey": "variableValue"
|
|
9060
|
+
}
|
|
9061
|
+
},
|
|
9062
|
+
{
|
|
9063
|
+
"checkLink": "https://www.google.com"
|
|
9064
|
+
},
|
|
9065
|
+
{
|
|
9066
|
+
"stepId": "path-only",
|
|
9067
|
+
"checkLink": "/search"
|
|
9068
|
+
},
|
|
9069
|
+
{
|
|
9070
|
+
"stepId": "status-code",
|
|
9071
|
+
"checkLink": {
|
|
9072
|
+
"url": "https://www.google.com",
|
|
9073
|
+
"statusCodes": [
|
|
9074
|
+
200
|
|
9075
|
+
]
|
|
9076
|
+
}
|
|
9077
|
+
},
|
|
9078
|
+
{
|
|
9079
|
+
"goTo": {
|
|
9080
|
+
"url": "https://www.google.com"
|
|
9081
|
+
}
|
|
9082
|
+
},
|
|
9083
|
+
{
|
|
9084
|
+
"goTo": "https://www.google.com"
|
|
9085
|
+
},
|
|
9086
|
+
{
|
|
9087
|
+
"wait": 5000
|
|
9088
|
+
},
|
|
9089
|
+
{
|
|
9090
|
+
"runCode": {
|
|
9091
|
+
"language": "python",
|
|
9092
|
+
"code": "print('Hello from Python')",
|
|
9093
|
+
"workingDirectory": ".",
|
|
9094
|
+
"exitCodes": [
|
|
9095
|
+
0
|
|
9096
|
+
],
|
|
9097
|
+
"stdio": "Hello from Python!",
|
|
9098
|
+
"path": "python-output.txt",
|
|
9099
|
+
"directory": "output",
|
|
9100
|
+
"maxVariation": 0.1,
|
|
9101
|
+
"overwrite": "aboveVariation"
|
|
9102
|
+
}
|
|
9103
|
+
},
|
|
9104
|
+
{
|
|
9105
|
+
"stopRecord": true
|
|
9106
|
+
},
|
|
9107
|
+
{
|
|
9108
|
+
"screenshot": true
|
|
9109
|
+
},
|
|
9110
|
+
{
|
|
9111
|
+
"screenshot": "image.png"
|
|
9112
|
+
},
|
|
9113
|
+
{
|
|
9114
|
+
"screenshot": "static/images/image.png"
|
|
9115
|
+
},
|
|
9116
|
+
{
|
|
9117
|
+
"screenshot": "/User/manny/projects/doc-detective/static/images/image.png"
|
|
9118
|
+
},
|
|
9119
|
+
{
|
|
9120
|
+
"screenshot": {
|
|
9121
|
+
"path": "image.png",
|
|
9122
|
+
"directory": "static/images",
|
|
9123
|
+
"maxVariation": 0.1,
|
|
9124
|
+
"overwrite": "aboveVariation",
|
|
9125
|
+
"crop": "#elementToScreenshot"
|
|
9126
|
+
}
|
|
9127
|
+
},
|
|
9128
|
+
{
|
|
9129
|
+
"screenshot": {
|
|
9130
|
+
"path": "image.png",
|
|
9131
|
+
"directory": "static/images",
|
|
9132
|
+
"maxVariation": 0.1,
|
|
9133
|
+
"overwrite": "aboveVariation"
|
|
9134
|
+
}
|
|
9135
|
+
},
|
|
9136
|
+
{
|
|
9137
|
+
"screenshot": {
|
|
9138
|
+
"path": "image.png",
|
|
9139
|
+
"directory": "static/images",
|
|
9140
|
+
"maxVariation": 0.1,
|
|
9141
|
+
"overwrite": "aboveVariation",
|
|
9142
|
+
"crop": {
|
|
9143
|
+
"selector": "#elementToScreenshot",
|
|
9144
|
+
"elementText": "Element text",
|
|
9145
|
+
"padding": {
|
|
9146
|
+
"top": 0,
|
|
9147
|
+
"right": 0,
|
|
9148
|
+
"bottom": 0,
|
|
9149
|
+
"left": 0
|
|
9150
|
+
}
|
|
9151
|
+
}
|
|
9152
|
+
}
|
|
9153
|
+
},
|
|
9154
|
+
{
|
|
9155
|
+
"record": true
|
|
9156
|
+
},
|
|
9157
|
+
{
|
|
9158
|
+
"record": "video.mp4"
|
|
9159
|
+
},
|
|
9160
|
+
{
|
|
9161
|
+
"record": "static/media/video.mp4"
|
|
9162
|
+
},
|
|
9163
|
+
{
|
|
9164
|
+
"record": "/User/manny/projects/doc-detective/static/media/video.mp4"
|
|
9165
|
+
},
|
|
9166
|
+
{
|
|
9167
|
+
"record": {
|
|
9168
|
+
"path": "video.mp4",
|
|
9169
|
+
"directory": "static/media",
|
|
9170
|
+
"overwrite": true
|
|
9171
|
+
}
|
|
9172
|
+
},
|
|
9173
|
+
{
|
|
9174
|
+
"loadVariables": "variables.env"
|
|
9175
|
+
},
|
|
9176
|
+
{
|
|
9177
|
+
"find": "Find me!"
|
|
9178
|
+
},
|
|
9179
|
+
{
|
|
9180
|
+
"find": {
|
|
9181
|
+
"selector": "[title=Search]"
|
|
9182
|
+
}
|
|
9183
|
+
},
|
|
9184
|
+
{
|
|
9185
|
+
"find": {
|
|
9186
|
+
"selector": "[title=Search]",
|
|
9187
|
+
"timeout": 10000,
|
|
9188
|
+
"elementText": "Search",
|
|
9189
|
+
"moveTo": true,
|
|
9190
|
+
"click": true,
|
|
9191
|
+
"type": "shorthair cat"
|
|
9192
|
+
}
|
|
9193
|
+
},
|
|
9194
|
+
{
|
|
9195
|
+
"find": {
|
|
9196
|
+
"selector": "[title=Search]",
|
|
9197
|
+
"click": {
|
|
9198
|
+
"button": "right"
|
|
9199
|
+
}
|
|
9200
|
+
}
|
|
9201
|
+
},
|
|
9202
|
+
{
|
|
9203
|
+
"find": {
|
|
9204
|
+
"selector": "[title=Search]",
|
|
9205
|
+
"timeout": 10000,
|
|
9206
|
+
"elementText": "Search",
|
|
9207
|
+
"moveTo": true,
|
|
9208
|
+
"click": true,
|
|
9209
|
+
"type": {
|
|
9210
|
+
"keys": [
|
|
9211
|
+
"shorthair cat"
|
|
9212
|
+
],
|
|
9213
|
+
"inputDelay": 100
|
|
9214
|
+
}
|
|
9215
|
+
}
|
|
9216
|
+
},
|
|
9217
|
+
{
|
|
9218
|
+
"click": true
|
|
9219
|
+
},
|
|
9220
|
+
{
|
|
9221
|
+
"click": "right"
|
|
9222
|
+
},
|
|
9223
|
+
{
|
|
9224
|
+
"click": {
|
|
9225
|
+
"button": "left",
|
|
9226
|
+
"elementText": "Element text"
|
|
9227
|
+
}
|
|
9228
|
+
},
|
|
9229
|
+
{
|
|
9230
|
+
"click": {
|
|
9231
|
+
"selector": "#elementToScreenshot",
|
|
9232
|
+
"elementText": "Element text",
|
|
9233
|
+
"button": "middle"
|
|
9234
|
+
}
|
|
9235
|
+
},
|
|
9236
|
+
{
|
|
9237
|
+
"httpRequest": "https://reqres.in/api/users"
|
|
9238
|
+
},
|
|
9239
|
+
{
|
|
9240
|
+
"httpRequest": {
|
|
9241
|
+
"url": "https://reqres.in/api/users"
|
|
9242
|
+
}
|
|
9243
|
+
},
|
|
9244
|
+
{
|
|
9245
|
+
"httpRequest": {
|
|
9246
|
+
"url": "https://reqres.in/api/users/2",
|
|
9247
|
+
"method": "put",
|
|
9248
|
+
"request": {
|
|
9249
|
+
"body": {
|
|
9250
|
+
"name": "morpheus",
|
|
9251
|
+
"job": "zion resident"
|
|
9252
|
+
}
|
|
9253
|
+
}
|
|
9254
|
+
}
|
|
9255
|
+
},
|
|
9256
|
+
{
|
|
9257
|
+
"httpRequest": {
|
|
9258
|
+
"url": "https://reqres.in/api/users",
|
|
9259
|
+
"method": "post",
|
|
9260
|
+
"request": {
|
|
9261
|
+
"body": {
|
|
9262
|
+
"name": "morpheus",
|
|
9263
|
+
"job": "leader"
|
|
9264
|
+
}
|
|
9265
|
+
},
|
|
9266
|
+
"response": {
|
|
9267
|
+
"body": {
|
|
9268
|
+
"name": "morpheus",
|
|
9269
|
+
"job": "leader"
|
|
9270
|
+
}
|
|
9271
|
+
},
|
|
9272
|
+
"statusCodes": [
|
|
9273
|
+
200,
|
|
9274
|
+
201
|
|
9275
|
+
]
|
|
9276
|
+
}
|
|
9277
|
+
},
|
|
9278
|
+
{
|
|
9279
|
+
"httpRequest": {
|
|
9280
|
+
"url": "https://www.api-server.com",
|
|
9281
|
+
"method": "post",
|
|
9282
|
+
"timeout": 30000,
|
|
9283
|
+
"request": {
|
|
9284
|
+
"body": {
|
|
9285
|
+
"field": "value"
|
|
9286
|
+
},
|
|
9287
|
+
"headers": {
|
|
9288
|
+
"header": "value"
|
|
9289
|
+
},
|
|
9290
|
+
"parameters": {
|
|
9291
|
+
"param": "value"
|
|
9292
|
+
}
|
|
9293
|
+
},
|
|
9294
|
+
"response": {
|
|
9295
|
+
"body": {
|
|
9296
|
+
"field": "value"
|
|
9297
|
+
},
|
|
9298
|
+
"headers": {
|
|
9299
|
+
"header": "value"
|
|
9300
|
+
}
|
|
9301
|
+
},
|
|
9302
|
+
"statusCodes": [
|
|
9303
|
+
200
|
|
9304
|
+
]
|
|
9305
|
+
}
|
|
9306
|
+
},
|
|
9307
|
+
{
|
|
9308
|
+
"httpRequest": {
|
|
9309
|
+
"url": "https://reqres.in/api/users",
|
|
9310
|
+
"method": "post",
|
|
9311
|
+
"request": {
|
|
9312
|
+
"body": {
|
|
9313
|
+
"name": "morpheus",
|
|
9314
|
+
"job": "leader"
|
|
9315
|
+
}
|
|
9316
|
+
},
|
|
9317
|
+
"response": {
|
|
9318
|
+
"body": {
|
|
9319
|
+
"name": "morpheus",
|
|
9320
|
+
"job": "leader"
|
|
9321
|
+
}
|
|
9322
|
+
},
|
|
9323
|
+
"statusCodes": [
|
|
9324
|
+
200,
|
|
9325
|
+
201
|
|
9326
|
+
],
|
|
9327
|
+
"path": "response.json",
|
|
9328
|
+
"directory": "media",
|
|
9329
|
+
"maxVariation": 0.05,
|
|
9330
|
+
"overwrite": "aboveVariation"
|
|
9331
|
+
}
|
|
9332
|
+
},
|
|
9333
|
+
{
|
|
9334
|
+
"httpRequest": {
|
|
9335
|
+
"openApi": "getUserById"
|
|
9336
|
+
}
|
|
9337
|
+
},
|
|
9338
|
+
{
|
|
9339
|
+
"httpRequest": {
|
|
9340
|
+
"openApi": {
|
|
9341
|
+
"name": "Reqres",
|
|
9342
|
+
"operationId": "getUserById"
|
|
9343
|
+
},
|
|
9344
|
+
"request": {
|
|
9345
|
+
"parameters": {
|
|
9346
|
+
"id": 123
|
|
9347
|
+
}
|
|
9348
|
+
}
|
|
9349
|
+
}
|
|
9350
|
+
},
|
|
9351
|
+
{
|
|
9352
|
+
"httpRequest": {
|
|
9353
|
+
"openApi": {
|
|
9354
|
+
"descriptionPath": "https://api.example.com/openapi.json",
|
|
9355
|
+
"operationId": "getUserById"
|
|
9356
|
+
},
|
|
9357
|
+
"request": {
|
|
9358
|
+
"parameters": {
|
|
9359
|
+
"id": 123
|
|
9360
|
+
}
|
|
9361
|
+
}
|
|
9362
|
+
}
|
|
9363
|
+
},
|
|
9364
|
+
{
|
|
9365
|
+
"httpRequest": {
|
|
9366
|
+
"openApi": {
|
|
9367
|
+
"descriptionPath": "https://api.example.com/openapi.json",
|
|
9368
|
+
"operationId": "createUser",
|
|
9369
|
+
"useExample": "both"
|
|
9370
|
+
}
|
|
9371
|
+
}
|
|
9372
|
+
},
|
|
9373
|
+
{
|
|
9374
|
+
"httpRequest": {
|
|
9375
|
+
"openApi": {
|
|
9376
|
+
"descriptionPath": "https://api.example.com/openapi.json",
|
|
9377
|
+
"operationId": "updateUser",
|
|
9378
|
+
"useExample": "request",
|
|
9379
|
+
"exampleKey": "acme"
|
|
9380
|
+
}
|
|
9381
|
+
}
|
|
9382
|
+
},
|
|
9383
|
+
{
|
|
9384
|
+
"httpRequest": {
|
|
9385
|
+
"openApi": {
|
|
9386
|
+
"descriptionPath": "https://api.example.com/openapi.json",
|
|
9387
|
+
"operationId": "updateUser",
|
|
9388
|
+
"useExample": "request",
|
|
9389
|
+
"exampleKey": "acme",
|
|
9390
|
+
"headers": {
|
|
9391
|
+
"Authorization": "Bearer $TOKEN"
|
|
9392
|
+
}
|
|
9393
|
+
}
|
|
9394
|
+
}
|
|
9395
|
+
}
|
|
9396
|
+
]
|
|
9397
|
+
}
|
|
9398
|
+
}
|
|
9399
|
+
}
|
|
9400
|
+
}
|
|
9401
|
+
}
|
|
9402
|
+
},
|
|
9403
|
+
"dynamicDefaults": {
|
|
9404
|
+
"testId": "uuid"
|
|
9405
|
+
},
|
|
9406
|
+
"anyOf": [
|
|
9407
|
+
{
|
|
9408
|
+
"required": [
|
|
9409
|
+
"steps"
|
|
9410
|
+
]
|
|
9411
|
+
},
|
|
9412
|
+
{
|
|
9413
|
+
"required": [
|
|
9414
|
+
"contexts"
|
|
9415
|
+
]
|
|
9416
|
+
}
|
|
5238
9417
|
],
|
|
5239
9418
|
"additionalProperties": false,
|
|
5240
9419
|
"examples": [
|