Comments (7)
Thanks for the report.
Indeed, it seems the id
attribute is missing from StepDefinition
from cucumber-ruby-wire.
I took a deeper look.
It looks like the wire protocol is actually not compatible with formatters based on cucumber-messages.
When attempting to add a reproducible example and fixing that specific issue, more issues was raised :(
I'll submit a PR
from cucumber-ruby-wire.
Hey @canmor :)
cucumber-wire v6.2.1 should fix the issue with the html formatter
from cucumber-ruby-wire.
Hi @aurelien-reeves ,
Thx for your work on this issue, the problem related to id attribute is missing from StepDefinition
is indeed fixed.
But as you mentioned previously:
wire protocol is actually not compatible with formatters based on cucumber-messages
New issue raised after this fix:
$ cucumber -f html -o out.html
WARNING: # built-in usage of the wire protocol is deprecated and will be removed after version 8.0.0. See https://github.com/cucumber/cucumber-ruby/blob/main/UPGRADING.md#upgrading-to-710 for more info.
(Called from /Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-7.1.0/lib/cucumber/runtime.rb:77:in `run!')
undefined method `parameter_type' for #<Cucumber::Wire::StepArgument:0x00007f96ad7da6e0> (NoMethodError)
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-7.1.0/lib/cucumber/formatter/message_builder.rb:132:in `block in step_match_arguments'
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-7.1.0/lib/cucumber/formatter/message_builder.rb:129:in `map'
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-7.1.0/lib/cucumber/formatter/message_builder.rb:129:in `step_match_arguments'
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-7.1.0/lib/cucumber/formatter/message_builder.rb:120:in `step_match_arguments_lists'
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-7.1.0/lib/cucumber/formatter/message_builder.rb:108:in `test_step_to_message'
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-7.1.0/lib/cucumber/formatter/message_builder.rb:94:in `block in on_test_case_ready'
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-7.1.0/lib/cucumber/formatter/message_builder.rb:94:in `map'
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-7.1.0/lib/cucumber/formatter/message_builder.rb:94:in `on_test_case_ready'
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-core-10.1.0/lib/cucumber/core/event_bus.rb:34:in `block in broadcast'
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-core-10.1.0/lib/cucumber/core/event_bus.rb:34:in `each'
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-core-10.1.0/lib/cucumber/core/event_bus.rb:34:in `broadcast'
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-core-10.1.0/lib/cucumber/core/event_bus.rb:40:in `method_missing'
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-7.1.0/lib/cucumber/configuration.rb:34:in `notify'
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-7.1.0/lib/cucumber/filters/broadcast_test_case_ready_event.rb:7:in `test_case'
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-core-10.1.0/lib/cucumber/core/test/case.rb:28:in `describe_to'
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-7.1.0/lib/cucumber/filters/apply_around_hooks.rb:10:in `test_case'
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-core-10.1.0/lib/cucumber/core/test/case.rb:28:in `describe_to'
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-7.1.0/lib/cucumber/filters/apply_after_hooks.rb:7:in `test_case'
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-core-10.1.0/lib/cucumber/core/test/case.rb:28:in `describe_to'
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-7.1.0/lib/cucumber/filters/apply_before_hooks.rb:7:in `test_case'
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-core-10.1.0/lib/cucumber/core/test/case.rb:28:in `describe_to'
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-7.1.0/lib/cucumber/filters/apply_after_step_hooks.rb:10:in `test_case'
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-core-10.1.0/lib/cucumber/core/test/case.rb:28:in `describe_to'
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-wire-6.2.1/lib/cucumber/wire/add_hooks_filter.rb:8:in `test_case'
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-core-10.1.0/lib/cucumber/core/test/case.rb:28:in `describe_to'
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-7.1.0/lib/cucumber/filters/activate_steps.rb:12:in `test_case'
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-core-10.1.0/lib/cucumber/core/test/case.rb:28:in `describe_to'
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-7.1.0/lib/cucumber/filters/activate_steps.rb:12:in `test_case'
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-core-10.1.0/lib/cucumber/core/test/case.rb:28:in `describe_to'
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-core-10.1.0/lib/cucumber/core/test/filters/locations_filter.rb:18:in `block in done'
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-core-10.1.0/lib/cucumber/core/test/filters/locations_filter.rb:17:in `each'
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-core-10.1.0/lib/cucumber/core/test/filters/locations_filter.rb:17:in `done'
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-core-10.1.0/lib/cucumber/core/filter.rb:62:in `done'
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-core-10.1.0/lib/cucumber/core/test/filters/tag_filter.rb:18:in `done'
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-core-10.1.0/lib/cucumber/core/compiler.rb:31:in `done'
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-core-10.1.0/lib/cucumber/core/gherkin/parser.rb:46:in `done'
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-core-10.1.0/lib/cucumber/core.rb:35:in `parse'
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-core-10.1.0/lib/cucumber/core.rb:24:in `compile'
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-7.1.0/lib/cucumber/runtime.rb:83:in `run!'
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-7.1.0/lib/cucumber/cli/main.rb:29:in `execute!'
/Users/canmor/.rvm/gems/ruby-2.6.3/gems/cucumber-7.1.0/bin/cucumber:9:in `<top (required)>'
/Users/canmor/.rvm/gems/ruby-2.6.3/bin/cucumber:23:in `load'
/Users/canmor/.rvm/gems/ruby-2.6.3/bin/cucumber:23:in `<main>'
Code here is requesting for parameter_type
from Cucumber::Wire::StepArgument:
I'd tried to add a new test case (with args in match response and invoke request) based on the case you added on your pr, this issue cloud be reproduced, but I'm not sure how to fix this, because as far as I known about wire protocol (I can't find any document for wire protocol), I guess wire protocol could not provide such information for us to new a Cucumber::Messages::ParameterType for this.
Could you offer some further helps? Much appreciate.
from cucumber-ruby-wire.
Would it be possible to have a minimal reproducible example, or at least an example of a step definition and an according step which produces the issue?
from cucumber-ruby-wire.
Hi @aurelien-reeves,
I'm sorry for my extremely late reply, I hope you are doing well during the past year.
May be I didn't make it clear in my previous comment, there's no need to setup a dedicated reproducible example, just change the test case you'd created by adding any argument, will make this happened.
I have changed your test case data to:
| request | response |
| ["step_matches",{"name_to_match":"we're all wired"}] | ["success",[{"id":"1", "args":[{"pos": 11, "val": "wired"}], "source":"MyApp.MyClass:123", "regexp":"we're all (.*)"}]] |
| ["begin_scenario"] | ["success"] |
| ["invoke",{"id":"1","args":["wired"]}] | ["success"] |
| ["end_scenario"] | ["success"] |
And get simply workaround for this, see PR #65
Thanks for you help on this, If you get any suggestion or question, we can disscuss on that PR.
from cucumber-ruby-wire.
Hi @canmor
This actually needed fixing properly downstream. I've had a go at this, can you test with the bugfix branch.
NB: This is based off the cucumber-ruby 9.x series.
The branch for cucumber-ruby is https://github.com/cucumber/cucumber-ruby/tree/bugfix/make_parameter_type_optional_in_envelope
If this works I'll merge it in in the new year
from cucumber-ruby-wire.
Related Issues (12)
- Ensure we can call wire steps as nested ruby steps HOT 3
- When use in language : zh-CN, connection.rb should do code translate
- Suppot for embeddings
- Fix docs!
- Fix `features/snippets_message.feature` file
- Single `\` (backslash) doesn't survive the Wire HOT 1
- Lincense file
- Action Required: Fix Renovate Configuration HOT 1
- Rename repo to cucumber-wire-ruby HOT 5
- acceptance_tests is faied on Ruby 2.4 HOT 2
- Json output format issue. The steps are being skipped when background is used HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cucumber-ruby-wire.