wisp-schema 1.13.1 → 1.15.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: 977a7b37e134eb9bc09bab4ad2cc79b3c38ac9481a015b3e8fe871916974861f
4
- data.tar.gz: 30fcb095f2fea749a10d5dc5a6836bb740e14b2c9514e5d7adc76d8a79430fef
3
+ metadata.gz: 194d0f471fb9ec7fb6287734d98822176ac2c798a45d6bafb3143a61b2e87bc1
4
+ data.tar.gz: 12c361687b33d1c22638819d777221ab39bdefe081f1acf62e7563a045f3f42a
5
5
  SHA512:
6
- metadata.gz: a99764064fa8936f907cd5d5defbdb04c71596e750877e100af5d904eb602dac8b90f3e5ecea51328ffdcd50b2d68f01384acb73d795279877da7b3e8e18661b
7
- data.tar.gz: 374c50d5d73d9571e284dfe6c8a21a3fbc6a8ea15f8f1264bcdd81604f21c63be0b3e5694759939cc541021a24d8f62a82d79951172351f6eb74b94052a6a145
6
+ metadata.gz: fb5dd9fdf8d0bf0b2545236c171697012ed65c810d7911e2932f9567958d64e21040b1222a96e79653ec540b6eb41e82cf26f21525ff3ad7139e93dfc77b00fb
7
+ data.tar.gz: d906c41b460d1c9891f57f356e23b130177d66c6ec9935b816197050c3d7f7362963afd4c7c77e8ddad34d9815948e41571efcc68e6a4ac3ee3fa41ab3184a26
data/canary-wisp.json CHANGED
@@ -112,6 +112,7 @@
112
112
  {"$ref": "#/definitions/ai_confirmation"},
113
113
  {"$ref": "#/definitions/click"},
114
114
  {"$ref": "#/definitions/comment"},
115
+ {"$ref": "#/definitions/conditional_observe"},
115
116
  {"$ref": "#/definitions/double_click"},
116
117
  {"$ref": "#/definitions/fill"},
117
118
  {"$ref": "#/definitions/type"},
@@ -140,6 +141,10 @@
140
141
  "enum": ["ai_confirmation"]
141
142
  },
142
143
  "id": {"title": "Action ID", "type": "integer"},
144
+ "job_step_id": {
145
+ "title": "The id of the action's related job step",
146
+ "type": "integer"
147
+ },
143
148
  "embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
144
149
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
145
150
  "question": {"title": "Question for the AI", "type": "string"},
@@ -162,6 +167,10 @@
162
167
  },
163
168
  "embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
164
169
  "id": {"title": "Action ID", "type": "integer"},
170
+ "job_step_id": {
171
+ "title": "The id of the action's related job step",
172
+ "type": "integer"
173
+ },
165
174
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
166
175
  "target": {
167
176
  "title": "Target",
@@ -187,11 +196,84 @@
187
196
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
188
197
  "embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
189
198
  "id": {"title": "Action ID", "type": "integer"},
199
+ "job_step_id": {
200
+ "title": "The id of the action's related job step",
201
+ "type": "integer"
202
+ },
190
203
  "text": {"title": "Text", "type": "string"}
191
204
  },
192
205
  "additionalProperties": false,
193
206
  "required": ["action", "text"]
194
207
  },
208
+ "conditional_block": {
209
+ "type": "object",
210
+ "title": "Conditional Block",
211
+ "description": "Structure for a conditional block",
212
+ "properties": {
213
+ "id": {"title": "Conditional Block ID", "type": "integer"},
214
+ "verbs": {
215
+ "type": "array",
216
+ "title": "Verbs",
217
+ "items": {
218
+ "$ref": "#/definitions/verb"
219
+ }
220
+ }
221
+ },
222
+ "additionalProperties": false,
223
+ "required": ["verbs"]
224
+ },
225
+ "conditional_observe": {
226
+ "type": "object",
227
+ "action_type": "assertion",
228
+ "title": "Conditional Observe",
229
+ "description": "Checks if element of the UI is visible or not to decide if the test should execute conditional block or not.",
230
+ "properties": {
231
+ "action": {
232
+ "enum": ["conditional_observe"]
233
+ },
234
+ "embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
235
+ "id": {"title": "Action ID", "type": "integer"},
236
+ "job_step_id": {
237
+ "title": "The id of the action's related job step",
238
+ "type": "integer"
239
+ },
240
+ "delay_after": {"title": "Delay after in seconds", "type": "integer"},
241
+ "object": {
242
+ "title": "Object",
243
+ "$ref": "#/definitions/noun"
244
+ },
245
+ "seconds": {
246
+ "title": "seconds",
247
+ "type": "integer",
248
+ "minimum": 10,
249
+ "maximum": 3600
250
+ },
251
+ "visibility": {
252
+ "title": "Is the element visible?",
253
+ "type": "boolean",
254
+ "enum": [true, false]
255
+ },
256
+ "conditional_blocks": {
257
+ "title": "Conditional Blocks",
258
+ "type": "object",
259
+ "description": "Structure for conditional blocks",
260
+ "properties": {
261
+ "conditional_passed": {
262
+ "title": "Conditional Passed",
263
+ "$ref": "#/definitions/conditional_block"
264
+ },
265
+ "conditional_failed": {
266
+ "title": "Conditional Failed",
267
+ "$ref": "#/definitions/conditional_block"
268
+ }
269
+ },
270
+ "additionalProperties": false,
271
+ "required": ["conditional_passed"]
272
+ }
273
+ },
274
+ "additionalProperties": false,
275
+ "required": ["action", "object", "visibility", "version", "conditional_blocks"]
276
+ },
195
277
  "double_click": {
196
278
  "type": "object",
197
279
  "action_type": "action",
@@ -203,6 +285,10 @@
203
285
  },
