GraphQL
GraphQL
Section titled “GraphQL”Extends Helper
GraphQL helper allows to send additional requests to a GraphQl endpoint during acceptance tests. Axios library is used to perform requests.
Configuration
Section titled “Configuration”- 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.
Example
Section titled “Example”GraphQL: { endpoint: 'http://site.com/graphql/', onRequest: (request) => { request.headers.auth = '123'; }}Access From Helpers
Section titled “Access From Helpers”Send GraphQL requests by accessing _executeQuery method:
this.helpers['GraphQL']._executeQuery({ url, data,});Methods
Section titled “Methods”Parameters
Section titled “Parameters”config
_executeQuery
Section titled “_executeQuery”Executes query via axios call
Parameters
Section titled “Parameters”requestobject
_prepareGraphQLRequest
Section titled “_prepareGraphQLRequest”Prepares request for axios call
Parameters
Section titled “Parameters”Returns object graphQLRequest
amBearerAuthenticated
Section titled “amBearerAuthenticated”Adds a header for Bearer authentication
// we use secret function to hide token from logsI.amBearerAuthenticated(secret('heregoestoken'))Parameters
Section titled “Parameters”accessToken(string | CodeceptJS.Secret) Bearer access token
haveRequestHeaders
Section titled “haveRequestHeaders”Sets request headers for all requests of this test
Parameters
Section titled “Parameters”headersobject headers list
sendMutation
Section titled “sendMutation”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' } },});Parameters
Section titled “Parameters”mutationStringvariablesobject? that may go along with the mutationoptionsobject? are additional query optionsheadersobject?
Returns any Promise
sendQuery
Section titled “sendQuery”Send query to GraphQL endpoint over http. Returns a response as a promise.
const response = await I.sendQuery('{ users { name email }}');// with variablesconst response = await I.sendQuery( 'query getUser($id: ID) { user(id: $id) { name email }}', { id: 1 },)const user = response.data.data;Parameters
Section titled “Parameters”queryStringvariablesobject? that may go along with the queryoptionsobject? are additional query optionsheadersobject?
Returns any Promise