Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Json schema for message protocol #1414

Merged
merged 80 commits into from
Apr 29, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
e9a7c9f
Add JSON Schema generated by https://github.com/chrusty/protoc-gen-js…
aslakhellesoy Mar 3, 2021
3d27e79
Generate TypeScript types from JSON Schemas
aslakhellesoy Mar 3, 2021
fe6a12b
Remove duplication from JSON schemas
aslakhellesoy Mar 5, 2021
b521c69
Merge branch 'master' into json-schema
aslakhellesoy Mar 5, 2021
423f77a
Java code generates and compiles
aslakhellesoy Mar 5, 2021
9641198
Gherkin-java works without protobuf
aslakhellesoy Mar 7, 2021
a6b4438
Experimental new codegenerator in Ruby
aslakhellesoy Mar 9, 2021
d078849
Merge master
aurelien-reeves Mar 10, 2021
6191f31
Work on the code generator
aurelien-reeves Mar 10, 2021
57fea49
Code generation tweaks
aslakhellesoy Mar 11, 2021
47b1db1
Start migrating old messages API to new API
aslakhellesoy Mar 11, 2021
4702500
Merge branch 'master' into json-schema
aslakhellesoy Mar 11, 2021
e73e5ca
Replace more protobuf objects with regular objects
aslakhellesoy Mar 11, 2021
286b3f5
Fix compilation errors
aslakhellesoy Mar 11, 2021
b9e37a1
Merge master
aslakhellesoy Mar 12, 2021
ec85257
Fix more compilation errors
aslakhellesoy Mar 12, 2021
b55673a
Fix compile errors
aslakhellesoy Mar 13, 2021
df07708
All TypeScript code compiles
aslakhellesoy Mar 14, 2021
d24ec38
Rename from snake_case to camelCase
aslakhellesoy Mar 14, 2021
3854b06
Fix gherkin tests
aslakhellesoy Mar 14, 2021
7893842
Pretty-print JSON Schemas
aslakhellesoy Mar 14, 2021
be48f33
Change schema to make more properties required
aslakhellesoy Mar 15, 2021
f053d32
Fix a few more tests
aslakhellesoy Mar 15, 2021
96d6710
Merge remote-tracking branch 'origin/master' into json-schema
aslakhellesoy Mar 17, 2021
abef979
Use default values
aslakhellesoy Mar 18, 2021
63176aa
Regenerate cck messages
aslakhellesoy Mar 18, 2021
13a2e0e
Update dependencies
aslakhellesoy Mar 18, 2021
5c4f510
Merge remote-tracking branch 'origin/master' into json-schema
aslakhellesoy Mar 18, 2021
7175b3a
Merge branch 'master' into json-schema
aslakhellesoy Mar 18, 2021
f6fc034
Merge branch 'json-schema' of github.com:cucumber/cucumber into json-…
aslakhellesoy Apr 3, 2021
9b9dbd3
Merge master
aslakhellesoy Apr 3, 2021
f56b147
Merge master
aslakhellesoy Apr 20, 2021
0e45bed
Remove protobuf from messages/ruby
aslakhellesoy Apr 20, 2021
a75823d
Merge branch 'master' into json-schema
aslakhellesoy Apr 20, 2021
d923781
Only include *.jsonschema
aslakhellesoy Apr 20, 2021
a61c6d1
Remove types, use classes only
aslakhellesoy Apr 20, 2021
03e6846
Always sort generated classes alphabetically
mattwynne Apr 20, 2021
f2b99b1
Use .schema.json extension so my IDE can understand the file type
mattwynne Apr 20, 2021
cd5d2a6
Rename *.schema.json to *.json to make Java codegen work again
aslakhellesoy Apr 21, 2021
32eeef0
Seconds before nanos to make Java duration tests pass
aslakhellesoy Apr 21, 2021
18795fd
Add support for JSON Schema enums
aslakhellesoy Apr 21, 2021
54cbc86
Use new enum
aslakhellesoy Apr 21, 2021
fe7aaf4
Fix failing tests
aslakhellesoy Apr 21, 2021
996271f
Use an actual enum
aslakhellesoy Apr 21, 2021
4582a14
Use new enums everywhere
aslakhellesoy Apr 21, 2021
cc19825
Fix more enums
aslakhellesoy Apr 21, 2021
e1dcacb
Fix json-to-messages to work with new messages
aurelien-reeves Apr 21, 2021
cf8e7d7
Update group schema to make start and value optional
aurelien-reeves Apr 21, 2021
e6c7a17
Use the cucumber-build image since we need ruby for codegen
aslakhellesoy Apr 21, 2021
f62ad8a
Update messages to always have a description (defaults to empty string)
aslakhellesoy Apr 22, 2021
f379289
Reorder JSON Schema properties
aslakhellesoy Apr 22, 2021
5903e7e
Refactor gherkin/ruby to use plain object messages
aslakhellesoy Apr 22, 2021
bd77197
Don't sudo
aslakhellesoy Apr 22, 2021
8accbe5
Merge master
aslakhellesoy Apr 23, 2021
16efddf
Fix more
aslakhellesoy Apr 23, 2021
2c18bc3
Remove --format option
aslakhellesoy Apr 23, 2021
06114c6
Update fake-cucumber to not serialize null tag-expression
aurelien-reeves Apr 23, 2021
5470c0b
Merge master
aslakhellesoy Apr 26, 2021
4a2f3e7
Replace compact with delete_if (to work on Ruby 2.3)
aslakhellesoy Apr 26, 2021
b0059c2
Fix create-meta
aslakhellesoy Apr 26, 2021
d781d5d
Fix demo_formatter/ruby
aslakhellesoy Apr 26, 2021
0a34036
Remove --format flag
aslakhellesoy Apr 26, 2021
064aa6f
Fix gherkin/python
aslakhellesoy Apr 26, 2021
8b019f3
Fix required declarations
aslakhellesoy Apr 26, 2021
efb2344
Start go codegen (WIP)
aslakhellesoy Apr 26, 2021
ad35471
Remove empty lines
aslakhellesoy Apr 26, 2021
157a630
Fix gherkin/go
aslakhellesoy Apr 27, 2021
2283a3d
Fix demo-formatter/go
aslakhellesoy Apr 27, 2021
a4a999f
Fix gherkin/java
aslakhellesoy Apr 27, 2021
bf50579
Fix json-formatter/go
aslakhellesoy Apr 27, 2021
b621345
Build the passing messages
aslakhellesoy Apr 27, 2021
6563d8b
Upgrade dependencies
aslakhellesoy Apr 28, 2021
a458069
Upgrade dependencies
aslakhellesoy Apr 28, 2021
3973d8c
Remove --format option
aslakhellesoy Apr 28, 2021
b3e4e71
Fix html-formatter build
aslakhellesoy Apr 28, 2021
6435be5
Fix JSON-to-messages
aslakhellesoy Apr 28, 2021
03e2a92
Remove logging
aslakhellesoy Apr 28, 2021
1a5b958
Disable gherkin/elixir
aslakhellesoy Apr 28, 2021
830d4d1
Remove sudo
aslakhellesoy Apr 28, 2021
5cc63d3
Merge branch 'master' into json-schema
aslakhellesoy Apr 29, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
33 changes: 16 additions & 17 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ jobs:
command: make ci

