wisp-schema 1.16.1 → 1.17.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f20a9da1d89b096a6b7bd35bc81d9b2392051f59e138c24cca4c3b476a57ec33
4
- data.tar.gz: fb16a805ae9903973d49dfcdc5efa7dc87bf2f2d058044d38fabe6f7889c15da
3
+ metadata.gz: c7ef6b2bae7200a7aa9056e77c17e1216020c3d1f65d63fb27810a47f8a5214f
4
+ data.tar.gz: 49ffaebf52458fb9416619181df055791c534d95a8b27b32b9c81301ecff4c0f
5
5
  SHA512:
6
- metadata.gz: b0eec465fa45294b579de618777d81ec08d5638650dae27a4336a5c29368c6eb1abfdb168a97f4c36b7b5632a274acc8e1f72df5b69c6966de9d6d7052df6133
7
- data.tar.gz: 83acfd386f62ae67f30c59aa266fc30df16e861ad1b77bd0f5ba064606076b3c9af80462ef2979a126af1598cbf2a9a4a1b912e11ffdaa9c7c3f8af46bbe838b
6
+ metadata.gz: 01e7574242de0b93c774c422994125184bbe740c1b358655b131c8354ff39b87e4563835bc07b82f73e4a61ddec3794f61e9ce4aaf26606f1edc172bd0a41a8c
7
+ data.tar.gz: b788c5c26b2cf71b635b299cbad40213148f038790a49885265c9f9e6bb754f77598f6823088beaddb523c3a367c450c5b7be51ac53d35a34de592ff65824a18
data/lib/version.rb CHANGED
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Wisp
4
- VERSION = "1.16.1"
5
- STABLE_VERSION = "1.16.1"
6
- CANARY_VERSION = "2.0.0"
4
+ VERSION = "1.17.0"
5
+ STABLE_VERSION = "1.17.0"
7
6
  end
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 depending on whether or not the given wisp version is stable or a canary
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
- SEMANTIC_STABLE_VERSION = Semantic::Version.new(STABLE_VERSION)
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(raw_version)
58
- if is_canary?(raw_version)
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(_raw_version, action)
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(_raw_version)
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(_raw_version)
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
- "enum": ["pixel", "pixel_and_ocr", "semantic", "strict", "ai_search", "dom_selector"]
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",
@@ -21,7 +21,7 @@
21
21
  "seconds": {
22
22
  "title": "seconds",
23
23
  "type": "integer",
24
- "minimum": 30,
24
+ "minimum": 10,
25
25
  "maximum": 3600
26
26
  },
27
27
  "visibility": {
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
- "enum": ["pixel", "pixel_and_ocr", "semantic", "strict", "ai_search", "dom_selector"]
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": 30,
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.16.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
- }