204
286
  "embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
205
287
  "id": {"title": "Action ID", "type": "integer"},
288
+ "job_step_id": {
289
+ "title": "The id of the action's related job step",
290
+ "type": "integer"
291
+ },
206
292
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
207
293
  "target": {
208
294
  "title": "Target",
@@ -224,6 +310,10 @@
224
310
  },
225
311
  "embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
226
312
  "id": {"title": "Action ID", "type": "integer"},
313
+ "job_step_id": {
314
+ "title": "The id of the action's related job step",
315
+ "type": "integer"
316
+ },
227
317
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
228
318
  "target": {
229
319
  "title": "Target",
@@ -246,6 +336,10 @@
246
336
  },
247
337
  "embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
248
338
  "id": {"title": "Action ID", "type": "integer"},
339
+ "job_step_id": {
340
+ "title": "The id of the action's related job step",
341
+ "type": "integer"
342
+ },
249
343
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
250
344
  "text": {"title": "Text", "type": "string"}
251
345
  },
@@ -263,6 +357,10 @@
263
357
  },
264
358
  "embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
265
359
  "id": {"title": "Action ID", "type": "integer"},
360
+ "job_step_id": {
361
+ "title": "The id of the action's related job step",
362
+ "type": "integer"
363
+ },
266
364
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
267
365
  "key": {"title": "Key", "type": "string"},
268
366
  "modifier": {"title": "Modifier", "type": "string"}
@@ -281,6 +379,10 @@
281
379
  },
282
380
  "embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
283
381
  "id": {"title": "Action ID", "type": "integer"},
382
+ "job_step_id": {
383
+ "title": "The id of the action's related job step",
384
+ "type": "integer"
385
+ },
284
386
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
285
387
  "target": {
286
388
  "title": "Target",
@@ -302,6 +404,10 @@
302
404
  },
303
405
  "embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
304
406
  "id": {"title": "Action ID", "type": "integer"},
407
+ "job_step_id": {
408
+ "title": "The id of the action's related job step",
409
+ "type": "integer"
410
+ },
305
411
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
306
412
  "target": {
307
413
  "title": "Target",
@@ -327,6 +433,10 @@
327
433
  },
328
434
  "embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
329
435
  "id": {"title": "Action ID", "type": "integer"},
436
+ "job_step_id": {
437
+ "title": "The id of the action's related job step",
438
+ "type": "integer"
439
+ },
330
440
  "delay_after": {"title": "Delay after in seconds", "type": "integer"}
331
441
  },
332
442
  "additionalProperties": false,
@@ -343,6 +453,10 @@
343
453
  },
344
454
  "embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
345
455
  "id": {"title": "Action ID", "type": "integer"},
456
+ "job_step_id": {
457
+ "title": "The id of the action's related job step",
458
+ "type": "integer"
459
+ },
346
460
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
347
461
  "url": {"title": "URL", "type": "string"},
348
462
  "tab": {"title": "Tab", "type": "string", "enum": ["current", "new", "incognito"]}
@@ -361,6 +475,10 @@
361
475
  },
362
476
  "embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
363
477
  "id": {"title": "Action ID", "type": "integer"},
478
+ "job_step_id": {
479
+ "title": "The id of the action's related job step",
480
+ "type": "integer"
481
+ },
364
482
  "delay_after": {"title": "Delay after in seconds", "type": "integer"}
365
483
  },
366
484
  "additionalProperties": false,
