Graphql test serveral stages and every stage have multiple request

Hi @solaris !

Welcome to the community forums! :wave:

I think the most proper way of solving your need is using End of test.

However, you achieve something similar to your needs by using the thresholds and tags.

So the following script:

import http from "k6/http";
import { sleep } from "k6";
import { tagWithCurrentStageIndex } from 'https://jslib.k6.io/k6-utils/1.3.0/index.js';

export let options = {
    stages: [
        { target: 5, duration: "5s"},
        { target: 5, duration: "5s"},
        { target: 15, duration: "5s"},
    ],
    thresholds: {
      'http_req_duration{stage:0,sport:football}': ['avg < 200'],
      'http_req_duration{stage:0,sport:racing}': ['avg < 200'],
      'http_reqs{stage:0,sport:football}': ['count>0'],
      'http_reqs{stage:0,sport:racing}': ['count>0'],
      'http_reqs{stage:1,sport:football}': ['count>0'],
      'http_reqs{stage:1,sport:racing}': ['count>0'],
      'http_reqs{stage:2,sport:football}': ['count>0'],
      'http_reqs{stage:2,sport:racing}': ['count>0'],
    }    
};

export default function() {
   tagWithCurrentStageIndex();

   
   http.get("https://test.k6.io/", {
      tags: {sport: "football"}
   })

   http.get("https://test.k6.io/", {
      tags: {sport: "racing"}
   })

   http.get("https://test.k6.io/", {
      tags: {sport: "racing"}
   })
    
   sleep(1);
}

can produce output like:

Let me know if that answers,
Cheers!