Я писал тест с Laravel Dusk, чтобы убедиться, что на индексной странице, скажем, 10 статей.
Вот некоторый HTML-код:
<h1>A list of articles</h1>
<ul>
@foreach($articles as $article)
<li class="article-item"> {{ $article->title }}</li>
@endforeach
</ul>
Я думал, что в моем тестовом файле я мог сначала выбрать все li.article-item
затем утверждают, что существует 10 таких элементов.
Код может быть:
$this->browse(function ($browser) {
$browser->visit('/articles')
->assertSee('A list of articles');
// no such method
$elements = $browser->findElements('.article-item');
$this->assertCount(10, $elements);
});
Но на самом деле, похоже, что Laravel Dusk не поддерживает выбор нескольких элементов одновременно. Итак, как в этом случае я могу структурировать свой тест? Есть ли шанс, что в сумерках я использую WebDriver API для выбора этих элементов?
Спасибо!
Оказывается, что экземпляр $ browser хранит используемый драйвер, что означает, что в тестовом методе я действительно могу выбрать элемент HTML через API WebDriver.
Таким образом, возможное решение может быть
/** @test */
public function it_displays_a_list_of_articles()
{
$this->browse(function ($browser) {
$browser->visit('/articles');
$elements = $browser->driver->findElements(WebDriverBy::className('article-item'));
$this->assertCount(10, $elements);
});
}
Других решений пока нет …