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 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
- }