@@ -377,6 +495,10 @@
377
495
  },
378
496
  "embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
379
497
  "id": {"title": "Action ID", "type": "integer"},
498
+ "job_step_id": {
499
+ "title": "The id of the action's related job step",
500
+ "type": "integer"
501
+ },
380
502
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
381
503
  "direction": {"title": "Direction", "type": "string", "enum": ["up", "down", "left", "right"]},
382
504
  "target": {
@@ -399,6 +521,10 @@
399
521
  },
400
522
  "embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
401
523
  "id": {"title": "Action ID", "type": "integer"},
524
+ "job_step_id": {
525
+ "title": "The id of the action's related job step",
526
+ "type": "integer"
527
+ },
402
528
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
403
529
  "seconds": {
404
530
  "title": "seconds",
@@ -421,6 +547,10 @@
421
547
  },
422
548
  "embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
423
549
  "id": {"title": "Action ID", "type": "integer"},
550
+ "job_step_id": {
551
+ "title": "The id of the action's related job step",
552
+ "type": "integer"
553
+ },
424
554
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
425
555
  "object": {
426
556
  "title": "Object",
@@ -467,6 +597,10 @@
467
597
  },
468
598
  "embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
469
599
  "id": {"title": "Action ID", "type": "integer"},
600
+ "job_step_id": {
601
+ "title": "The id of the action's related job step",
602
+ "type": "integer"
603
+ },
470
604
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
471
605
  "instruction": {"title": "Instruction", "type": "string"}
472
606
  },
@@ -484,6 +618,10 @@
484
618
  },
485
619
  "embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
486
620
  "id": {"title": "Action ID", "type": "integer"},
621
+ "job_step_id": {
622
+ "title": "The id of the action's related job step",
623
+ "type": "integer"
624
+ },
487
625
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
488
626
  "object": {
489
627
  "title": "Object",
@@ -515,6 +653,10 @@
515
653
  },
516
654
  "embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
517
655
  "id": {"title": "Action ID", "type": "integer"},
656
+ "job_step_id": {
657
+ "title": "The id of the action's related job step",
658
+ "type": "integer"
659
+ },
518
660
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
519
661
  "confirmation": {"title": "confirmation", "type": "string"}
520
662
  },
data/lib/version.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Wisp
4
- VERSION = "1.13.1"
5
- STABLE_VERSION = "1.13.1"
4
+ VERSION = "1.15.0"
5
+ STABLE_VERSION = "1.15.0"
6
6
  CANARY_VERSION = "2.0.0"
7
7
  end
data/lib/wisp-schema.rb CHANGED
@@ -1,23 +1,27 @@
1
1
  # frozen_string_literal: true
2
- require 'json_schemer'
3
- require 'semantic'
4
- require_relative 'version'
5
2
 
3
+ require "json_schemer"
4
+ require "semantic"
5
+ require_relative "version"
6
+
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
6
9
  module Wisp
7
10
  class NotSupportedAction < StandardError
8
11
  end
9
12
 
10
- SCHEMA_PATH = File.expand_path('../wisp.json', __dir__)
11
- NOUNS_PATH = File.expand_path('../nouns.json', __dir__)
13
+ SCHEMA_PATH = File.expand_path("../wisp.json", __dir__)
14
+ NOUNS_PATH = File.expand_path("../nouns.json", __dir__)
12
15
 
13
- CANARY_SCHEMA_PATH = File.expand_path('../canary-wisp.json', __dir__)
14
- CANARY_NOUNS_PATH = File.expand_path('../canary-nouns.json', __dir__)
16
+ CANARY_SCHEMA_PATH = File.expand_path("../canary-wisp.json", __dir__)
17
+ CANARY_NOUNS_PATH = File.expand_path("../canary-nouns.json", __dir__)
15
18
 
16
19
  ACTIONS = [
17
20
  "ai_confirmation",
18
21
  "click",
19
22
  "close_tab",
20
23
  "comment",
24
+ "conditional_observe",
21
25
  "double_click",
22
26
  "drag_and_drop",
23
27
  "fill",
@@ -65,4 +69,14 @@ module Wisp
65
69
  JSONSchemer.schema(Pathname.new(File.expand_path("../stable/actions/#{action}.json", __dir__)))
66
70
  end
67
71
  module_function :action_schemer
72
+
73
+ def verbs_schemer(_raw_version)
74
+ JSONSchemer.schema(Pathname.new(File.expand_path("../stable/verbs.json", __dir__)))
75
+ end
76
+ module_function :verbs_schemer
77
+
78
+ def embedded_test_schemer(_raw_version)
79
+ JSONSchemer.schema(Pathname.new(File.expand_path("../stable/embeddings/embedded_test.json", __dir__)))
80
+ end
81
+ module_function :embedded_test_schemer
68
82
  end
@@ -9,6 +9,10 @@
9
9
  "enum": ["ai_confirmation"]
10
10
  },