prepare-parallel:
executor: docker-circleci-node-15
executor: docker-cucumber-build
steps:
- checkout
- run:
Expand All @@ -93,7 +93,7 @@ jobs:
# make storybook work. Our storybook setup is not (yet) able to
# pick up .ts files - all code needs to be transpiled first.
command: |
sudo npm install --global npm@7
npm install --global npm@7
npm ci
npm run build
- persist_to_workspace:
Expand Down Expand Up @@ -304,14 +304,13 @@ jobs:
make

react-javascript:
executor: docker-circleci-node-12
executor: docker-cucumber-build
steps:
- attach_workspace:
at: "~/cucumber"
- run:
name: react/javascript
command: |
sudo npm install --global npm@7
cd react/javascript
make

Expand Down Expand Up @@ -802,16 +801,16 @@ jobs:
paths:
- messages/elixir/lib/cucumber_messages/generated/

gherkin-elixir:
executor: docker-cucumber-build
steps:
- attach_workspace:
at: "~/cucumber"
- run:
name: gherkin/elixir
command: |
cd gherkin/elixir
make
# gherkin-elixir:
# executor: docker-cucumber-build
# steps:
# - attach_workspace:
# at: "~/cucumber"
# - run:
# name: gherkin/elixir
# command: |
# cd gherkin/elixir
# make

