Deep-dive into GraphQL in JMeter
Tags: performance, tutorial, testing, webperf
Published: 2020-12-08 16:23:16

<!-- wp:paragraph -->
<p>With the release of the latest version of JMeter 5.4, you can do GraphQL performance testing using GraphQL HTTP Sampler. This blog deep-dive into GraphQL in JMeter 5.4. You can check out my earlier post about the <a href="https://qainsights.com/apache-jmeter-5-4-features/" target="_blank" rel="noreferrer noopener">top features of JMeter</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:generateblocks/headline {"uniqueId":"1626f993"} -->
<h2 class="gb-headline gb-headline-1626f993 gb-headline-text">What is GraphQL?</h2>
<!-- /wp:generateblocks/headline -->

<!-- wp:paragraph -->
<p>Here is the text which is copied from graphql.org</p>
<!-- /wp:paragraph -->

<!-- wp:quote -->
<blockquote class="wp-block-quote"><p>GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data. GraphQL provides a complete and understandable description of the data in your API, gives clients the power to ask for exactly what they need and nothing more, makes it easier to evolve APIs over time, and enables powerful developer&nbsp;tools.</p></blockquote>
<!-- /wp:quote -->

<!-- wp:paragraph -->
<p>GraphQL was developed by Facebook back in 2012. It was publicly announced in 2015. Couple years ago, the project moved to GraphQL Foundation, hosted by Linux Foundation.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>You might be familiar with ReST APIs which is an architectural pattern which often  over fetch or under fetch the data. GraphQL fetches at right amount. There are a lot of differences between ReST and GraphQL, quick internet search will help you to understand the differences.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Using ReST, you might end up using the multiple requests to fetch the required data. For e.g, if you are developing Ice Cream Online Store, to fetch the New Arrivals, Dairy-Free, and All-Flavors, you need to develop multiple HTTP requests.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"id":7888,"sizeSlug":"large"} -->
<figure class="wp-block-image size-large"><img src="https://qainsights.com/wp-content/uploads/2020/12/ReST-1024x512.png" alt="Deep-dive into GraphQL in JMeter" class="wp-image-7888"/><figcaption>Deep-dive into GraphQL in JMeter</figcaption></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>If you want to fetch all the new arrivals which is dairy-free and all the flavors, you need to send multiple HTTP GET requests which is not the optimal way.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Enter GraphQL.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>By sending only one query, you will be able to fetch the right amount of data without going back and forth.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Here is the fictional GraphQL query which fetches the new arrival's dairy free, all falvor's name and id.</p>
<!-- /wp:paragraph -->

<!-- wp:code -->
<pre class="wp-block-code"><code>query {
  newarrivals {
    dairyfree {
      allflavors {
        name
        id
      }
    }
  }
}</code></pre>
<!-- /wp:code -->

<!-- wp:image {"id":7890,"sizeSlug":"large"} -->
<figure class="wp-block-image size-large"><img src="https://qainsights.com/wp-content/uploads/2020/12/GraphQL-1-1024x512.png" alt="Deep-dive into GraphQL in JMeter - GraphQL" class="wp-image-7890"/><figcaption>Deep-dive into GraphQL in JMeter - GraphQL</figcaption></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Here is the response you will get:</p>
<!-- /wp:paragraph -->

<!-- wp:code -->
<pre class="wp-block-code"><code>{
	"data": {
		"allflavors": {
			"name": "lemonbar",
			"id": "p101"
		}
	}
}</code></pre>
<!-- /wp:code -->

<!-- wp:generateblocks/headline {"uniqueId":"639fdaad"} -->
<h2 class="gb-headline gb-headline-639fdaad gb-headline-text">Before JMeter 5.4</h2>
<!-- /wp:generateblocks/headline -->

<!-- wp:paragraph -->
<p>As you aware, in JMeter 5.4, we get a new GraphQL HTTP Sampler to performance test the GraphQL queries. But without this GraphQL HTTP Sampler, you can use the HTTP Sampler to send the GraphQL request.</p>
<!-- /wp:paragraph -->

