首页 > 解决方案 > RSpec 功能规范中未呈现的链接

问题描述

以下代码应该呈现一些链接,但是当在 RSpec 中执行功能规范以对其进行测试时,即使经过长时间的睡眠,链接也不存在,save_and_open_screenshot它们仍然不会出现。这样做save_and_open_page确实表明存在链接。

%nav#sidebar
  = form_with url: entries_path, local: true, method: :get do |f|
    = f.text_field :search
    = button_tag type: 'submit' do
      %i.fas.fa-search
  %ul.nav.flex-column.pb-5.mb-5
    - months.each do |month|
      %li.nav-item
        .nav-link{class: (current_page?(entries_path(month: month.to_date)) && 'active')}
          = link_to month.strftime('%b-%Y'), entries_path(month: month.to_date)

侧边栏上的 CSS:

@import 'bootstrap'
@import 'fontawesome'

#sidebar
  padding: 10px 0 30px 0
  border-right: 1px solid #ddd
  width: 200px
  border-radius: 0 0 0 4px
  transition: margin .3s

  @include media-breakpoint-down(md)
    position: absolute
    top: 0
    bottom: 0
    z-index: 9
    margin-left: -200px

    &.visible
      margin-left: 0

  .nav-link
    @extend .d-flex
    @extend .align-items-center
    height: 40px
    padding: 0 30px

    &.active
      position: relative
      font-weight: bold

我也在这个项目上使用 turbolinks,不知道这是否会以任何方式干扰规范中链接的呈现。

标签: ruby-on-railsrspecbootstrap-4capybara

解决方案


该部分margin-left: -200px中的@include media-breakpoint-down(md)看起来可能是罪魁祸首。给定特定的屏幕尺寸(无法确定您发布的内容),侧边栏将隐藏在屏幕的左边缘(因此不可见)。您可能需要为正在运行的测试正确设置浏览器的窗口大小。


推荐阅读