11
11
  "id": {"title": "Action ID", "type": "integer"},
12
+ "job_step_id": {
13
+ "title": "The id of the action's related job step",
14
+ "type": "integer"
15
+ },
12
16
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
13
17
  "question": {"title": "Question for the AI", "type": "string"},
14
18
  "version": {
@@ -9,6 +9,10 @@
9
9
  "enum": ["click"]
10
10
  },
11
11
  "id": {"title": "Action ID", "type": "integer"},
12
+ "job_step_id": {
13
+ "title": "The id of the action's related job step",
14
+ "type": "integer"
15
+ },
12
16
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
13
17
  "target": {
14
18
  "title": "Target",
@@ -9,6 +9,10 @@
9
9
  "enum": ["close_tab"]
10
10
  },
11
11
  "id": {"title": "Action ID", "type": "integer"},
12
+ "job_step_id": {
13
+ "title": "The id of the action's related job step",
14
+ "type": "integer"
15
+ },
12
16
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
13
17
  "version": {
14
18
  "type": "string",
@@ -9,6 +9,10 @@
9
9
  "enum": ["comment"]
10
10
  },
11
11
  "id": {"title": "Action ID", "type": "integer"},
12
+ "job_step_id": {
13
+ "title": "The id of the action's related job step",
14
+ "type": "integer"
15
+ },
12
16
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
13
17
  "text": {"title": "Text", "type": "string"},
14
18
  "version": {
@@ -0,0 +1,56 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "type": "object",
4
+ "action_type": "assertion",
5
+ "title": "Conditional Observe",
6
+ "description": "Checks if element of the UI is visible or not to decide if the test should execute conditional block or not.",
7
+ "properties": {
8
+ "action": {
9
+ "enum": ["conditional_observe"]
10
+ },
11
+ "id": {"title": "Action ID", "type": "integer"},
12
+ "job_step_id": {
13
+ "title": "The id of the action's related job step",
14
+ "type": "integer"
15
+ },
16
+ "delay_after": {"title": "Delay after in seconds", "type": "integer"},
17
+ "object": {
18
+ "title": "Object",
19
+ "$ref": "ui_element_reference.json"
20
+ },
21
+ "seconds": {
22
+ "title": "seconds",
23
+ "type": "integer",
24
+ "minimum": 10,
25
+ "maximum": 3600
26
+ },
27
+ "visibility": {
28
+ "title": "Is the element visible?",
29
+ "type": "boolean",
30
+ "enum": [true, false]
31
+ },
32
+ "version": {
33
+ "type": "string",
34
+ "title": "Version"
35
+ },
36
+ "conditional_blocks": {
37
+ "title": "Conditional Blocks",
38
+ "type": "object",
39
+ "description": "Structure for conditional blocks",
40
+ "properties": {
41
+ "conditional_passed": {
42
+ "title": "Conditional Passed",
43
+ "$ref": "../blocks/conditional_block.json"
44
+ },
45
+ "conditional_failed": {
46
+ "title": "Conditional Failed",
47
+ "$ref": "../blocks/conditional_block.json"
48
+ }
49
+ },
50
+ "additionalProperties": false,
51
+ "required": ["conditional_passed"]
52
+ }
53
+ },
54
+ "additionalProperties": false,
55
+ "required": ["action", "object", "visibility", "version", "conditional_blocks"]
56
+ }
@@ -9,6 +9,10 @@
9
9
  "enum": ["double_click"]
10
10
  },
11
11
  "id": {"title": "Action ID", "type": "integer"},
12
+ "job_step_id": {
13
+ "title": "The id of the action's related job step",
14
+ "type": "integer"
15
+ },
12
16
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
13
17
  "target": {
14
18
  "title": "Target",
@@ -9,6 +9,10 @@
9
9
  "enum": ["drag_and_drop"]
10
10
  },
11
11
  "id": {"title": "Action ID", "type": "integer"},
12
+ "job_step_id": {
13
+ "title": "The id of the action's related job step",
14
+ "type": "integer"
15
+ },
12
16
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
13
17
  "object": {
14
18
  "title": "Object",
@@ -9,6 +9,10 @@
9
9
  "enum": ["fill"]
10
10
  },
11
11
  "id": {"title": "Action ID", "type": "integer"},
