Skip to content

Commit 7180f48

Browse files
committed
test: ✅ rewrite scoped test step
1 parent 273d50b commit 7180f48

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
@@ -214,17 +214,29 @@ def check_attribute_equal_if_present(field, attribute, attr_type, expected)
214214
end
215215
end
216216

217-
Then(/^on the (?:browser|browsers) (.*): (.+)/) do |spec, step_text|
218-
current_platform = $browser.name
219-
current_version = $browser.version
220-
221-
browsers = spec.split(",")
217+
Then(/^on ((?:[A-z]+ versions (?:>=?|<=?|==) [0-9.]+(?:, )?)+):$/) do |browser_specs, steps_to_run|
218+
spec_matcher = /^([A-z]+) versions (>=?|<=?|==) ([0-9.]+)$/
222219

223-
for browser in browsers do
224-
name, version = browser.split(" ")
225-
step(step_text) if current_platform.casecmp(name).zero? && current_version >= version.to_i
226-
end
220+
browser_specs.split(", ").each do |browser_spec|
221+
browser_spec.scan(spec_matcher) do |name, operator, version|
222+
should_run_steps = $browser.name.casecmp?(name) && $browser.version.send(operator, version.to_i)
223+
224+
# make sure this step is debuggable!
225+
$logger.debug("#{$browser.name} == #{name} && v#{$browser.version} #{operator} #{version}? #{should_run_steps}")
226+
227+
if should_run_steps
228+
steps_to_run.each_line(chomp: true) do |step_to_run|
229+
step(step_to_run)
230+
end
231+
else
232+
indent = " " * 4
233+
# e.g. "a step\nanother step\n" -> " 1) a step\n 2) another step"
234+
steps_indented = steps_to_run.each_line.map.with_index(1) { |step, i| "#{indent}#{i}) #{step.chomp}" }.join("\n")
227235

236+
$logger.info("Skipping steps on #{$browser.name} v#{$browser.version}:\n#{steps_indented}")
237+
end
238+
end
239+
end
228240
end
229241

230242
module Maze

0 commit comments

Comments
 (0)