Repository navigation
Conversation
Cucumber-Ruby 8 removed the built-in wire protocol support. Without `require 'cucumber/wire'` in a support file it silently ignores the .wire files: Cucumber never connects to the wire server and all steps of the examples are undefined. Cucumber-Ruby 7.1 still loads the plugin by itself, but warns that this is deprecated. With the support file it uses the explicitly loaded plugin and the warning disappears. See: https://github.com/cucumber/cucumber-ruby/blob/v7.1.0/UPGRADING.md#upgrading-to-710 Assisted-by: Claude Code
Cucumber exits successfully even if steps are undefined. When it does not load the wire plugin, it never connects to the wire server and reports all steps as undefined. The scripts then wait forever for the wire server, which is still waiting for a connection. Run Cucumber in strict mode so that undefined and pending steps fail the run and the scripts stop before waiting for the wire server. Assisted-by: Claude Code
Select the Cucumber-Ruby version with the CUCUMBER_VERSION environment variable to test the wire protocol against more than one version. Each version comes with the matching cucumber-wire release: * 7.1 (default): cucumber 7.1.0 and cucumber-wire 6.2.1 as before * 10: cucumber 10.2.0 and cucumber-wire 8.0.0, the latest releases that support the wire protocol. They need Ruby 3.1 or later. Cucumber-Ruby 11 and later need a new cucumber-wire release first. Assisted-by: Claude Code
Run the Linux build once per supported Cucumber-Ruby version, so that an incompatibility shows up as a failing build. Cucumber-Ruby 10 needs Ruby 3.1 or later. Ubuntu 22.04 provides Ruby 3.0 only, so that configuration runs on Ubuntu 24.04. The Cucumber-Ruby 7.1 configuration stays on Ubuntu 22.04 as before. Ubuntu 24.04 also comes with newer compilers and libraries (e.g. GCC 13, Qt 6.4, Boost 1.83), so a failure that only shows up in that configuration is not necessarily caused by Cucumber-Ruby. Assisted-by: Claude Code
Replace the warning about Cucumber-Ruby 3.x. The doc string bug it refers to (cucumber/cucumber-ruby#1183) only affected Cucumber-Ruby 2.0.x and was fixed in 2.1.0. The wire protocol works with Cucumber-Ruby 7.1 and 10. Instead, describe what current versions need: the cucumber-wire plugin, a support file that loads it and starting Cucumber in the folder that contains the features. Without --require, Cucumber only loads support and .wire files from ./features (see cucumber#277), so the Windows instructions, which ran `cucumber examples\Calc` from the repository root, left all steps undefined. Change into the example folder first, as the Unix instructions do. Assisted-by: Claude Code
The workflow files were renamed from .yml to .yaml, but the README still linked to the old names. Assisted-by: Claude Code
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The examples failed in Cucumber 8 to 10.x because the “wire” plugin was not loaded. (Version 11 and later would need a new cucumber-wire-Release) The steps were undefined, and the test suite got stuck. The analysies, implementation and test were realized with Claude Code, manual tests and reviews were done for all changes.
Details
The changes include:
features/support/wire.rbto Calc, CalcQt, and FeatureShowcase.run-linux.shandqt5.yamlnow use--strict. Missing step definitions will fail the build.CUCUMBER_VERSION. It defaults to7.1but supports10.run-all.yamltests 7.1 on Ubuntu 22.04 and 10 on Ubuntu 24.04 (Cucumber 10 needs Ruby ≥ 3.1). NOTE: this ist the first job on ubuntu-24.04wire.rb..ymlto.yaml.Motivation and Context
This software is actively used in our project. Because the README was outdated, we never updated Cucumber in our test infrastructure. This PR fixes the compatibility issue and helps other users upgrade to newer versions.
How Has This Been Tested?
Tested locally on Linux (GCC 15,
CUKE_STRICT=on) with Calc (GTest, Boost, FuncArgs) and FeatureShowcase:wire.rbbundle installwith the new Gemfile works.Tested in CI with an exception of the already failing windows builds: CI-Run
Types of changes
Checklist: