Cypress начал выдавать ошибку 417 Expectation Failed на всех POST и PUT XMLHttpRequest - PullRequest
0 голосов
/ 22 марта 2019

Все POST и PUT XMLHttpRequest, сделанные в Cypress, недавно начали выдавать 417 Expectation Failed. Однако все это работает в веб-приложении, когда я перемещаюсь по нему вручную.

Весь мой код раньше хорошо работал без каких-либо проблем.

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

Cypress.Commands.add("Post_Client", () => {
  cy.fixture(Cypress.env("ClientInputFile")).then(clientoBJ => {
    cy.fixture(clientoBJ.imagePath, "binary").then(imageBin => {
      Cypress.Blob.binaryStringToBlob(imageBin, clientoBJ.imageType).then(
        blob => {
          const xhr = new XMLHttpRequest();
          const data = new FormData();
          data.set(clientoBJ.nameatr, clientoBJ.nameVal);
          data.set(clientoBJ.imageatr, blob);
          xhr.open(
            "POST",
            Cypress.env("APIBaseURL") + Cypress.env("ClientPostURL"),
            false
          );
          xhr.setRequestHeader("accept", "application/json");
          xhr.setRequestHeader("access-token", accesstoken);
          xhr.setRequestHeader("client", client);
          xhr.setRequestHeader("expiry", expiry);
          xhr.setRequestHeader("token-type", tokentype);
          xhr.setRequestHeader("uid", uid);
          xhr.onload = function() {
            if (this.status === 201) {
              cy.writeFile(
                Cypress.env("ClientOutputFile"),
                JSON.parse(this.responseText)
              );
              cy.readFile(Cypress.env("IDStore")).then(obj => {
                obj.clientID = JSON.parse(this.responseText).client.id;
                cy.writeFile(Cypress.env("IDStore"), obj);
              });
            }
          };
          xhr.send(data);
        }
      );
    });
  });
});

А потом это называется в тесте

  it.only("CLIENT API POST TEST", () => {
    cy.Post_Client();
  });

1 Ответ

0 голосов
/ 27 марта 2019

Теперь это исправлено. Было две проблемы, вызвавшие это, и обе были на прикладном уровне.

Проблема № 1 - Каким-то образом мы выбрали 417 в качестве кода ошибки для любых необработанных событий. Исправлено - теперь мы используем код ошибки 422 для необработанных объектов

Проблема № 2 - Метод добавления formData имеет три параметра - (имя, значение, имя файла), где имя файла является необязательным. Это сделано обязательным в коде приложения в последнее время. исправить -

data.set(
            clientoBJ.imageatr,
            blob,
            clientoBJ.imagePath.substring(
              clientoBJ.imagePath.lastIndexOf("//") + 2
            )
          );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...