###
### Workflows ###
Expand Down Expand Up @@ -1047,6 +1046,6 @@ workflows:
requires:
- prepare-parallel

- gherkin-elixir:
requires:
- messages-elixir
# - gherkin-elixir:
# requires:
# - messages-elixir
5 changes: 1 addition & 4 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,2 @@
messages/javascript/src/messages.js
messages/javascript/src/messages.d.ts
messages/javascript/dist/src/messages.js
messages/javascript/dist/src/messages.d.ts
messages/javascript/src/messages.ts
gherkin/javascript/src/Parser.ts
8 changes: 7 additions & 1 deletion .templates/javascript/default.mk
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,13 @@ default: .tested
.codegen:
touch $@

.tested: .tested-npm
.tested: .tested-npm .built

.built: $(TYPESCRIPT_SOURCE_FILES) .codegen
pushd ../.. && \
npm run build && \
popd && \
touch $@

.tested-npm: $(TYPESCRIPT_SOURCE_FILES) .codegen
npm run test
Expand Down
1 change: 0 additions & 1 deletion compatibility-kit/javascript/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ features/%.ndjson: features/%.feature features/%.ts
ifdef GOLDEN
source ../ci_env
../../node_modules/@cucumber/fake-cucumber/bin/fake-cucumber \
--format ndjson \
$< > $@
else
# no-op: run with GOLDEN=1
Expand Down
8 changes: 7 additions & 1 deletion compatibility-kit/javascript/default.mk
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,13 @@ default: .tested
.codegen:
touch $@

.tested: .tested-npm
.tested: .tested-npm .built

.built: $(TYPESCRIPT_SOURCE_FILES) .codegen
pushd ../.. && \
npm run build && \
popd && \
touch $@