<!-- wp:generateblocks/button-container {"uniqueId":"71b05718","alignment":"center","isDynamic":true} -->
<!-- wp:generateblocks/button {"uniqueId":"1d13c3f8","hasUrl":true,"target":true,"hasIcon":true,"iconLocation":"right","backgroundColor":"#03d81c","textColor":"#ffffff","backgroundColorHover":"#222222","textColorHover":"#ffffff","paddingTop":"15","paddingRight":"20","paddingBottom":"15","paddingLeft":"20","iconPaddingRight":"","iconPaddingLeft":"0.5"} -->
<a class="gb-button gb-button-1d13c3f8" href="https://github.com/QAInsights/GraphQL-JMeter-Examples" target="_blank" rel="noopener noreferrer"><span class="gb-button-text">GraphQL Examples in JMeter Repo</span><span class="gb-icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="1em" height="1em" aria-hidden="true"><path d="M440 6.5L24 246.4c-34.4 19.9-31.1 70.8 5.7 85.9L144 379.6V464c0 46.4 59.2 65.5 86.6 28.6l43.8-59.1 111.9 46.2c5.9 2.4 12.1 3.6 18.3 3.6 8.2 0 16.3-2.1 23.6-6.2 12.8-7.2 21.6-20 23.9-34.5l59.4-387.2c6.1-40.1-36.9-68.8-71.5-48.9zM192 464v-64.6l36.6 15.1L192 464zm212.6-28.7l-153.8-63.5L391 169.5c10.7-15.5-9.5-33.5-23.7-21.2L155.8 332.6 48 288 464 48l-59.4 387.3z" fill="currentColor"></path></svg></span></a>
<!-- /wp:generateblocks/button -->
<!-- /wp:generateblocks/button-container -->

<!-- wp:paragraph -->
<p>Let us see Star Wars GraphQL demo project.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>To retrieve a Character info using the HTTP Request, below is the settings you should use.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>HTTP Method: POST</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>POST payload:</p>
<!-- /wp:paragraph -->

<!-- wp:code -->
<pre class="wp-block-code"><code>{
	"query": "{\n  hero {\n    name\n  }\n}\n"
}</code></pre>
<!-- /wp:code -->

<!-- wp:image {"align":"center","id":7897,"sizeSlug":"large"} -->
<div class="wp-block-image"><figure class="aligncenter size-large"><img src="https://qainsights.com/wp-content/uploads/2020/12/image-9.png" alt="Sample GraphQL Request" class="wp-image-7897"/><figcaption>Sample GraphQL Request</figcaption></figure></div>
<!-- /wp:image -->

<!-- wp:quote -->
<blockquote class="wp-block-quote"><p>There are three operation types in GraphQL: <code>Query</code>,&nbsp;<code>Mutation</code>, and <code>Subscription</code>.</p></blockquote>
<!-- /wp:quote -->

<!-- wp:generateblocks/headline {"uniqueId":"0af5de02"} -->
<h2 class="gb-headline gb-headline-0af5de02 gb-headline-text"><br>Deep-dive into GraphQL in JMeter 5.4</h2>
<!-- /wp:generateblocks/headline -->

<!-- wp:paragraph -->
<p>The equivalent query using the GraphQL in JMeter 5.4 would be:</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>HTTP Method: GET</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Query: <code>query=query+%7B+hero+%7B+name+appearsIn+%7D+%7D</code></p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":7898,"sizeSlug":"large"} -->
<div class="wp-block-image"><figure class="aligncenter size-large"><img src="https://qainsights.com/wp-content/uploads/2020/12/image-10.png" alt="Sample HTTP Request" class="wp-image-7898"/><figcaption>Sample HTTP Request</figcaption></figure></div>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Output in both the cases is:</p>
<!-- /wp:paragraph -->

<!-- wp:code -->
<pre class="wp-block-code"><code>{
    "data": {
        "hero": {
            "name": "R2-D2"
        }
    }
}</code></pre>
<!-- /wp:code -->

