Отправьте форму POST в Cypress и перейдите на страницу результатов - PullRequest
1 голос
/ 07 июня 2019

У меня проблемы с загрузкой тела ответа Cypress при использовании команды cy.request ().

В нашем приложении, когда форма заполнена и отправлена, она отправляет, а тело ответа - новая страница.

Когда я пытаюсь сделать это в Cypress, то программно заполняю форму. Поэтому я настроил команду cy.request () с телом, заполненным полями формы, что аналогично тому, что происходит, когда вы заполняете его вручную. Когда я запускаю команду, я вижу консоль и вижу, что возвращается правильное тело, но страница нового документа не загружается. Так что я просто сижу на старой пустой странице формы.

cy.request({
        url: "company-webpage-form-url.com",
        method: "POST",
        form: true,
        body: {
            first_name: "first_name",
            last_name: "last_name",
            company_name: "company_name",
            address1: "address1",
            address2: "address2",
            city: "city",
            state: "NY",
            zip: "13903",
            country: "US",
            phone_number: "607-555-5555",
            phone_ext: "555",
            fax_number: "fax_number",
            fax_ext: "fax_ext",
            email: "developer@company.com",
            email_2: "developer@company.com",
            user_data: "Continue"
        }
    });

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

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

Я в недоумении, как заставить кипарис загрузить тело ответа, которое находится в форме документа (новая страница). У кого-нибудь есть советы?

Редактировать: Я должен добавить это - причина, по которой я ищу заполнение формы из POST, заключается в том, что форма необходима для того, чтобы я мог проверить, работают ли определенные опции или нет. У меня есть один тест, который обеспечивает работу полей формы и отправку по мере необходимости, но для 30+ вариантов, которые необходимо проверить на другой стороне этой формы, я хотел следовать рекомендациям Cypress - не заполнять форму вручную один раз (они показывают пример с логином на сайте).

Ответы [ 2 ]

2 голосов
/ 07 июня 2019

Если вы хотите смоделировать форму POST при переходе на новую страницу, вы можете использовать cy.visit() для этого! Просто измените ваш request на visit и он должен работать:

cy.visit({
        url: "company-webpage-form-url.com",
        method: "POST",
        body: {
            first_name: "first_name",
            last_name: "last_name",
            company_name: "company_name",
            address1: "address1",
            address2: "address2",
            city: "city",
            state: "NY",
            zip: "13903",
            country: "US",
            phone_number: "607-555-5555",
            phone_ext: "555",
            fax_number: "fax_number",
            fax_ext: "fax_ext",
            email: "developer@company.com",
            email_2: "developer@company.com",
            user_data: "Continue"
        }
    });
0 голосов
/ 07 июня 2019

cy.request() предназначен для доступа к API для настройки ваших тестов, он вообще не взаимодействует с тестируемым приложением или DOM.

Если вы хотитеЧтобы проверить отправку формы, используйте cy.get(), cy.type() и cy.click(), чтобы взаимодействовать с формой так, как реальный пользователь:

// fill out a form field
cy.get('input[name="first_name"]')
.type('first name here')
.get('input[name="last_name"]')
.type('last name here')
/** fill out more form fields **/

// simulate clicking submit
cy.get('input[type=submit]')
.click()
...