GraphQL Query Generator by IBM
GraphQL Query Generator is an interesting library brought to you by the IBM team, which's the main idea is to allow users to generate randomized GraphQL queries from any given GraphQL schema.
The first thought that comes to your mind might be:
"Why I may ever want a bunch of randomized queries?"
but giving it a second thought it might be quite useful. The team behind the GraphQL Query Generator suggested two basic use-cases for their library:
- Engineering - when operating a GraphQL service you might find this library useful for:
- developing a collection of test modules of GraphQL queries,
- developing a test group of queries to check the effect of performance improvements,
- Scientific - to learn about the characteristics of various GraphQL services.
The library provides two functions for generating random GraphQL queries, both expecting a GraphQL schema, as well as specific instructions provided in configuration object as an input:
getRandomQuery(schema: GraphQLSchema, config: Configuration)- this function produces a random query from the given schema, considering configuration passed as an input,
getRandomMutation(schema: GraphQLSchema, config: Configuration)- that produces a random mutation from the given schema, considering passed configuration.
The configuration object accepts a set of predefined properties i.e.:
maxDepth- that defines the maximum depths of the query/mutation to generate,
argumentsToIgnore- in which you can list arguments names that should be ignored,
considerInterfaces- which a signal for the generator that it should create queries containing interfaces,
considerUnions- that creates queries that contain unions etc.
The full list of available properties is available in the GraphQL Query Generator docs.
Sample GraphQL Query Generator configuration object
GraphQL Query Generator is a great addition to the already broad spectrum of GraphQL tools. Its a relatively new library that is worth experimenting with as maybe you could find some other innovative ways it could be used by the GraphQL community.