<!-- wp:paragraph -->
<p>In GraphQL HTTP Request, you have the option to enter typical parameters such as Protocol, Server Name or IP, Port etc. It inherits the properties from HTTP Request Sampler. You will also get the GraphQL related fields such as <strong>Operation Name, Query, and Variables</strong>.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":7899,"sizeSlug":"large"} -->
<div class="wp-block-image"><figure class="aligncenter size-large"><img src="https://qainsights.com/wp-content/uploads/2020/12/image-11.png" alt="GraphQL Basic Settings" class="wp-image-7899"/><figcaption>GraphQL Basic Settings</figcaption></figure></div>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>In GraphQL HTTP Request, there are two HTTP Methods: <strong>GET and POST</strong>. Other methods are irrelevant.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":7900,"sizeSlug":"large"} -->
<div class="wp-block-image"><figure class="aligncenter size-large"><img src="https://qainsights.com/wp-content/uploads/2020/12/image-12.png" alt="GraphQL Basic Settings HTTP Method" class="wp-image-7900"/><figcaption>GraphQL Basic Settings HTTP Method</figcaption></figure></div>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Also, you don't get <strong>Parameters and Body Data </strong>in GraphQL, instead you can leverage <strong>Query and Variables</strong>. <strong>File Upload </strong>option also irrelevant in here.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>In <strong>Advanced </strong>tab, you don't see <strong>Embedded Resources from HTML Files</strong>.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"id":7901,"sizeSlug":"large"} -->
<figure class="wp-block-image size-large"><img src="https://qainsights.com/wp-content/uploads/2020/12/image-13-1024x267.png" alt="GraphQL Advanced Settings" class="wp-image-7901"/><figcaption>GraphQL Advanced Settings</figcaption></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>In GraphQL HTTP Request, <strong>Query is Mandatory</strong>, <strong>Variables </strong>and <strong>Operation Name</strong> are Optional.</p>
<!-- /wp:paragraph -->

<!-- wp:generateblocks/headline {"uniqueId":"d474b1b2"} -->
<h2 class="gb-headline gb-headline-d474b1b2 gb-headline-text">GraphQL Query Example</h2>
<!-- /wp:generateblocks/headline -->

<!-- wp:paragraph -->
<p>Now let us see few examples in JMeter 5.4 using Star Wars GraphQL. You can set up the project by following the instructions mentioned <a href="https://github.com/apollographql/starwars-server" target="_blank" rel="noreferrer noopener">over here</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>To start the server, you can follow the below commands.</p>
<!-- /wp:paragraph -->

<!-- wp:code -->
<pre class="wp-block-code"><code>git clone https://github.com/apollographql/starwars-server
cd starwars-server
npm install</code></pre>
<!-- /wp:code -->

<!-- wp:paragraph -->
<p>If everything goes fine, you will be able to launch the server the <a rel="noreferrer noopener" href="http://localhost:8080/graphql" target="_blank">Playground - http://localhost:8080/graphql</a></p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":7903,"sizeSlug":"large"} -->
<div class="wp-block-image"><figure class="aligncenter size-large"><img src="https://qainsights.com/wp-content/uploads/2020/12/image-15.png" alt="Star Wars GraphQL Demo" class="wp-image-7903"/><figcaption>Star Wars GraphQL Demo</figcaption></figure></div>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>You will get the <strong>DOCS </strong>and <strong>SCHEMA </strong>for the Star Wars. It is important to understand the schema to write the queries.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>To smoke test, let us retrieve a character. Copy and paste the below query and hit CTRL + ENTER key in the browser.</p>
<!-- /wp:paragraph -->

<!-- wp:code -->
<pre class="wp-block-code"><code>{
  hero {
    name
  }
}</code></pre>
<!-- /wp:code -->

<!-- wp:paragraph -->
<p>In the right side, you will get the output as shown below.</p>
<!-- /wp:paragraph -->

<!-- wp:code -->
<pre class="wp-block-code"><code>{
  "data": {
    "hero": {
      "name": "R2-D2"
    }
  }
}</code></pre>
<!-- /wp:code -->

<!-- wp:paragraph -->
<p>Back to JMeter.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>In JMeter, let us add a GraphQL HTTP Request by right clicking on the <strong>Thread Group &gt; Add &gt; Sampler &gt; GraphQL HTTP Request</strong> as shown below. </p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":7904,"sizeSlug":"large"} -->
<div class="wp-block-image"><figure class="aligncenter size-large"><img src="https://qainsights.com/wp-content/uploads/2020/12/image-16.png" alt="Add GraphQL Request in JMeter" class="wp-image-7904"/><figcaption>Add GraphQL Request in JMeter</figcaption></figure></div>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Fill the details in the <strong>GraphQL HTTP Request</strong> as shown below. Make sure you enter the port number as <strong>8080</strong>.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":7905,"sizeSlug":"large"} -->
<div class="wp-block-image"><figure class="aligncenter size-large"><img src="https://qainsights.com/wp-content/uploads/2020/12/image-17.png" alt="Star Wars Query" class="wp-image-7905"/><figcaption>Star Wars Query</figcaption></figure></div>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Add a <strong>View Results Tree </strong>listener, and hit <strong>Run</strong>. You will get the output as shown below.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":7906,"sizeSlug":"large"} -->
<div class="wp-block-image"><figure class="aligncenter size-large"><img src="https://qainsights.com/wp-content/uploads/2020/12/image-18.png" alt="Star Wars Query Output" class="wp-image-7906"/><figcaption>Star Wars Query Output</figcaption></figure></div>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Congratulations! You have completed GraphQL test plan design in JMeter.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Let us see a little complex query which retrieves a driod information of ID 2000. Here is the query.</p>
<!-- /wp:paragraph -->

