Skip to content

Commit c4751bd

Browse files
committed
test: ✅ rewrite scoped test step
1 parent 6878def commit c4751bd

File tree

2 files changed

+30
-12
lines changed

2 files changed

+30
-12
lines changed

test/browser/features/resource-load-spans.feature

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,14 @@ Feature: Resource Load Spans
2626
And the trace payload field "resourceSpans.0.scopeSpans.0.spans.1" string attribute "http.flavor" equals "1.1"
2727

2828
# Image status code and body size have patchy browser coverage
29-
And on the browser Chrome 109: the trace payload field "resourceSpans.0.scopeSpans.0.spans.1" integer attribute "http.status_code" equals 200
29+
And on Chrome versions >= 109:
30+
"""
31+
the trace payload field "resourceSpans.0.scopeSpans.0.spans.1" integer attribute "http.status_code" equals 200
32+
"""
3033

3134
# Actually Safari 16.4 but our test devices currently use 16.3, this can be dropped to 16 when the devices update
32-
And on the browsers Chrome 54, Android 54, Safari 17, iOS 17, Firefox 45, Edge 17: the trace payload field "resourceSpans.0.scopeSpans.0.spans.1" integer attribute "http.response_content_length" equals 2202
33-
And on the browsers Chrome 54, Android 54, Safari 17, iOS 17, Firefox 45, Edge 17: the trace payload field "resourceSpans.0.scopeSpans.0.spans.1" integer attribute "http.response_content_length_uncompressed" equals 2202
35+
And on Chrome versions >= 54, Android versions >= 54, Safari versions >= 17, iOS versions >= 17, Firefox versions >= 45, Edge versions >= 17:
36+
"""
37+
the trace payload field "resourceSpans.0.scopeSpans.0.spans.1" integer attribute "http.response_content_length" equals 2202
38+
the trace payload field "resourceSpans.0.scopeSpans.0.spans.1" integer attribute "http.response_content_length_uncompressed" equals 2202
39+
"""

test/browser/features/steps/browser-steps.rb

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -194,17 +194,29 @@
194194
end
195195
end
196196

197-
Then(/^on the (?:browser|browsers) (.*): (.+)/) do |spec, step_text|
198-
current_platform = $browser.name
199-
current_version = $browser.version
200-
201-
browsers = spec.split(",")
197+
Then(/^on ((?:[A-z]+ versions (?:>=?|<=?|==) [0-9.]+(?:, )?)+):$/) do |browser_specs, steps_to_run|
198+
spec_matcher = /^([A-z]+) versions (>=?|<=?|==) ([0-9.]+)$/
202199

203-
for browser in browsers do
204-
name, version = browser.split(" ")
205-
step(step_text) if current_platform.casecmp(name).zero? && current_version >= version.to_i
206-
end
200+
browser_specs.split(", ").each do |browser_spec|
201+
browser_spec.scan(spec_matcher) do |name, operator, version|
202+
should_run_steps = $browser.name.casecmp?(name) && $browser.version.send(operator, version.to_i)
203+
204+
# make sure this step is debuggable!
205+
$logger.debug("#{$browser.name} == #{name} && v#{$browser.version} #{operator} #{version}? #{should_run_steps}")
206+
207+
if should_run_steps
208+
steps_to_run.each_line(chomp: true) do |step_to_run|
209+
step(step_to_run)
210+
end
211+
else
212+
indent = " " * 4
213+
# e.g. "a step\nanother step\n" -> " 1) a step\n 2) another step"
214+
steps_indented = steps_to_run.each_line.map.with_index(1) { |step, i| "#{indent}#{i}) #{step.chomp}" }.join("\n")
207215

216+
$logger.info("Skipping steps on #{$browser.name} v#{$browser.version}:\n#{steps_indented}")
217+
end
218+
end
219+
end
208220
end
209221

210222
module Maze

0 commit comments

Comments
 (0)