diff --git a/lib/rspec/rails/example/system_example_group.rb b/lib/rspec/rails/example/system_example_group.rb index 59c5606cca..e0f395bce0 100644 --- a/lib/rspec/rails/example/system_example_group.rb +++ b/lib/rspec/rails/example/system_example_group.rb @@ -41,7 +41,7 @@ def method_name @method_name ||= [ self.class.name.underscore, RSpec.current_example.description.underscore - ].join("_").tr(CHARS_TO_TRANSLATE.join, "_")[0...200] + "_#{rand(1000)}" + ].join("_").tr(CHARS_TO_TRANSLATE.join, "_").byteslice(0...200).scrub("") + "_#{rand(1000)}" end # Delegates to `Rails.application`. diff --git a/spec/rspec/rails/example/system_example_group_spec.rb b/spec/rspec/rails/example/system_example_group_spec.rb index 862f8cdda2..889ac818e1 100644 --- a/spec/rspec/rails/example/system_example_group_spec.rb +++ b/spec/rspec/rails/example/system_example_group_spec.rb @@ -16,6 +16,15 @@ module RSpec::Rails expect(example.send(:method_name)).to start_with('method_name') end end + + it "slices long method name - #{'あ'*100}" do + group = RSpec::Core::ExampleGroup.describe do + include SystemExampleGroup + end + example = group.new + group.hooks.run(:before, :example, example) + expect(example.send(:method_name).bytesize).to be <= 210 + end end describe '#driver' do