<!-- wp:code -->
<pre class="wp-block-code"><code>query {
  droid(id: 2000){
    id
    name
    friends{
      name
    }
    appearsIn
    primaryFunction
  }
}</code></pre>
<!-- /wp:code -->

<!-- wp:paragraph -->
<p><strong>Output</strong></p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":7907,"sizeSlug":"large"} -->
<div class="wp-block-image"><figure class="aligncenter size-large"><img src="https://qainsights.com/wp-content/uploads/2020/12/image-19.png" alt="" class="wp-image-7907"/><figcaption>Star Wars Query Output</figcaption></figure></div>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Now, let us make use of <strong>Variables</strong> in GraphQL. By using the <strong>Variables</strong>, you can reuse it across multiple clients.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>For example, if you want to declare some dynamic string for the <strong>Search </strong>query, you can use the below query.</p>
<!-- /wp:paragraph -->

<!-- wp:code -->
<pre class="wp-block-code"><code>query search($keyword: String) {
  search(text: $keyword) {
    __typename
  }
}
</code></pre>
<!-- /wp:code -->

<!-- wp:paragraph -->
<p>In <strong>Variables</strong>, paste the below code.</p>
<!-- /wp:paragraph -->

<!-- wp:code -->
<pre class="wp-block-code"><code>{
  "keyword": "an"
}</code></pre>
<!-- /wp:code -->

<!-- wp:paragraph -->
<p><strong>Output</strong></p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":7908,"sizeSlug":"large"} -->
<div class="wp-block-image"><figure class="aligncenter size-large"><img src="https://qainsights.com/wp-content/uploads/2020/12/image-20.png" alt="Star Wars Search Query Output" class="wp-image-7908"/><figcaption>Star Wars Search Query Output</figcaption></figure></div>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Now, let us see an example for <strong>Operation Name</strong>. If you have multiple queries, you can instruct JMeter to tell which query you would like to send.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>In the below query we are trying to fetch a character and search output, where we have labelled them as <strong>heroSearch </strong>and <strong>textSearch </strong>respectively.</p>
<!-- /wp:paragraph -->

<!-- wp:code -->
<pre class="wp-block-code"><code>query textSearch {
  search(text: "an") {
    __typename
  }
}
query heroSearch {
  hero {
    name
  }
}</code></pre>
<!-- /wp:code -->

<!-- wp:paragraph -->
<p>If you send this query as-is without specifying the <strong>Operation Name</strong>, JMeter will throw the below error.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"id":7911,"sizeSlug":"large"} -->
<figure class="wp-block-image size-large"><img src="https://qainsights.com/wp-content/uploads/2020/12/image-21.png" alt="Operation Name Error" class="wp-image-7911"/><figcaption>Operation Name Error</figcaption></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>When you have multiple queries, you must specify the <strong>Operation Name</strong>.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":7912,"sizeSlug":"large"} -->
<div class="wp-block-image"><figure class="aligncenter size-large"><img src="https://qainsights.com/wp-content/uploads/2020/12/image-22.png" alt="GraphQL Multiple Queries" class="wp-image-7912"/><figcaption>GraphQL Multiple Queries</figcaption></figure></div>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p><strong>Output</strong></p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":7913,"sizeSlug":"large"} -->
<div class="wp-block-image"><figure class="aligncenter size-large"><img src="https://qainsights.com/wp-content/uploads/2020/12/image-23.png" alt="GraphQL Multiple Queries Output" class="wp-image-7913"/><figcaption>GraphQL Multiple Queries Output</figcaption></figure></div>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Till now, we have seen examples for Query. Now, let us see about <strong>Mutations</strong>. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>If you want to update or change the object, you should send <strong>Mutations </strong>request. In this Star Wars example, we are going to mutate the reviews.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>Query</strong></p>
<!-- /wp:paragraph -->

