Сумерки не выполняют нажатие кнопки и спонтанные обновления поля время от времени - PullRequest
0 голосов
/ 14 апреля 2019

У меня две проблемы с моим тестом на закате, которые сводят меня с ума, так как я не могу понять, что я делаю неправильно.Мой тестовый пример:

/** @test */
public function update_a_job()
{
    $this->browse(function (Browser $browser)
    {
        $browser
            ->visit(route('jobs-overview', ['project' => 1, 'customerprofile' => 1]))
            ->click('@dusk-edit-job')
            ->type('jobOutcome', 'Renamed job outcome.')
            ->type('@dusk-job-purpose-contenteditable-1', 'Renamed job purpose.')
            ->select('@dusk-job-purpose-rating-1', 5)
            ->select('jobImportance', 5)
            ->select('jobFrustration', 5)
            ->click('@dusk-update-job')
            ->screenshot('current_state')
            ->dump()
            ->assertSee('Renamed job outcome.')
            ->assertSee('Renamed job purpose.');
    });
}

Проблемы:

->click('@dusk-update-job') никогда не выполняется.

Соответствующий раздел dump ():

<div class="form-group row">\n
    <div class="col-6">\n
        <a href="http://ps.dev/en/app/projects/1/customerprofiles/1/jobs" class="btn btn-default waves-effect waves-light">Back</a>\n
    </div>\n
    <div class="col-6 text-right">\n
        <button dusk="dusk-update-job" class="btn btn-default waves-effect waves-light">Next</button>\n
    </div>\n
</div>\n

->type('@dusk-job-purpose-contenteditable-1', 'Renamed job purpose.') периодически обновляется.

Соответствующий раздел dump ():

<ul id="jobPurposeList" class="list-group">\n
    <li class="list-group-item d-flex justify-content-between flex-nowrap">\n
        <input type="hidden" name="jobPurpose[1][db]" value="1" />\n
        <span class="jobPurposeListItem flex-grow-1 mr-auto" contenteditable="true" dusk="dusk-job-purpose-contenteditable-1"\n
            <input type="hidden" name="jobPurpose[1][purpose]" value="A first job purpose." dusk="dusk-job-purpose-value-1" />A first job purpose.\n
        </span>\n
            <div id="jobPurposeOptions">\n
                <select name="jobPurpose[1][rating]" class=" form-control" required="" dusk="dusk-job-purpose-rating-1">\n
                    <option value="" selected="" disabled="">---</option>\n
                    <option value="1">Not important</option>\n
                    <option value="2" selected="">Slightly Important</option>\n
                    <option value="3">Moderately important</option>\n
                    <option value="4">Important</option>\n
                    <option value="5">Very important</option>\n
                </select>\n
            </div>\n
            <span class="deleteJobPurposeFromPurposeList">\n
            <i class="fa fa-trash-o"></i>\n
        </span>\n
    </li>\n
</ul>\n

Кто-нибудь имеет представление о том, что я делаю неправильно, как я могу дополнительно отладить проблему или что я могу сделать, чтобы оптимизировать тестовый пример?

1 Ответ

0 голосов
/ 15 апреля 2019

Я получил ценные материалы на другой доске обсуждений. Наконец, я решил с помощью:

Я наконец-то получил:

/** @test */
public function update_a_job()
{
    $this->browse(function (Browser $browser)
    {
        $browser
            ->visit(route('jobs-overview', ['project' => 1, 'customerprofile' => 1]))
            ->click('@dusk-edit-job')
            ->type('jobOutcome', 'Renamed job outcome.')
            ->keys('@dusk-job-purpose-contenteditable-1', 'Updated: ')
            ->select('@dusk-job-purpose-rating-1', 5)
            ->select('jobImportance', 5)
            ->select('jobFrustration', 5)
            ->press('@dusk-update-job')
            ->assertSee('Renamed job outcome.')
            ->assertSee('Updated: A first job purpose.');
    });
}

Извлеченные уроки:

  • Существует отличный инструмент под названием Laravel TestTools, который также можно использовать для отладки.
  • Убедитесь, что необходимо применить метод Dusks click () или press ().
...