12
+ "job_step_id": {
13
+ "title": "The id of the action's related job step",
14
+ "type": "integer"
15
+ },
12
16
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
13
17
  "target": {
14
18
  "title": "Target",
@@ -9,6 +9,10 @@
9
9
  "enum": ["hover"]
10
10
  },
11
11
  "id": {"title": "Action ID", "type": "integer"},
12
+ "job_step_id": {
13
+ "title": "The id of the action's related job step",
14
+ "type": "integer"
15
+ },
12
16
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
13
17
  "target": {
14
18
  "title": "Target",
@@ -9,6 +9,10 @@
9
9
  "enum": ["navigate"]
10
10
  },
11
11
  "id": {"title": "Action ID", "type": "integer"},
12
+ "job_step_id": {
13
+ "title": "The id of the action's related job step",
14
+ "type": "integer"
15
+ },
12
16
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
13
17
  "url": {"title": "URL", "type": "string"},
14
18
  "tab": {"title": "Tab", "type": "string", "enum": ["current", "new", "incognito"]},
@@ -9,6 +9,10 @@
9
9
  "enum": ["observe"]
10
10
  },
11
11
  "id": {"title": "Action ID", "type": "integer"},
12
+ "job_step_id": {
13
+ "title": "The id of the action's related job step",
14
+ "type": "integer"
15
+ },
12
16
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
13
17
  "object": {
14
18
  "title": "Object",
@@ -9,6 +9,10 @@
9
9
  "enum": ["refresh"]
10
10
  },
11
11
  "id": {"title": "Action ID", "type": "integer"},
12
+ "job_step_id": {
13
+ "title": "The id of the action's related job step",
14
+ "type": "integer"
15
+ },
12
16
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
13
17
  "version": {
14
18
  "type": "string",
@@ -9,6 +9,10 @@
9
9
  "enum": ["scroll"]
10
10
  },
11
11
  "id": {"title": "Action ID", "type": "integer"},
12
+ "job_step_id": {
13
+ "title": "The id of the action's related job step",
14
+ "type": "integer"
15
+ },
12
16
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
13
17
  "direction": {"title": "Direction", "type": "string", "enum": ["up", "down", "left", "right"]},
14
18
  "target": {
@@ -9,6 +9,10 @@
9
9
  "enum": ["select"]
10
10
  },
11
11
  "id": {"title": "Action ID", "type": "integer"},
12
+ "job_step_id": {
13
+ "title": "The id of the action's related job step",
14
+ "type": "integer"
15
+ },
12
16
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
13
17
  "target": {
14
18
  "title": "Target",
@@ -9,6 +9,10 @@
9
9
  "enum": ["send_key"]
10
10
  },
11
11
  "id": {"title": "Action ID", "type": "integer"},
12
+ "job_step_id": {
13
+ "title": "The id of the action's related job step",
14
+ "type": "integer"
15
+ },
12
16
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
13
17
  "key": {"title": "Key", "type": "string"},
14
18
  "modifier": {"title": "Modifier", "type": "string"},
@@ -9,6 +9,10 @@
9
9
  "enum": ["tester_confirmation"]
10
10
  },
11
11
  "id": {"title": "Action ID", "type": "integer"},
12
+ "job_step_id": {
13
+ "title": "The id of the action's related job step",
14
+ "type": "integer"
15
+ },
12
16
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
13
17
  "confirmation": {"title": "confirmation", "type": "string"},
14
18
  "version": {
@@ -9,6 +9,10 @@
9
9
  "enum": ["tester_instruction"]
10
10
  },
11
11
  "id": {"title": "Action ID", "type": "integer"},
12
+ "job_step_id": {
13
+ "title": "The id of the action's related job step",
14
+ "type": "integer"
15
+ },
12
16
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
13
17
  "instruction": {"title": "Instruction", "type": "string"},
14
18
  "version": {
@@ -9,6 +9,10 @@
9
9
  "enum": ["type"]
10
10
  },
11
11
  "id": {"title": "Action ID", "type": "integer"},
12
+ "job_step_id": {
13
+ "title": "The id of the action's related job step",
14
+ "type": "integer"
15
+ },
12
16
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
13
17
  "text": {"title": "Text", "type": "string"},
14
18
  "version": {
@@ -9,6 +9,10 @@
9
9
  "enum": ["wait"]
10
10
  },
11
11
  "id": {"title": "Action ID", "type": "integer"},
12
+ "job_step_id": {
13
+ "title": "The id of the action's related job step",
14
+ "type": "integer"
15
+ },
12
16
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
13
17
  "embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
