в контексте Cypress: Как ждать запрос Apollo Client Graphql - PullRequest
1 голос
/ 16 марта 2019

В своих тестах я выполняю запросы graphql через ApolloClient и мутации для настройки моих данных.Используя Cypress, как мне настроить это так, чтобы я мог дождаться выполнения этих шагов, прежде чем продолжить:

сейчас я взломал это так ...

  cy.wrap(null)
    .then(() => register({ email, template: 'basic' }))
    .then(() => {
      login(email);
    })
    .then(resp => console.log('Logged IN: ', resp));

  console.log('Hello [This logs out BEFORE the logged in -- i want to wait]') 
  cy.wait(1000);
  cy.visit('/');

но я хотел быждать всего блока cy.wrap.

У кого-нибудь есть хорошее рабочее решение.

Спасибо!


, если это полезно, два упомянутых методавыглядеть следующим образом.TestClient является экземпляром ApolloClient

export function login(email: string) {
  const client = new TestClient();

  return client
    .mutate<LoginMutation, LoginMutationVariables>({
      mutation: loginMutation,
      variables: { email }
    })
    .then(resp => {
      cy.setCookie('token', resp!.data!.login!.token!);
      return resp;
    });
}

и

export function register(input: IRegisterInput) {
  const { email } = input;
  const name = input.name || faker.name.findName();
  return createInvitation(email, name).then(invitaitonResponse => {
    const inviteCode = invitaitonResponse.data!.createInvitation!.invitation!.inviteCode!;

    let variables: RegisterMutationVariables = { email, inviteCode };

    if (input.template) {
      variables.template = input.template;
    }

    const client = new TestClient();
    return client.mutate<RegisterMutation, RegisterMutationVariables>({
      mutation: registerMutation,
      variables: { email, inviteCode }
    });
  });
}
...