Skip to content

GraphQL

Extends Helper

GraphQL helper allows to send additional requests to a GraphQl endpoint during acceptance tests. Axios library is used to perform requests.

  • endpoint: GraphQL base URL
  • timeout: timeout for requests in milliseconds. 10000ms by default
  • defaultHeaders: a list of default headers
  • onRequest: a async function which can update request object.
GraphQL: {
endpoint: 'http://site.com/graphql/',
onRequest: (request) => {
request.headers.auth = '123';
}
}

Send GraphQL requests by accessing _executeQuery method:

this.helpers['GraphQL']._executeQuery({
url,
data,
});
  • config

Executes query via axios call

Prepares request for axios call

Returns object graphQLRequest

Adds a header for Bearer authentication

// we use secret function to hide token from logs
I.amBearerAuthenticated(secret('heregoestoken'))
  • accessToken (string | CodeceptJS.Secret) Bearer access token

Sets request headers for all requests of this test

Send query to GraphQL endpoint over http

I.sendMutation(`
mutation createUser($user: UserInput!) {
createUser(user: $user) {
id
name
email
}
}
`,
{ user: {
name: 'John Doe',
email: 'john@xmail.com'
}
},
});
  • mutation String
  • variables object? that may go along with the mutation
  • options object? are additional query options
  • headers object?

Returns any Promise

Send query to GraphQL endpoint over http. Returns a response as a promise.

const response = await I.sendQuery('{ users { name email }}');
// with variables
const response = await I.sendQuery(
'query getUser($id: ID) { user(id: $id) { name email }}',
{ id: 1 },
)
const user = response.data.data;
  • query String
  • variables object? that may go along with the query
  • options object? are additional query options
  • headers object?

Returns any Promise