wisp-schema 1.16.1 → 1.17.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 +8 -26
- data/nouns.json +6 -2
- data/stable/actions/observe.json +1 -1
- data/wisp.json +6 -2
- metadata +1 -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: c7ef6b2bae7200a7aa9056e77c17e1216020c3d1f65d63fb27810a47f8a5214f
|
4
|
+
data.tar.gz: 49ffaebf52458fb9416619181df055791c534d95a8b27b32b9c81301ecff4c0f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 01e7574242de0b93c774c422994125184bbe740c1b358655b131c8354ff39b87e4563835bc07b82f73e4a61ddec3794f61e9ce4aaf26606f1edc172bd0a41a8c
|
7
|
+
data.tar.gz: b788c5c26b2cf71b635b299cbad40213148f038790a49885265c9f9e6bb754f77598f6823088beaddb523c3a367c450c5b7be51ac53d35a34de592ff65824a18
|
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",
|
@@ -38,44 +35,29 @@ module Wisp
|
|
38
35
|
"wait",
|
39
36
|
].freeze
|
40
37
|
|
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
|
38
|
+
def wisp_schemer
|
39
|
+
JSONSchemer.schema(Pathname.new(Wisp::SCHEMA_PATH))
|
54
40
|
end
|
55
41
|
module_function :wisp_schemer
|
56
42
|
|
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
|
43
|
+
def nouns_schemer
|
44
|
+
JSONSchemer.schema(Pathname.new(Wisp::NOUNS_PATH))
|
63
45
|
end
|
64
46
|
module_function :nouns_schemer
|
65
47
|
|
66
|
-
def action_schemer(
|
48
|
+
def action_schemer(action)
|
67
49
|
raise NotSupportedAction unless ACTIONS.include?(action)
|
68
50
|
|
69
51
|
JSONSchemer.schema(Pathname.new(File.expand_path("../stable/actions/#{action}.json", __dir__)))
|
70
52
|
end
|
71
53
|
module_function :action_schemer
|
72
54
|
|
73
|
-
def verbs_schemer
|
55
|
+
def verbs_schemer
|
74
56
|
JSONSchemer.schema(Pathname.new(File.expand_path("../stable/verbs.json", __dir__)))
|
75
57
|
end
|
76
58
|
module_function :verbs_schemer
|
77
59
|
|
78
|
-
def embedded_test_schemer
|
60
|
+
def embedded_test_schemer
|
79
61
|
JSONSchemer.schema(Pathname.new(File.expand_path("../stable/embeddings/embedded_test.json", __dir__)))
|
80
62
|
end
|
81
63
|
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",
|
data/stable/actions/observe.json
CHANGED
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",
|
@@ -632,7 +636,7 @@
|
|
632
636
|
"seconds": {
|
633
637
|
"title": "seconds",
|
634
638
|
"type": "integer",
|
635
|
-
"minimum":
|
639
|
+
"minimum": 10,
|
636
640
|
"maximum": 3600
|
637
641
|
},
|
638
642
|
"visibility": {
|
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.17.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
|
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": 30,
|
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
|
-
}
|