wisp-schema 1.16.2 → 1.18.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.
- checksums.yaml +4 -4
- data/lib/version.rb +2 -3
- data/lib/wisp-schema.rb +9 -26
- data/nouns.json +6 -2
- data/stable/actions/generate_steps.json +45 -0
- data/stable/blocks/generated_steps_block.json +15 -0
- data/wisp.json +64 -1
- metadata +3 -3
- data/canary-nouns.json +0 -121
- data/canary-wisp.json +0 -686
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f58616e2f3f9b6ad4f4b76d2bc6e2aef91d47a6df521e7604e43d4b73cc10b69
|
4
|
+
data.tar.gz: daabbd65953eaed99ad3bf059968540b5fa97551368aeaf054abfa16e19849e1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d79ce4a1ed221a68d91db314bb28443d13582766ce15982a5901468f8b2ca5c567e4f4c95fb1dc01cd411171519136e8aa8c091cf391bb369d8529d398f74299
|
7
|
+
data.tar.gz: 3bc2893651c1c4ac050e28c95fc5e2c76146b256b51a7c0e64b1c5e7ed0de2a0f9b52ee2055efbf49d180aa4de060af34cef34adec2ebc53d5d35e7f9bc38fd3
|
data/lib/version.rb
CHANGED
data/lib/wisp-schema.rb
CHANGED
@@ -5,7 +5,7 @@ require "semantic"
|
|
5
5
|
require_relative "version"
|
6
6
|
|
7
7
|
# Provides factory methods that will return the correct schemer instance to
|
8
|
-
# use
|
8
|
+
# use
|
9
9
|
module Wisp
|
10
10
|
class NotSupportedAction < StandardError
|
11
11
|
end
|
@@ -13,9 +13,6 @@ module Wisp
|
|
13
13
|
SCHEMA_PATH = File.expand_path("../wisp.json", __dir__)
|
14
14
|
NOUNS_PATH = File.expand_path("../nouns.json", __dir__)
|
15
15
|
|
16
|
-
CANARY_SCHEMA_PATH = File.expand_path("../canary-wisp.json", __dir__)
|
17
|
-
CANARY_NOUNS_PATH = File.expand_path("../canary-nouns.json", __dir__)
|
18
|
-
|
19
16
|
ACTIONS = [
|
20
17
|
"ai_confirmation",
|
21
18
|
"click",
|
@@ -25,6 +22,7 @@ module Wisp
|
|
25
22
|
"double_click",
|
26
23
|
"drag_and_drop",
|
27
24
|
"fill",
|
25
|
+
"generate_steps",
|
28
26
|
"hover",
|
29
27
|
"navigate",
|
30
28
|
"observe",
|
@@ -38,44 +36,29 @@ module Wisp
|
|
38
36
|
"wait",
|
39
37
|
].freeze
|
40
38
|
|
41
|
-
|
42
|
-
|
43
|
-
def is_canary?(raw_version)
|
44
|
-
Semantic::Version.new(raw_version) > SEMANTIC_STABLE_VERSION
|
45
|
-
end
|
46
|
-
module_function :is_canary?
|
47
|
-
|
48
|
-
def wisp_schemer(raw_version)
|
49
|
-
if is_canary?(raw_version)
|
50
|
-
JSONSchemer.schema(Pathname.new(Wisp::CANARY_SCHEMA_PATH))
|
51
|
-
else
|
52
|
-
JSONSchemer.schema(Pathname.new(Wisp::SCHEMA_PATH))
|
53
|
-
end
|
39
|
+
def wisp_schemer
|
40
|
+
JSONSchemer.schema(Pathname.new(Wisp::SCHEMA_PATH))
|
54
41
|
end
|
55
42
|
module_function :wisp_schemer
|
56
43
|
|
57
|
-
def nouns_schemer
|
58
|
-
|
59
|
-
JSONSchemer.schema(Pathname.new(Wisp::CANARY_NOUNS_PATH))
|
60
|
-
else
|
61
|
-
JSONSchemer.schema(Pathname.new(Wisp::NOUNS_PATH))
|
62
|
-
end
|
44
|
+
def nouns_schemer
|
45
|
+
JSONSchemer.schema(Pathname.new(Wisp::NOUNS_PATH))
|
63
46
|
end
|
64
47
|
module_function :nouns_schemer
|
65
48
|
|
66
|
-
def action_schemer(
|
49
|
+
def action_schemer(action)
|
67
50
|
raise NotSupportedAction unless ACTIONS.include?(action)
|
68
51
|
|
69
52
|
JSONSchemer.schema(Pathname.new(File.expand_path("../stable/actions/#{action}.json", __dir__)))
|
70
53
|
end
|
71
54
|
module_function :action_schemer
|
72
55
|
|
73
|
-
def verbs_schemer
|
56
|
+
def verbs_schemer
|
74
57
|
JSONSchemer.schema(Pathname.new(File.expand_path("../stable/verbs.json", __dir__)))
|
75
58
|
end
|
76
59
|
module_function :verbs_schemer
|
77
60
|
|
78
|
-
def embedded_test_schemer
|
61
|
+
def embedded_test_schemer
|
79
62
|
JSONSchemer.schema(Pathname.new(File.expand_path("../stable/embeddings/embedded_test.json", __dir__)))
|
80
63
|
end
|
81
64
|
module_function :embedded_test_schemer
|
data/nouns.json
CHANGED
@@ -13,7 +13,10 @@
|
|
13
13
|
"focus_x": {"title": "Focus offset for x-axis from top left corner", "type": "integer", "options": {"hidden": true}},
|
14
14
|
"focus_y": {"title": "Focus offset for y-axis from top left corner", "type": "integer", "options": {"hidden": true}},
|
15
15
|
"match_mode": {
|
16
|
-
"
|
16
|
+
"oneOf": [
|
17
|
+
{ "$ref": "#/definitions/match_mode" },
|
18
|
+
{ "type": "array", "items": { "$ref": "#/definitions/match_mode" } }
|
19
|
+
]
|
17
20
|
},
|
18
21
|
"image_match_mode": {
|
19
22
|
"enum": ["pixel", "pixel_and_ocr", "semantic", "strict"]
|
@@ -100,7 +103,8 @@
|
|
100
103
|
},
|
101
104
|
"additionalProperties": false,
|
102
105
|
"required": ["type", "id"]
|
103
|
-
}
|
106
|
+
},
|
107
|
+
"match_mode": { "enum": ["pixel", "pixel_and_ocr", "semantic", "strict", "ai_search", "dom_selector"] }
|
104
108
|
},
|
105
109
|
"type": "object",
|
106
110
|
"title": "Single Wisp Noun",
|
@@ -0,0 +1,45 @@
|
|
1
|
+
{
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
3
|
+
"type": "object",
|
4
|
+
"action_type": "action",
|
5
|
+
"title": "Generate Steps",
|
6
|
+
"description": "Generates a set of wisp actions based on the given prompt",
|
7
|
+
"properties": {
|
8
|
+
"action": {
|
9
|
+
"enum": ["generate_steps"]
|
10
|
+
},
|
11
|
+
"embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
|
12
|
+
"execution_mode": {
|
13
|
+
"enum": ["run", "generate"]
|
14
|
+
},
|
15
|
+
"id": {"title": "Action ID", "type": "integer"},
|
16
|
+
"job_step_id": {
|
17
|
+
"title": "The id of the action's related job step",
|
18
|
+
"type": "integer"
|
19
|
+
},
|
20
|
+
"delay_after": {"title": "Delay after in seconds", "type": "integer"},
|
21
|
+
"generated_steps_blocks": {
|
22
|
+
"title": "Generated Steps Blocks",
|
23
|
+
"type": "object",
|
24
|
+
"description": "A list of blocks that each contain steps generated by the action",
|
25
|
+
"properties": {
|
26
|
+
"steps": {
|
27
|
+
"title": "Generated Steps",
|
28
|
+
"$ref": "../blocks/generated_steps_block.json"
|
29
|
+
}
|
30
|
+
},
|
31
|
+
"additionalProperties": false,
|
32
|
+
"required": ["steps"]
|
33
|
+
},
|
34
|
+
"prompt": {
|
35
|
+
"title": "The text used to generate the steps",
|
36
|
+
"type": "text"
|
37
|
+
},
|
38
|
+
"version": {
|
39
|
+
"type": "string",
|
40
|
+
"title": "Version"
|
41
|
+
}
|
42
|
+
},
|
43
|
+
"additionalProperties": false,
|
44
|
+
"required": ["action", "generated_steps_blocks", "prompt"]
|
45
|
+
}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
{
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
3
|
+
"type": "object",
|
4
|
+
"title": "Generated Steps Block",
|
5
|
+
"description": "A block containing the steps generated by the action",
|
6
|
+
"properties": {
|
7
|
+
"id": {"title": "The generated steps block's id", "type": "integer"},
|
8
|
+
"verbs": {
|
9
|
+
"title": "Verbs",
|
10
|
+
"$ref": "../verbs.json"
|
11
|
+
}
|
12
|
+
},
|
13
|
+
"additionalProperties": false,
|
14
|
+
"required": ["verbs"]
|
15
|
+
}
|
data/wisp.json
CHANGED
@@ -20,7 +20,10 @@
|
|
20
20
|
"focus_x": {"title": "Focus offset for x-axis from top left corner", "type": "integer", "options": {"hidden": true}},
|
21
21
|
"focus_y": {"title": "Focus offset for y-axis from top left corner", "type": "integer", "options": {"hidden": true}},
|
22
22
|
"match_mode": {
|
23
|
-
"
|
23
|
+
"oneOf": [
|
24
|
+
{ "$ref": "#/definitions/match_mode" },
|
25
|
+
{ "type": "array", "items": { "$ref": "#/definitions/match_mode" } }
|
26
|
+
]
|
24
27
|
},
|
25
28
|
"image_match_mode": {
|
26
29
|
"enum": ["pixel", "pixel_and_ocr", "semantic", "strict"]
|
@@ -81,6 +84,7 @@
|
|
81
84
|
"additionalProperties": false,
|
82
85
|
"required": ["type", "element"]
|
83
86
|
},
|
87
|
+
"match_mode": { "enum": ["pixel", "pixel_and_ocr", "semantic", "strict", "ai_search", "dom_selector"] },
|
84
88
|
"ui_element_reference": {
|
85
89
|
"type": "object",
|
86
90
|
"title": "UI Element Reference",
|
@@ -117,6 +121,7 @@
|
|
117
121
|
{"$ref": "#/definitions/conditional_observe"},
|
118
122
|
{"$ref": "#/definitions/double_click"},
|
119
123
|
{"$ref": "#/definitions/fill"},
|
124
|
+
{"$ref": "#/definitions/generate_steps"},
|
120
125
|
{"$ref": "#/definitions/type"},
|
121
126
|
{"$ref": "#/definitions/send_key"},
|
122
127
|
{"$ref": "#/definitions/hover"},
|
@@ -327,6 +332,64 @@
|
|
327
332
|
"additionalProperties": false,
|
328
333
|
"required": ["action", "target", "text"]
|
329
334
|
},
|
335
|
+
"generate_steps": {
|
336
|
+
"type": "object",
|
337
|
+
"action_type": "action",
|
338
|
+
"title": "Generate Steps",
|
339
|
+
"description": "Generates a set of wisp actions based on the given prompt",
|
340
|
+
"properties": {
|
341
|
+
"action": {
|
342
|
+
"enum": ["generate_steps"]
|
343
|
+
},
|
344
|
+
"embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
|
345
|
+
"execution_mode": {
|
346
|
+
"enum": ["run", "generate"]
|
347
|
+
},
|
348
|
+
"id": {"title": "Action ID", "type": "integer"},
|
349
|
+
"job_step_id": {
|
350
|
+
"title": "The id of the action's related job step",
|
351
|
+
"type": "integer"
|
352
|
+
},
|
353
|
+
"delay_after": {"title": "Delay after in seconds", "type": "integer"},
|
354
|
+
"generated_steps_blocks": {
|
355
|
+
"title": "Generated Steps Blocks",
|
356
|
+
"type": "object",
|
357
|
+
"description": "A list of blocks that each contain steps generated by the action",
|
358
|
+
"properties": {
|
359
|
+
"steps": {
|
360
|
+
"title": "Generated Steps",
|
361
|
+
"$ref": "#/definitions/generated_steps_block"
|
362
|
+
}
|
363
|
+
},
|
364
|
+
"additionalProperties": false,
|
365
|
+
"required": ["steps"]
|
366
|
+
},
|
367
|
+
"prompt": {
|
368
|
+
"title": "The text used to generate the steps",
|
369
|
+
"type": "text"
|
370
|
+
},
|
371
|
+
"version": {
|
372
|
+
"type": "string",
|
373
|
+
"title": "Version"
|
374
|
+
}
|
375
|
+
},
|
376
|
+
"additionalProperties": false,
|
377
|
+
"required": ["action", "generated_steps_blocks", "prompt"]
|
378
|
+
},
|
379
|
+
"generated_steps_block": {
|
380
|
+
"type": "object",
|
381
|
+
"title": "Generated Steps Block",
|
382
|
+
"description": "A block containing the steps generated by the action",
|
383
|
+
"properties": {
|
384
|
+
"id": {"title": "The generated steps block's id", "type": "integer"},
|
385
|
+
"verbs": {
|
386
|
+
"title": "Verbs",
|
387
|
+
"$ref": "#/definitions/verb"
|
388
|
+
}
|
389
|
+
},
|
390
|
+
"additionalProperties": false,
|
391
|
+
"required": ["verbs"]
|
392
|
+
},
|
330
393
|
"type": {
|
331
394
|
"type": "object",
|
332
395
|
"action_type": "action",
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wisp-schema
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.18.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jan Grodowski
|
@@ -74,8 +74,6 @@ executables: []
|
|
74
74
|
extensions: []
|
75
75
|
extra_rdoc_files: []
|
76
76
|
files:
|
77
|
-
- canary-nouns.json
|
78
|
-
- canary-wisp.json
|
79
77
|
- lib/version.rb
|
80
78
|
- lib/wisp-schema.rb
|
81
79
|
- nouns.json
|
@@ -87,6 +85,7 @@ files:
|
|
87
85
|
- stable/actions/double_click.json
|
88
86
|
- stable/actions/drag_and_drop.json
|
89
87
|
- stable/actions/fill.json
|
88
|
+
- stable/actions/generate_steps.json
|
90
89
|
- stable/actions/hover.json
|
91
90
|
- stable/actions/navigate.json
|
92
91
|
- stable/actions/observe.json
|
@@ -100,6 +99,7 @@ files:
|
|
100
99
|
- stable/actions/ui_element_reference.json
|
101
100
|
- stable/actions/wait.json
|
102
101
|
- stable/blocks/conditional_block.json
|
102
|
+
- stable/blocks/generated_steps_block.json
|
103
103
|
- stable/embeddings/embedded_test.json
|
104
104
|
- stable/verbs.json
|
105
105
|
- wisp.json
|
data/canary-nouns.json
DELETED
@@ -1,121 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
3
|
-
"definitions": {
|
4
|
-
"ui_element": {
|
5
|
-
"type": "object",
|
6
|
-
"title": "UI Element",
|
7
|
-
"description": "Any other UI Element",
|
8
|
-
"properties": {
|
9
|
-
"type": {
|
10
|
-
"enum": ["ui_element"]
|
11
|
-
},
|
12
|
-
"element": {"title": "Element", "type": "string"},
|
13
|
-
"focus_x": {"title": "Focus offset for x-axis from top left corner", "type": "integer", "options": {"hidden": true}},
|
14
|
-
"focus_y": {"title": "Focus offset for y-axis from top left corner", "type": "integer", "options": {"hidden": true}},
|
15
|
-
"match_mode": {
|
16
|
-
"enum": ["pixel", "pixel_and_ocr", "semantic", "strict", "ai_search", "dom_selector"]
|
17
|
-
},
|
18
|
-
"image_match_mode": {
|
19
|
-
"enum": ["pixel", "pixel_and_ocr", "semantic", "strict"]
|
20
|
-
},
|
21
|
-
"search_term": {"title": "Text describing UI Element or it's location", "type": "string"},
|
22
|
-
"dom_selector": {"title": "CSS Selector or XPath used to locate element", "type": "string"},
|
23
|
-
"ocr_expression": {
|
24
|
-
"title": "Expression to use for text matching",
|
25
|
-
"type": "string",
|
26
|
-
"maxLength": 999
|
27
|
-
},
|
28
|
-
"ocr_status": {
|
29
|
-
"title": "OCR result description",
|
30
|
-
"enum": ["SUCCESS", "TOO_MUCH_TEXT", "NO_TEXT"]
|
31
|
-
},
|
32
|
-
"ocr_box": {
|
33
|
-
"title": "Text content bounding box",
|
34
|
-
"type": "object",
|
35
|
-
"properties": {
|
36
|
-
"x": {"type": "integer"},
|
37
|
-
"y": {"type": "integer"},
|
38
|
-
"w": {"type": "integer"},
|
39
|
-
"h": {"type": "integer"}
|
40
|
-
}
|
41
|
-
},
|
42
|
-
"masks": {
|
43
|
-
"type": "array",
|
44
|
-
"title": "Mask collection",
|
45
|
-
"description": "A collection of mask objects that tell the matching algorithms which parts of an image to ignore when attempting a match",
|
46
|
-
"items": {
|
47
|
-
"type": "object",
|
48
|
-
"title": "Mask",
|
49
|
-
"properties": {
|
50
|
-
"x": {"type": "integer"},
|
51
|
-
"y": {"type": "integer"},
|
52
|
-
"w": {"type": "integer"},
|
53
|
-
"h": {"type": "integer"},
|
54
|
-
"ocr_mask_expression": {
|
55
|
-
"title": "Expression to use for text matching inside mask",
|
56
|
-
"type": "string",
|
57
|
-
"maxLength": 999
|
58
|
-
},
|
59
|
-
"ocr_mask_status": {
|
60
|
-
"title": "OCR inside mask result description",
|
61
|
-
"enum": ["SUCCESS", "TOO_MUCH_TEXT", "NO_TEXT"]
|
62
|
-
},
|
63
|
-
"text_matching_expression": {
|
64
|
-
"type": "object",
|
65
|
-
"title": "A user-supplied string representing text to be matched within the mask",
|
66
|
-
"properties": {
|
67
|
-
"text": {"type": "string"}
|
68
|
-
}
|
69
|
-
}
|
70
|
-
}
|
71
|
-
}
|
72
|
-
}
|
73
|
-
},
|
74
|
-
"additionalProperties": false,
|
75
|
-
"required": ["type", "element"]
|
76
|
-
},
|
77
|
-
"ui_element_reference": {
|
78
|
-
"type": "object",
|
79
|
-
"title": "UI Element Reference",
|
80
|
-
"description": "A UI Element stored in the database",
|
81
|
-
"properties": {
|
82
|
-
"type": {
|
83
|
-
"enum": ["ui_element_reference"]
|
84
|
-
},
|
85
|
-
"id": {"title": "UI Element ID", "type": "integer"},
|
86
|
-
"search_term": {"title": "Text describing UI Element or it's location", "type": "string"},
|
87
|
-
"dom_selector": {"title": "CSS Selector or XPath used to locate element", "type": "string"},
|
88
|
-
"text_matchers": {
|
89
|
-
"type": "array",
|
90
|
-
"title": "Mask text-matching collection",
|
91
|
-
"description": "A collection of user-supplied strings representing text to be matched within the mask. It has an index corresponding with its mask in the ui_element.masks array",
|
92
|
-
"items": {
|
93
|
-
"type": "object",
|
94
|
-
"title": "Text to match",
|
95
|
-
"properties": {
|
96
|
-
"text": {"type": "string"}
|
97
|
-
}
|
98
|
-
}
|
99
|
-
}
|
100
|
-
},
|
101
|
-
"additionalProperties": false,
|
102
|
-
"required": ["type", "id"]
|
103
|
-
}
|
104
|
-
},
|
105
|
-
"type": "object",
|
106
|
-
"title": "Single Wisp Noun",
|
107
|
-
"properties": {
|
108
|
-
"version": {
|
109
|
-
"type": "string",
|
110
|
-
"title": "Version"
|
111
|
-
},
|
112
|
-
"noun": {
|
113
|
-
"oneOf": [
|
114
|
-
{"$ref": "#/definitions/ui_element"},
|
115
|
-
{"$ref": "#/definitions/ui_element_reference"}
|
116
|
-
]
|
117
|
-
}
|
118
|
-
},
|
119
|
-
"additionalProperties": false,
|
120
|
-
"required": ["version", "noun"]
|
121
|
-
}
|
data/canary-wisp.json
DELETED
@@ -1,686 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
3
|
-
"definitions": {
|
4
|
-
"noun": {
|
5
|
-
"title": "Wisp Noun",
|
6
|
-
"oneOf": [
|
7
|
-
{"$ref": "#/definitions/ui_element"},
|
8
|
-
{"$ref": "#/definitions/ui_element_reference"}
|
9
|
-
]
|
10
|
-
},
|
11
|
-
"ui_element": {
|
12
|
-
"type": "object",
|
13
|
-
"title": "UI Element",
|
14
|
-
"description": "Any other UI Element",
|
15
|
-
"properties": {
|
16
|
-
"type": {
|
17
|
-
"enum": ["ui_element"]
|
18
|
-
},
|
19
|
-
"element": {"title": "Element", "type": "string"},
|
20
|
-
"focus_x": {"title": "Focus offset for x-axis from top left corner", "type": "integer", "options": {"hidden": true}},
|
21
|
-
"focus_y": {"title": "Focus offset for y-axis from top left corner", "type": "integer", "options": {"hidden": true}},
|
22
|
-
"match_mode": {
|
23
|
-
"enum": ["pixel", "pixel_and_ocr", "semantic", "strict", "ai_search", "dom_selector"]
|
24
|
-
},
|
25
|
-
"image_match_mode": {
|
26
|
-
"enum": ["pixel", "pixel_and_ocr", "semantic", "strict"]
|
27
|
-
},
|
28
|
-
"search_term": {"title": "Text describing UI Element or it's location", "type": "string"},
|
29
|
-
"dom_selector": {"title": "CSS Selector or XPath used to locate element", "type": "string"},
|
30
|
-
"ocr_expression": {
|
31
|
-
"title": "Expression to use for text matching",
|
32
|
-
"type": "string",
|
33
|
-
"maxLength": 999
|
34
|
-
},
|
35
|
-
"ocr_status": {
|
36
|
-
"title": "OCR result description",
|
37
|
-
"enum": ["SUCCESS", "TOO_MUCH_TEXT", "NO_TEXT"]
|
38
|
-
},
|
39
|
-
"ocr_box": {
|
40
|
-
"title": "Text content bounding box",
|
41
|
-
"type": "object",
|
42
|
-
"properties": {
|
43
|
-
"x": {"type": "integer"},
|
44
|
-
"y": {"type": "integer"},
|
45
|
-
"w": {"type": "integer"},
|
46
|
-
"h": {"type": "integer"}
|
47
|
-
}
|
48
|
-
},
|
49
|
-
"masks": {
|
50
|
-
"type": "array",
|
51
|
-
"title": "Mask collection",
|
52
|
-
"description": "A collection of mask objects that tell the matching algorithms which parts of an image to ignore when attempting a match",
|
53
|
-
"items": {
|
54
|
-
"type": "object",
|
55
|
-
"title": "Mask",
|
56
|
-
"properties": {
|
57
|
-
"x": {"type": "integer"},
|
58
|
-
"y": {"type": "integer"},
|
59
|
-
"w": {"type": "integer"},
|
60
|
-
"h": {"type": "integer"},
|
61
|
-
"ocr_mask_expression": {
|
62
|
-
"title": "Expression to use for text matching inside mask",
|
63
|
-
"type": "string",
|
64
|
-
"maxLength": 999
|
65
|
-
},
|
66
|
-
"ocr_mask_status": {
|
67
|
-
"title": "OCR inside mask result description",
|
68
|
-
"enum": ["SUCCESS", "TOO_MUCH_TEXT", "NO_TEXT"]
|
69
|
-
},
|
70
|
-
"text_matching_expression": {
|
71
|
-
"type": "object",
|
72
|
-
"title": "A user-supplied string representing text to be matched within the mask",
|
73
|
-
"properties": {
|
74
|
-
"text": {"type": "string"}
|
75
|
-
}
|
76
|
-
}
|
77
|
-
}
|
78
|
-
}
|
79
|
-
}
|
80
|
-
},
|
81
|
-
"additionalProperties": false,
|
82
|
-
"required": ["type", "element"]
|
83
|
-
},
|
84
|
-
"ui_element_reference": {
|
85
|
-
"type": "object",
|
86
|
-
"title": "UI Element Reference",
|
87
|
-
"description": "A UI Element stored in the database",
|
88
|
-
"properties": {
|
89
|
-
"type": {
|
90
|
-
"enum": ["ui_element_reference"]
|
91
|
-
},
|
92
|
-
"id": {"title": "UI Element ID", "type": "integer"},
|
93
|
-
"search_term": {"title": "Text describing UI Element or it's location", "type": "string"},
|
94
|
-
"dom_selector": {"title": "CSS Selector or XPath used to locate element", "type": "string"},
|
95
|
-
"text_matchers": {
|
96
|
-
"type": "array",
|
97
|
-
"title": "Mask text-matching collection",
|
98
|
-
"description": "A collection of user-supplied strings representing text to be matched within the mask. It has an index corresponding with its mask in the ui_element.masks array",
|
99
|
-
"items": {
|
100
|
-
"type": "object",
|
101
|
-
"title": "Text to match",
|
102
|
-
"properties": {
|
103
|
-
"text": {"type": "string"}
|
104
|
-
}
|
105
|
-
}
|
106
|
-
}
|
107
|
-
},
|
108
|
-
"additionalProperties": false,
|
109
|
-
"required": ["type", "id"]
|
110
|
-
},
|
111
|
-
"verb": {
|
112
|
-
"title": "Wisp Verb",
|
113
|
-
"oneOf": [
|
114
|
-
{"$ref": "#/definitions/ai_confirmation"},
|
115
|
-
{"$ref": "#/definitions/click"},
|
116
|
-
{"$ref": "#/definitions/comment"},
|
117
|
-
{"$ref": "#/definitions/conditional_observe"},
|
118
|
-
{"$ref": "#/definitions/double_click"},
|
119
|
-
{"$ref": "#/definitions/fill"},
|
120
|
-
{"$ref": "#/definitions/type"},
|
121
|
-
{"$ref": "#/definitions/send_key"},
|
122
|
-
{"$ref": "#/definitions/hover"},
|
123
|
-
{"$ref": "#/definitions/select"},
|
124
|
-
{"$ref": "#/definitions/refresh"},
|
125
|
-
{"$ref": "#/definitions/navigate"},
|
126
|
-
{"$ref": "#/definitions/close_tab"},
|
127
|
-
{"$ref": "#/definitions/scroll"},
|
128
|
-
{"$ref": "#/definitions/wait"},
|
129
|
-
{"$ref": "#/definitions/drag_and_drop"},
|
130
|
-
{"$ref": "#/definitions/tester_instruction"},
|
131
|
-
{"$ref": "#/definitions/embedded_test"},
|
132
|
-
{"$ref": "#/definitions/observe"},
|
133
|
-
{"$ref": "#/definitions/tester_confirmation"}
|
134
|
-
]
|
135
|
-
},
|
136
|
-
"ai_confirmation": {
|
137
|
-
"type": "object",
|
138
|
-
"action_type": "assertion",
|
139
|
-
"title": "AI Assertion",
|
140
|
-
"description": "A Yes (pass) or No (fail) question answered by AI",
|
141
|
-
"properties": {
|
142
|
-
"action": {
|
143
|
-
"enum": ["ai_confirmation"]
|
144
|
-
},
|
145
|
-
"id": {"title": "Action ID", "type": "integer"},
|
146
|
-
"job_step_id": {
|
147
|
-
"title": "The id of the action's related job step",
|
148
|
-
"type": "integer"
|
149
|
-
},
|
150
|
-
"embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
|
151
|
-
"delay_after": {"title": "Delay after in seconds", "type": "integer"},
|
152
|
-
"question": {"title": "Question for the AI", "type": "string"},
|
153
|
-
"version": {
|
154
|
-
"type": "string",
|
155
|
-
"title": "Version"
|
156
|
-
}
|
157
|
-
},
|
158
|
-
"additionalProperties": false,
|
159
|
-
"required": ["action", "question"]
|
160
|
-
},
|
161
|
-
"click": {
|
162
|
-
"type": "object",
|
163
|
-
"action_type": "action",
|
164
|
-
"title": "Click",
|
165
|
-
"description": "Clicks on the UI element",
|
166
|
-
"properties": {
|
167
|
-
"action": {
|
168
|
-
"enum": ["click"]
|
169
|
-
},
|
170
|
-
"embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
|
171
|
-
"id": {"title": "Action ID", "type": "integer"},
|
172
|
-
"job_step_id": {
|
173
|
-
"title": "The id of the action's related job step",
|
174
|
-
"type": "integer"
|
175
|
-
},
|
176
|
-
"delay_after": {"title": "Delay after in seconds", "type": "integer"},
|
177
|
-
"target": {
|
178
|
-
"title": "Target",
|
179
|
-
"$ref": "#/definitions/noun",
|
180
|
-
"type": "ui_element_reference"
|
181
|
-
},
|
182
|
-
"button": {"title": "Mouse Button", "type": "string", "enum": ["left", "middle", "right"]},
|
183
|
-
"hold": {"title": "And Hold", "type": "boolean"},
|
184
|
-
"hold_seconds": {"title": "Hold seconds", "type": "integer"}
|
185
|
-
},
|
186
|
-
"additionalProperties": false,
|
187
|
-
"required": ["action", "target", "button", "hold"]
|
188
|
-
},
|
189
|
-
"comment": {
|
190
|
-
"type": "object",
|
191
|
-
"action_type": "noop",
|
192
|
-
"title": "Comment",
|
193
|
-
"description": "A non-functional comment for others reading the test",
|
194
|
-
"properties": {
|
195
|
-
"action": {
|
196
|
-
"enum": ["comment"]
|
197
|
-
},
|
198
|
-
"delay_after": {"title": "Delay after in seconds", "type": "integer"},
|
199
|
-
"embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
|
200
|
-
"id": {"title": "Action ID", "type": "integer"},
|
201
|
-
"job_step_id": {
|
202
|
-
"title": "The id of the action's related job step",
|
203
|
-
"type": "integer"
|
204
|
-
},
|
205
|
-
"text": {"title": "Text", "type": "string"}
|
206
|
-
},
|
207
|
-
"additionalProperties": false,
|
208
|
-
"required": ["action", "text"]
|
209
|
-
},
|
210
|
-
"conditional_block": {
|
211
|
-
"type": "object",
|
212
|
-
"title": "Conditional Block",
|
213
|
-
"description": "Structure for a conditional block",
|
214
|
-
"properties": {
|
215
|
-
"id": {"title": "Conditional Block ID", "type": "integer"},
|
216
|
-
"verbs": {
|
217
|
-
"type": "array",
|
218
|
-
"title": "Verbs",
|
219
|
-
"items": {
|
220
|
-
"$ref": "#/definitions/verb"
|
221
|
-
}
|
222
|
-
}
|
223
|
-
},
|
224
|
-
"additionalProperties": false,
|
225
|
-
"required": ["verbs"]
|
226
|
-
},
|
227
|
-
"conditional_observe": {
|
228
|
-
"type": "object",
|
229
|
-
"action_type": "assertion",
|
230
|
-
"title": "Conditional Observe",
|
231
|
-
"description": "Checks if element of the UI is visible or not to decide if the test should execute conditional block or not.",
|
232
|
-
"properties": {
|
233
|
-
"action": {
|
234
|
-
"enum": ["conditional_observe"]
|
235
|
-
},
|
236
|
-
"embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
|
237
|
-
"id": {"title": "Action ID", "type": "integer"},
|
238
|
-
"job_step_id": {
|
239
|
-
"title": "The id of the action's related job step",
|
240
|
-
"type": "integer"
|
241
|
-
},
|
242
|
-
"delay_after": {"title": "Delay after in seconds", "type": "integer"},
|
243
|
-
"object": {
|
244
|
-
"title": "Object",
|
245
|
-
"$ref": "#/definitions/noun"
|
246
|
-
},
|
247
|
-
"seconds": {
|
248
|
-
"title": "seconds",
|
249
|
-
"type": "integer",
|
250
|
-
"minimum": 10,
|
251
|
-
"maximum": 3600
|
252
|
-
},
|
253
|
-
"visibility": {
|
254
|
-
"title": "Is the element visible?",
|
255
|
-
"type": "boolean",
|
256
|
-
"enum": [true, false]
|
257
|
-
},
|
258
|
-
"conditional_blocks": {
|
259
|
-
"title": "Conditional Blocks",
|
260
|
-
"type": "object",
|
261
|
-
"description": "Structure for conditional blocks",
|
262
|
-
"properties": {
|
263
|
-
"conditional_passed": {
|
264
|
-
"title": "Conditional Passed",
|
265
|
-
"$ref": "#/definitions/conditional_block"
|
266
|
-
},
|
267
|
-
"conditional_failed": {
|
268
|
-
"title": "Conditional Failed",
|
269
|
-
"$ref": "#/definitions/conditional_block"
|
270
|
-
}
|
271
|
-
},
|
272
|
-
"additionalProperties": false,
|
273
|
-
"required": ["conditional_passed"]
|
274
|
-
}
|
275
|
-
},
|
276
|
-
"additionalProperties": false,
|
277
|
-
"required": ["action", "object", "visibility", "conditional_blocks"]
|
278
|
-
},
|
279
|
-
"double_click": {
|
280
|
-
"type": "object",
|
281
|
-
"action_type": "action",
|
282
|
-
"title": "Double-click",
|
283
|
-
"description": "Double-clicks on the UI element",
|
284
|
-
"properties": {
|
285
|
-
"action": {
|
286
|
-
"enum": ["double_click"]
|
287
|
-
},
|
288
|
-
"embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
|
289
|
-
"id": {"title": "Action ID", "type": "integer"},
|
290
|
-
"job_step_id": {
|
291
|
-
"title": "The id of the action's related job step",
|
292
|
-
"type": "integer"
|
293
|
-
},
|
294
|
-
"delay_after": {"title": "Delay after in seconds", "type": "integer"},
|
295
|
-
"target": {
|
296
|
-
"title": "Target",
|
297
|
-
"$ref": "#/definitions/noun",
|
298
|
-
"type": "ui_element_reference"
|
299
|
-
}
|
300
|
-
},
|
301
|
-
"additionalProperties": false,
|
302
|
-
"required": ["action", "target"]
|
303
|
-
},
|
304
|
-
"fill": {
|
305
|
-
"type": "object",
|
306
|
-
"action_type": "action",
|
307
|
-
"title": "Fill",
|
308
|
-
"description": "Fills the text field with specified content",
|
309
|
-
"properties": {
|
310
|
-
"action": {
|
311
|
-
"enum": ["fill"]
|
312
|
-
},
|
313
|
-
"embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
|
314
|
-
"id": {"title": "Action ID", "type": "integer"},
|
315
|
-
"job_step_id": {
|
316
|
-
"title": "The id of the action's related job step",
|
317
|
-
"type": "integer"
|
318
|
-
},
|
319
|
-
"delay_after": {"title": "Delay after in seconds", "type": "integer"},
|
320
|
-
"target": {
|
321
|
-
"title": "Target",
|
322
|
-
"$ref": "#/definitions/noun",
|
323
|
-
"type": "ui_element_reference"
|
324
|
-
},
|
325
|
-
"text": {"title": "Text", "type": "string"}
|
326
|
-
},
|
327
|
-
"additionalProperties": false,
|
328
|
-
"required": ["action", "target", "text"]
|
329
|
-
},
|
330
|
-
"type": {
|
331
|
-
"type": "object",
|
332
|
-
"action_type": "action",
|
333
|
-
"title": "Type",
|
334
|
-
"description": "Types in specified text",
|
335
|
-
"properties": {
|
336
|
-
"action": {
|
337
|
-
"enum": ["type"]
|
338
|
-
},
|
339
|
-
"embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
|
340
|
-
"id": {"title": "Action ID", "type": "integer"},
|
341
|
-
"job_step_id": {
|
342
|
-
"title": "The id of the action's related job step",
|
343
|
-
"type": "integer"
|
344
|
-
},
|
345
|
-
"delay_after": {"title": "Delay after in seconds", "type": "integer"},
|
346
|
-
"text": {"title": "Text", "type": "string"}
|
347
|
-
},
|
348
|
-
"additionalProperties": false,
|
349
|
-
"required": ["action", "text"]
|
350
|
-
},
|
351
|
-
"send_key": {
|
352
|
-
"type": "object",
|
353
|
-
"action_type": "action",
|
354
|
-
"title": "Press Key",
|
355
|
-
"description": "Press specified key or key combination.",
|
356
|
-
"properties": {
|
357
|
-
"action": {
|
358
|
-
"enum": ["send_key"]
|
359
|
-
},
|
360
|
-
"embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
|
361
|
-
"id": {"title": "Action ID", "type": "integer"},
|
362
|
-
"job_step_id": {
|
363
|
-
"title": "The id of the action's related job step",
|
364
|
-
"type": "integer"
|
365
|
-
},
|
366
|
-
"delay_after": {"title": "Delay after in seconds", "type": "integer"},
|
367
|
-
"key": {"title": "Key", "type": "string"},
|
368
|
-
"modifier": {"title": "Modifier", "type": "string"}
|
369
|
-
},
|
370
|
-
"additionalProperties": false,
|
371
|
-
"required": ["action", "key"]
|
372
|
-
},
|
373
|
-
"hover": {
|
374
|
-
"type": "object",
|
375
|
-
"action_type": "action",
|
376
|
-
"title": "Hover",
|
377
|
-
"description": "Hovers over specified element",
|
378
|
-
"properties": {
|
379
|
-
"action": {
|
380
|
-
"enum": ["hover"]
|
381
|
-
},
|
382
|
-
"embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
|
383
|
-
"id": {"title": "Action ID", "type": "integer"},
|
384
|
-
"job_step_id": {
|
385
|
-
"title": "The id of the action's related job step",
|
386
|
-
"type": "integer"
|
387
|
-
},
|
388
|
-
"delay_after": {"title": "Delay after in seconds", "type": "integer"},
|
389
|
-
"target": {
|
390
|
-
"title": "Target",
|
391
|
-
"$ref": "#/definitions/noun",
|
392
|
-
"type": "ui_element_reference"
|
393
|
-
}
|
394
|
-
},
|
395
|
-
"additionalProperties": false,
|
396
|
-
"required": ["action", "target"]
|
397
|
-
},
|
398
|
-
"select": {
|
399
|
-
"type": "object",
|
400
|
-
"action_type": "action",
|
401
|
-
"title": "Select",
|
402
|
-
"description": "Selects specified item from the dropdown",
|
403
|
-
"properties": {
|
404
|
-
"action": {
|
405
|
-
"enum": ["select"]
|
406
|
-
},
|
407
|
-
"embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
|
408
|
-
"id": {"title": "Action ID", "type": "integer"},
|
409
|
-
"job_step_id": {
|
410
|
-
"title": "The id of the action's related job step",
|
411
|
-
"type": "integer"
|
412
|
-
},
|
413
|
-
"delay_after": {"title": "Delay after in seconds", "type": "integer"},
|
414
|
-
"target": {
|
415
|
-
"title": "Target",
|
416
|
-
"$ref": "#/definitions/noun",
|
417
|
-
"type": "ui_element_reference"
|
418
|
-
},
|
419
|
-
"option": {
|
420
|
-
"title": "Option",
|
421
|
-
"$ref": "#/definitions/noun"
|
422
|
-
}
|
423
|
-
},
|
424
|
-
"additionalProperties": false,
|
425
|
-
"required": ["action", "target", "option"]
|
426
|
-
},
|
427
|
-
"refresh": {
|
428
|
-
"type": "object",
|
429
|
-
"action_type": "action",
|
430
|
-
"title": "Refresh",
|
431
|
-
"description": "Refreshes the webpage",
|
432
|
-
"properties": {
|
433
|
-
"action": {
|
434
|
-
"enum": ["refresh"]
|
435
|
-
},
|
436
|
-
"embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
|
437
|
-
"id": {"title": "Action ID", "type": "integer"},
|
438
|
-
"job_step_id": {
|
439
|
-
"title": "The id of the action's related job step",
|
440
|
-
"type": "integer"
|
441
|
-
},
|
442
|
-
"delay_after": {"title": "Delay after in seconds", "type": "integer"}
|
443
|
-
},
|
444
|
-
"additionalProperties": false,
|
445
|
-
"required": ["action"]
|
446
|
-
},
|
447
|
-
"navigate": {
|
448
|
-
"type": "object",
|
449
|
-
"action_type": "action",
|
450
|
-
"title": "Navigate",
|
451
|
-
"description": "Navigates to specified URL",
|
452
|
-
"properties": {
|
453
|
-
"action": {
|
454
|
-
"enum": ["navigate"]
|
455
|
-
},
|
456
|
-
"embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
|
457
|
-
"id": {"title": "Action ID", "type": "integer"},
|
458
|
-
"job_step_id": {
|
459
|
-
"title": "The id of the action's related job step",
|
460
|
-
"type": "integer"
|
461
|
-
},
|
462
|
-
"delay_after": {"title": "Delay after in seconds", "type": "integer"},
|
463
|
-
"url": {"title": "URL", "type": "string"},
|
464
|
-
"tab": {"title": "Tab", "type": "string", "enum": ["current", "new", "incognito"]}
|
465
|
-
},
|
466
|
-
"additionalProperties": false,
|
467
|
-
"required": ["action", "url", "tab"]
|
468
|
-
},
|
469
|
-
"close_tab": {
|
470
|
-
"type": "object",
|
471
|
-
"action_type": "action",
|
472
|
-
"title": "Close Tab",
|
473
|
-
"description": "Closes current browser tab",
|
474
|
-
"properties": {
|
475
|
-
"action": {
|
476
|
-
"enum": ["close_tab"]
|
477
|
-
},
|
478
|
-
"embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
|
479
|
-
"id": {"title": "Action ID", "type": "integer"},
|
480
|
-
"job_step_id": {
|
481
|
-
"title": "The id of the action's related job step",
|
482
|
-
"type": "integer"
|
483
|
-
},
|
484
|
-
"delay_after": {"title": "Delay after in seconds", "type": "integer"}
|
485
|
-
},
|
486
|
-
"additionalProperties": false,
|
487
|
-
"required": ["action"]
|
488
|
-
},
|
489
|
-
"scroll": {
|
490
|
-
"type": "object",
|
491
|
-
"action_type": "action",
|
492
|
-
"title": "Scroll",
|
493
|
-
"description": "Scrolls the page into specified direction until target is reached",
|
494
|
-
"properties": {
|
495
|
-
"action": {
|
496
|
-
"enum": ["scroll"]
|
497
|
-
},
|
498
|
-
"embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
|
499
|
-
"id": {"title": "Action ID", "type": "integer"},
|
500
|
-
"job_step_id": {
|
501
|
-
"title": "The id of the action's related job step",
|
502
|
-
"type": "integer"
|
503
|
-
},
|
504
|
-
"delay_after": {"title": "Delay after in seconds", "type": "integer"},
|
505
|
-
"direction": {"title": "Direction", "type": "string", "enum": ["up", "down", "left", "right"]},
|
506
|
-
"target": {
|
507
|
-
"title": "Target",
|
508
|
-
"$ref": "#/definitions/noun",
|
509
|
-
"type": "ui_element_reference"
|
510
|
-
}
|
511
|
-
},
|
512
|
-
"additionalProperties": false,
|
513
|
-
"required": ["action", "direction", "target"]
|
514
|
-
},
|
515
|
-
"wait": {
|
516
|
-
"type": "object",
|
517
|
-
"action_type": "action",
|
518
|
-
"title": "Wait",
|
519
|
-
"description": "Waits for a number of seconds",
|
520
|
-
"properties": {
|
521
|
-
"action": {
|
522
|
-
"enum": ["wait"]
|
523
|
-
},
|
524
|
-
"embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
|
525
|
-
"id": {"title": "Action ID", "type": "integer"},
|
526
|
-
"job_step_id": {
|
527
|
-
"title": "The id of the action's related job step",
|
528
|
-
"type": "integer"
|
529
|
-
},
|
530
|
-
"delay_after": {"title": "Delay after in seconds", "type": "integer"},
|
531
|
-
"seconds": {
|
532
|
-
"title": "seconds",
|
533
|
-
"type": "integer",
|
534
|
-
"maximum": 3600,
|
535
|
-
"minimum": 0
|
536
|
-
}
|
537
|
-
},
|
538
|
-
"additionalProperties": false,
|
539
|
-
"required": ["action", "seconds"]
|
540
|
-
},
|
541
|
-
"drag_and_drop": {
|
542
|
-
"type": "object",
|
543
|
-
"action_type": "action",
|
544
|
-
"title": "Drag and drop",
|
545
|
-
"description": "Drag and drop",
|
546
|
-
"properties": {
|
547
|
-
"action": {
|
548
|
-
"enum": ["drag_and_drop"]
|
549
|
-
},
|
550
|
-
"embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
|
551
|
-
"id": {"title": "Action ID", "type": "integer"},
|
552
|
-
"job_step_id": {
|
553
|
-
"title": "The id of the action's related job step",
|
554
|
-
"type": "integer"
|
555
|
-
},
|
556
|
-
"delay_after": {"title": "Delay after in seconds", "type": "integer"},
|
557
|
-
"object": {
|
558
|
-
"title": "Object",
|
559
|
-
"$ref": "#/definitions/noun"
|
560
|
-
},
|
561
|
-
"target": {
|
562
|
-
"title": "Target",
|
563
|
-
"$ref": "#/definitions/noun",
|
564
|
-
"type": "ui_element_reference"
|
565
|
-
}
|
566
|
-
},
|
567
|
-
"additionalProperties": false,
|
568
|
-
"required": ["action", "target", "object"]
|
569
|
-
},
|
570
|
-
"embedded_test": {
|
571
|
-
"type": "object",
|
572
|
-
"action_type": "embedded_test",
|
573
|
-
"title": "Embedded Test",
|
574
|
-
"description": "Embeds a Test",
|
575
|
-
"properties": {
|
576
|
-
"action": {
|
577
|
-
"enum": ["embedded_test"]
|
578
|
-
},
|
579
|
-
"test_id": {
|
580
|
-
"title": "Test ID",
|
581
|
-
"type": "integer"
|
582
|
-
},
|
583
|
-
"id": {
|
584
|
-
"title": "Action ID",
|
585
|
-
"type": "integer"
|
586
|
-
}
|
587
|
-
},
|
588
|
-
"additionalProperties": false,
|
589
|
-
"required": ["action", "test_id"]
|
590
|
-
},
|
591
|
-
"tester_instruction": {
|
592
|
-
"type": "object",
|
593
|
-
"action_type": "action",
|
594
|
-
"title": "Tester Instruction",
|
595
|
-
"description": "An action for a human to complete",
|
596
|
-
"properties": {
|
597
|
-
"action": {
|
598
|
-
"enum": ["tester_instruction"]
|
599
|
-
},
|
600
|
-
"embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
|
601
|
-
"id": {"title": "Action ID", "type": "integer"},
|
602
|
-
"job_step_id": {
|
603
|
-
"title": "The id of the action's related job step",
|
604
|
-
"type": "integer"
|
605
|
-
},
|
606
|
-
"delay_after": {"title": "Delay after in seconds", "type": "integer"},
|
607
|
-
"instruction": {"title": "Instruction", "type": "string"}
|
608
|
-
},
|
609
|
-
"additionalProperties": false,
|
610
|
-
"required": ["action", "instruction"]
|
611
|
-
},
|
612
|
-
"observe": {
|
613
|
-
"type": "object",
|
614
|
-
"action_type": "assertion",
|
615
|
-
"title": "Observe",
|
616
|
-
"description": "Checks if element of the UI is visible or not",
|
617
|
-
"properties": {
|
618
|
-
"action": {
|
619
|
-
"enum": ["observe"]
|
620
|
-
},
|
621
|
-
"embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
|
622
|
-
"id": {"title": "Action ID", "type": "integer"},
|
623
|
-
"job_step_id": {
|
624
|
-
"title": "The id of the action's related job step",
|
625
|
-
"type": "integer"
|
626
|
-
},
|
627
|
-
"delay_after": {"title": "Delay after in seconds", "type": "integer"},
|
628
|
-
"object": {
|
629
|
-
"title": "Object",
|
630
|
-
"$ref": "#/definitions/noun"
|
631
|
-
},
|
632
|
-
"seconds": {
|
633
|
-
"title": "seconds",
|
634
|
-
"type": "integer",
|
635
|
-
"minimum": 10,
|
636
|
-
"maximum": 3600
|
637
|
-
},
|
638
|
-
"visibility": {
|
639
|
-
"title": "Is the element visible?",
|
640
|
-
"type": "boolean",
|
641
|
-
"enum": [true, false]
|
642
|
-
}
|
643
|
-
},
|
644
|
-
"additionalProperties": false,
|
645
|
-
"required": ["action", "object", "visibility"]
|
646
|
-
},
|
647
|
-
"tester_confirmation": {
|
648
|
-
"type": "object",
|
649
|
-
"action_type": "assertion",
|
650
|
-
"title": "Tester Confirmation",
|
651
|
-
"description": "Ask a question to confirm a behavior",
|
652
|
-
"properties": {
|
653
|
-
"action": {
|
654
|
-
"enum": ["tester_confirmation"]
|
655
|
-
},
|
656
|
-
"embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
|
657
|
-
"id": {"title": "Action ID", "type": "integer"},
|
658
|
-
"job_step_id": {
|
659
|
-
"title": "The id of the action's related job step",
|
660
|
-
"type": "integer"
|
661
|
-
},
|
662
|
-
"delay_after": {"title": "Delay after in seconds", "type": "integer"},
|
663
|
-
"confirmation": {"title": "confirmation", "type": "string"}
|
664
|
-
},
|
665
|
-
"additionalProperties": false,
|
666
|
-
"required": ["action", "confirmation"]
|
667
|
-
}
|
668
|
-
},
|
669
|
-
"type": "object",
|
670
|
-
"title": "Wisp Test",
|
671
|
-
"properties": {
|
672
|
-
"version": {
|
673
|
-
"type": "string",
|
674
|
-
"title": "Version"
|
675
|
-
},
|
676
|
-
"verbs": {
|
677
|
-
"type": "array",
|
678
|
-
"title": "Verbs",
|
679
|
-
"items": {
|
680
|
-
"$ref": "#/definitions/verb"
|
681
|
-
}
|
682
|
-
}
|
683
|
-
},
|
684
|
-
"additionalProperties": false,
|
685
|
-
"required": ["version", "verbs"]
|
686
|
-
}
|