Rspec/Capybara 跨行和列匹配数据

Rspec/Capybara matching data across rows and columns

我 HTML 看起来像:

<div class="row">
  <div class="column">
    Customer Alice
  </div>
  <div class="column">
    Status: enrolled / signed
  </div>
</div>
<div class="row">
  <div class="column">
    Customer Boris
  </div>
  <div class="column">
    Status: signed
  </div>
</div>

在跨行和列匹配方面遇到一些挑战。

使用 Rspec/Capybara 时,我会更新 Boris 的详细信息,以便他的状态变为 enrolled / signed

<div class="row">
  <div class="column">
    Customer Alice
  </div>
  <div class="column">
    Status: enrolled / signed
  </div>
</div>
<div class="row">
  <div class="column">
    Customer Boris
  </div>
  <div class="column">
    Status: enrolled / signed
  </div>
</div>

这很容易由人在屏幕上直观地确认。

由于我使用的是 Capybara 和 Poltergeist :),我如何轻松匹配以确认 Boris 的状态在规范中预计为 enrolled / signed

类似

row = find('.row', text: 'Customer Boris')
expect(row).to have_text('enrolled')

会做你想做的事——如果你想一次做所有事情,你可以为文本匹配传递一个正则表达式,这样

expect(page).to have_selector('.row', text: /Customer Boris.*enrolled/)

或类似的东西