Skip to main content

Command Palette

Search for a command to run...

Rspec and Capybara: how to use regex or stop caring about whitespaces

Updated
1 min read
Rspec and Capybara: how to use regex or stop caring about whitespaces
T

10+ years most with Ruby on Rails and JavaScript frontend and some Go. My first language is C for 3 years in university.

I recently updated from Slim template to ERB to use Herb (Thanks Marco).

I had to update a test that was very strict on the format. I realized that Capybara::Node::Simple doesn’t provide a selector for regex.

The page object doesn’t have a match? method

expect(page).to have_content('Name:Foobar') # ✅
expect(page).to match(/Name:Foobar/) # ❌

I needed to use the underlying object which isn’t body or content, this time it’s text, cool, cool, cool, coooool

expect(page.text).to match(/Name:\W+Foobar/) # ✅

The full diff:

[EDIT] A better solution for whitespaces normalize_ws

expect(page).to have_content('Name: Foobar', normalize_ws: true)

I still need to update the string to include a space but it feels a lot cleaner that way. Thanks to my coworker for the hint.