Cypress w / graphql - возникли проблемы с получением AUTH при тестировании через пользовательский интерфейс.Лучший способ заглушить мутацию? - PullRequest
0 голосов
/ 24 июня 2018

Итак, если я тестирую страницы в вакууме без особого взаимодействия с бэкэндом, это прекрасно работает.У меня возникают проблемы с фактическим взаимодействием с моим пользовательским интерфейсом, если он затрагивает какой-либо тип сервиса.По сути, ничто не является Auth'd.Я пытаюсь программно установить Cookie, без игры в кости.Я пытаюсь прочитать печенье, нет.Кстати, весь мой сайт требует входа в систему.

cy.setCookie('sess', ';askjdfa;skdjfa;skdjfa;skdjfa;skfjd');<-- does not work

cy.getCookie('sess').should('exist') <-- does not work

У меня возникла проблема с действительно лучшим способом "проверить" это.Например, у меня есть раздел учетной записи, в котором пользователь может «обновить» свои личные данные.Я пытаюсь заполнить форму (с помощью тестирования пользовательского интерфейса), но отправка отклонена, без проверки подлинности.ДАЖЕ ЧЕРЕЗ Я только что вошел (через UI-тестирование).- Я знаю, что мне нужно удалить это, так как это плохая практика для UI-Login для каждого раздела моего сайта.

Итак, я не знаю, как заглушить вызовы graphql с помощью cy.request ().Вот моя мутация.

mutation Login($email: Email!, $password: String!) {
  login(email: $email, password: $password) {
    userID
    firstName
    lastName
  }
}
  1. Сейчас я импортирую спецификацию входа в систему для каждого раздела сайта, который я тестирую.Я знаю, что это анти-шаблон.Как решить эту проблему.

  2. Мой AUTH (cookie) не устанавливается.Даже когда я пытаюсь установить его программно, он не работает.

  3. Может быть, я должен просто заглушить свои мутации в GraphQL?Как?

  4. Наконец, если я заглушаю свои мутации в GraphQl, как мне обновить сеанс (через мой основной запрос сеанса).Если я смогу заставить эти мутации работать, то при обновлении страницы мои обновленные данные будут получены, поэтому мне эта часть не нужна полностью.

Есть идеи?

1 Ответ

0 голосов
/ 25 июня 2018

Я не делал заглушку и все такое, поскольку вы спрашивали, как мутация будет работать с cy.request в моем другом посте. Я сделал это таким образом, и это просто в принципе работает. Надеюсь, это поможет

Сначала я создал const

export const join_graphQL = (query, extra={}) => {
    return `mutation {
        ${query}(join: { email: "${extra.email}", id: "${extra.id}" }) {
                id, name, email
            }    
    }`
};

запрос конфигурации const

export const graphqlReqConfig = (body={}, api=graphQlapi, method='post') => {
    return {
        method,
        body,
        url: api,
        failOnStatusCode: false
    }
};

запрос мутации с cy.request

const mutationQuery = join_graphQL('mutationName', {
    email: "email",
    id: 38293
});

cy.request(graphqlReqConfig({
    query: mutationQuery
})).then((res) => {
    const data = res.body.data['mutationName'];  // your result
});

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

в основном поля должны быть строковыми, например "${extra.email}", иначе это приведет к ошибке. Не уверен, как работает graphql, но если я просто сделаю ${extra.email}, я получу ошибку, которую я забыл, что это была за ошибка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...