cucumber-messages 15.0.0 → 17.0.1

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.
@@ -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