Laravel Сумерки видят скрытый текст - PullRequest
0 голосов
/ 25 января 2020

Я пытаюсь протестировать довольно простые вещи с помощью Laravel Dusk (PHP).

У меня есть div, содержащий описание продукта, сгенерированное с несколькими тегами html внутри примерно так:

<div class="col-xs-12 product_description_container">
   {!! $product->description !!}
</div>

My CSS устанавливает максимальную высоту и скрывает все, что переполняет эту высоту:

.product_description_container {
    max-height: 380px;
    overflow: hidden;
}

Чтобы проверить, что описание хорошо усечено мой тест устанавливает описание из 20 строк:

create(Product::class, ['description' => 'line 01 <br>line 02 <br>line 03 <br>line 04 <br>line 05 <br>line 06 <br>line 07 <br>line 08 <br>line 09 <br>line 10 <br>line 11 <br>line 12 <br>line 13 <br>line 14 <br>line 15 <br>line 16 <br>line 17 <br>line 18 <br>line 19 <br>line 20 <br>']);

$this->browse(function (Browser $browser) {
   $browser
      ->visit('/myproductroute')
      ->assertSee('line 01')
      ->assertSee('line 10')
      ->assertSee('line 15')
      ->assertDontSee('line 16')
});

При выполнении теста у меня появляется эта ошибка: Saw unexpected text [line 16] within element [body].

Но вот скриншот, полученный мне от Dusk: Снимок экрана с ошибкой

Кажется, что assertSee() не только sees, но и способен достичь того, что скрыто.

Как бы я сделал эту работу?

1 Ответ

0 голосов
/ 25 января 2020

Я нашел, как решить эту проблему.

Здесь текст описания, который я создаю, всего лишь text <br>, поэтому у Dusk нет возможности отделить, какие элементы есть, а какие нет. Это просто берет целое text <br> text <br> ... как видимое.

Чтобы это заработало, мне пришлось свернуть строки в <p> теги:

create(
   Product::class, 
   ['description' => 
     '<p>line 01</p>
      <p>line 02</p>
      <p>line 03</p>
      ...'
   ]);
...
...