14
18
  "seconds": {
@@ -0,0 +1,15 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "type": "object",
4
+ "title": "Conditional Block",
5
+ "description": "Structure for a conditional block",
6
+ "properties": {
7
+ "id": {"title": "Conditional Block ID", "type": "integer"},
8
+ "verbs": {
9
+ "title": "Verbs",
10
+ "$ref": "../verbs.json"
11
+ }
12
+ },
13
+ "additionalProperties": false,
14
+ "required": ["verbs"]
15
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "type": "object",
4
+ "action_type": "embedded_test",
5
+ "title": "Embedded Test",
6
+ "description": "Embeds a Test",
7
+ "properties": {
8
+ "action": {
9
+ "enum": ["embedded_test"]
10
+ },
11
+ "test_id": {
12
+ "title": "Test ID",
13
+ "type": "integer"
14
+ },
15
+ "id": {
16
+ "title": "Action ID",
17
+ "type": "integer"
18
+ },
19
+ "version": {
20
+ "type": "string",
21
+ "title": "Version"
22
+ }
23
+ },
24
+ "additionalProperties": false,
25
+ "required": ["action", "test_id"]
26
+ }
data/stable/verbs.json ADDED
@@ -0,0 +1,30 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "type": "array",
4
+ "title": "Verbs",
5
+ "items": {
6
+ "title": "Wisp Verb",
7
+ "oneOf": [
8
+ {"$ref": "actions/ai_confirmation.json"},
9
+ {"$ref": "actions/click.json"},
10
+ {"$ref": "actions/comment.json"},
11
+ {"$ref": "actions/conditional_observe.json"},
12
+ {"$ref": "actions/double_click.json"},
13
+ {"$ref": "actions/fill.json"},
14
+ {"$ref": "actions/type.json"},
15
+ {"$ref": "actions/send_key.json"},
16
+ {"$ref": "actions/hover.json"},
17
+ {"$ref": "actions/select.json"},
18
+ {"$ref": "actions/refresh.json"},
19
+ {"$ref": "actions/navigate.json"},
20
+ {"$ref": "actions/close_tab.json"},
21
+ {"$ref": "actions/scroll.json"},
22
+ {"$ref": "actions/wait.json"},
23
+ {"$ref": "actions/drag_and_drop.json"},
24
+ {"$ref": "actions/tester_instruction.json"},
25
+ {"$ref": "actions/observe.json"},
26
+ {"$ref": "actions/tester_confirmation.json"},
27
+ {"$ref": "embeddings/embedded_test.json"}
28
+ ]
29
+ }
30
+ }
data/wisp.json CHANGED
@@ -112,6 +112,7 @@
112
112
  {"$ref": "#/definitions/ai_confirmation"},
113
113
  {"$ref": "#/definitions/click"},
114
114
  {"$ref": "#/definitions/comment"},
115
+ {"$ref": "#/definitions/conditional_observe"},
115
116
  {"$ref": "#/definitions/double_click"},
116
117
  {"$ref": "#/definitions/fill"},
117
118
  {"$ref": "#/definitions/type"},
@@ -140,6 +141,10 @@
140
141
  "enum": ["ai_confirmation"]
141
142
  },
142
143
  "id": {"title": "Action ID", "type": "integer"},
144
+ "job_step_id": {
145
+ "title": "The id of the action's related job step",
146
+ "type": "integer"
147
+ },
143
148
  "embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
144
149
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
145
150
  "question": {"title": "Question for the AI", "type": "string"},
@@ -162,6 +167,10 @@
162
167
  },
163
168
  "embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
164
169
  "id": {"title": "Action ID", "type": "integer"},
170
+ "job_step_id": {
171
+ "title": "The id of the action's related job step",
172
+ "type": "integer"
173
+ },
165
174
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
166
175
  "target": {
167
176
  "title": "Target",
@@ -187,11 +196,84 @@
187
196
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
188
197
  "embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
189
198
  "id": {"title": "Action ID", "type": "integer"},
199
+ "job_step_id": {
200
+ "title": "The id of the action's related job step",
201
+ "type": "integer"
202
+ },
190
203
  "text": {"title": "Text", "type": "string"}
191
204
  },
192
205
  "additionalProperties": false,
193
206
  "required": ["action", "text"]
194
207
  },
