Skip to content

Commit be45b49

Browse files
committed
test: ✅ rewrite scoped test step
1 parent 009819c commit be45b49

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
@@ -62,8 +62,14 @@ Feature: Resource Load Spans
6262
And the trace payload field "resourceSpans.0.scopeSpans.0.spans.2" string attribute "http.flavor" equals "1.1"
6363

6464
# Image status code and body size have patchy browser coverage
65-
And on the browser Chrome 109: the trace payload field "resourceSpans.0.scopeSpans.0.spans.1" integer attribute "http.status_code" equals 200
65+
And on Chrome versions >= 109:
66+
"""
67+
the trace payload field "resourceSpans.0.scopeSpans.0.spans.1" integer attribute "http.status_code" equals 200
68+
"""
6669

6770
# Actually Safari 16.4 but our test devices currently use 16.3, this can be dropped to 16 when the devices update
68-
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
69-
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
71+
And on Chrome versions >= 54, Android versions >= 54, Safari versions >= 17, iOS versions >= 17, Firefox versions >= 45, Edge versions >= 17:
72+
"""
73+
the trace payload field "resourceSpans.0.scopeSpans.0.spans.1" integer attribute "http.response_content_length" equals 2202
74+
the trace payload field "resourceSpans.0.scopeSpans.0.spans.1" integer attribute "http.response_content_length_uncompressed" equals 2202
75+
"""

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

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

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

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

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

211223
module Maze

0 commit comments

Comments
 (0)