<!-- wp:code -->
<pre class="wp-block-code"><code>mutation CreateReviewForEpisode($ep: Episode!, $review: ReviewInput!) {
  createReview(episode: $ep, review: $review) {
    stars
    commentary
  }
}</code></pre>
<!-- /wp:code -->

<!-- wp:paragraph -->
<p><strong>Variable</strong></p>
<!-- /wp:paragraph -->

<!-- wp:code -->
<pre class="wp-block-code"><code>{
  "ep": "JEDI",
  "review": {
    "stars": 5,
    "commentary": "This is a great movie!"
  }
}</code></pre>
<!-- /wp:code -->

<!-- wp:paragraph -->
<p><strong>Output</strong></p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":7914,"sizeSlug":"large"} -->
<div class="wp-block-image"><figure class="aligncenter size-large"><img src="https://qainsights.com/wp-content/uploads/2020/12/image-24.png" alt="GraphQL Variable Output" class="wp-image-7914"/><figcaption>GraphQL Variable Output</figcaption></figure></div>
<!-- /wp:image -->

<!-- wp:quote -->
<blockquote class="wp-block-quote"><p>IMPORTANT: JMeter doesn't support <strong>Subscription </strong>operation yet.</p></blockquote>
<!-- /wp:quote -->

<!-- wp:paragraph -->
<p>Even more examples are available in my GitHub repo. Please check and award a STAR.</p>
<!-- /wp:paragraph -->

<!-- wp:generateblocks/button-container {"uniqueId":"ab220eb5","alignment":"center","isDynamic":true} -->
<!-- wp:generateblocks/button {"uniqueId":"8fcebb4c","hasUrl":true,"target":true,"hasIcon":true,"iconLocation":"right","backgroundColor":"#03d852","textColor":"#ffffff","backgroundColorHover":"#222222","textColorHover":"#ffffff","paddingTop":"15","paddingRight":"20","paddingBottom":"15","paddingLeft":"20","gradient":true,"iconPaddingRight":"","iconPaddingLeft":"0.5"} -->
<a class="gb-button gb-button-8fcebb4c" href="https://github.com/QAInsights/GraphQL-JMeter-Examples" target="_blank" rel="noopener noreferrer"><span class="gb-button-text">GraphQL Examples in JMeter Repo</span><span class="gb-icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="1em" height="1em" aria-hidden="true"><path d="M440 6.5L24 246.4c-34.4 19.9-31.1 70.8 5.7 85.9L144 379.6V464c0 46.4 59.2 65.5 86.6 28.6l43.8-59.1 111.9 46.2c5.9 2.4 12.1 3.6 18.3 3.6 8.2 0 16.3-2.1 23.6-6.2 12.8-7.2 21.6-20 23.9-34.5l59.4-387.2c6.1-40.1-36.9-68.8-71.5-48.9zM192 464v-64.6l36.6 15.1L192 464zm212.6-28.7l-153.8-63.5L391 169.5c10.7-15.5-9.5-33.5-23.7-21.2L155.8 332.6 48 288 464 48l-59.4 387.3z" fill="currentColor"></path></svg></span></a>
<!-- /wp:generateblocks/button -->
<!-- /wp:generateblocks/button-container -->

<!-- wp:generateblocks/headline {"uniqueId":"097ae028"} -->
<h2 class="gb-headline gb-headline-097ae028 gb-headline-text">Pros</h2>
<!-- /wp:generateblocks/headline -->

<!-- wp:list -->
<ul><li>GraphQL HTTP Request is a part of JMeter Core. No need to install it from JMeter Plugins Manager</li><li>Supports Query and Mutations</li></ul>
<!-- /wp:list -->

<!-- wp:generateblocks/headline {"uniqueId":"e082a094"} -->
<h2 class="gb-headline gb-headline-e082a094 gb-headline-text">Con</h2>
<!-- /wp:generateblocks/headline -->

<!-- wp:list -->
<ul><li>Doesn't support Subscriptions yet</li></ul>
<!-- /wp:list -->

<!-- wp:generateblocks/headline {"uniqueId":"04548042"} -->
<h2 class="gb-headline gb-headline-04548042 gb-headline-text">Final Words</h2>
<!-- /wp:generateblocks/headline -->

<!-- wp:paragraph -->
<p>GraphQL in JMeter enables you to test the performance of GraphQL APIs without worrying about formatting the JSON and sniffing the HTTP traffic. But if you are comfortable in using HTTP Sampler, you can use. GraphQL provides a comfort and easy way to maintain the test plan.</p>
<!-- /wp:paragraph -->