208
+ "conditional_block": {
209
+ "type": "object",
210
+ "title": "Conditional Block",
211
+ "description": "Structure for a conditional block",
212
+ "properties": {
213
+ "id": {"title": "Conditional Block ID", "type": "integer"},
214
+ "verbs": {
215
+ "type": "array",
216
+ "title": "Verbs",
217
+ "items": {
218
+ "$ref": "#/definitions/verb"
219
+ }
220
+ }
221
+ },
222
+ "additionalProperties": false,
223
+ "required": ["verbs"]
224
+ },
225
+ "conditional_observe": {
226
+ "type": "object",
227
+ "action_type": "assertion",
228
+ "title": "Conditional Observe",
229
+ "description": "Checks if element of the UI is visible or not to decide if the test should execute conditional block or not.",
230
+ "properties": {
231
+ "action": {
232
+ "enum": ["conditional_observe"]
233
+ },
234
+ "embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
235
+ "id": {"title": "Action ID", "type": "integer"},
236
+ "job_step_id": {
237
+ "title": "The id of the action's related job step",
238
+ "type": "integer"
239
+ },
240
+ "delay_after": {"title": "Delay after in seconds", "type": "integer"},
241
+ "object": {
242
+ "title": "Object",
243
+ "$ref": "#/definitions/noun"
244
+ },
245
+ "seconds": {
246
+ "title": "seconds",
247
+ "type": "integer",
248
+ "minimum": 10,
249
+ "maximum": 3600
250
+ },
251
+ "visibility": {
252
+ "title": "Is the element visible?",
253
+ "type": "boolean",
254
+ "enum": [true, false]
255
+ },
256
+ "conditional_blocks": {
257
+ "title": "Conditional Blocks",
258
+ "type": "object",
259
+ "description": "Structure for conditional blocks",
260
+ "properties": {
261
+ "conditional_passed": {
262
+ "title": "Conditional Passed",
263
+ "$ref": "#/definitions/conditional_block"
264
+ },
265
+ "conditional_failed": {
266
+ "title": "Conditional Failed",
267
+ "$ref": "#/definitions/conditional_block"
268
+ }
269
+ },
270
+ "additionalProperties": false,
271
+ "required": ["conditional_passed"]
272
+ }
273
+ },
274
+ "additionalProperties": false,
275
+ "required": ["action", "object", "visibility", "version", "conditional_blocks"]
276
+ },
195
277
  "double_click": {
196
278
  "type": "object",
197
279
  "action_type": "action",
@@ -203,6 +285,10 @@
203
285
  },
204
286
  "embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
205
287
  "id": {"title": "Action ID", "type": "integer"},
288
+ "job_step_id": {
289
+ "title": "The id of the action's related job step",
290
+ "type": "integer"
291
+ },
206
292
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
207
293
  "target": {
208
294
  "title": "Target",
@@ -224,6 +310,10 @@
224
310
  },
225
311
  "embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
226
312
  "id": {"title": "Action ID", "type": "integer"},
313
+ "job_step_id": {
314
+ "title": "The id of the action's related job step",
315
+ "type": "integer"
316
+ },
227
317
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
228
318
  "target": {
229
319
  "title": "Target",
@@ -246,6 +336,10 @@
246
336
  },
247
337
  "embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
248
338
  "id": {"title": "Action ID", "type": "integer"},
339
+ "job_step_id": {
340
+ "title": "The id of the action's related job step",
341
+ "type": "integer"
342
+ },
249
343
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
250
344
  "text": {"title": "Text", "type": "string"}
251
345
  },
@@ -263,6 +357,10 @@
263
357
  },
264
358
  "embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
265
359
  "id": {"title": "Action ID", "type": "integer"},
360
+ "job_step_id": {
361
+ "title": "The id of the action's related job step",
362
+ "type": "integer"
363
+ },
266
364
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
267
365
  "key": {"title": "Key", "type": "string"},
268
366
  "modifier": {"title": "Modifier", "type": "string"}
@@ -281,6 +379,10 @@
281
379
  },
282
380
  "embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
283
381
  "id": {"title": "Action ID", "type": "integer"},
382
+ "job_step_id": {
383
+ "title": "The id of the action's related job step",
384
+ "type": "integer"
385
+ },
284
386
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
285
387
  "target": {
286
388
  "title": "Target",
@@ -302,6 +404,10 @@
302
404
  },
303
405
  "embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
304
406
  "id": {"title": "Action ID", "type": "integer"},
407
+ "job_step_id": {
408
+ "title": "The id of the action's related job step",
409
+ "type": "integer"
410
+ },
305
411
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
306
412
  "target": {
307
413
  "title": "Target",
@@ -327,6 +433,10 @@
327
433
  },
328
434
  "embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
329
435
  "id": {"title": "Action ID", "type": "integer"},
436
+ "job_step_id": {
437
+ "title": "The id of the action's related job step",
438
+ "type": "integer"
439
+ },
330
440
  "delay_after": {"title": "Delay after in seconds", "type": "integer"}
331
441
  },
332
442
  "additionalProperties": false,
