Тестирование перетаскивания с behat и mink

Я пытаюсь эмулировать поведение перетаскивания пользовательского интерфейса в поведенческом тесте. Пока безуспешно, несмотря на то, что минк предположительно поддержка этого взаимодействия.

Как ни странно, мне было трудно найти какие-либо соответствующие сообщения в блогах на эту тему. Те, которые я нашел (это и http://www.pix-art.be/post/testing-drag-and-drop-with-behat-and-guzzle) мне не очень помогло. Особенно последний.

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


person guessimtoolate    schedule 20.03.2017    source источник
comment
Вы проверили это? среда. com/@smartgamma/   -  person lauda    schedule 20.03.2017
comment
Да, это также связано с моим вопросом.   -  person guessimtoolate    schedule 23.03.2017
comment
У вас есть ссылка на общедоступную демонстрацию/веб-сайт с такой функциональностью?   -  person lauda    schedule 18.08.2017
comment
](Нет, к сожалению, я не могу раскрыть код. По сути, это пользовательский интерфейс для перетаскивания элементов между столбцами. Создан с использованием dragular и угловой 1.6.*   -  person guessimtoolate    schedule 18.08.2017


Ответы (1)


вы можете найти рабочий пример в тестовом коде ownCloud, он перемещает файлы в папки с помощью перетаскивания:

    public function moveFileTo(
        $name, $destination, Session $session, $maxRetries = STANDARD_RETRY_COUNT
    ) {
        $toMoveFileRow = $this->findFileRowByName($name, $session);
        $destinationFileRow = $this->findFileRowByName($destination, $session);
        $this->initAjaxCounters($session);
        $this->resetSumStartedAjaxRequests($session);
        for ($retryCounter = 0; $retryCounter < $maxRetries; $retryCounter++) {
            $toMoveFileRow->findFileLink()->dragTo(
                $destinationFileRow->findFileLink()
            );
            $this->waitForAjaxCallsToStartAndFinish($session);
            $countXHRRequests = $this->getSumStartedAjaxRequests($session);
            if ($countXHRRequests === 0) {
                \error_log("Error while moving file");
            } else {
                break;
            }
        }
        if ($retryCounter > 0) {
            $message
                = "INFORMATION: retried to move file $retryCounter times";
            echo $message;
            \error_log($message);
        }
    }

из: https://github.com/owncloud/core/blob/47396de109965110276deb545a9bd09f375c9823/tests/acceptance/features/lib/FilesPageCRUD.php#L243

Сначала он находит NodeElement файла, который нужно переместить, затем NodeElement места назначения и вызывает $fileToBeMovedElement->dragTo($destinationElement)

Поскольку это оказалось ненадежным, вокруг функции dragTo существует цикл повторных попыток. Чтобы проверить, сработала ли операция перетаскивания, код проверяет, были ли отключены какие-либо вызовы AJAX (в этом конкретном приложении эта операция перетаскивания запускает запрос WebDAV).

person INDIVIDUAL-IT    schedule 14.01.2020