.tested-npm: $(TYPESCRIPT_SOURCE_FILES) .codegen
npm run test
Expand Down
134 changes: 67 additions & 67 deletions compatibility-kit/javascript/features/attachments/attachments.ndjson

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
{"meta":{"protocolVersion":"15.0.0","implementation":{"name":"fake-cucumber","version":"11.0.0"},"runtime":{"name":"node.js","version":"12.16.2"},"os":{"name":"linux","version":"4.19.121-linuxkit"},"cpu":{"name":"x64"}}}
{"source":{"uri":"features/data-tables/data-tables.feature","data":"Feature: Data Tables\n Data Tables can be places underneath a step and will be passed as the last\n argument to the step definition. They can be used to represent richer data\n structures, and can also be transformed to other types.\n\n Scenario: transposed table\n When the following table is transposed:\n | a | b |\n | 1 | 2 |\n Then it should be:\n | a | 1 |\n | b | 2 |\n","mediaType":"text/x.cucumber.gherkin+plain"}}
{"gherkinDocument":{"uri":"features/data-tables/data-tables.feature","feature":{"location":{"line":1,"column":1},"language":"en","keyword":"Feature","name":"Data Tables","description":" Data Tables can be places underneath a step and will be passed as the last\n argument to the step definition. They can be used to represent richer data\n structures, and can also be transformed to other types.","children":[{"scenario":{"location":{"line":6,"column":3},"keyword":"Scenario","name":"transposed table","steps":[{"location":{"line":7,"column":5},"keyword":"When ","text":"the following table is transposed:","dataTable":{"location":{"line":8,"column":7},"rows":[{"location":{"line":8,"column":7},"cells":[{"location":{"line":8,"column":9},"value":"a"},{"location":{"line":8,"column":13},"value":"b"}],"id":"ab5f4fe5-ed27-4e33-b436-519ebe29f9d0"},{"location":{"line":9,"column":7},"cells":[{"location":{"line":9,"column":9},"value":"1"},{"location":{"line":9,"column":13},"value":"2"}],"id":"c4b06f17-001e-4f05-87e8-dda5052d8bf0"}]},"id":"fc63b9b4-ba52-4765-bef5-1fa5cbbb90d0"},{"location":{"line":10,"column":5},"keyword":"Then ","text":"it should be:","dataTable":{"location":{"line":11,"column":7},"rows":[{"location":{"line":11,"column":7},"cells":[{"location":{"line":11,"column":9},"value":"a"},{"location":{"line":11,"column":13},"value":"1"}],"id":"59ac71e8-c6da-45aa-845d-da31451ccdce"},{"location":{"line":12,"column":7},"cells":[{"location":{"line":12,"column":9},"value":"b"},{"location":{"line":12,"column":13},"value":"2"}],"id":"cd76bac7-c5f9-4dc8-a0ea-22623e26fa31"}]},"id":"5302da01-61b7-4955-ae48-a8f50e21cd13"}],"id":"14856249-cbcf-482c-948e-0982b7bd9db3"}}]}}}
{"pickle":{"id":"10c57f82-4dd6-4994-b656-108aaa608af5","uri":"features/data-tables/data-tables.feature","name":"transposed table","language":"en","steps":[{"text":"the following table is transposed:","argument":{"dataTable":{"rows":[{"cells":[{"value":"a"},{"value":"b"}]},{"cells":[{"value":"1"},{"value":"2"}]}]}},"id":"f0ef12a8-9b0a-46b0-b44b-d3d37b3bbe73","astNodeIds":["fc63b9b4-ba52-4765-bef5-1fa5cbbb90d0"]},{"text":"it should be:","argument":{"dataTable":{"rows":[{"cells":[{"value":"a"},{"value":"1"}]},{"cells":[{"value":"b"},{"value":"2"}]}]}},"id":"183db2a9-6d5f-43f4-a3f5-d3f9212563ff","astNodeIds":["5302da01-61b7-4955-ae48-a8f50e21cd13"]}],"astNodeIds":["14856249-cbcf-482c-948e-0982b7bd9db3"]}}
{"stepDefinition":{"id":"5d96cd11-56e9-49df-9735-d01854ae128e","pattern":{"source":"the following table is transposed:","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"features/data-tables/data-tables.ts","location":{"line":5}}}}
{"stepDefinition":{"id":"10b06f1b-6319-40b3-8660-c7edabea62ea","pattern":{"source":"it should be:","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"features/data-tables/data-tables.ts","location":{"line":9}}}}
{"testRunStarted":{"timestamp":{"seconds":"1617020371","nanos":51000000}}}
{"testCase":{"id":"0a926194-b5f3-414d-b8fe-db365c888b47","pickleId":"10c57f82-4dd6-4994-b656-108aaa608af5","testSteps":[{"id":"150d2e8c-008b-480a-a8a1-ad8602dedf64","pickleStepId":"f0ef12a8-9b0a-46b0-b44b-d3d37b3bbe73","stepDefinitionIds":["5d96cd11-56e9-49df-9735-d01854ae128e"],"stepMatchArgumentsLists":[{}]},{"id":"3de44d94-c047-421d-ba6a-6d5d3390bc09","pickleStepId":"183db2a9-6d5f-43f4-a3f5-d3f9212563ff","stepDefinitionIds":["10b06f1b-6319-40b3-8660-c7edabea62ea"],"stepMatchArgumentsLists":[{}]}]}}
{"testCaseStarted":{"timestamp":{"seconds":"1617020371","nanos":54000000},"attempt":0,"testCaseId":"0a926194-b5f3-414d-b8fe-db365c888b47","id":"fa2aaca3-a192-4b2b-b73b-a5ddcddccbe6"}}
{"testStepStarted":{"timestamp":{"seconds":"1617020371","nanos":55000000},"testStepId":"150d2e8c-008b-480a-a8a1-ad8602dedf64","testCaseStartedId":"fa2aaca3-a192-4b2b-b73b-a5ddcddccbe6"}}
{"testStepFinished":{"testStepResult":{"status":"PASSED","duration":{"seconds":"0","nanos":897700}},"timestamp":{"seconds":"1617020371","nanos":57000000},"testStepId":"150d2e8c-008b-480a-a8a1-ad8602dedf64","testCaseStartedId":"fa2aaca3-a192-4b2b-b73b-a5ddcddccbe6"}}
{"testStepStarted":{"timestamp":{"seconds":"1617020371","nanos":58000000},"testStepId":"3de44d94-c047-421d-ba6a-6d5d3390bc09","testCaseStartedId":"fa2aaca3-a192-4b2b-b73b-a5ddcddccbe6"}}
{"testStepFinished":{"testStepResult":{"status":"PASSED","duration":{"seconds":"0","nanos":128100}},"timestamp":{"seconds":"1617020371","nanos":59000000},"testStepId":"3de44d94-c047-421d-ba6a-6d5d3390bc09","testCaseStartedId":"fa2aaca3-a192-4b2b-b73b-a5ddcddccbe6"}}
{"testCaseFinished":{"timestamp":{"seconds":"1617020371","nanos":59000000},"testCaseStartedId":"fa2aaca3-a192-4b2b-b73b-a5ddcddccbe6"}}
{"testRunFinished":{"timestamp":{"seconds":"1617020371","nanos":60000000}}}
{"meta":{"protocolVersion":"15.0.0","implementation":{"name":"fake-cucumber","version":"11.0.0"},"cpu":{"name":"x64"},"os":{"name":"darwin","version":"19.6.0"},"runtime":{"name":"node.js","version":"15.12.0"}}}
{"source":{"data":"Feature: Data Tables\n Data Tables can be places underneath a step and will be passed as the last\n argument to the step definition. They can be used to represent richer data\n structures, and can also be transformed to other types.\n\n Scenario: transposed table\n When the following table is transposed:\n | a | b |\n | 1 | 2 |\n Then it should be:\n | a | 1 |\n | b | 2 |\n","uri":"features/data-tables/data-tables.feature","mediaType":"text/x.cucumber.gherkin+plain"}}
{"gherkinDocument":{"feature":{"tags":[],"location":{"line":1,"column":1},"language":"en","keyword":"Feature","name":"Data Tables","description":" Data Tables can be places underneath a step and will be passed as the last\n argument to the step definition. They can be used to represent richer data\n structures, and can also be transformed to other types.","children":[{"scenario":{"id":"00f16e61-caba-4ed9-b285-5b4c94e03909","tags":[],"location":{"line":6,"column":3},"keyword":"Scenario","name":"transposed table","description":"","steps":[{"id":"4854324e-d156-4304-bdb0-c5e6032745a6","location":{"line":7,"column":5},"keyword":"When ","text":"the following table is transposed:","dataTable":{"location":{"line":8,"column":7},"rows":[{"id":"db43e1c7-21c7-46a8-9182-389435552318","location":{"line":8,"column":7},"cells":[{"location":{"line":8,"column":9},"value":"a"},{"location":{"line":8,"column":13},"value":"b"}]},{"id":"8047eb61-c475-4fbd-a47d-dff2c66399f3","location":{"line":9,"column":7},"cells":[{"location":{"line":9,"column":9},"value":"1"},{"location":{"line":9,"column":13},"value":"2"}]}]}},{"id":"3591403d-9e9e-4cbd-b323-4ac397245d44","location":{"line":10,"column":5},"keyword":"Then ","text":"it should be:","dataTable":{"location":{"line":11,"column":7},"rows":[{"id":"e35a4dfd-f22e-40f8-bad0-4514b542b256","location":{"line":11,"column":7},"cells":[{"location":{"line":11,"column":9},"value":"a"},{"location":{"line":11,"column":13},"value":"1"}]},{"id":"8d5008cf-296e-4e10-8245-dfe6b8a7993f","location":{"line":12,"column":7},"cells":[{"location":{"line":12,"column":9},"value":"b"},{"location":{"line":12,"column":13},"value":"2"}]}]}}],"examples":[]}}]},"comments":[],"uri":"features/data-tables/data-tables.feature"}}
{"pickle":{"id":"b9c82ea8-c39a-491e-b50e-a4ea2924d7dc","uri":"features/data-tables/data-tables.feature","astNodeIds":["00f16e61-caba-4ed9-b285-5b4c94e03909"],"tags":[],"name":"transposed table","language":"en","steps":[{"id":"3b2f38dc-1e0f-4963-b9e1-5c45a2c9db16","text":"the following table is transposed:","argument":{"dataTable":{"rows":[{"cells":[{"value":"a"},{"value":"b"}]},{"cells":[{"value":"1"},{"value":"2"}]}]}},"astNodeIds":["4854324e-d156-4304-bdb0-c5e6032745a6"]},{"id":"71262597-370a-470f-9e81-93905cfee8fa","text":"it should be:","argument":{"dataTable":{"rows":[{"cells":[{"value":"a"},{"value":"1"}]},{"cells":[{"value":"b"},{"value":"2"}]}]}},"astNodeIds":["3591403d-9e9e-4cbd-b323-4ac397245d44"]}]}}
{"stepDefinition":{"id":"5c584f7c-beea-498b-937a-e17358c79ec7","pattern":{"type":"CUCUMBER_EXPRESSION","source":"the following table is transposed:"},"sourceReference":{"uri":"features/data-tables/data-tables.ts","location":{"line":5}}}}
{"stepDefinition":{"id":"6a41ad93-84ab-41a7-a7bf-effc8847f0bf","pattern":{"type":"CUCUMBER_EXPRESSION","source":"it should be:"},"sourceReference":{"uri":"features/data-tables/data-tables.ts","location":{"line":9}}}}
{"testRunStarted":{"timestamp":{"seconds":1619645365,"nanos":737000000}}}
{"testCase":{"id":"6febffaf-a14f-4d8c-b625-5967b70187d1","pickleId":"b9c82ea8-c39a-491e-b50e-a4ea2924d7dc","testSteps":[{"id":"a1873d3d-2ced-4014-a304-26e8411f4e45","pickleStepId":"3b2f38dc-1e0f-4963-b9e1-5c45a2c9db16","stepDefinitionIds":["5c584f7c-beea-498b-937a-e17358c79ec7"],"stepMatchArgumentsLists":[{"stepMatchArguments":[]}]},{"id":"3c21398e-3c62-4a84-8861-5ab209a5937b","pickleStepId":"71262597-370a-470f-9e81-93905cfee8fa","stepDefinitionIds":["6a41ad93-84ab-41a7-a7bf-effc8847f0bf"],"stepMatchArgumentsLists":[{"stepMatchArguments":[]}]}]}}
{"testCaseStarted":{"attempt":0,"testCaseId":"6febffaf-a14f-4d8c-b625-5967b70187d1","id":"839c42f1-505c-4a4e-922c-1a1c53371df8","timestamp":{"seconds":1619645365,"nanos":737000000}}}
{"testStepStarted":{"testCaseStartedId":"839c42f1-505c-4a4e-922c-1a1c53371df8","testStepId":"a1873d3d-2ced-4014-a304-26e8411f4e45","timestamp":{"seconds":1619645365,"nanos":737000000}}}
{"testStepFinished":{"testCaseStartedId":"839c42f1-505c-4a4e-922c-1a1c53371df8","testStepId":"a1873d3d-2ced-4014-a304-26e8411f4e45","testStepResult":{"duration":{"seconds":0,"nanos":231023},"status":"PASSED","willBeRetried":false},"timestamp":{"seconds":1619645365,"nanos":738000000}}}
{"testStepStarted":{"testCaseStartedId":"839c42f1-505c-4a4e-922c-1a1c53371df8","testStepId":"3c21398e-3c62-4a84-8861-5ab209a5937b","timestamp":{"seconds":1619645365,"nanos":738000000}}}
{"testStepFinished":{"testCaseStartedId":"839c42f1-505c-4a4e-922c-1a1c53371df8","testStepId":"3c21398e-3c62-4a84-8861-5ab209a5937b","testStepResult":{"duration":{"seconds":0,"nanos":37051},"status":"PASSED","willBeRetried":false},"timestamp":{"seconds":1619645365,"nanos":738000000}}}
{"testCaseFinished":{"testCaseStartedId":"839c42f1-505c-4a4e-922c-1a1c53371df8","timestamp":{"seconds":1619645365,"nanos":738000000}}}
{"testRunFinished":{"timestamp":{"seconds":1619645365,"nanos":738000000},"success":true}}
Loading