@@ -343,6 +453,10 @@
343
453
  },
344
454
  "embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
345
455
  "id": {"title": "Action ID", "type": "integer"},
456
+ "job_step_id": {
457
+ "title": "The id of the action's related job step",
458
+ "type": "integer"
459
+ },
346
460
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
347
461
  "url": {"title": "URL", "type": "string"},
348
462
  "tab": {"title": "Tab", "type": "string", "enum": ["current", "new", "incognito"]}
@@ -361,6 +475,10 @@
361
475
  },
362
476
  "embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
363
477
  "id": {"title": "Action ID", "type": "integer"},
478
+ "job_step_id": {
479
+ "title": "The id of the action's related job step",
480
+ "type": "integer"
481
+ },
364
482
  "delay_after": {"title": "Delay after in seconds", "type": "integer"}
365
483
  },
366
484
  "additionalProperties": false,
@@ -377,6 +495,10 @@
377
495
  },
378
496
  "embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
379
497
  "id": {"title": "Action ID", "type": "integer"},
498
+ "job_step_id": {
499
+ "title": "The id of the action's related job step",
500
+ "type": "integer"
501
+ },
380
502
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
381
503
  "direction": {"title": "Direction", "type": "string", "enum": ["up", "down", "left", "right"]},
382
504
  "target": {
@@ -399,6 +521,10 @@
399
521
  },
400
522
  "embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
401
523
  "id": {"title": "Action ID", "type": "integer"},
524
+ "job_step_id": {
525
+ "title": "The id of the action's related job step",
526
+ "type": "integer"
527
+ },
402
528
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
403
529
  "seconds": {
404
530
  "title": "seconds",
@@ -421,6 +547,10 @@
421
547
  },
422
548
  "embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
423
549
  "id": {"title": "Action ID", "type": "integer"},
550
+ "job_step_id": {
551
+ "title": "The id of the action's related job step",
552
+ "type": "integer"
553
+ },
424
554
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
425
555
  "object": {
426
556
  "title": "Object",
@@ -467,6 +597,10 @@
467
597
  },
468
598
  "embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
469
599
  "id": {"title": "Action ID", "type": "integer"},
600
+ "job_step_id": {
601
+ "title": "The id of the action's related job step",
602
+ "type": "integer"
603
+ },
470
604
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
471
605
  "instruction": {"title": "Instruction", "type": "string"}
472
606
  },
@@ -484,6 +618,10 @@
484
618
  },
485
619
  "embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
486
620
  "id": {"title": "Action ID", "type": "integer"},
621
+ "job_step_id": {
622
+ "title": "The id of the action's related job step",
623
+ "type": "integer"
624
+ },
487
625
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
488
626
  "object": {
489
627
  "title": "Object",
@@ -515,6 +653,10 @@
515
653
  },
516
654
  "embedded_test_id": {"title": "Embedded Test ID", "type": "integer"},
517
655
  "id": {"title": "Action ID", "type": "integer"},
656
+ "job_step_id": {
657
+ "title": "The id of the action's related job step",
658
+ "type": "integer"
659
+ },
518
660
  "delay_after": {"title": "Delay after in seconds", "type": "integer"},
519
661
  "confirmation": {"title": "confirmation", "type": "string"}
520
662
  },
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.13.1
4
+ version: 1.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Grodowski
@@ -54,6 +54,20 @@ dependencies:
54
54
  - - "~>"
55
55
  - !ruby/object:Gem::Version
56
56
  version: '3.12'
57
+ - !ruby/object:Gem::Dependency
58
+ name: rf-stylez
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: '1.0'
64
+ type: :development
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - "~>"
69
+ - !ruby/object:Gem::Version
70
+ version: '1.0'
57
71
  description: This gem contains Wisp's JSON schema definition
58
72
  email:
59
73
  executables: []
@@ -69,6 +83,7 @@ files:
69
83
  - stable/actions/click.json
70
84
  - stable/actions/close_tab.json
71
85
  - stable/actions/comment.json
86
+ - stable/actions/conditional_observe.json
72
87
  - stable/actions/double_click.json
73
88
  - stable/actions/drag_and_drop.json
74
89
  - stable/actions/fill.json
@@ -84,6 +99,9 @@ files:
84
99
  - stable/actions/type.json
85
100
  - stable/actions/ui_element_reference.json
86
101
  - stable/actions/wait.json
102
+ - stable/blocks/conditional_block.json
103
+ - stable/embeddings/embedded_test.json
104
+ - stable/verbs.json
87
105
  - wisp.json
88
106
  homepage: https://github.com/rainforestapp/wisp
89
107
  licenses: