cucumber-messages 15.0.0 → 17.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,1911 @@
1
+ require 'cucumber/messages/message'
2
+
3
+ # The code was auto-generated by {this script}[https://github.com/cucumber/common/blob/main/messages/jsonschema/scripts/codegen.rb]
4
+ #
5
+
6
+ module Cucumber
7
+ module Messages
8
+
9
+
10
+ ##
11
+ # Represents the Attachment message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
12
+ #
13
+ # //// Attachments (parse errors, execution errors, screenshots, links...)
14
+ #
15
+ # *
16
+ # An attachment represents any kind of data associated with a line in a
17
+ # [Source](#io.cucumber.messages.Source) file. It can be used for:
18
+ #
19
+ # * Syntax errors during parse time
20
+ # * Screenshots captured and attached during execution
21
+ # * Logs captured and attached during execution
22
+ #
23
+ # It is not to be used for runtime errors raised/thrown during execution. This
24
+ # is captured in `TestResult`.
25
+ #
26
+
27
+ class Attachment < ::Cucumber::Messages::Message
28
+
29
+ ##
30
+ # *
31
+ # The body of the attachment. If `contentEncoding` is `IDENTITY`, the attachment
32
+ # is simply the string. If it's `BASE64`, the string should be Base64 decoded to
33
+ # obtain the attachment.
34
+
35
+ attr_reader :body
36
+
37
+ ##
38
+ # *
39
+ # Whether to interpret `body` "as-is" (IDENTITY) or if it needs to be Base64-decoded (BASE64).
40
+ #
41
+ # Content encoding is *not* determined by the media type, but rather by the type
42
+ # of the object being attached:
43
+ #
44
+ # - string => IDENTITY
45
+ # - byte array => BASE64
46
+ # - stream => BASE64
47
+
48
+ attr_reader :content_encoding
49
+
50
+ ##
51
+ # *
52
+ # Suggested file name of the attachment. (Provided by the user as an argument to `attach`)
53
+
54
+ attr_reader :file_name
55
+
56
+ ##
57
+ # *
58
+ # The media type of the data. This can be any valid
59
+ # [IANA Media Type](https://www.iana.org/assignments/media-types/media-types.xhtml)
60
+ # as well as Cucumber-specific media types such as `text/x.cucumber.gherkin+plain`
61
+ # and `text/x.cucumber.stacktrace+plain`
62
+
63
+ attr_reader :media_type
64
+
65
+ attr_reader :source
66
+
67
+ attr_reader :test_case_started_id
68
+
69
+ attr_reader :test_step_id
70
+
71
+ ##
72
+ # *
73
+ # A URL where the attachment can be retrieved. This field should not be set by Cucumber.
74
+ # It should be set by a program that reads a message stream and does the following for
75
+ # each Attachment message:
76
+ #
77
+ # - Writes the body (after base64 decoding if necessary) to a new file.
78
+ # - Sets `body` and `contentEncoding` to `null`
79
+ # - Writes out the new attachment message
80
+ #
81
+ # This will result in a smaller message stream, which can improve performance and
82
+ # reduce bandwidth of message consumers. It also makes it easier to process and download attachments
83
+ # separately from reports.
84
+
85
+ attr_reader :url
86
+
87
+ def initialize(
88
+ body: '',
89
+ content_encoding: AttachmentContentEncoding::IDENTITY,
90
+ file_name: nil,
91
+ media_type: '',
92
+ source: nil,
93
+ test_case_started_id: nil,
94
+ test_step_id: nil,
95
+ url: nil
96
+ )
97
+ @body = body
98
+ @content_encoding = content_encoding
99
+ @file_name = file_name
100
+ @media_type = media_type
101
+ @source = source
102
+ @test_case_started_id = test_case_started_id
103
+ @test_step_id = test_step_id
104
+ @url = url
105
+ end
106
+ end
107
+
108
+
109
+ ##
110
+ # Represents the Duration message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
111
+ #
112
+ # The structure is pretty close of the Timestamp one. For clarity, a second type
113
+ # of message is used.
114
+ #
115
+
116
+ class Duration < ::Cucumber::Messages::Message
117
+
118
+ attr_reader :seconds
119
+
120
+ ##
121
+ # Non-negative fractions of a second at nanosecond resolution. Negative
122
+ # second values with fractions must still have non-negative nanos values
123
+ # that count forward in time. Must be from 0 to 999,999,999
124
+ # inclusive.
125
+
126
+ attr_reader :nanos
127
+
128
+ def initialize(
129
+ seconds: 0,
130
+ nanos: 0
131
+ )
132
+ @seconds = seconds
133
+ @nanos = nanos
134
+ end
135
+ end
136
+
137
+
138
+ ##
139
+ # Represents the Envelope message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
140
+ #
141
+ # When removing a field, replace it with reserved, rather than deleting the line.
142
+ # When adding a field, add it to the end and increment the number by one.
143
+ # See https://developers.google.com/protocol-buffers/docs/proto#updating for details
144
+ #
145
+ # *
146
+ # All the messages that are passed between different components/processes are Envelope
147
+ # messages.
148
+ #
149
+
150
+ class Envelope < ::Cucumber::Messages::Message
151
+
152
+ attr_reader :attachment
153
+
154
+ attr_reader :gherkin_document
155
+
156
+ attr_reader :hook
157
+
158
+ attr_reader :meta
159
+
160
+ attr_reader :parameter_type
161
+
162
+ attr_reader :parse_error
163
+
164
+ attr_reader :pickle
165
+
166
+ attr_reader :source
167
+
168
+ attr_reader :step_definition
169
+
170
+ attr_reader :test_case
171
+
172
+ attr_reader :test_case_finished
173
+
174
+ attr_reader :test_case_started
175
+
176
+ attr_reader :test_run_finished
177
+
178
+ attr_reader :test_run_started
179
+
180
+ attr_reader :test_step_finished
181
+
182
+ attr_reader :test_step_started
183
+
184
+ attr_reader :undefined_parameter_type
185
+
186
+ def initialize(
187
+ attachment: nil,
188
+ gherkin_document: nil,
189
+ hook: nil,
190
+ meta: nil,
191
+ parameter_type: nil,
192
+ parse_error: nil,
193
+ pickle: nil,
194
+ source: nil,
195
+ step_definition: nil,
196
+ test_case: nil,
197
+ test_case_finished: nil,
198
+ test_case_started: nil,
199
+ test_run_finished: nil,
200
+ test_run_started: nil,
201
+ test_step_finished: nil,
202
+ test_step_started: nil,
203
+ undefined_parameter_type: nil
204
+ )
205
+ @attachment = attachment
206
+ @gherkin_document = gherkin_document
207
+ @hook = hook
208
+ @meta = meta
209
+ @parameter_type = parameter_type
210
+ @parse_error = parse_error
211
+ @pickle = pickle
212
+ @source = source
213
+ @step_definition = step_definition
214
+ @test_case = test_case
215
+ @test_case_finished = test_case_finished
216
+ @test_case_started = test_case_started
217
+ @test_run_finished = test_run_finished
218
+ @test_run_started = test_run_started
219
+ @test_step_finished = test_step_finished
220
+ @test_step_started = test_step_started
221
+ @undefined_parameter_type = undefined_parameter_type
222
+ end
223
+ end
224
+
225
+
226
+ ##
227
+ # Represents the GherkinDocument message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
228
+ #
229
+ # *
230
+ # The [AST](https://en.wikipedia.org/wiki/Abstract_syntax_tree) of a Gherkin document.
231
+ # Cucumber implementations should *not* depend on `GherkinDocument` or any of its
232
+ # children for execution - use [Pickle](#io.cucumber.messages.Pickle) instead.
233
+ #
234
+ # The only consumers of `GherkinDocument` should only be formatters that produce
235
+ # "rich" output, resembling the original Gherkin document.
236
+ #
237
+
238
+ class GherkinDocument < ::Cucumber::Messages::Message
239
+
240
+ ##
241
+ # *
242
+ # The [URI](https://en.wikipedia.org/wiki/Uniform_Resource_Identifier)
243
+ # of the source, typically a file path relative to the root directory
244
+
245
+ attr_reader :uri
246
+
247
+ attr_reader :feature
248
+
249
+ ##
250
+ # All the comments in the Gherkin document
251
+
252
+ attr_reader :comments
253
+
254
+ def initialize(
255
+ uri: nil,
256
+ feature: nil,
257
+ comments: []
258
+ )
259
+ @uri = uri
260
+ @feature = feature
261
+ @comments = comments
262
+ end
263
+ end
264
+
265
+
266
+ ##
267
+ # Represents the Background message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
268
+ #
269
+
270
+ #
271
+
272
+ class Background < ::Cucumber::Messages::Message
273
+
274
+ ##
275
+ # The location of the `Background` keyword
276
+
277
+ attr_reader :location
278
+
279
+ attr_reader :keyword
280
+
281
+ attr_reader :name
282
+
283
+ attr_reader :description
284
+
285
+ attr_reader :steps
286
+
287
+ attr_reader :id
288
+
289
+ def initialize(
290
+ location: Location.new,
291
+ keyword: '',
292
+ name: '',
293
+ description: '',
294
+ steps: [],
295
+ id: ''
296
+ )
297
+ @location = location
298
+ @keyword = keyword
299
+ @name = name
300
+ @description = description
301
+ @steps = steps
302
+ @id = id
303
+ end
304
+ end
305
+
306
+
307
+ ##
308
+ # Represents the Comment message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
309
+ #
310
+ # *
311
+ # A comment in a Gherkin document
312
+ #
313
+
314
+ class Comment < ::Cucumber::Messages::Message
315
+
316
+ ##
317
+ # The location of the comment
318
+
319
+ attr_reader :location
320
+
321
+ ##
322
+ # The text of the comment
323
+
324
+ attr_reader :text
325
+
326
+ def initialize(
327
+ location: Location.new,
328
+ text: ''
329
+ )
330
+ @location = location
331
+ @text = text
332
+ end
333
+ end
334
+
335
+
336
+ ##
337
+ # Represents the DataTable message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
338
+ #
339
+
340
+ #
341
+
342
+ class DataTable < ::Cucumber::Messages::Message
343
+
344
+ attr_reader :location
345
+
346
+ attr_reader :rows
347
+
348
+ def initialize(
349
+ location: Location.new,
350
+ rows: []
351
+ )
352
+ @location = location
353
+ @rows = rows
354
+ end
355
+ end
356
+
357
+
358
+ ##
359
+ # Represents the DocString message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
360
+ #
361
+
362
+ #
363
+
364
+ class DocString < ::Cucumber::Messages::Message
365
+
366
+ attr_reader :location
367
+
368
+ attr_reader :media_type
369
+
370
+ attr_reader :content
371
+
372
+ attr_reader :delimiter
373
+
374
+ def initialize(
375
+ location: Location.new,
376
+ media_type: nil,
377
+ content: '',
378
+ delimiter: ''
379
+ )
380
+ @location = location
381
+ @media_type = media_type
382
+ @content = content
383
+ @delimiter = delimiter
384
+ end
385
+ end
386
+
387
+
388
+ ##
389
+ # Represents the Examples message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
390
+ #
391
+
392
+ #
393
+
394
+ class Examples < ::Cucumber::Messages::Message
395
+
396
+ ##
397
+ # The location of the `Examples` keyword
398
+
399
+ attr_reader :location
400
+
401
+ attr_reader :tags
402
+
403
+ attr_reader :keyword
404
+
405
+ attr_reader :name
406
+
407
+ attr_reader :description
408
+
409
+ attr_reader :table_header
410
+
411
+ attr_reader :table_body
412
+
413
+ attr_reader :id
414
+
415
+ def initialize(
416
+ location: Location.new,
417
+ tags: [],
418
+ keyword: '',
419
+ name: '',
420
+ description: '',
421
+ table_header: nil,
422
+ table_body: [],
423
+ id: ''
424
+ )
425
+ @location = location
426
+ @tags = tags
427
+ @keyword = keyword
428
+ @name = name
429
+ @description = description
430
+ @table_header = table_header
431
+ @table_body = table_body
432
+ @id = id
433
+ end
434
+ end
435
+
436
+
437
+ ##
438
+ # Represents the Feature message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
439
+ #
440
+
441
+ #
442
+
443
+ class Feature < ::Cucumber::Messages::Message
444
+
445
+ ##
446
+ # The location of the `Feature` keyword
447
+
448
+ attr_reader :location
449
+
450
+ ##
451
+ # All the tags placed above the `Feature` keyword
452
+
453
+ attr_reader :tags
454
+
455
+ ##
456
+ # The [ISO 639-1](https://en.wikipedia.org/wiki/ISO_639-1) language code of the Gherkin document
457
+
458
+ attr_reader :language
459
+
460
+ ##
461
+ # The text of the `Feature` keyword (in the language specified by `language`)
462
+
463
+ attr_reader :keyword
464
+
465
+ ##
466
+ # The name of the feature (the text following the `keyword`)
467
+
468
+ attr_reader :name
469
+
470
+ ##
471
+ # The line(s) underneath the line with the `keyword` that are used as description
472
+
473
+ attr_reader :description
474
+
475
+ ##
476
+ # Zero or more children
477
+
478
+ attr_reader :children
479
+
480
+ def initialize(
481
+ location: Location.new,
482
+ tags: [],
483
+ language: '',
484
+ keyword: '',
485
+ name: '',
486
+ description: '',
487
+ children: []
488
+ )
489
+ @location = location
490
+ @tags = tags
491
+ @language = language
492
+ @keyword = keyword
493
+ @name = name
494
+ @description = description
495
+ @children = children
496
+ end
497
+ end
498
+
499
+
500
+ ##
501
+ # Represents the FeatureChild message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
502
+ #
503
+ # *
504
+ # A child node of a `Feature` node
505
+ #
506
+
507
+ class FeatureChild < ::Cucumber::Messages::Message
508
+
509
+ attr_reader :rule
510
+
511
+ attr_reader :background
512
+
513
+ attr_reader :scenario
514
+
515
+ def initialize(
516
+ rule: nil,
517
+ background: nil,
518
+ scenario: nil
519
+ )
520
+ @rule = rule
521
+ @background = background
522
+ @scenario = scenario
523
+ end
524
+ end
525
+
526
+
527
+ ##
528
+ # Represents the Rule message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
529
+ #
530
+
531
+ #
532
+
533
+ class Rule < ::Cucumber::Messages::Message
534
+
535
+ ##
536
+ # The location of the `Rule` keyword
537
+
538
+ attr_reader :location
539
+
540
+ ##
541
+ # All the tags placed above the `Rule` keyword
542
+
543
+ attr_reader :tags
544
+
545
+ attr_reader :keyword
546
+
547
+ attr_reader :name
548
+
549
+ attr_reader :description
550
+
551
+ attr_reader :children
552
+
553
+ attr_reader :id
554
+
555
+ def initialize(
556
+ location: Location.new,
557
+ tags: [],
558
+ keyword: '',
559
+ name: '',
560
+ description: '',
561
+ children: [],
562
+ id: ''
563
+ )
564
+ @location = location
565
+ @tags = tags
566
+ @keyword = keyword
567
+ @name = name
568
+ @description = description
569
+ @children = children
570
+ @id = id
571
+ end
572
+ end
573
+
574
+
575
+ ##
576
+ # Represents the RuleChild message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
577
+ #
578
+ # *
579
+ # A child node of a `Rule` node
580
+ #
581
+
582
+ class RuleChild < ::Cucumber::Messages::Message
583
+
584
+ attr_reader :background
585
+
586
+ attr_reader :scenario
587
+
588
+ def initialize(
589
+ background: nil,
590
+ scenario: nil
591
+ )
592
+ @background = background
593
+ @scenario = scenario
594
+ end
595
+ end
596
+
597
+
598
+ ##
599
+ # Represents the Scenario message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
600
+ #
601
+
602
+ #
603
+
604
+ class Scenario < ::Cucumber::Messages::Message
605
+
606
+ ##
607
+ # The location of the `Scenario` keyword
608
+
609
+ attr_reader :location
610
+
611
+ attr_reader :tags
612
+
613
+ attr_reader :keyword
614
+
615
+ attr_reader :name
616
+
617
+ attr_reader :description
618
+
619
+ attr_reader :steps
620
+
621
+ attr_reader :examples
622
+
623
+ attr_reader :id
624
+
625
+ def initialize(
626
+ location: Location.new,
627
+ tags: [],
628
+ keyword: '',
629
+ name: '',
630
+ description: '',
631
+ steps: [],
632
+ examples: [],
633
+ id: ''
634
+ )
635
+ @location = location
636
+ @tags = tags
637
+ @keyword = keyword
638
+ @name = name
639
+ @description = description
640
+ @steps = steps
641
+ @examples = examples
642
+ @id = id
643
+ end
644
+ end
645
+
646
+
647
+ ##
648
+ # Represents the Step message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
649
+ #
650
+ # A step
651
+ #
652
+
653
+ class Step < ::Cucumber::Messages::Message
654
+
655
+ ##
656
+ # The location of the steps' `keyword`
657
+
658
+ attr_reader :location
659
+
660
+ attr_reader :keyword
661
+
662
+ attr_reader :text
663
+
664
+ attr_reader :doc_string
665
+
666
+ attr_reader :data_table
667
+
668
+ ##
669
+ # Unique ID to be able to reference the Step from PickleStep
670
+
671
+ attr_reader :id
672
+
673
+ def initialize(
674
+ location: Location.new,
675
+ keyword: '',
676
+ text: '',
677
+ doc_string: nil,
678
+ data_table: nil,
679
+ id: ''
680
+ )
681
+ @location = location
682
+ @keyword = keyword
683
+ @text = text
684
+ @doc_string = doc_string
685
+ @data_table = data_table
686
+ @id = id
687
+ end
688
+ end
689
+
690
+
691
+ ##
692
+ # Represents the TableCell message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
693
+ #
694
+ # A cell in a `TableRow`
695
+ #
696
+
697
+ class TableCell < ::Cucumber::Messages::Message
698
+
699
+ ##
700
+ # The location of the cell
701
+
702
+ attr_reader :location
703
+
704
+ ##
705
+ # The value of the cell
706
+
707
+ attr_reader :value
708
+
709
+ def initialize(
710
+ location: Location.new,
711
+ value: ''
712
+ )
713
+ @location = location
714
+ @value = value
715
+ end
716
+ end
717
+
718
+
719
+ ##
720
+ # Represents the TableRow message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
721
+ #
722
+ # A row in a table
723
+ #
724
+
725
+ class TableRow < ::Cucumber::Messages::Message
726
+
727
+ ##
728
+ # The location of the first cell in the row
729
+
730
+ attr_reader :location
731
+
732
+ ##
733
+ # Cells in the row
734
+
735
+ attr_reader :cells
736
+
737
+ attr_reader :id
738
+
739
+ def initialize(
740
+ location: Location.new,
741
+ cells: [],
742
+ id: ''
743
+ )
744
+ @location = location
745
+ @cells = cells
746
+ @id = id
747
+ end
748
+ end
749
+
750
+
751
+ ##
752
+ # Represents the Tag message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
753
+ #
754
+ # *
755
+ # A tag
756
+ #
757
+
758
+ class Tag < ::Cucumber::Messages::Message
759
+
760
+ ##
761
+ # Location of the tag
762
+
763
+ attr_reader :location
764
+
765
+ ##
766
+ # The name of the tag (including the leading `@`)
767
+
768
+ attr_reader :name
769
+
770
+ ##
771
+ # Unique ID to be able to reference the Tag from PickleTag
772
+
773
+ attr_reader :id
774
+
775
+ def initialize(
776
+ location: Location.new,
777
+ name: '',
778
+ id: ''
779
+ )
780
+ @location = location
781
+ @name = name
782
+ @id = id
783
+ end
784
+ end
785
+
786
+
787
+ ##
788
+ # Represents the Hook message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
789
+ #
790
+
791
+ #
792
+
793
+ class Hook < ::Cucumber::Messages::Message
794
+
795
+ attr_reader :id
796
+
797
+ attr_reader :source_reference
798
+
799
+ attr_reader :tag_expression
800
+
801
+ def initialize(
802
+ id: '',
803
+ source_reference: SourceReference.new,
804
+ tag_expression: nil
805
+ )
806
+ @id = id
807
+ @source_reference = source_reference
808
+ @tag_expression = tag_expression
809
+ end
810
+ end
811
+
812
+
813
+ ##
814
+ # Represents the Location message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
815
+ #
816
+ # *
817
+ # Points to a line and a column in a text file
818
+ #
819
+
820
+ class Location < ::Cucumber::Messages::Message
821
+
822
+ attr_reader :line
823
+
824
+ attr_reader :column
825
+
826
+ def initialize(
827
+ line: 0,
828
+ column: nil
829
+ )
830
+ @line = line
831
+ @column = column
832
+ end
833
+ end
834
+
835
+
836
+ ##
837
+ # Represents the Meta message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
838
+ #
839
+ # *
840
+ # This message contains meta information about the environment. Consumers can use
841
+ # this for various purposes.
842
+ #
843
+
844
+ class Meta < ::Cucumber::Messages::Message
845
+
846
+ ##
847
+ # *
848
+ # The [SEMVER](https://semver.org/) version number of the protocol
849
+
850
+ attr_reader :protocol_version
851
+
852
+ ##
853
+ # SpecFlow, Cucumber-JVM, Cucumber.js, Cucumber-Ruby, Behat etc.
854
+
855
+ attr_reader :implementation
856
+
857
+ ##
858
+ # Java, Ruby, Node.js etc
859
+
860
+ attr_reader :runtime
861
+
862
+ ##
863
+ # Windows, Linux, MacOS etc
864
+
865
+ attr_reader :os
866
+
867
+ ##
868
+ # 386, arm, amd64 etc
869
+
870
+ attr_reader :cpu
871
+
872
+ attr_reader :ci
873
+
874
+ def initialize(
875
+ protocol_version: '',
876
+ implementation: Product.new,
877
+ runtime: Product.new,
878
+ os: Product.new,
879
+ cpu: Product.new,
880
+ ci: nil
881
+ )
882
+ @protocol_version = protocol_version
883
+ @implementation = implementation
884
+ @runtime = runtime
885
+ @os = os
886
+ @cpu = cpu
887
+ @ci = ci
888
+ end
889
+ end
890
+
891
+
892
+ ##
893
+ # Represents the Ci message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
894
+ #
895
+ # CI environment
896
+ #
897
+
898
+ class Ci < ::Cucumber::Messages::Message
899
+
900
+ ##
901
+ # Name of the CI product, e.g. "Jenkins", "CircleCI" etc.
902
+
903
+ attr_reader :name
904
+
905
+ ##
906
+ # Link to the build
907
+
908
+ attr_reader :url
909
+
910
+ ##
911
+ # The build number. Some CI servers use non-numeric build numbers, which is why this is a string
912
+
913
+ attr_reader :build_number
914
+
915
+ attr_reader :git
916
+
917
+ def initialize(
918
+ name: '',
919
+ url: nil,
920
+ build_number: nil,
921
+ git: nil
922
+ )
923
+ @name = name
924
+ @url = url
925
+ @build_number = build_number
926
+ @git = git
927
+ end
928
+ end
929
+
930
+
931
+ ##
932
+ # Represents the Git message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
933
+ #
934
+ # Information about Git, provided by the Build/CI server as environment
935
+ # variables.
936
+ #
937
+
938
+ class Git < ::Cucumber::Messages::Message
939
+
940
+ attr_reader :remote
941
+
942
+ attr_reader :revision
943
+
944
+ attr_reader :branch
945
+
946
+ attr_reader :tag
947
+
948
+ def initialize(
949
+ remote: '',
950
+ revision: '',
951
+ branch: nil,
952
+ tag: nil
953
+ )
954
+ @remote = remote
955
+ @revision = revision
956
+ @branch = branch
957
+ @tag = tag
958
+ end
959
+ end
960
+
961
+
962
+ ##
963
+ # Represents the Product message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
964
+ #
965
+ # Used to describe various properties of Meta
966
+ #
967
+
968
+ class Product < ::Cucumber::Messages::Message
969
+
970
+ ##
971
+ # The product name
972
+
973
+ attr_reader :name
974
+
975
+ ##
976
+ # The product version
977
+
978
+ attr_reader :version
979
+
980
+ def initialize(
981
+ name: '',
982
+ version: nil
983
+ )
984
+ @name = name
985
+ @version = version
986
+ end
987
+ end
988
+
989
+
990
+ ##
991
+ # Represents the ParameterType message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
992
+ #
993
+
994
+ #
995
+
996
+ class ParameterType < ::Cucumber::Messages::Message
997
+
998
+ ##
999
+ # The name is unique, so we don't need an id.
1000
+
1001
+ attr_reader :name
1002
+
1003
+ attr_reader :regular_expressions
1004
+
1005
+ attr_reader :prefer_for_regular_expression_match
1006
+
1007
+ attr_reader :use_for_snippets
1008
+
1009
+ attr_reader :id
1010
+
1011
+ def initialize(
1012
+ name: '',
1013
+ regular_expressions: [],
1014
+ prefer_for_regular_expression_match: false,
1015
+ use_for_snippets: false,
1016
+ id: ''
1017
+ )
1018
+ @name = name
1019
+ @regular_expressions = regular_expressions
1020
+ @prefer_for_regular_expression_match = prefer_for_regular_expression_match
1021
+ @use_for_snippets = use_for_snippets
1022
+ @id = id
1023
+ end
1024
+ end
1025
+
1026
+
1027
+ ##
1028
+ # Represents the ParseError message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
1029
+ #
1030
+
1031
+ #
1032
+
1033
+ class ParseError < ::Cucumber::Messages::Message
1034
+
1035
+ attr_reader :source
1036
+
1037
+ attr_reader :message
1038
+
1039
+ def initialize(
1040
+ source: SourceReference.new,
1041
+ message: ''
1042
+ )
1043
+ @source = source
1044
+ @message = message
1045
+ end
1046
+ end
1047
+
1048
+
1049
+ ##
1050
+ # Represents the Pickle message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
1051
+ #
1052
+ # //// Pickles
1053
+ #
1054
+ # *
1055
+ # A `Pickle` represents a template for a `TestCase`. It is typically derived
1056
+ # from another format, such as [GherkinDocument](#io.cucumber.messages.GherkinDocument).
1057
+ # In the future a `Pickle` may be derived from other formats such as Markdown or
1058
+ # Excel files.
1059
+ #
1060
+ # By making `Pickle` the main data structure Cucumber uses for execution, the
1061
+ # implementation of Cucumber itself becomes simpler, as it doesn't have to deal
1062
+ # with the complex structure of a [GherkinDocument](#io.cucumber.messages.GherkinDocument).
1063
+ #
1064
+ # Each `PickleStep` of a `Pickle` is matched with a `StepDefinition` to create a `TestCase`
1065
+ #
1066
+
1067
+ class Pickle < ::Cucumber::Messages::Message
1068
+
1069
+ ##
1070
+ # *
1071
+ # A unique id for the pickle. This is a [SHA1](https://en.wikipedia.org/wiki/SHA-1) hash
1072
+ # from the source data and the `locations` of the pickle.
1073
+ # This ID will change if source the file is modified.
1074
+
1075
+ attr_reader :id
1076
+
1077
+ ##
1078
+ # The uri of the source file
1079
+
1080
+ attr_reader :uri
1081
+
1082
+ ##
1083
+ # The name of the pickle
1084
+
1085
+ attr_reader :name
1086
+
1087
+ ##
1088
+ # The language of the pickle
1089
+
1090
+ attr_reader :language
1091
+
1092
+ ##
1093
+ # One or more steps
1094
+
1095
+ attr_reader :steps
1096
+
1097
+ ##
1098
+ # *
1099
+ # One or more tags. If this pickle is constructed from a Gherkin document,
1100
+ # It includes inherited tags from the `Feature` as well.
1101
+
1102
+ attr_reader :tags
1103
+
1104
+ ##
1105
+ # *
1106
+ # Points to the AST node locations of the pickle. The last one represents the unique
1107
+ # id of the pickle. A pickle constructed from `Examples` will have the first
1108
+ # id originating from the `Scenario` AST node, and the second from the `TableRow` AST node.
1109
+
1110
+ attr_reader :ast_node_ids
1111
+
1112
+ def initialize(
1113
+ id: '',
1114
+ uri: '',
1115
+ name: '',
1116
+ language: '',
1117
+ steps: [],
1118
+ tags: [],
1119
+ ast_node_ids: []
1120
+ )
1121
+ @id = id
1122
+ @uri = uri
1123
+ @name = name
1124
+ @language = language
1125
+ @steps = steps
1126
+ @tags = tags
1127
+ @ast_node_ids = ast_node_ids
1128
+ end
1129
+ end
1130
+
1131
+
1132
+ ##
1133
+ # Represents the PickleDocString message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
1134
+ #
1135
+
1136
+ #
1137
+
1138
+ class PickleDocString < ::Cucumber::Messages::Message
1139
+
1140
+ attr_reader :media_type
1141
+
1142
+ attr_reader :content
1143
+
1144
+ def initialize(
1145
+ media_type: nil,
1146
+ content: ''
1147
+ )
1148
+ @media_type = media_type
1149
+ @content = content
1150
+ end
1151
+ end
1152
+
1153
+
1154
+ ##
1155
+ # Represents the PickleStep message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
1156
+ #
1157
+ # *
1158
+ # An executable step
1159
+ #
1160
+
1161
+ class PickleStep < ::Cucumber::Messages::Message
1162
+
1163
+ attr_reader :argument
1164
+
1165
+ ##
1166
+ # References the IDs of the source of the step. For Gherkin, this can be
1167
+ # the ID of a Step, and possibly also the ID of a TableRow
1168
+
1169
+ attr_reader :ast_node_ids
1170
+
1171
+ ##
1172
+ # A unique ID for the PickleStep
1173
+
1174
+ attr_reader :id
1175
+
1176
+ attr_reader :text
1177
+
1178
+ def initialize(
1179
+ argument: nil,
1180
+ ast_node_ids: [],
1181
+ id: '',
1182
+ text: ''
1183
+ )
1184
+ @argument = argument
1185
+ @ast_node_ids = ast_node_ids
1186
+ @id = id
1187
+ @text = text
1188
+ end
1189
+ end
1190
+
1191
+
1192
+ ##
1193
+ # Represents the PickleStepArgument message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
1194
+ #
1195
+ # An optional argument
1196
+ #
1197
+
1198
+ class PickleStepArgument < ::Cucumber::Messages::Message
1199
+
1200
+ attr_reader :doc_string
1201
+
1202
+ attr_reader :data_table
1203
+
1204
+ def initialize(
1205
+ doc_string: nil,
1206
+ data_table: nil
1207
+ )
1208
+ @doc_string = doc_string
1209
+ @data_table = data_table
1210
+ end
1211
+ end
1212
+
1213
+
1214
+ ##
1215
+ # Represents the PickleTable message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
1216
+ #
1217
+
1218
+ #
1219
+
1220
+ class PickleTable < ::Cucumber::Messages::Message
1221
+
1222
+ attr_reader :rows
1223
+
1224
+ def initialize(
1225
+ rows: []
1226
+ )
1227
+ @rows = rows
1228
+ end
1229
+ end
1230
+
1231
+
1232
+ ##
1233
+ # Represents the PickleTableCell message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
1234
+ #
1235
+
1236
+ #
1237
+
1238
+ class PickleTableCell < ::Cucumber::Messages::Message
1239
+
1240
+ attr_reader :value
1241
+
1242
+ def initialize(
1243
+ value: ''
1244
+ )
1245
+ @value = value
1246
+ end
1247
+ end
1248
+
1249
+
1250
+ ##
1251
+ # Represents the PickleTableRow message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
1252
+ #
1253
+
1254
+ #
1255
+
1256
+ class PickleTableRow < ::Cucumber::Messages::Message
1257
+
1258
+ attr_reader :cells
1259
+
1260
+ def initialize(
1261
+ cells: []
1262
+ )
1263
+ @cells = cells
1264
+ end
1265
+ end
1266
+
1267
+
1268
+ ##
1269
+ # Represents the PickleTag message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
1270
+ #
1271
+ # *
1272
+ # A tag
1273
+ #
1274
+
1275
+ class PickleTag < ::Cucumber::Messages::Message
1276
+
1277
+ attr_reader :name
1278
+
1279
+ ##
1280
+ # Points to the AST node this was created from
1281
+
1282
+ attr_reader :ast_node_id
1283
+
1284
+ def initialize(
1285
+ name: '',
1286
+ ast_node_id: ''
1287
+ )
1288
+ @name = name
1289
+ @ast_node_id = ast_node_id
1290
+ end
1291
+ end
1292
+
1293
+
1294
+ ##
1295
+ # Represents the Source message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
1296
+ #
1297
+ # //// Source
1298
+ #
1299
+ # *
1300
+ # A source file, typically a Gherkin document or Java/Ruby/JavaScript source code
1301
+ #
1302
+
1303
+ class Source < ::Cucumber::Messages::Message
1304
+
1305
+ ##
1306
+ # *
1307
+ # The [URI](https://en.wikipedia.org/wiki/Uniform_Resource_Identifier)
1308
+ # of the source, typically a file path relative to the root directory
1309
+
1310
+ attr_reader :uri
1311
+
1312
+ ##
1313
+ # The contents of the file
1314
+
1315
+ attr_reader :data
1316
+
1317
+ ##
1318
+ # The media type of the file. Can be used to specify custom types, such as
1319
+ # text/x.cucumber.gherkin+plain
1320
+
1321
+ attr_reader :media_type
1322
+
1323
+ def initialize(
1324
+ uri: '',
1325
+ data: '',
1326
+ media_type: SourceMediaType::TEXT_X_CUCUMBER_GHERKIN_PLAIN
1327
+ )
1328
+ @uri = uri
1329
+ @data = data
1330
+ @media_type = media_type
1331
+ end
1332
+ end
1333
+
1334
+
1335
+ ##
1336
+ # Represents the SourceReference message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
1337
+ #
1338
+ # *
1339
+ # Points to a [Source](#io.cucumber.messages.Source) identified by `uri` and a
1340
+ # [Location](#io.cucumber.messages.Location) within that file.
1341
+ #
1342
+
1343
+ class SourceReference < ::Cucumber::Messages::Message
1344
+
1345
+ attr_reader :uri
1346
+
1347
+ attr_reader :java_method
1348
+
1349
+ attr_reader :java_stack_trace_element
1350
+
1351
+ attr_reader :location
1352
+
1353
+ def initialize(
1354
+ uri: nil,
1355
+ java_method: nil,
1356
+ java_stack_trace_element: nil,
1357
+ location: nil
1358
+ )
1359
+ @uri = uri
1360
+ @java_method = java_method
1361
+ @java_stack_trace_element = java_stack_trace_element
1362
+ @location = location
1363
+ end
1364
+ end
1365
+
1366
+
1367
+ ##
1368
+ # Represents the JavaMethod message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
1369
+ #
1370
+
1371
+ #
1372
+
1373
+ class JavaMethod < ::Cucumber::Messages::Message
1374
+
1375
+ attr_reader :class_name
1376
+
1377
+ attr_reader :method_name
1378
+
1379
+ attr_reader :method_parameter_types
1380
+
1381
+ def initialize(
1382
+ class_name: '',
1383
+ method_name: '',
1384
+ method_parameter_types: []
1385
+ )
1386
+ @class_name = class_name
1387
+ @method_name = method_name
1388
+ @method_parameter_types = method_parameter_types
1389
+ end
1390
+ end
1391
+
1392
+
1393
+ ##
1394
+ # Represents the JavaStackTraceElement message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
1395
+ #
1396
+
1397
+ #
1398
+
1399
+ class JavaStackTraceElement < ::Cucumber::Messages::Message
1400
+
1401
+ attr_reader :class_name
1402
+
1403
+ attr_reader :file_name
1404
+
1405
+ attr_reader :method_name
1406
+
1407
+ def initialize(
1408
+ class_name: '',
1409
+ file_name: '',
1410
+ method_name: ''
1411
+ )
1412
+ @class_name = class_name
1413
+ @file_name = file_name
1414
+ @method_name = method_name
1415
+ end
1416
+ end
1417
+
1418
+
1419
+ ##
1420
+ # Represents the StepDefinition message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
1421
+ #
1422
+
1423
+ #
1424
+
1425
+ class StepDefinition < ::Cucumber::Messages::Message
1426
+
1427
+ attr_reader :id
1428
+
1429
+ attr_reader :pattern
1430
+
1431
+ attr_reader :source_reference
1432
+
1433
+ def initialize(
1434
+ id: '',
1435
+ pattern: StepDefinitionPattern.new,
1436
+ source_reference: SourceReference.new
1437
+ )
1438
+ @id = id
1439
+ @pattern = pattern
1440
+ @source_reference = source_reference
1441
+ end
1442
+ end
1443
+
1444
+
1445
+ ##
1446
+ # Represents the StepDefinitionPattern message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
1447
+ #
1448
+
1449
+ #
1450
+
1451
+ class StepDefinitionPattern < ::Cucumber::Messages::Message
1452
+
1453
+ attr_reader :source
1454
+
1455
+ attr_reader :type
1456
+
1457
+ def initialize(
1458
+ source: '',
1459
+ type: StepDefinitionPatternType::CUCUMBER_EXPRESSION
1460
+ )
1461
+ @source = source
1462
+ @type = type
1463
+ end
1464
+ end
1465
+
1466
+
1467
+ ##
1468
+ # Represents the TestCase message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
1469
+ #
1470
+ # //// TestCases
1471
+ #
1472
+ # *
1473
+ # A `TestCase` contains a sequence of `TestStep`s.
1474
+ #
1475
+
1476
+ class TestCase < ::Cucumber::Messages::Message
1477
+
1478
+ attr_reader :id
1479
+
1480
+ ##
1481
+ # The ID of the `Pickle` this `TestCase` is derived from.
1482
+
1483
+ attr_reader :pickle_id
1484
+
1485
+ attr_reader :test_steps
1486
+
1487
+ def initialize(
1488
+ id: '',
1489
+ pickle_id: '',
1490
+ test_steps: []
1491
+ )
1492
+ @id = id
1493
+ @pickle_id = pickle_id
1494
+ @test_steps = test_steps
1495
+ end
1496
+ end
1497
+
1498
+
1499
+ ##
1500
+ # Represents the Group message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
1501
+ #
1502
+
1503
+ #
1504
+
1505
+ class Group < ::Cucumber::Messages::Message
1506
+
1507
+ attr_reader :children
1508
+
1509
+ attr_reader :start
1510
+
1511
+ attr_reader :value
1512
+
1513
+ def initialize(
1514
+ children: [],
1515
+ start: nil,
1516
+ value: nil
1517
+ )
1518
+ @children = children
1519
+ @start = start
1520
+ @value = value
1521
+ end
1522
+ end
1523
+
1524
+
1525
+ ##
1526
+ # Represents the StepMatchArgument message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
1527
+ #
1528
+ # *
1529
+ # Represents a single argument extracted from a step match and passed to a step definition.
1530
+ # This is used for the following purposes:
1531
+ # - Construct an argument to pass to a step definition (possibly through a parameter type transform)
1532
+ # - Highlight the matched parameter in rich formatters such as the HTML formatter
1533
+ #
1534
+ # This message closely matches the `Argument` class in the `cucumber-expressions` library.
1535
+ #
1536
+
1537
+ class StepMatchArgument < ::Cucumber::Messages::Message
1538
+
1539
+ ##
1540
+ # *
1541
+ # Represents the outermost capture group of an argument. This message closely matches the
1542
+ # `Group` class in the `cucumber-expressions` library.
1543
+
1544
+ attr_reader :group
1545
+
1546
+ attr_reader :parameter_type_name
1547
+
1548
+ def initialize(
1549
+ group: Group.new,
1550
+ parameter_type_name: nil
1551
+ )
1552
+ @group = group
1553
+ @parameter_type_name = parameter_type_name
1554
+ end
1555
+ end
1556
+
1557
+
1558
+ ##
1559
+ # Represents the StepMatchArgumentsList message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
1560
+ #
1561
+
1562
+ #
1563
+
1564
+ class StepMatchArgumentsList < ::Cucumber::Messages::Message
1565
+
1566
+ attr_reader :step_match_arguments
1567
+
1568
+ def initialize(
1569
+ step_match_arguments: []
1570
+ )
1571
+ @step_match_arguments = step_match_arguments
1572
+ end
1573
+ end
1574
+
1575
+
1576
+ ##
1577
+ # Represents the TestStep message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
1578
+ #
1579
+ # *
1580
+ # A `TestStep` is derived from either a `PickleStep`
1581
+ # combined with a `StepDefinition`, or from a `Hook`.
1582
+ #
1583
+
1584
+ class TestStep < ::Cucumber::Messages::Message
1585
+
1586
+ ##
1587
+ # Pointer to the `Hook` (if derived from a Hook)
1588
+
1589
+ attr_reader :hook_id
1590
+
1591
+ attr_reader :id
1592
+
1593
+ ##
1594
+ # Pointer to the `PickleStep` (if derived from a `PickleStep`)
1595
+
1596
+ attr_reader :pickle_step_id
1597
+
1598
+ ##
1599
+ # Pointer to all the matching `StepDefinition`s (if derived from a `PickleStep`)
1600
+
1601
+ attr_reader :step_definition_ids
1602
+
1603
+ ##
1604
+ # A list of list of StepMatchArgument (if derived from a `PickleStep`).
1605
+ # Each element represents a matching step definition. A size of 0 means `UNDEFINED`,
1606
+ # and a size of 2+ means `AMBIGUOUS`
1607
+
1608
+ attr_reader :step_match_arguments_lists
1609
+
1610
+ def initialize(
1611
+ hook_id: nil,
1612
+ id: '',
1613
+ pickle_step_id: nil,
1614
+ step_definition_ids: nil,
1615
+ step_match_arguments_lists: nil
1616
+ )
1617
+ @hook_id = hook_id
1618
+ @id = id
1619
+ @pickle_step_id = pickle_step_id
1620
+ @step_definition_ids = step_definition_ids
1621
+ @step_match_arguments_lists = step_match_arguments_lists
1622
+ end
1623
+ end
1624
+
1625
+
1626
+ ##
1627
+ # Represents the TestCaseFinished message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
1628
+ #
1629
+
1630
+ #
1631
+
1632
+ class TestCaseFinished < ::Cucumber::Messages::Message
1633
+
1634
+ attr_reader :test_case_started_id
1635
+
1636
+ attr_reader :timestamp
1637
+
1638
+ attr_reader :will_be_retried
1639
+
1640
+ def initialize(
1641
+ test_case_started_id: '',
1642
+ timestamp: Timestamp.new,
1643
+ will_be_retried: false
1644
+ )
1645
+ @test_case_started_id = test_case_started_id
1646
+ @timestamp = timestamp
1647
+ @will_be_retried = will_be_retried
1648
+ end
1649
+ end
1650
+
1651
+
1652
+ ##
1653
+ # Represents the TestCaseStarted message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
1654
+ #
1655
+
1656
+ #
1657
+
1658
+ class TestCaseStarted < ::Cucumber::Messages::Message
1659
+
1660
+ ##
1661
+ # *
1662
+ # The first attempt should have value 0, and for each retry the value
1663
+ # should increase by 1.
1664
+
1665
+ attr_reader :attempt
1666
+
1667
+ ##
1668
+ # *
1669
+ # Because a `TestCase` can be run multiple times (in case of a retry),
1670
+ # we use this field to group messages relating to the same attempt.
1671
+
1672
+ attr_reader :id
1673
+
1674
+ attr_reader :test_case_id
1675
+
1676
+ attr_reader :timestamp
1677
+
1678
+ def initialize(
1679
+ attempt: 0,
1680
+ id: '',
1681
+ test_case_id: '',
1682
+ timestamp: Timestamp.new
1683
+ )
1684
+ @attempt = attempt
1685
+ @id = id
1686
+ @test_case_id = test_case_id
1687
+ @timestamp = timestamp
1688
+ end
1689
+ end
1690
+
1691
+
1692
+ ##
1693
+ # Represents the TestRunFinished message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
1694
+ #
1695
+
1696
+ #
1697
+
1698
+ class TestRunFinished < ::Cucumber::Messages::Message
1699
+
1700
+ ##
1701
+ # Error message. Can be a stack trace from a failed `BeforeAll` or `AfterAll`.
1702
+ # If there are undefined parameter types, the message is simply
1703
+ # "The following parameter type(s() are not defined: xxx, yyy".
1704
+ # The independent `UndefinedParameterType` messages can be used to generate
1705
+ # snippets for those parameter types.
1706
+
1707
+ attr_reader :message
1708
+
1709
+ ##
1710
+ # success = StrictModeEnabled ? (failed_count == 0 && ambiguous_count == 0 && undefined_count == 0 && pending_count == 0) : (failed_count == 0 && ambiguous_count == 0)
1711
+
1712
+ attr_reader :success
1713
+
1714
+ ##
1715
+ # Timestamp when the TestRun is finished
1716
+
1717
+ attr_reader :timestamp
1718
+
1719
+ def initialize(
1720
+ message: nil,
1721
+ success: false,
1722
+ timestamp: Timestamp.new
1723
+ )
1724
+ @message = message
1725
+ @success = success
1726
+ @timestamp = timestamp
1727
+ end
1728
+ end
1729
+
1730
+
1731
+ ##
1732
+ # Represents the TestRunStarted message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
1733
+ #
1734
+
1735
+ #
1736
+
1737
+ class TestRunStarted < ::Cucumber::Messages::Message
1738
+
1739
+ attr_reader :timestamp
1740
+
1741
+ def initialize(
1742
+ timestamp: Timestamp.new
1743
+ )
1744
+ @timestamp = timestamp
1745
+ end
1746
+ end
1747
+
1748
+
1749
+ ##
1750
+ # Represents the TestStepFinished message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
1751
+ #
1752
+
1753
+ #
1754
+
1755
+ class TestStepFinished < ::Cucumber::Messages::Message
1756
+
1757
+ attr_reader :test_case_started_id
1758
+
1759
+ attr_reader :test_step_id
1760
+
1761
+ attr_reader :test_step_result
1762
+
1763
+ attr_reader :timestamp
1764
+
1765
+ def initialize(
1766
+ test_case_started_id: '',
1767
+ test_step_id: '',
1768
+ test_step_result: TestStepResult.new,
1769
+ timestamp: Timestamp.new
1770
+ )
1771
+ @test_case_started_id = test_case_started_id
1772
+ @test_step_id = test_step_id
1773
+ @test_step_result = test_step_result
1774
+ @timestamp = timestamp
1775
+ end
1776
+ end
1777
+
1778
+
1779
+ ##
1780
+ # Represents the TestStepResult message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
1781
+ #
1782
+
1783
+ #
1784
+
1785
+ class TestStepResult < ::Cucumber::Messages::Message
1786
+
1787
+ attr_reader :duration
1788
+
1789
+ attr_reader :message
1790
+
1791
+ attr_reader :status
1792
+
1793
+ def initialize(
1794
+ duration: Duration.new,
1795
+ message: nil,
1796
+ status: TestStepResultStatus::UNKNOWN
1797
+ )
1798
+ @duration = duration
1799
+ @message = message
1800
+ @status = status
1801
+ end
1802
+ end
1803
+
1804
+
1805
+ ##
1806
+ # Represents the TestStepStarted message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
1807
+ #
1808
+
1809
+ #
1810
+
1811
+ class TestStepStarted < ::Cucumber::Messages::Message
1812
+
1813
+ attr_reader :test_case_started_id
1814
+
1815
+ attr_reader :test_step_id
1816
+
1817
+ attr_reader :timestamp
1818
+
1819
+ def initialize(
1820
+ test_case_started_id: '',
1821
+ test_step_id: '',
1822
+ timestamp: Timestamp.new
1823
+ )
1824
+ @test_case_started_id = test_case_started_id
1825
+ @test_step_id = test_step_id
1826
+ @timestamp = timestamp
1827
+ end
1828
+ end
1829
+
1830
+
1831
+ ##
1832
+ # Represents the Timestamp message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
1833
+ #
1834
+
1835
+ #
1836
+
1837
+ class Timestamp < ::Cucumber::Messages::Message
1838
+
1839
+ ##
1840
+ # Represents seconds of UTC time since Unix epoch
1841
+ # 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
1842
+ # 9999-12-31T23:59:59Z inclusive.
1843
+
1844
+ attr_reader :seconds
1845
+
1846
+ ##
1847
+ # Non-negative fractions of a second at nanosecond resolution. Negative
1848
+ # second values with fractions must still have non-negative nanos values
1849
+ # that count forward in time. Must be from 0 to 999,999,999
1850
+ # inclusive.
1851
+
1852
+ attr_reader :nanos
1853
+
1854
+ def initialize(
1855
+ seconds: 0,
1856
+ nanos: 0
1857
+ )
1858
+ @seconds = seconds
1859
+ @nanos = nanos
1860
+ end
1861
+ end
1862
+
1863
+
1864
+ ##
1865
+ # Represents the UndefinedParameterType message in Cucumber's {message protocol}[https://github.com/cucumber/common/tree/main/messages#readme].
1866
+ #
1867
+
1868
+ #
1869
+
1870
+ class UndefinedParameterType < ::Cucumber::Messages::Message
1871
+
1872
+ attr_reader :expression
1873
+
1874
+ attr_reader :name
1875
+
1876
+ def initialize(
1877
+ expression: '',
1878
+ name: ''
1879
+ )
1880
+ @expression = expression
1881
+ @name = name
1882
+ end
1883
+ end
1884
+
1885
+ end
1886
+ end
1887
+
1888
+ class Cucumber::Messages::AttachmentContentEncoding
1889
+ IDENTITY = 'IDENTITY'
1890
+ BASE64 = 'BASE64'
1891
+ end
1892
+
1893
+ class Cucumber::Messages::SourceMediaType
1894
+ TEXT_X_CUCUMBER_GHERKIN_PLAIN = 'text/x.cucumber.gherkin+plain'
1895
+ TEXT_X_CUCUMBER_GHERKIN_MARKDOWN = 'text/x.cucumber.gherkin+markdown'
1896
+ end
1897
+
1898
+ class Cucumber::Messages::StepDefinitionPatternType
1899
+ CUCUMBER_EXPRESSION = 'CUCUMBER_EXPRESSION'
1900
+ REGULAR_EXPRESSION = 'REGULAR_EXPRESSION'
1901
+ end
1902
+
1903
+ class Cucumber::Messages::TestStepResultStatus
1904
+ UNKNOWN = 'UNKNOWN'
1905
+ PASSED = 'PASSED'
1906
+ SKIPPED = 'SKIPPED'
1907
+ PENDING = 'PENDING'
1908
+ UNDEFINED = 'UNDEFINED'
1909
+ AMBIGUOUS = 'AMBIGUOUS'
1910
+ FAILED = 'FAILED'
1911
+ end