k6-cucumber-steps 1.1.2 → 1.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -9,5 +9,6 @@
9
9
  "step_definitions/*.js",
10
10
  "src/features/stepDefinitions/*.js"
11
11
  ],
12
- "liveServer.settings.port": 5501
12
+ "liveServer.settings.port": 5501,
13
+ "git.ignoreLimitWarning": true
13
14
  }
@@ -3,11 +3,9 @@
3
3
  const path = require("path");
4
4
  const fs = require("fs");
5
5
  const { spawn } = require("child_process");
6
- const yargs = require("yargs/yargs"); // Use the correct import for yargs
7
- const { hideBin } = require("yargs/helpers"); // Helper to parse CLI arguments
6
+ const yargs = require("yargs/yargs");
7
+ const { hideBin } = require("yargs/helpers");
8
8
  require("dotenv").config();
9
- const { generateHtmlReports } = require("../scripts/generateHtmlReports");
10
- const { linkReports } = require("../scripts/linkReports");
11
9
 
12
10
  console.log(`
13
11
  -----------------------------------------
@@ -15,6 +13,7 @@ console.log(`
15
13
  -----------------------------------------
16
14
  `);
17
15
 
16
+ // Parse CLI arguments
18
17
  const argv = yargs(hideBin(process.argv))
19
18
  .usage("Usage: $0 run [options]")
20
19
  .option("feature", {
@@ -24,7 +23,7 @@ const argv = yargs(hideBin(process.argv))
24
23
  })
25
24
  .option("tags", {
26
25
  alias: "t",
27
- describe: "Cucumber tags to filter scenarios",
26
+ describe: "Cucumber tags to filter scenarios (e.g., @smoke)",
28
27
  type: "string",
29
28
  })
30
29
  .option("reporter", {
@@ -46,8 +45,10 @@ const argv = yargs(hideBin(process.argv))
46
45
  })
47
46
  .help().argv;
48
47
 
48
+ // Base Cucumber arguments
49
49
  const cucumberArgs = ["cucumber-js"];
50
50
 
51
+ // Load custom configuration file if provided
51
52
  const configFileName =
52
53
  argv.configFile || process.env.CUCUMBER_CONFIG_FILE || "cucumber.js";
53
54
  const configFilePath = path.resolve(process.cwd(), configFileName);
@@ -58,8 +59,8 @@ if (fs.existsSync(configFilePath)) {
58
59
  try {
59
60
  const loadedConfig = require(configFilePath);
60
61
  configOptions = loadedConfig.default || loadedConfig;
61
- } catch {
62
- console.warn("⚠️ Could not load config file");
62
+ } catch (err) {
63
+ console.warn("⚠️ Could not load config file:", err.message);
63
64
  }
64
65
  }
65
66
 
@@ -69,18 +70,18 @@ if (tags) {
69
70
  cucumberArgs.push("--tags", tags);
70
71
  }
71
72
 
72
- // Feature path(s)
73
+ // Feature file(s)
73
74
  let featureFiles = [];
74
75
  if (argv.feature) {
75
76
  featureFiles.push(path.resolve(argv.feature));
76
77
  } else if (configOptions.paths && configOptions.paths.length > 0) {
77
- featureFiles.push(...configOptions.paths);
78
+ featureFiles.push(...configOptions.paths.map((p) => path.resolve(p)));
78
79
  }
79
80
  if (featureFiles.length > 0) {
80
81
  cucumberArgs.push(...featureFiles);
81
82
  }
82
83
 
83
- // Require default step definitions
84
+ // Require step definitions
84
85
  const defaultStepsPath = path.resolve(
85
86
  process.cwd(),
86
87
  "node_modules",
@@ -89,15 +90,17 @@ const defaultStepsPath = path.resolve(
89
90
  );
90
91
  cucumberArgs.push("--require", defaultStepsPath);
91
92
 
92
- // Also require additional custom step definitions from config, if any
93
+ // Include additional custom step definitions from config
93
94
  if (configOptions.require && Array.isArray(configOptions.require)) {
94
95
  for (const reqPath of configOptions.require) {
95
- cucumberArgs.push("--require", reqPath);
96
+ cucumberArgs.push("--require", path.resolve(reqPath));
96
97
  }
97
98
  }
98
99
 
99
- // Determine base report name
100
+ // Reports directory setup
100
101
  const reportsDir = path.join(process.cwd(), "reports");
102
+
103
+ // Clean and prepare reports directory
101
104
  const cleanReportsDir = () => {
102
105
  if (fs.existsSync(reportsDir)) {
103
106
  try {
@@ -120,6 +123,7 @@ const cleanReportsDir = () => {
120
123
 
121
124
  cleanReportsDir();
122
125
 
126
+ // Determine base report name
123
127
  const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
124
128
 
125
129
  let baseReportName = "load-report";
@@ -136,10 +140,15 @@ const shouldOverwrite =
136
140
  process.env.K6_CUCUMBER_OVERWRITE === "true" ||
137
141
  configOptions.overwrite === true;
138
142
 
139
- let reportJsonPath = "reports/load-report.json";
143
+ let reportJsonPath = path.join(reportsDir, `${baseReportName}.json`);
140
144
  let reportHtmlPath = path.join(reportsDir, `${baseReportName}.html`);
141
145
 
142
- // 🆕 Respect config format path if defined
146
+ if (!shouldOverwrite) {
147
+ reportJsonPath = path.join(reportsDir, `${baseReportName}-${timestamp}.json`);
148
+ reportHtmlPath = path.join(reportsDir, `${baseReportName}-${timestamp}.html`);
149
+ }
150
+
151
+ // Respect config format path if defined
143
152
  if (Array.isArray(configOptions.format)) {
144
153
  const jsonFmt = configOptions.format.find((f) => f.startsWith("json:"));
145
154
  if (jsonFmt) {
@@ -152,8 +161,7 @@ const formatInConfig =
152
161
  Array.isArray(configOptions.format) && configOptions.format.length > 0;
153
162
 
154
163
  if (shouldGenerateReports && !formatInConfig) {
155
- fs.mkdirSync(reportsDir, { recursive: true });
156
- cucumberArgs.push("--format", `summary`);
164
+ cucumberArgs.push("--format", "summary");
157
165
  cucumberArgs.push("--format", `json:${reportJsonPath}`);
158
166
  cucumberArgs.push("--format", `html:${reportHtmlPath}`);
159
167
  }
@@ -161,6 +169,7 @@ if (shouldGenerateReports && !formatInConfig) {
161
169
  console.log("\n▶️ Final arguments passed to cucumber-js:");
162
170
  console.log(["npx", ...cucumberArgs].join(" ") + "\n");
163
171
 
172
+ // Execute Cucumber process
164
173
  const cucumberProcess = spawn("npx", cucumberArgs, {
165
174
  stdio: "inherit",
166
175
  env: {
@@ -174,9 +183,6 @@ const cucumberProcess = spawn("npx", cucumberArgs, {
174
183
  });
175
184
 
176
185
  function detectMostRecentK6Report() {
177
- const reportsDir = path.join(process.cwd(), "reports");
178
- if (!fs.existsSync(reportsDir)) return null;
179
-
180
186
  const files = fs
181
187
  .readdirSync(reportsDir)
182
188
  .filter((file) => /^k6-report.*\.html$/.test(file))
@@ -186,7 +192,7 @@ function detectMostRecentK6Report() {
186
192
  }))
187
193
  .sort((a, b) => b.time - a.time);
188
194
 
189
- return files.length > 0 ? path.join("reports", files[0].name) : null;
195
+ return files.length > 0 ? path.join(reportsDir, files[0].name) : null;
190
196
  }
191
197
 
192
198
  cucumberProcess.on("close", async (code) => {
@@ -194,17 +200,26 @@ cucumberProcess.on("close", async (code) => {
194
200
  console.log("-----------------------------------------");
195
201
  console.log("✅ k6-cucumber-steps execution completed successfully.");
196
202
 
197
- generateHtmlReports(); // 🍋 Cucumber HTML
198
-
199
- console.log(
200
- "🚀 Cucumber HTML report reports/cucumber-report.html generated successfully 👍"
201
- );
203
+ // Generate Cucumber HTML report
204
+ try {
205
+ await generateHtmlReports();
206
+ console.log(
207
+ `🚀 Cucumber HTML report generated successfully at: ${reportHtmlPath}`
208
+ );
209
+ } catch (err) {
210
+ console.error("⚠️ Failed to generate Cucumber HTML report:", err.message);
211
+ }
202
212
 
203
- await linkReports(); // 🧬 Combine and link reports
213
+ // Link reports
214
+ try {
215
+ await linkReports();
216
+ console.log(
217
+ "🔗 Combined and minified HTML report available at: reports/combined-report.html"
218
+ );
219
+ } catch (err) {
220
+ console.error("⚠️ Failed to link reports:", err.message);
221
+ }
204
222
 
205
- console.log(
206
- "📦 Combined and minified HTML report available at: reports/combined-report.html"
207
- );
208
223
  console.log("-----------------------------------------");
209
224
  } else {
210
225
  console.error("-----------------------------------------");
package/cucumber.js CHANGED
@@ -7,7 +7,7 @@ module.exports = {
7
7
  "html:./reports/cucumber-report.html",
8
8
  ],
9
9
  paths: ["./features/bsp.feature"],
10
- tags: "@rate-limit",
10
+ tags: "@get",
11
11
  worldParameters: {
12
12
  payloadPath: "payloads",
13
13
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "k6-cucumber-steps",
3
- "version": "1.1.2",
3
+ "version": "1.1.4",
4
4
  "main": "index.js",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -49,26 +49,22 @@
49
49
  },
50
50
  "author": "qaPaschalE",
51
51
  "description": "Cucumber step definitions for running k6 performance tests.",
52
+ "peerDependencies": {
53
+ "@cucumber/cucumber": "*",
54
+ "k6": "*"
55
+ },
52
56
  "devDependencies": {
53
- "@babel/cli": "latest",
54
- "@babel/core": "latest",
55
- "@babel/preset-env": "latest",
56
- "@types/k6": "latest",
57
- "child_process": "latest",
58
- "cucumber-console-formatter": "latest",
59
- "cucumber-html-reporter": "latest",
60
- "esbuild": "latest",
61
- "form-data": "latest",
62
- "k6": "latest",
63
- "tsconfig-paths": "latest"
57
+ "@babel/cli": "^7.27.2",
58
+ "@babel/core": "^7.27.4",
59
+ "@babel/preset-env": "^7.27.2",
60
+ "@faker-js/faker": "^9.8.0",
61
+ "@types/k6": "^1.0.2",
62
+ "axios": "^1.10.0",
63
+ "dotenv": "^16.5.0",
64
+ "html-minifier-terser": "^7.2.0",
65
+ "yargs": "^18.0.0"
64
66
  },
65
67
  "dependencies": {
66
- "@babel/register": "latest",
67
- "@cucumber/cucumber": "latest",
68
- "@faker-js/faker": "latest",
69
- "axios": "^1.9.0",
70
- "dotenv": "latest",
71
- "html-minifier-terser": "^7.2.0",
72
- "yargs": "latest"
68
+ "@babel/register": "^7.27.1"
73
69
  }
74
70
  }
@@ -40,7 +40,7 @@ body{padding:0;margin:0}.html-formatter{max-width:1600px;min-height:100vh;margin
40
40
  <div id="content">
41
41
  </div>
42
42
  <script>
43
- window.CUCUMBER_MESSAGES = [{"meta":{"protocolVersion":"27.0.2","implementation":{"version":"11.2.0","name":"cucumber-js"},"cpu":{"name":"arm64"},"os":{"name":"darwin","version":"24.4.0"},"runtime":{"name":"node.js","version":"22.14.0"}}},{"source":{"data":"@rate-limit\nFeature: Rate Limit Enforcement for \/login and \/bsp\n\n Background: Login and set alias for token\n Given I login via POST to \"\/api\/v3\/client\/api\/login\" with payload from \"login.json\"\n Then I store the value at \"data.token\" as alias \"auth_token\"\n\n @within-limit\n Scenario: API allows up to 5 requests in 10 seconds (under limit)\n When I set a k6 script for POST testing\n When I set to run the k6 script with the following configurations:\n | virtual_users | duration | http_req_failed | http_req_duration |\n | 1 | 10 | rate<0.05 | p(95)<2000 |\n When I use JSON payload from \"okra.json\" for POST to \"\/api\/v3\/client\/bsp\"\n When I set the authentication type to \"auth_token\"\n Then I see the API should handle the POST request successfully\n\n @exceed-limit\n Scenario: API blocks more than 5 requests in 10 seconds (exceeds limit)\n When I set a k6 script for POST testing\n When I set to run the k6 script with the following configurations:\n | virtual_users | duration | http_req_failed | http_req_duration |\n | 6 | 10 | rate>=0.50 | p(95)<3000 |\n When I use JSON payload from \"okra.json\" for POST to \"\/api\/v3\/client\/bsp\"\n When I set the authentication type to \"auth_token\"\n Then I see the API should handle the POST request successfully\n","uri":"features\/bsp.feature","mediaType":"text\/x.cucumber.gherkin+plain"}},{"gherkinDocument":{"feature":{"tags":[{"location":{"line":1,"column":1},"name":"@rate-limit","id":"17d2551a-c272-4f73-8939-f84e2b85f3f4"}],"location":{"line":2,"column":1},"language":"en","keyword":"Feature","name":"Rate Limit Enforcement for \/login and \/bsp","description":"","children":[{"background":{"id":"f5a004d9-c064-4269-bfbd-e7d419d84d04","location":{"line":4,"column":3},"keyword":"Background","name":"Login and set alias for token","description":"","steps":[{"id":"7d47bb21-1dfd-44b1-8082-74541898bb9b","location":{"line":5,"column":5},"keyword":"Given ","keywordType":"Context","text":"I login via POST to \"\/api\/v3\/client\/api\/login\" with payload from \"login.json\""},{"id":"ea098b5f-bf91-40f2-9e9a-221280fd212c","location":{"line":6,"column":5},"keyword":"Then ","keywordType":"Outcome","text":"I store the value at \"data.token\" as alias \"auth_token\""}]}},{"scenario":{"id":"8f0b0b2c-730a-4ec0-8136-cb96f10d5636","tags":[{"location":{"line":8,"column":3},"name":"@within-limit","id":"c16bf4c7-1d01-4bbb-ab7a-0837f98d6ec3"}],"location":{"line":9,"column":3},"keyword":"Scenario","name":"API allows up to 5 requests in 10 seconds (under limit)","description":"","steps":[{"id":"cf297024-e3a6-4d25-b430-bb03d1d0c91e","location":{"line":10,"column":5},"keyword":"When ","keywordType":"Action","text":"I set a k6 script for POST testing"},{"id":"2415519c-48f3-4a51-a425-15668a9b99e2","location":{"line":11,"column":5},"keyword":"When ","keywordType":"Action","text":"I set to run the k6 script with the following configurations:","dataTable":{"location":{"line":12,"column":7},"rows":[{"id":"16ac7b8a-6cdf-4677-a368-6f982e1248c6","location":{"line":12,"column":7},"cells":[{"location":{"line":12,"column":9},"value":"virtual_users"},{"location":{"line":12,"column":25},"value":"duration"},{"location":{"line":12,"column":36},"value":"http_req_failed"},{"location":{"line":12,"column":54},"value":"http_req_duration"}]},{"id":"cdf8b873-5514-45af-82ce-6e9f02284c51","location":{"line":13,"column":7},"cells":[{"location":{"line":13,"column":21},"value":"1"},{"location":{"line":13,"column":31},"value":"10"},{"location":{"line":13,"column":36},"value":"rate<0.05"},{"location":{"line":13,"column":54},"value":"p(95)<2000"}]}]}},{"id":"9b6834ba-2e19-48bd-bf68-6914abb5547b","location":{"line":14,"column":5},"keyword":"When ","keywordType":"Action","text":"I use JSON payload from \"okra.json\" for POST to \"\/api\/v3\/client\/bsp\""},{"id":"13509a8c-4c3f-4344-9ab2-43d54d5fb771","location":{"line":15,"column":5},"keyword":"When ","keywordType":"Action","text":"I set the authentication type to \"auth_token\""},{"id":"dfc4b4f6-1210-4b44-ba3d-f27d704fb069","location":{"line":16,"column":5},"keyword":"Then ","keywordType":"Outcome","text":"I see the API should handle the POST request successfully"}],"examples":[]}},{"scenario":{"id":"f76ab590-b942-4cc1-8310-30917593b8ff","tags":[{"location":{"line":18,"column":3},"name":"@exceed-limit","id":"21d4ec05-4329-47a2-8cef-aafea8d25370"}],"location":{"line":19,"column":3},"keyword":"Scenario","name":"API blocks more than 5 requests in 10 seconds (exceeds limit)","description":"","steps":[{"id":"dc3e35ee-a2fd-423d-809c-0fb7e4823a62","location":{"line":20,"column":5},"keyword":"When ","keywordType":"Action","text":"I set a k6 script for POST testing"},{"id":"d6942ae6-f995-44f0-b584-829a7891dc1a","location":{"line":21,"column":5},"keyword":"When ","keywordType":"Action","text":"I set to run the k6 script with the following configurations:","dataTable":{"location":{"line":22,"column":7},"rows":[{"id":"9f6a18c4-59d3-43f6-8610-346a28b2a4af","location":{"line":22,"column":7},"cells":[{"location":{"line":22,"column":9},"value":"virtual_users"},{"location":{"line":22,"column":25},"value":"duration"},{"location":{"line":22,"column":36},"value":"http_req_failed"},{"location":{"line":22,"column":54},"value":"http_req_duration"}]},{"id":"e5361805-4a53-4e23-9d98-3cc4ec3ddbf0","location":{"line":23,"column":7},"cells":[{"location":{"line":23,"column":21},"value":"6"},{"location":{"line":23,"column":31},"value":"10"},{"location":{"line":23,"column":36},"value":"rate>=0.50"},{"location":{"line":23,"column":54},"value":"p(95)<3000"}]}]}},{"id":"56e331d3-2fc5-48a4-ac21-ecafba76ac0c","location":{"line":24,"column":5},"keyword":"When ","keywordType":"Action","text":"I use JSON payload from \"okra.json\" for POST to \"\/api\/v3\/client\/bsp\""},{"id":"eca65e61-7291-42fa-833c-28e375a62386","location":{"line":25,"column":5},"keyword":"When ","keywordType":"Action","text":"I set the authentication type to \"auth_token\""},{"id":"73c4f26c-f5a8-43ab-aaae-248445c89afd","location":{"line":26,"column":5},"keyword":"Then ","keywordType":"Outcome","text":"I see the API should handle the POST request successfully"}],"examples":[]}}]},"comments":[],"uri":"features\/bsp.feature"}},{"pickle":{"id":"f6636014-46cb-412c-a658-e10ec26e58d5","uri":"features\/bsp.feature","astNodeIds":["8f0b0b2c-730a-4ec0-8136-cb96f10d5636"],"tags":[{"name":"@rate-limit","astNodeId":"17d2551a-c272-4f73-8939-f84e2b85f3f4"},{"name":"@within-limit","astNodeId":"c16bf4c7-1d01-4bbb-ab7a-0837f98d6ec3"}],"name":"API allows up to 5 requests in 10 seconds (under limit)","language":"en","steps":[{"id":"4da6f429-9357-418c-9889-9e2f14c80f49","text":"I login via POST to \"\/api\/v3\/client\/api\/login\" with payload from \"login.json\"","type":"Context","astNodeIds":["7d47bb21-1dfd-44b1-8082-74541898bb9b"]},{"id":"89bd27cf-6301-49e6-b8d4-ac87a2cb823e","text":"I store the value at \"data.token\" as alias \"auth_token\"","type":"Outcome","astNodeIds":["ea098b5f-bf91-40f2-9e9a-221280fd212c"]},{"id":"1384a749-7ac6-4e0b-8a49-bb2ef473339a","text":"I set a k6 script for POST testing","type":"Action","astNodeIds":["cf297024-e3a6-4d25-b430-bb03d1d0c91e"]},{"id":"9368eb3d-4d65-4b36-ab70-5c92865e6b79","text":"I set to run the k6 script with the following configurations:","type":"Action","argument":{"dataTable":{"rows":[{"cells":[{"value":"virtual_users"},{"value":"duration"},{"value":"http_req_failed"},{"value":"http_req_duration"}]},{"cells":[{"value":"1"},{"value":"10"},{"value":"rate<0.05"},{"value":"p(95)<2000"}]}]}},"astNodeIds":["2415519c-48f3-4a51-a425-15668a9b99e2"]},{"id":"4d435563-4139-4f01-b778-bc05dc835878","text":"I use JSON payload from \"okra.json\" for POST to \"\/api\/v3\/client\/bsp\"","type":"Action","astNodeIds":["9b6834ba-2e19-48bd-bf68-6914abb5547b"]},{"id":"d7840298-d6c7-4a27-b07e-25f2ef4c0042","text":"I set the authentication type to \"auth_token\"","type":"Action","astNodeIds":["13509a8c-4c3f-4344-9ab2-43d54d5fb771"]},{"id":"6c873ae5-3337-42df-bae9-7a0a1c6d71a7","text":"I see the API should handle the POST request successfully","type":"Outcome","astNodeIds":["dfc4b4f6-1210-4b44-ba3d-f27d704fb069"]}]}},{"pickle":{"id":"9657609b-65de-43e4-b7c1-f0e85672014e","uri":"features\/bsp.feature","astNodeIds":["f76ab590-b942-4cc1-8310-30917593b8ff"],"tags":[{"name":"@rate-limit","astNodeId":"17d2551a-c272-4f73-8939-f84e2b85f3f4"},{"name":"@exceed-limit","astNodeId":"21d4ec05-4329-47a2-8cef-aafea8d25370"}],"name":"API blocks more than 5 requests in 10 seconds (exceeds limit)","language":"en","steps":[{"id":"da213118-e594-4f7e-94a2-2d9a562de3e8","text":"I login via POST to \"\/api\/v3\/client\/api\/login\" with payload from \"login.json\"","type":"Context","astNodeIds":["7d47bb21-1dfd-44b1-8082-74541898bb9b"]},{"id":"1a4c2541-ec2b-4b69-9457-e1954e00ada9","text":"I store the value at \"data.token\" as alias \"auth_token\"","type":"Outcome","astNodeIds":["ea098b5f-bf91-40f2-9e9a-221280fd212c"]},{"id":"82c116a7-d843-4522-aa3a-35b2d24340ed","text":"I set a k6 script for POST testing","type":"Action","astNodeIds":["dc3e35ee-a2fd-423d-809c-0fb7e4823a62"]},{"id":"d7ef0386-ed10-4053-9f70-12dd75c22d85","text":"I set to run the k6 script with the following configurations:","type":"Action","argument":{"dataTable":{"rows":[{"cells":[{"value":"virtual_users"},{"value":"duration"},{"value":"http_req_failed"},{"value":"http_req_duration"}]},{"cells":[{"value":"6"},{"value":"10"},{"value":"rate>=0.50"},{"value":"p(95)<3000"}]}]}},"astNodeIds":["d6942ae6-f995-44f0-b584-829a7891dc1a"]},{"id":"313aed1d-27fa-4073-bb36-30473fc4cfed","text":"I use JSON payload from \"okra.json\" for POST to \"\/api\/v3\/client\/bsp\"","type":"Action","astNodeIds":["56e331d3-2fc5-48a4-ac21-ecafba76ac0c"]},{"id":"d2b69167-8ded-4fff-8116-4b1d6624b53a","text":"I set the authentication type to \"auth_token\"","type":"Action","astNodeIds":["eca65e61-7291-42fa-833c-28e375a62386"]},{"id":"da3c373a-8175-410a-be19-e77e63b685ca","text":"I see the API should handle the POST request successfully","type":"Outcome","astNodeIds":["73c4f26c-f5a8-43ab-aaae-248445c89afd"]}]}},{"stepDefinition":{"id":"126c3bab-b409-4889-b805-d6d74162db79","pattern":{"source":"I set a k6 script for {word} testing","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"step_definitions\/load_test_steps.js","location":{"line":28}}}},{"stepDefinition":{"id":"6005af83-a112-44a0-84dc-38e2d378f723","pattern":{"source":"I set to run the k6 script with the following configurations:","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"step_definitions\/load_test_steps.js","location":{"line":40}}}},{"stepDefinition":{"id":"0752ee16-57e8-443e-9cac-5459c6812e73","pattern":{"source":"I set the request headers:","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"step_definitions\/load_test_steps.js","location":{"line":124}}}},{"stepDefinition":{"id":"471b9136-6942-418a-9389-284cede05a38","pattern":{"source":"I set the following endpoints used:","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"step_definitions\/load_test_steps.js","location":{"line":145}}}},{"stepDefinition":{"id":"4fdcc1c5-6b0a-411e-bd7a-2222beb7eae8","pattern":{"source":"I set the following {word} body is used for {string}","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"step_definitions\/load_test_steps.js","location":{"line":165}}}},{"stepDefinition":{"id":"ea6c73d4-1f14-4ba8-ae18-996f8ee30f65","pattern":{"source":"I use JSON payload from {string} for {word} to {string}","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"step_definitions\/load_test_steps.js","location":{"line":174}}}},{"stepDefinition":{"id":"a537b573-53c7-4d93-b039-5b67ae9a38f2","pattern":{"source":"I set the authentication type to {string}","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"step_definitions\/load_test_steps.js","location":{"line":226}}}},{"stepDefinition":{"id":"b3ac8b7e-19df-44e4-a06f-07e355a1c520","pattern":{"source":"I store the value at {string} as alias {string}","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"step_definitions\/load_test_steps.js","location":{"line":237}}}},{"stepDefinition":{"id":"a400ea7c-0d3c-4ea7-aa11-eac5bdcb5a64","pattern":{"source":"I login via POST to {string} with payload from {string}","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"step_definitions\/load_test_steps.js","location":{"line":262}}}},{"stepDefinition":{"id":"a23169d3-cce1-4b81-90d4-436648607444","pattern":{"source":"I see the API should handle the {word} request successfully","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"step_definitions\/load_test_steps.js","location":{"line":306}}}},{"testRunStarted":{"id":"a201d523-9771-4693-93cf-01bd75e2264a","timestamp":{"seconds":1748955246,"nanos":416000000}}},{"testCase":{"testRunStartedId":"a201d523-9771-4693-93cf-01bd75e2264a","pickleId":"f6636014-46cb-412c-a658-e10ec26e58d5","id":"5668de4c-51ef-4d1f-9ab3-2c9de2105d6f","testSteps":[{"id":"c8e130d9-9db4-4723-aa22-1dba57fc4b4f","pickleStepId":"4da6f429-9357-418c-9889-9e2f14c80f49","stepDefinitionIds":["a400ea7c-0d3c-4ea7-aa11-eac5bdcb5a64"],"stepMatchArgumentsLists":[{"stepMatchArguments":[{"group":{"start":20,"value":"\"\/api\/v3\/client\/api\/login\"","children":[{"start":21,"value":"\/api\/v3\/client\/api\/login","children":[{"children":[]}]},{"children":[{"children":[]}]}]},"parameterTypeName":"string"},{"group":{"start":65,"value":"\"login.json\"","children":[{"start":66,"value":"login.json","children":[{"children":[]}]},{"children":[{"children":[]}]}]},"parameterTypeName":"string"}]}]},{"id":"32b0acc8-400b-4df2-ad8c-1cb322405164","pickleStepId":"89bd27cf-6301-49e6-b8d4-ac87a2cb823e","stepDefinitionIds":["b3ac8b7e-19df-44e4-a06f-07e355a1c520"],"stepMatchArgumentsLists":[{"stepMatchArguments":[{"group":{"start":21,"value":"\"data.token\"","children":[{"start":22,"value":"data.token","children":[{"children":[]}]},{"children":[{"children":[]}]}]},"parameterTypeName":"string"},{"group":{"start":43,"value":"\"auth_token\"","children":[{"start":44,"value":"auth_token","children":[{"children":[]}]},{"children":[{"children":[]}]}]},"parameterTypeName":"string"}]}]},{"id":"cda6f232-1c4b-4c3b-bc8a-b26aa2f49589","pickleStepId":"1384a749-7ac6-4e0b-8a49-bb2ef473339a","stepDefinitionIds":["126c3bab-b409-4889-b805-d6d74162db79"],"stepMatchArgumentsLists":[{"stepMatchArguments":[{"group":{"start":22,"value":"POST","children":[]},"parameterTypeName":"word"}]}]},{"id":"a04b9e9a-e315-4287-927f-b54de5a300b3","pickleStepId":"9368eb3d-4d65-4b36-ab70-5c92865e6b79","stepDefinitionIds":["6005af83-a112-44a0-84dc-38e2d378f723"],"stepMatchArgumentsLists":[{"stepMatchArguments":[]}]},{"id":"4c1ff4f9-dfe5-4f61-8c52-08e20751727f","pickleStepId":"4d435563-4139-4f01-b778-bc05dc835878","stepDefinitionIds":["ea6c73d4-1f14-4ba8-ae18-996f8ee30f65"],"stepMatchArgumentsLists":[{"stepMatchArguments":[{"group":{"start":24,"value":"\"okra.json\"","children":[{"start":25,"value":"okra.json","children":[{"children":[]}]},{"children":[{"children":[]}]}]},"parameterTypeName":"string"},{"group":{"start":40,"value":"POST","children":[]},"parameterTypeName":"word"},{"group":{"start":48,"value":"\"\/api\/v3\/client\/bsp\"","children":[{"start":49,"value":"\/api\/v3\/client\/bsp","children":[{"children":[]}]},{"children":[{"children":[]}]}]},"parameterTypeName":"string"}]}]},{"id":"9899972a-a3b2-4602-8b62-e14f17bd34da","pickleStepId":"d7840298-d6c7-4a27-b07e-25f2ef4c0042","stepDefinitionIds":["a537b573-53c7-4d93-b039-5b67ae9a38f2"],"stepMatchArgumentsLists":[{"stepMatchArguments":[{"group":{"start":33,"value":"\"auth_token\"","children":[{"start":34,"value":"auth_token","children":[{"children":[]}]},{"children":[{"children":[]}]}]},"parameterTypeName":"string"}]}]},{"id":"05901994-7e2f-4a77-bea1-c3d6d51132a1","pickleStepId":"6c873ae5-3337-42df-bae9-7a0a1c6d71a7","stepDefinitionIds":["a23169d3-cce1-4b81-90d4-436648607444"],"stepMatchArgumentsLists":[{"stepMatchArguments":[{"group":{"start":32,"value":"POST","children":[]},"parameterTypeName":"word"}]}]}]}},{"testCase":{"testRunStartedId":"a201d523-9771-4693-93cf-01bd75e2264a","pickleId":"9657609b-65de-43e4-b7c1-f0e85672014e","id":"b241695b-6e09-40a9-9b2f-3f3f38189818","testSteps":[{"id":"2115cf4a-6cdd-404a-af80-10a5b2fa8ff3","pickleStepId":"da213118-e594-4f7e-94a2-2d9a562de3e8","stepDefinitionIds":["a400ea7c-0d3c-4ea7-aa11-eac5bdcb5a64"],"stepMatchArgumentsLists":[{"stepMatchArguments":[{"group":{"start":20,"value":"\"\/api\/v3\/client\/api\/login\"","children":[{"start":21,"value":"\/api\/v3\/client\/api\/login","children":[{"children":[]}]},{"children":[{"children":[]}]}]},"parameterTypeName":"string"},{"group":{"start":65,"value":"\"login.json\"","children":[{"start":66,"value":"login.json","children":[{"children":[]}]},{"children":[{"children":[]}]}]},"parameterTypeName":"string"}]}]},{"id":"70753513-4df5-49c6-b06f-ed2cfafd3087","pickleStepId":"1a4c2541-ec2b-4b69-9457-e1954e00ada9","stepDefinitionIds":["b3ac8b7e-19df-44e4-a06f-07e355a1c520"],"stepMatchArgumentsLists":[{"stepMatchArguments":[{"group":{"start":21,"value":"\"data.token\"","children":[{"start":22,"value":"data.token","children":[{"children":[]}]},{"children":[{"children":[]}]}]},"parameterTypeName":"string"},{"group":{"start":43,"value":"\"auth_token\"","children":[{"start":44,"value":"auth_token","children":[{"children":[]}]},{"children":[{"children":[]}]}]},"parameterTypeName":"string"}]}]},{"id":"c431a9fe-c535-4efb-bafa-718e98b86a19","pickleStepId":"82c116a7-d843-4522-aa3a-35b2d24340ed","stepDefinitionIds":["126c3bab-b409-4889-b805-d6d74162db79"],"stepMatchArgumentsLists":[{"stepMatchArguments":[{"group":{"start":22,"value":"POST","children":[]},"parameterTypeName":"word"}]}]},{"id":"3c2cb40e-75f5-4b61-b37d-f9357c7e8a00","pickleStepId":"d7ef0386-ed10-4053-9f70-12dd75c22d85","stepDefinitionIds":["6005af83-a112-44a0-84dc-38e2d378f723"],"stepMatchArgumentsLists":[{"stepMatchArguments":[]}]},{"id":"3e4af396-8ed1-4efe-860a-cdb50ffc18ba","pickleStepId":"313aed1d-27fa-4073-bb36-30473fc4cfed","stepDefinitionIds":["ea6c73d4-1f14-4ba8-ae18-996f8ee30f65"],"stepMatchArgumentsLists":[{"stepMatchArguments":[{"group":{"start":24,"value":"\"okra.json\"","children":[{"start":25,"value":"okra.json","children":[{"children":[]}]},{"children":[{"children":[]}]}]},"parameterTypeName":"string"},{"group":{"start":40,"value":"POST","children":[]},"parameterTypeName":"word"},{"group":{"start":48,"value":"\"\/api\/v3\/client\/bsp\"","children":[{"start":49,"value":"\/api\/v3\/client\/bsp","children":[{"children":[]}]},{"children":[{"children":[]}]}]},"parameterTypeName":"string"}]}]},{"id":"3290be0a-6849-4ab5-90a1-e1dc0f367b38","pickleStepId":"d2b69167-8ded-4fff-8116-4b1d6624b53a","stepDefinitionIds":["a537b573-53c7-4d93-b039-5b67ae9a38f2"],"stepMatchArgumentsLists":[{"stepMatchArguments":[{"group":{"start":33,"value":"\"auth_token\"","children":[{"start":34,"value":"auth_token","children":[{"children":[]}]},{"children":[{"children":[]}]}]},"parameterTypeName":"string"}]}]},{"id":"560eff96-8cb6-404d-91af-b7744e39da52","pickleStepId":"da3c373a-8175-410a-be19-e77e63b685ca","stepDefinitionIds":["a23169d3-cce1-4b81-90d4-436648607444"],"stepMatchArgumentsLists":[{"stepMatchArguments":[{"group":{"start":32,"value":"POST","children":[]},"parameterTypeName":"word"}]}]}]}},{"testCaseStarted":{"attempt":0,"testCaseId":"5668de4c-51ef-4d1f-9ab3-2c9de2105d6f","id":"dfba1110-42a3-4d58-8011-5acaca1a099f","timestamp":{"seconds":1748955246,"nanos":429000000}}},{"testStepStarted":{"testCaseStartedId":"dfba1110-42a3-4d58-8011-5acaca1a099f","testStepId":"c8e130d9-9db4-4723-aa22-1dba57fc4b4f","timestamp":{"seconds":1748955246,"nanos":429000000}}},{"testStepFinished":{"testCaseStartedId":"dfba1110-42a3-4d58-8011-5acaca1a099f","testStepId":"c8e130d9-9db4-4723-aa22-1dba57fc4b4f","testStepResult":{"duration":{"seconds":0,"nanos":894569875},"status":"PASSED"},"timestamp":{"seconds":1748955247,"nanos":324000000}}},{"testStepStarted":{"testCaseStartedId":"dfba1110-42a3-4d58-8011-5acaca1a099f","testStepId":"32b0acc8-400b-4df2-ad8c-1cb322405164","timestamp":{"seconds":1748955247,"nanos":324000000}}},{"testStepFinished":{"testCaseStartedId":"dfba1110-42a3-4d58-8011-5acaca1a099f","testStepId":"32b0acc8-400b-4df2-ad8c-1cb322405164","testStepResult":{"duration":{"seconds":0,"nanos":217708},"status":"PASSED"},"timestamp":{"seconds":1748955247,"nanos":324000000}}},{"testStepStarted":{"testCaseStartedId":"dfba1110-42a3-4d58-8011-5acaca1a099f","testStepId":"cda6f232-1c4b-4c3b-bc8a-b26aa2f49589","timestamp":{"seconds":1748955247,"nanos":325000000}}},{"testStepFinished":{"testCaseStartedId":"dfba1110-42a3-4d58-8011-5acaca1a099f","testStepId":"cda6f232-1c4b-4c3b-bc8a-b26aa2f49589","testStepResult":{"duration":{"seconds":0,"nanos":78040},"status":"PASSED"},"timestamp":{"seconds":1748955247,"nanos":325000000}}},{"testStepStarted":{"testCaseStartedId":"dfba1110-42a3-4d58-8011-5acaca1a099f","testStepId":"a04b9e9a-e315-4287-927f-b54de5a300b3","timestamp":{"seconds":1748955247,"nanos":325000000}}},{"testStepFinished":{"testCaseStartedId":"dfba1110-42a3-4d58-8011-5acaca1a099f","testStepId":"a04b9e9a-e315-4287-927f-b54de5a300b3","testStepResult":{"duration":{"seconds":0,"nanos":458667},"status":"PASSED"},"timestamp":{"seconds":1748955247,"nanos":325000000}}},{"testStepStarted":{"testCaseStartedId":"dfba1110-42a3-4d58-8011-5acaca1a099f","testStepId":"4c1ff4f9-dfe5-4f61-8c52-08e20751727f","timestamp":{"seconds":1748955247,"nanos":325000000}}},{"testStepFinished":{"testCaseStartedId":"dfba1110-42a3-4d58-8011-5acaca1a099f","testStepId":"4c1ff4f9-dfe5-4f61-8c52-08e20751727f","testStepResult":{"duration":{"seconds":0,"nanos":1823208},"status":"PASSED"},"timestamp":{"seconds":1748955247,"nanos":327000000}}},{"testStepStarted":{"testCaseStartedId":"dfba1110-42a3-4d58-8011-5acaca1a099f","testStepId":"9899972a-a3b2-4602-8b62-e14f17bd34da","timestamp":{"seconds":1748955247,"nanos":327000000}}},{"testStepFinished":{"testCaseStartedId":"dfba1110-42a3-4d58-8011-5acaca1a099f","testStepId":"9899972a-a3b2-4602-8b62-e14f17bd34da","testStepResult":{"duration":{"seconds":0,"nanos":125207},"status":"PASSED"},"timestamp":{"seconds":1748955247,"nanos":328000000}}},{"testStepStarted":{"testCaseStartedId":"dfba1110-42a3-4d58-8011-5acaca1a099f","testStepId":"05901994-7e2f-4a77-bea1-c3d6d51132a1","timestamp":{"seconds":1748955247,"nanos":328000000}}},{"testStepFinished":{"testCaseStartedId":"dfba1110-42a3-4d58-8011-5acaca1a099f","testStepId":"05901994-7e2f-4a77-bea1-c3d6d51132a1","testStepResult":{"duration":{"seconds":14,"nanos":665569374},"status":"FAILED","message":"Error: k6 test execution failed\n at CustomWorld.<anonymous> (\/Users\/paschal\/personal\/k6-cucumber-steps\/step_definitions\/load_test_steps.js:334:13)","exception":{"type":"Error","message":"k6 test execution failed","stackTrace":" at CustomWorld.<anonymous> (\/Users\/paschal\/personal\/k6-cucumber-steps\/step_definitions\/load_test_steps.js:334:13)"}},"timestamp":{"seconds":1748955261,"nanos":994000000}}},{"testCaseFinished":{"testCaseStartedId":"dfba1110-42a3-4d58-8011-5acaca1a099f","timestamp":{"seconds":1748955261,"nanos":994000000},"willBeRetried":false}},{"testCaseStarted":{"attempt":0,"testCaseId":"b241695b-6e09-40a9-9b2f-3f3f38189818","id":"edebda2b-13a6-48ef-9935-220b17ce746e","timestamp":{"seconds":1748955261,"nanos":994000000}}},{"testStepStarted":{"testCaseStartedId":"edebda2b-13a6-48ef-9935-220b17ce746e","testStepId":"2115cf4a-6cdd-404a-af80-10a5b2fa8ff3","timestamp":{"seconds":1748955261,"nanos":994000000}}},{"testStepFinished":{"testCaseStartedId":"edebda2b-13a6-48ef-9935-220b17ce746e","testStepId":"2115cf4a-6cdd-404a-af80-10a5b2fa8ff3","testStepResult":{"duration":{"seconds":0,"nanos":626931291},"status":"PASSED"},"timestamp":{"seconds":1748955262,"nanos":621000000}}},{"testStepStarted":{"testCaseStartedId":"edebda2b-13a6-48ef-9935-220b17ce746e","testStepId":"70753513-4df5-49c6-b06f-ed2cfafd3087","timestamp":{"seconds":1748955262,"nanos":622000000}}},{"testStepFinished":{"testCaseStartedId":"edebda2b-13a6-48ef-9935-220b17ce746e","testStepId":"70753513-4df5-49c6-b06f-ed2cfafd3087","testStepResult":{"duration":{"seconds":0,"nanos":569790},"status":"PASSED"},"timestamp":{"seconds":1748955262,"nanos":622000000}}},{"testStepStarted":{"testCaseStartedId":"edebda2b-13a6-48ef-9935-220b17ce746e","testStepId":"c431a9fe-c535-4efb-bafa-718e98b86a19","timestamp":{"seconds":1748955262,"nanos":623000000}}},{"testStepFinished":{"testCaseStartedId":"edebda2b-13a6-48ef-9935-220b17ce746e","testStepId":"c431a9fe-c535-4efb-bafa-718e98b86a19","testStepResult":{"duration":{"seconds":0,"nanos":76042},"status":"PASSED"},"timestamp":{"seconds":1748955262,"nanos":623000000}}},{"testStepStarted":{"testCaseStartedId":"edebda2b-13a6-48ef-9935-220b17ce746e","testStepId":"3c2cb40e-75f5-4b61-b37d-f9357c7e8a00","timestamp":{"seconds":1748955262,"nanos":623000000}}},{"testStepFinished":{"testCaseStartedId":"edebda2b-13a6-48ef-9935-220b17ce746e","testStepId":"3c2cb40e-75f5-4b61-b37d-f9357c7e8a00","testStepResult":{"duration":{"seconds":0,"nanos":255083},"status":"PASSED"},"timestamp":{"seconds":1748955262,"nanos":623000000}}},{"testStepStarted":{"testCaseStartedId":"edebda2b-13a6-48ef-9935-220b17ce746e","testStepId":"3e4af396-8ed1-4efe-860a-cdb50ffc18ba","timestamp":{"seconds":1748955262,"nanos":623000000}}},{"testStepFinished":{"testCaseStartedId":"edebda2b-13a6-48ef-9935-220b17ce746e","testStepId":"3e4af396-8ed1-4efe-860a-cdb50ffc18ba","testStepResult":{"duration":{"seconds":0,"nanos":1752667},"status":"PASSED"},"timestamp":{"seconds":1748955262,"nanos":625000000}}},{"testStepStarted":{"testCaseStartedId":"edebda2b-13a6-48ef-9935-220b17ce746e","testStepId":"3290be0a-6849-4ab5-90a1-e1dc0f367b38","timestamp":{"seconds":1748955262,"nanos":625000000}}},{"testStepFinished":{"testCaseStartedId":"edebda2b-13a6-48ef-9935-220b17ce746e","testStepId":"3290be0a-6849-4ab5-90a1-e1dc0f367b38","testStepResult":{"duration":{"seconds":0,"nanos":87707},"status":"PASSED"},"timestamp":{"seconds":1748955262,"nanos":625000000}}},{"testStepStarted":{"testCaseStartedId":"edebda2b-13a6-48ef-9935-220b17ce746e","testStepId":"560eff96-8cb6-404d-91af-b7744e39da52","timestamp":{"seconds":1748955262,"nanos":625000000}}},{"testStepFinished":{"testCaseStartedId":"edebda2b-13a6-48ef-9935-220b17ce746e","testStepId":"560eff96-8cb6-404d-91af-b7744e39da52","testStepResult":{"duration":{"seconds":14,"nanos":650450625},"status":"PASSED"},"timestamp":{"seconds":1748955277,"nanos":276000000}}},{"testCaseFinished":{"testCaseStartedId":"edebda2b-13a6-48ef-9935-220b17ce746e","timestamp":{"seconds":1748955277,"nanos":276000000},"willBeRetried":false}},{"testRunFinished":{"testRunStartedId":"a201d523-9771-4693-93cf-01bd75e2264a","timestamp":{"seconds":1748955277,"nanos":277000000},"success":false}}];
43
+ window.CUCUMBER_MESSAGES = [{"meta":{"protocolVersion":"27.0.2","implementation":{"version":"11.2.0","name":"cucumber-js"},"cpu":{"name":"arm64"},"os":{"name":"darwin","version":"24.5.0"},"runtime":{"name":"node.js","version":"22.14.0"}}},{"source":{"data":"@rate-limit\nFeature: Rate Limit Enforcement for \/login and \/bsp\n\n Background: Login and set alias for token\n Given I login via POST to \"\/api\/v3\/client\/api\/login\" with payload from \"login.json\"\n Then I store the value at \"data.token\" as alias \"auth_token\"\n\n @within-limit\n Scenario: API allows up to 5 requests in 10 seconds (under limit)\n When I set a k6 script for POST testing\n When I set to run the k6 script with the following configurations:\n | virtual_users | duration | http_req_failed | http_req_duration |\n | 1 | 10 | rate<0.05 | p(95)<2000 |\n When I use JSON payload from \"okra.json\" for POST to \"\/api\/v3\/client\/bsp\"\n When I set the authentication type to \"auth_token\"\n Then I see the API should handle the POST request successfully\n\n @exceed-limit\n Scenario: API blocks more than 5 requests in 10 seconds (exceeds limit)\n When I set a k6 script for POST testing\n When I set to run the k6 script with the following configurations:\n | virtual_users | duration | http_req_failed | http_req_duration |\n | 6 | 10 | rate>=0.50 | p(95)<3000 |\n When I use JSON payload from \"okra.json\" for POST to \"\/api\/v3\/client\/bsp\"\n When I set the authentication type to \"auth_token\"\n Then I see the API should handle the POST request successfully\n\n @get\n Scenario Outline: I run the k6 script for load testing with dynamic GET requests\n Given I set a k6 script for GET testing\n When I set to run the k6 script with the following configurations:\n | virtual_users | duration | http_req_failed | http_req_duration |\n | <virtual_users> | <duration> | <http_req_failed> | <http_req_duration> |\n And I set the following endpoints used:\n \"\"\"\n \/get?foo1=bar1&foo2=bar2\n https:\/\/postman-echo.com\/get?foo1=bar1&foo2=bar2\n \"\"\"\n When I set the authentication type to \"none\"\n Then I see the API should handle the GET request successfully\n\n Examples:\n | virtual_users | duration | http_req_failed | http_req_duration |\n | 10 | 5 | rate<0.05 | p(95)<5000 |\n | 5 | 2 | rate<0.05 | p(95)<5000 |\n# | 100 | 15 | rate<0.05 | p(95)<3500 |\n# | 200 | 20 | rate<0.05 | p(95)<3500 |\n","uri":"features\/bsp.feature","mediaType":"text\/x.cucumber.gherkin+plain"}},{"gherkinDocument":{"feature":{"tags":[{"location":{"line":1,"column":1},"name":"@rate-limit","id":"f12333e7-8b9a-4e7f-88a1-3abc90df16d5"}],"location":{"line":2,"column":1},"language":"en","keyword":"Feature","name":"Rate Limit Enforcement for \/login and \/bsp","description":"","children":[{"background":{"id":"589c60aa-407b-40eb-a480-97799862d35a","location":{"line":4,"column":3},"keyword":"Background","name":"Login and set alias for token","description":"","steps":[{"id":"cac25111-9279-4133-b04f-d24a8805ca7e","location":{"line":5,"column":5},"keyword":"Given ","keywordType":"Context","text":"I login via POST to \"\/api\/v3\/client\/api\/login\" with payload from \"login.json\""},{"id":"0d36a384-2050-40ce-b388-134dd1d0d9ea","location":{"line":6,"column":5},"keyword":"Then ","keywordType":"Outcome","text":"I store the value at \"data.token\" as alias \"auth_token\""}]}},{"scenario":{"id":"499d2dc2-cb2d-4c19-abad-4bed17dc51b8","tags":[{"location":{"line":8,"column":3},"name":"@within-limit","id":"cdab5e67-80c5-4571-904d-35f33127410f"}],"location":{"line":9,"column":3},"keyword":"Scenario","name":"API allows up to 5 requests in 10 seconds (under limit)","description":"","steps":[{"id":"9438f7d5-a8a0-434d-b882-2bf39ad9db91","location":{"line":10,"column":5},"keyword":"When ","keywordType":"Action","text":"I set a k6 script for POST testing"},{"id":"0539f132-ad02-4a6f-a926-36d322f804e5","location":{"line":11,"column":5},"keyword":"When ","keywordType":"Action","text":"I set to run the k6 script with the following configurations:","dataTable":{"location":{"line":12,"column":7},"rows":[{"id":"3053b1a6-d99a-4431-9685-d526dddde373","location":{"line":12,"column":7},"cells":[{"location":{"line":12,"column":9},"value":"virtual_users"},{"location":{"line":12,"column":25},"value":"duration"},{"location":{"line":12,"column":36},"value":"http_req_failed"},{"location":{"line":12,"column":54},"value":"http_req_duration"}]},{"id":"b15ad8c5-8343-4bf3-8200-7f64db2084ed","location":{"line":13,"column":7},"cells":[{"location":{"line":13,"column":21},"value":"1"},{"location":{"line":13,"column":31},"value":"10"},{"location":{"line":13,"column":36},"value":"rate<0.05"},{"location":{"line":13,"column":54},"value":"p(95)<2000"}]}]}},{"id":"d9559069-ed05-49ff-8626-2cece7ba471c","location":{"line":14,"column":5},"keyword":"When ","keywordType":"Action","text":"I use JSON payload from \"okra.json\" for POST to \"\/api\/v3\/client\/bsp\""},{"id":"996ecc8d-ce44-4280-ba6e-c65af06f1b7c","location":{"line":15,"column":5},"keyword":"When ","keywordType":"Action","text":"I set the authentication type to \"auth_token\""},{"id":"da1b79f2-5738-4818-8aa2-d68f7b36e033","location":{"line":16,"column":5},"keyword":"Then ","keywordType":"Outcome","text":"I see the API should handle the POST request successfully"}],"examples":[]}},{"scenario":{"id":"02a9c484-db65-4912-ac0c-8016dc51220b","tags":[{"location":{"line":18,"column":3},"name":"@exceed-limit","id":"142b35bf-2a25-4761-a1a3-a507f8c69409"}],"location":{"line":19,"column":3},"keyword":"Scenario","name":"API blocks more than 5 requests in 10 seconds (exceeds limit)","description":"","steps":[{"id":"c0bc247a-9fea-43d8-96d7-24cdba086b98","location":{"line":20,"column":5},"keyword":"When ","keywordType":"Action","text":"I set a k6 script for POST testing"},{"id":"49a7d5e7-6475-4239-9ca5-5a4ea8fe74cb","location":{"line":21,"column":5},"keyword":"When ","keywordType":"Action","text":"I set to run the k6 script with the following configurations:","dataTable":{"location":{"line":22,"column":7},"rows":[{"id":"707bd9a4-7162-4f9c-9a7c-67b056f53bce","location":{"line":22,"column":7},"cells":[{"location":{"line":22,"column":9},"value":"virtual_users"},{"location":{"line":22,"column":25},"value":"duration"},{"location":{"line":22,"column":36},"value":"http_req_failed"},{"location":{"line":22,"column":54},"value":"http_req_duration"}]},{"id":"e6c30d08-9f0d-481e-b77a-689b410ec029","location":{"line":23,"column":7},"cells":[{"location":{"line":23,"column":21},"value":"6"},{"location":{"line":23,"column":31},"value":"10"},{"location":{"line":23,"column":36},"value":"rate>=0.50"},{"location":{"line":23,"column":54},"value":"p(95)<3000"}]}]}},{"id":"a19544f9-8be3-4ee6-9fff-cd4725db4732","location":{"line":24,"column":5},"keyword":"When ","keywordType":"Action","text":"I use JSON payload from \"okra.json\" for POST to \"\/api\/v3\/client\/bsp\""},{"id":"ac21e79e-1a60-4b49-912b-4a4764542a17","location":{"line":25,"column":5},"keyword":"When ","keywordType":"Action","text":"I set the authentication type to \"auth_token\""},{"id":"df933c86-83b2-4132-9553-12839081b17a","location":{"line":26,"column":5},"keyword":"Then ","keywordType":"Outcome","text":"I see the API should handle the POST request successfully"}],"examples":[]}},{"scenario":{"id":"d1942ee7-1b45-4f61-beb9-67b625ae16ae","tags":[{"location":{"line":28,"column":3},"name":"@get","id":"346d3c5c-e253-4ce6-944c-6a6c23d436b4"}],"location":{"line":29,"column":3},"keyword":"Scenario Outline","name":"I run the k6 script for load testing with dynamic GET requests","description":"","steps":[{"id":"6e659e20-8761-4dda-8367-85524f949776","location":{"line":30,"column":5},"keyword":"Given ","keywordType":"Context","text":"I set a k6 script for GET testing"},{"id":"d89a1633-6e7a-4bf2-9462-14b9b658ba1f","location":{"line":31,"column":5},"keyword":"When ","keywordType":"Action","text":"I set to run the k6 script with the following configurations:","dataTable":{"location":{"line":32,"column":7},"rows":[{"id":"24ccd7bb-0ee6-4047-975f-c13706696623","location":{"line":32,"column":7},"cells":[{"location":{"line":32,"column":9},"value":"virtual_users"},{"location":{"line":32,"column":27},"value":"duration"},{"location":{"line":32,"column":40},"value":"http_req_failed"},{"location":{"line":32,"column":60},"value":"http_req_duration"}]},{"id":"bf347f0a-342b-4b07-b0e0-c91c3db2ddf9","location":{"line":33,"column":7},"cells":[{"location":{"line":33,"column":9},"value":"<virtual_users>"},{"location":{"line":33,"column":27},"value":"<duration>"},{"location":{"line":33,"column":40},"value":"<http_req_failed>"},{"location":{"line":33,"column":60},"value":"<http_req_duration>"}]}]}},{"id":"79abe692-45a7-4d06-88d7-bcabab4dfc39","location":{"line":34,"column":5},"keyword":"And ","keywordType":"Conjunction","text":"I set the following endpoints used:","docString":{"location":{"line":35,"column":7},"content":"\/get?foo1=bar1&foo2=bar2\nhttps:\/\/postman-echo.com\/get?foo1=bar1&foo2=bar2","delimiter":"\"\"\""}},{"id":"ada228a8-d92c-462a-8a2d-9feb9e131d86","location":{"line":39,"column":5},"keyword":"When ","keywordType":"Action","text":"I set the authentication type to \"none\""},{"id":"495dcb98-d5f4-40d3-bd70-7a4530df5d08","location":{"line":40,"column":5},"keyword":"Then ","keywordType":"Outcome","text":"I see the API should handle the GET request successfully"}],"examples":[{"id":"7b27e96f-399d-4ec3-9fd8-8b8a3869a0cd","tags":[],"location":{"line":42,"column":5},"keyword":"Examples","name":"","description":"","tableHeader":{"id":"bf997470-d472-435a-b8f1-3c013feac883","location":{"line":43,"column":7},"cells":[{"location":{"line":43,"column":9},"value":"virtual_users"},{"location":{"line":43,"column":25},"value":"duration"},{"location":{"line":43,"column":36},"value":"http_req_failed"},{"location":{"line":43,"column":54},"value":"http_req_duration"}]},"tableBody":[{"id":"69874b08-0e6d-4b45-88c4-f513ddb5eeb9","location":{"line":44,"column":7},"cells":[{"location":{"line":44,"column":20},"value":"10"},{"location":{"line":44,"column":32},"value":"5"},{"location":{"line":44,"column":36},"value":"rate<0.05"},{"location":{"line":44,"column":54},"value":"p(95)<5000"}]},{"id":"e8506d2c-a932-4078-bad6-a2d15c31ab69","location":{"line":45,"column":7},"cells":[{"location":{"line":45,"column":21},"value":"5"},{"location":{"line":45,"column":32},"value":"2"},{"location":{"line":45,"column":36},"value":"rate<0.05"},{"location":{"line":45,"column":54},"value":"p(95)<5000"}]}]}]}}]},"comments":[{"location":{"line":46,"column":1},"text":"# | 100 | 15 | rate<0.05 | p(95)<3500 |"},{"location":{"line":47,"column":1},"text":"# | 200 | 20 | rate<0.05 | p(95)<3500 |"}],"uri":"features\/bsp.feature"}},{"pickle":{"id":"108206a6-4cc4-4aa9-ae20-f4000ecfbea3","uri":"features\/bsp.feature","astNodeIds":["499d2dc2-cb2d-4c19-abad-4bed17dc51b8"],"tags":[{"name":"@rate-limit","astNodeId":"f12333e7-8b9a-4e7f-88a1-3abc90df16d5"},{"name":"@within-limit","astNodeId":"cdab5e67-80c5-4571-904d-35f33127410f"}],"name":"API allows up to 5 requests in 10 seconds (under limit)","language":"en","steps":[{"id":"2def547b-b386-4341-8192-2d9c2e20ec49","text":"I login via POST to \"\/api\/v3\/client\/api\/login\" with payload from \"login.json\"","type":"Context","astNodeIds":["cac25111-9279-4133-b04f-d24a8805ca7e"]},{"id":"3f98b97b-e9e5-41a1-9fb9-79a017c0711d","text":"I store the value at \"data.token\" as alias \"auth_token\"","type":"Outcome","astNodeIds":["0d36a384-2050-40ce-b388-134dd1d0d9ea"]},{"id":"57cee142-1788-4c1a-826f-2a3e83af42f4","text":"I set a k6 script for POST testing","type":"Action","astNodeIds":["9438f7d5-a8a0-434d-b882-2bf39ad9db91"]},{"id":"1e706b0b-d623-4d05-918c-129bb5740a9c","text":"I set to run the k6 script with the following configurations:","type":"Action","argument":{"dataTable":{"rows":[{"cells":[{"value":"virtual_users"},{"value":"duration"},{"value":"http_req_failed"},{"value":"http_req_duration"}]},{"cells":[{"value":"1"},{"value":"10"},{"value":"rate<0.05"},{"value":"p(95)<2000"}]}]}},"astNodeIds":["0539f132-ad02-4a6f-a926-36d322f804e5"]},{"id":"c4deb9a2-6509-4032-8bf4-d04c8cb24265","text":"I use JSON payload from \"okra.json\" for POST to \"\/api\/v3\/client\/bsp\"","type":"Action","astNodeIds":["d9559069-ed05-49ff-8626-2cece7ba471c"]},{"id":"d2aae648-bbec-497f-ba62-4f2223c06ba7","text":"I set the authentication type to \"auth_token\"","type":"Action","astNodeIds":["996ecc8d-ce44-4280-ba6e-c65af06f1b7c"]},{"id":"c9398853-8886-4550-bf30-4ad7d22922ff","text":"I see the API should handle the POST request successfully","type":"Outcome","astNodeIds":["da1b79f2-5738-4818-8aa2-d68f7b36e033"]}]}},{"pickle":{"id":"3f810192-427f-4681-a352-aaf646450441","uri":"features\/bsp.feature","astNodeIds":["02a9c484-db65-4912-ac0c-8016dc51220b"],"tags":[{"name":"@rate-limit","astNodeId":"f12333e7-8b9a-4e7f-88a1-3abc90df16d5"},{"name":"@exceed-limit","astNodeId":"142b35bf-2a25-4761-a1a3-a507f8c69409"}],"name":"API blocks more than 5 requests in 10 seconds (exceeds limit)","language":"en","steps":[{"id":"aed0b69a-d493-4721-9c77-c1001e62b76c","text":"I login via POST to \"\/api\/v3\/client\/api\/login\" with payload from \"login.json\"","type":"Context","astNodeIds":["cac25111-9279-4133-b04f-d24a8805ca7e"]},{"id":"06394c14-743a-4419-8954-1f6ae4f1452e","text":"I store the value at \"data.token\" as alias \"auth_token\"","type":"Outcome","astNodeIds":["0d36a384-2050-40ce-b388-134dd1d0d9ea"]},{"id":"992bf5c2-54bb-49ca-bddf-d97fb154d39c","text":"I set a k6 script for POST testing","type":"Action","astNodeIds":["c0bc247a-9fea-43d8-96d7-24cdba086b98"]},{"id":"b7bb7bad-0d03-47fc-a898-bbf4edab186d","text":"I set to run the k6 script with the following configurations:","type":"Action","argument":{"dataTable":{"rows":[{"cells":[{"value":"virtual_users"},{"value":"duration"},{"value":"http_req_failed"},{"value":"http_req_duration"}]},{"cells":[{"value":"6"},{"value":"10"},{"value":"rate>=0.50"},{"value":"p(95)<3000"}]}]}},"astNodeIds":["49a7d5e7-6475-4239-9ca5-5a4ea8fe74cb"]},{"id":"8a2eb407-f58d-40ce-b073-ad70036aca37","text":"I use JSON payload from \"okra.json\" for POST to \"\/api\/v3\/client\/bsp\"","type":"Action","astNodeIds":["a19544f9-8be3-4ee6-9fff-cd4725db4732"]},{"id":"a1f1c2f0-554a-4692-957d-c58456c934c8","text":"I set the authentication type to \"auth_token\"","type":"Action","astNodeIds":["ac21e79e-1a60-4b49-912b-4a4764542a17"]},{"id":"84769dce-e722-43a4-916d-350069470539","text":"I see the API should handle the POST request successfully","type":"Outcome","astNodeIds":["df933c86-83b2-4132-9553-12839081b17a"]}]}},{"pickle":{"id":"37e73220-3fec-4aba-9273-688ba353270c","uri":"features\/bsp.feature","astNodeIds":["d1942ee7-1b45-4f61-beb9-67b625ae16ae","69874b08-0e6d-4b45-88c4-f513ddb5eeb9"],"name":"I run the k6 script for load testing with dynamic GET requests","language":"en","steps":[{"id":"e7ba9c54-7046-4979-b570-908d9dfc5c9d","text":"I login via POST to \"\/api\/v3\/client\/api\/login\" with payload from \"login.json\"","type":"Context","astNodeIds":["cac25111-9279-4133-b04f-d24a8805ca7e"]},{"id":"1c95608b-e521-4d0c-8a25-32df87c96641","text":"I store the value at \"data.token\" as alias \"auth_token\"","type":"Outcome","astNodeIds":["0d36a384-2050-40ce-b388-134dd1d0d9ea"]},{"id":"ec2b2772-0026-4ad7-be26-511159a93ac3","text":"I set a k6 script for GET testing","type":"Context","astNodeIds":["6e659e20-8761-4dda-8367-85524f949776","69874b08-0e6d-4b45-88c4-f513ddb5eeb9"]},{"id":"4525c543-8d8b-410c-bfef-32a2de45c0d6","text":"I set to run the k6 script with the following configurations:","type":"Action","argument":{"dataTable":{"rows":[{"cells":[{"value":"virtual_users"},{"value":"duration"},{"value":"http_req_failed"},{"value":"http_req_duration"}]},{"cells":[{"value":"10"},{"value":"5"},{"value":"rate<0.05"},{"value":"p(95)<5000"}]}]}},"astNodeIds":["d89a1633-6e7a-4bf2-9462-14b9b658ba1f","69874b08-0e6d-4b45-88c4-f513ddb5eeb9"]},{"id":"5680c8bf-e7c2-4c56-9203-70ee922fb18f","text":"I set the following endpoints used:","type":"Action","argument":{"docString":{"content":"\/get?foo1=bar1&foo2=bar2\nhttps:\/\/postman-echo.com\/get?foo1=bar1&foo2=bar2"}},"astNodeIds":["79abe692-45a7-4d06-88d7-bcabab4dfc39","69874b08-0e6d-4b45-88c4-f513ddb5eeb9"]},{"id":"c44e8893-6b01-420d-be78-9e7b25f5fc34","text":"I set the authentication type to \"none\"","type":"Action","astNodeIds":["ada228a8-d92c-462a-8a2d-9feb9e131d86","69874b08-0e6d-4b45-88c4-f513ddb5eeb9"]},{"id":"b52a60cb-9598-467c-affa-7b51d4b2c4a4","text":"I see the API should handle the GET request successfully","type":"Outcome","astNodeIds":["495dcb98-d5f4-40d3-bd70-7a4530df5d08","69874b08-0e6d-4b45-88c4-f513ddb5eeb9"]}],"tags":[{"name":"@rate-limit","astNodeId":"f12333e7-8b9a-4e7f-88a1-3abc90df16d5"},{"name":"@get","astNodeId":"346d3c5c-e253-4ce6-944c-6a6c23d436b4"}]}},{"pickle":{"id":"85baac60-8641-49b3-bc7c-5754de39c4d2","uri":"features\/bsp.feature","astNodeIds":["d1942ee7-1b45-4f61-beb9-67b625ae16ae","e8506d2c-a932-4078-bad6-a2d15c31ab69"],"name":"I run the k6 script for load testing with dynamic GET requests","language":"en","steps":[{"id":"7999b895-af11-4faa-b568-ccdb7823df46","text":"I login via POST to \"\/api\/v3\/client\/api\/login\" with payload from \"login.json\"","type":"Context","astNodeIds":["cac25111-9279-4133-b04f-d24a8805ca7e"]},{"id":"d9d089ff-9757-4a2f-b176-4219d57931f6","text":"I store the value at \"data.token\" as alias \"auth_token\"","type":"Outcome","astNodeIds":["0d36a384-2050-40ce-b388-134dd1d0d9ea"]},{"id":"53d721e9-8a2a-4a87-a0bc-f83b3d9ab218","text":"I set a k6 script for GET testing","type":"Context","astNodeIds":["6e659e20-8761-4dda-8367-85524f949776","e8506d2c-a932-4078-bad6-a2d15c31ab69"]},{"id":"740f96d7-feb9-4321-b0a7-daacb73e26dd","text":"I set to run the k6 script with the following configurations:","type":"Action","argument":{"dataTable":{"rows":[{"cells":[{"value":"virtual_users"},{"value":"duration"},{"value":"http_req_failed"},{"value":"http_req_duration"}]},{"cells":[{"value":"5"},{"value":"2"},{"value":"rate<0.05"},{"value":"p(95)<5000"}]}]}},"astNodeIds":["d89a1633-6e7a-4bf2-9462-14b9b658ba1f","e8506d2c-a932-4078-bad6-a2d15c31ab69"]},{"id":"28c80918-faee-454e-b717-52eea8982199","text":"I set the following endpoints used:","type":"Action","argument":{"docString":{"content":"\/get?foo1=bar1&foo2=bar2\nhttps:\/\/postman-echo.com\/get?foo1=bar1&foo2=bar2"}},"astNodeIds":["79abe692-45a7-4d06-88d7-bcabab4dfc39","e8506d2c-a932-4078-bad6-a2d15c31ab69"]},{"id":"e954d659-273e-420e-a1a3-bb11fdaa8b63","text":"I set the authentication type to \"none\"","type":"Action","astNodeIds":["ada228a8-d92c-462a-8a2d-9feb9e131d86","e8506d2c-a932-4078-bad6-a2d15c31ab69"]},{"id":"2974e7dd-0380-493d-ab13-175aef7c0151","text":"I see the API should handle the GET request successfully","type":"Outcome","astNodeIds":["495dcb98-d5f4-40d3-bd70-7a4530df5d08","e8506d2c-a932-4078-bad6-a2d15c31ab69"]}],"tags":[{"name":"@rate-limit","astNodeId":"f12333e7-8b9a-4e7f-88a1-3abc90df16d5"},{"name":"@get","astNodeId":"346d3c5c-e253-4ce6-944c-6a6c23d436b4"}]}},{"stepDefinition":{"id":"bd032950-06eb-48e3-80c0-4a6eebb04fb9","pattern":{"source":"I set a k6 script for {word} testing","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"step_definitions\/load_test_steps.js","location":{"line":28}}}},{"stepDefinition":{"id":"13b1d760-8a89-443e-871b-d31d839821e2","pattern":{"source":"I set to run the k6 script with the following configurations:","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"step_definitions\/load_test_steps.js","location":{"line":40}}}},{"stepDefinition":{"id":"ea091c95-8832-40d6-b4b1-0b5199ab0c67","pattern":{"source":"I set the request headers:","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"step_definitions\/load_test_steps.js","location":{"line":124}}}},{"stepDefinition":{"id":"5a895bf1-93a0-44aa-9f02-7c7479ca913d","pattern":{"source":"I set the following endpoints used:","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"step_definitions\/load_test_steps.js","location":{"line":145}}}},{"stepDefinition":{"id":"da3fd24e-6e1b-407c-9389-fe58898ef008","pattern":{"source":"I set the following {word} body is used for {string}","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"step_definitions\/load_test_steps.js","location":{"line":165}}}},{"stepDefinition":{"id":"22f6b4ae-156a-4226-8423-e68a2a698254","pattern":{"source":"I use JSON payload from {string} for {word} to {string}","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"step_definitions\/load_test_steps.js","location":{"line":174}}}},{"stepDefinition":{"id":"2fee4d08-f379-4654-b647-8400e521ee0b","pattern":{"source":"I set the authentication type to {string}","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"step_definitions\/load_test_steps.js","location":{"line":226}}}},{"stepDefinition":{"id":"697d6394-11a0-4b85-8d93-f0b2fe948247","pattern":{"source":"I store the value at {string} as alias {string}","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"step_definitions\/load_test_steps.js","location":{"line":237}}}},{"stepDefinition":{"id":"9fb16dc8-43a5-4bf7-98cb-704c807d7ef7","pattern":{"source":"I login via POST to {string} with payload from {string}","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"step_definitions\/load_test_steps.js","location":{"line":262}}}},{"stepDefinition":{"id":"55ecb4f1-37ff-45be-bfb4-47a2c00bf1ec","pattern":{"source":"I see the API should handle the {word} request successfully","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"step_definitions\/load_test_steps.js","location":{"line":306}}}},{"testRunStarted":{"id":"fe759f94-8b97-4456-ab63-1d834c12b3b0","timestamp":{"seconds":1750840270,"nanos":690000000}}},{"testCase":{"testRunStartedId":"fe759f94-8b97-4456-ab63-1d834c12b3b0","pickleId":"37e73220-3fec-4aba-9273-688ba353270c","id":"a9059a9d-2074-44b5-ae7b-bd001794f701","testSteps":[{"id":"4b5e0abe-37f3-4949-ab6c-ee36346ed79d","pickleStepId":"e7ba9c54-7046-4979-b570-908d9dfc5c9d","stepDefinitionIds":["9fb16dc8-43a5-4bf7-98cb-704c807d7ef7"],"stepMatchArgumentsLists":[{"stepMatchArguments":[{"group":{"start":20,"value":"\"\/api\/v3\/client\/api\/login\"","children":[{"start":21,"value":"\/api\/v3\/client\/api\/login","children":[{"children":[]}]},{"children":[{"children":[]}]}]},"parameterTypeName":"string"},{"group":{"start":65,"value":"\"login.json\"","children":[{"start":66,"value":"login.json","children":[{"children":[]}]},{"children":[{"children":[]}]}]},"parameterTypeName":"string"}]}]},{"id":"77ed9f04-ffa3-4510-959f-67c9a054fb0f","pickleStepId":"1c95608b-e521-4d0c-8a25-32df87c96641","stepDefinitionIds":["697d6394-11a0-4b85-8d93-f0b2fe948247"],"stepMatchArgumentsLists":[{"stepMatchArguments":[{"group":{"start":21,"value":"\"data.token\"","children":[{"start":22,"value":"data.token","children":[{"children":[]}]},{"children":[{"children":[]}]}]},"parameterTypeName":"string"},{"group":{"start":43,"value":"\"auth_token\"","children":[{"start":44,"value":"auth_token","children":[{"children":[]}]},{"children":[{"children":[]}]}]},"parameterTypeName":"string"}]}]},{"id":"ee0c0b27-8a73-467e-bbe9-53a282011307","pickleStepId":"ec2b2772-0026-4ad7-be26-511159a93ac3","stepDefinitionIds":["bd032950-06eb-48e3-80c0-4a6eebb04fb9"],"stepMatchArgumentsLists":[{"stepMatchArguments":[{"group":{"start":22,"value":"GET","children":[]},"parameterTypeName":"word"}]}]},{"id":"1f8fae62-ea29-42bb-a40c-a427c2b4762c","pickleStepId":"4525c543-8d8b-410c-bfef-32a2de45c0d6","stepDefinitionIds":["13b1d760-8a89-443e-871b-d31d839821e2"],"stepMatchArgumentsLists":[{"stepMatchArguments":[]}]},{"id":"6e22fba0-d401-425b-be0c-7c3edd40b6fa","pickleStepId":"5680c8bf-e7c2-4c56-9203-70ee922fb18f","stepDefinitionIds":["5a895bf1-93a0-44aa-9f02-7c7479ca913d"],"stepMatchArgumentsLists":[{"stepMatchArguments":[]}]},{"id":"415b8256-0b5b-4883-87c1-f9e13c38053f","pickleStepId":"c44e8893-6b01-420d-be78-9e7b25f5fc34","stepDefinitionIds":["2fee4d08-f379-4654-b647-8400e521ee0b"],"stepMatchArgumentsLists":[{"stepMatchArguments":[{"group":{"start":33,"value":"\"none\"","children":[{"start":34,"value":"none","children":[{"children":[]}]},{"children":[{"children":[]}]}]},"parameterTypeName":"string"}]}]},{"id":"974cfc59-c610-4822-a21d-f9497fedc8ff","pickleStepId":"b52a60cb-9598-467c-affa-7b51d4b2c4a4","stepDefinitionIds":["55ecb4f1-37ff-45be-bfb4-47a2c00bf1ec"],"stepMatchArgumentsLists":[{"stepMatchArguments":[{"group":{"start":32,"value":"GET","children":[]},"parameterTypeName":"word"}]}]}]}},{"testCase":{"testRunStartedId":"fe759f94-8b97-4456-ab63-1d834c12b3b0","pickleId":"85baac60-8641-49b3-bc7c-5754de39c4d2","id":"d8796e84-7c4e-408a-a3bf-c14bc82d403b","testSteps":[{"id":"fb8a6861-0807-4ea3-8b0b-6831a19f0f0b","pickleStepId":"7999b895-af11-4faa-b568-ccdb7823df46","stepDefinitionIds":["9fb16dc8-43a5-4bf7-98cb-704c807d7ef7"],"stepMatchArgumentsLists":[{"stepMatchArguments":[{"group":{"start":20,"value":"\"\/api\/v3\/client\/api\/login\"","children":[{"start":21,"value":"\/api\/v3\/client\/api\/login","children":[{"children":[]}]},{"children":[{"children":[]}]}]},"parameterTypeName":"string"},{"group":{"start":65,"value":"\"login.json\"","children":[{"start":66,"value":"login.json","children":[{"children":[]}]},{"children":[{"children":[]}]}]},"parameterTypeName":"string"}]}]},{"id":"e0dcb6f0-5774-4f05-98b4-394147fd0ac3","pickleStepId":"d9d089ff-9757-4a2f-b176-4219d57931f6","stepDefinitionIds":["697d6394-11a0-4b85-8d93-f0b2fe948247"],"stepMatchArgumentsLists":[{"stepMatchArguments":[{"group":{"start":21,"value":"\"data.token\"","children":[{"start":22,"value":"data.token","children":[{"children":[]}]},{"children":[{"children":[]}]}]},"parameterTypeName":"string"},{"group":{"start":43,"value":"\"auth_token\"","children":[{"start":44,"value":"auth_token","children":[{"children":[]}]},{"children":[{"children":[]}]}]},"parameterTypeName":"string"}]}]},{"id":"64e8e8c4-cc0b-40b2-b0b9-2d8e2c24c260","pickleStepId":"53d721e9-8a2a-4a87-a0bc-f83b3d9ab218","stepDefinitionIds":["bd032950-06eb-48e3-80c0-4a6eebb04fb9"],"stepMatchArgumentsLists":[{"stepMatchArguments":[{"group":{"start":22,"value":"GET","children":[]},"parameterTypeName":"word"}]}]},{"id":"4991b36e-c565-4c03-b3ac-3392c41fc21d","pickleStepId":"740f96d7-feb9-4321-b0a7-daacb73e26dd","stepDefinitionIds":["13b1d760-8a89-443e-871b-d31d839821e2"],"stepMatchArgumentsLists":[{"stepMatchArguments":[]}]},{"id":"d88aa119-7e53-4dee-a1f9-558082b02ebc","pickleStepId":"28c80918-faee-454e-b717-52eea8982199","stepDefinitionIds":["5a895bf1-93a0-44aa-9f02-7c7479ca913d"],"stepMatchArgumentsLists":[{"stepMatchArguments":[]}]},{"id":"3693030a-616d-4d94-beb0-7b90dde941dc","pickleStepId":"e954d659-273e-420e-a1a3-bb11fdaa8b63","stepDefinitionIds":["2fee4d08-f379-4654-b647-8400e521ee0b"],"stepMatchArgumentsLists":[{"stepMatchArguments":[{"group":{"start":33,"value":"\"none\"","children":[{"start":34,"value":"none","children":[{"children":[]}]},{"children":[{"children":[]}]}]},"parameterTypeName":"string"}]}]},{"id":"6bae6ed1-1952-4c9a-91c1-f95526ba184f","pickleStepId":"2974e7dd-0380-493d-ab13-175aef7c0151","stepDefinitionIds":["55ecb4f1-37ff-45be-bfb4-47a2c00bf1ec"],"stepMatchArgumentsLists":[{"stepMatchArguments":[{"group":{"start":32,"value":"GET","children":[]},"parameterTypeName":"word"}]}]}]}},{"testCaseStarted":{"attempt":0,"testCaseId":"a9059a9d-2074-44b5-ae7b-bd001794f701","id":"469e750a-9787-4df4-a7d0-b87258a18ec9","timestamp":{"seconds":1750840270,"nanos":702000000}}},{"testStepStarted":{"testCaseStartedId":"469e750a-9787-4df4-a7d0-b87258a18ec9","testStepId":"4b5e0abe-37f3-4949-ab6c-ee36346ed79d","timestamp":{"seconds":1750840270,"nanos":702000000}}},{"testStepFinished":{"testCaseStartedId":"469e750a-9787-4df4-a7d0-b87258a18ec9","testStepId":"4b5e0abe-37f3-4949-ab6c-ee36346ed79d","testStepResult":{"duration":{"seconds":0,"nanos":780541},"status":"FAILED","message":"Error: Payload file not found: \/Users\/paschal\/personal\/k6-cucumber-steps\/payloads\/login.json\n at CustomWorld.<anonymous> (\/Users\/paschal\/personal\/k6-cucumber-steps\/step_definitions\/load_test_steps.js:270:13)","exception":{"type":"Error","message":"Payload file not found: \/Users\/paschal\/personal\/k6-cucumber-steps\/payloads\/login.json","stackTrace":" at CustomWorld.<anonymous> (\/Users\/paschal\/personal\/k6-cucumber-steps\/step_definitions\/load_test_steps.js:270:13)"}},"timestamp":{"seconds":1750840270,"nanos":703000000}}},{"testStepStarted":{"testCaseStartedId":"469e750a-9787-4df4-a7d0-b87258a18ec9","testStepId":"77ed9f04-ffa3-4510-959f-67c9a054fb0f","timestamp":{"seconds":1750840270,"nanos":703000000}}},{"testStepFinished":{"testCaseStartedId":"469e750a-9787-4df4-a7d0-b87258a18ec9","testStepId":"77ed9f04-ffa3-4510-959f-67c9a054fb0f","testStepResult":{"status":"SKIPPED","duration":{"seconds":0,"nanos":0}},"timestamp":{"seconds":1750840270,"nanos":703000000}}},{"testStepStarted":{"testCaseStartedId":"469e750a-9787-4df4-a7d0-b87258a18ec9","testStepId":"ee0c0b27-8a73-467e-bbe9-53a282011307","timestamp":{"seconds":1750840270,"nanos":703000000}}},{"testStepFinished":{"testCaseStartedId":"469e750a-9787-4df4-a7d0-b87258a18ec9","testStepId":"ee0c0b27-8a73-467e-bbe9-53a282011307","testStepResult":{"status":"SKIPPED","duration":{"seconds":0,"nanos":0}},"timestamp":{"seconds":1750840270,"nanos":703000000}}},{"testStepStarted":{"testCaseStartedId":"469e750a-9787-4df4-a7d0-b87258a18ec9","testStepId":"1f8fae62-ea29-42bb-a40c-a427c2b4762c","timestamp":{"seconds":1750840270,"nanos":703000000}}},{"testStepFinished":{"testCaseStartedId":"469e750a-9787-4df4-a7d0-b87258a18ec9","testStepId":"1f8fae62-ea29-42bb-a40c-a427c2b4762c","testStepResult":{"status":"SKIPPED","duration":{"seconds":0,"nanos":0}},"timestamp":{"seconds":1750840270,"nanos":703000000}}},{"testStepStarted":{"testCaseStartedId":"469e750a-9787-4df4-a7d0-b87258a18ec9","testStepId":"6e22fba0-d401-425b-be0c-7c3edd40b6fa","timestamp":{"seconds":1750840270,"nanos":703000000}}},{"testStepFinished":{"testCaseStartedId":"469e750a-9787-4df4-a7d0-b87258a18ec9","testStepId":"6e22fba0-d401-425b-be0c-7c3edd40b6fa","testStepResult":{"status":"SKIPPED","duration":{"seconds":0,"nanos":0}},"timestamp":{"seconds":1750840270,"nanos":703000000}}},{"testStepStarted":{"testCaseStartedId":"469e750a-9787-4df4-a7d0-b87258a18ec9","testStepId":"415b8256-0b5b-4883-87c1-f9e13c38053f","timestamp":{"seconds":1750840270,"nanos":703000000}}},{"testStepFinished":{"testCaseStartedId":"469e750a-9787-4df4-a7d0-b87258a18ec9","testStepId":"415b8256-0b5b-4883-87c1-f9e13c38053f","testStepResult":{"status":"SKIPPED","duration":{"seconds":0,"nanos":0}},"timestamp":{"seconds":1750840270,"nanos":703000000}}},{"testStepStarted":{"testCaseStartedId":"469e750a-9787-4df4-a7d0-b87258a18ec9","testStepId":"974cfc59-c610-4822-a21d-f9497fedc8ff","timestamp":{"seconds":1750840270,"nanos":703000000}}},{"testStepFinished":{"testCaseStartedId":"469e750a-9787-4df4-a7d0-b87258a18ec9","testStepId":"974cfc59-c610-4822-a21d-f9497fedc8ff","testStepResult":{"status":"SKIPPED","duration":{"seconds":0,"nanos":0}},"timestamp":{"seconds":1750840270,"nanos":703000000}}},{"testCaseFinished":{"testCaseStartedId":"469e750a-9787-4df4-a7d0-b87258a18ec9","timestamp":{"seconds":1750840270,"nanos":703000000},"willBeRetried":false}},{"testCaseStarted":{"attempt":0,"testCaseId":"d8796e84-7c4e-408a-a3bf-c14bc82d403b","id":"0d1f2486-4f40-45f0-8302-8a62ffacdbe4","timestamp":{"seconds":1750840270,"nanos":703000000}}},{"testStepStarted":{"testCaseStartedId":"0d1f2486-4f40-45f0-8302-8a62ffacdbe4","testStepId":"fb8a6861-0807-4ea3-8b0b-6831a19f0f0b","timestamp":{"seconds":1750840270,"nanos":703000000}}},{"testStepFinished":{"testCaseStartedId":"0d1f2486-4f40-45f0-8302-8a62ffacdbe4","testStepId":"fb8a6861-0807-4ea3-8b0b-6831a19f0f0b","testStepResult":{"duration":{"seconds":0,"nanos":92582},"status":"FAILED","message":"Error: Payload file not found: \/Users\/paschal\/personal\/k6-cucumber-steps\/payloads\/login.json\n at CustomWorld.<anonymous> (\/Users\/paschal\/personal\/k6-cucumber-steps\/step_definitions\/load_test_steps.js:270:13)","exception":{"type":"Error","message":"Payload file not found: \/Users\/paschal\/personal\/k6-cucumber-steps\/payloads\/login.json","stackTrace":" at CustomWorld.<anonymous> (\/Users\/paschal\/personal\/k6-cucumber-steps\/step_definitions\/load_test_steps.js:270:13)"}},"timestamp":{"seconds":1750840270,"nanos":704000000}}},{"testStepStarted":{"testCaseStartedId":"0d1f2486-4f40-45f0-8302-8a62ffacdbe4","testStepId":"e0dcb6f0-5774-4f05-98b4-394147fd0ac3","timestamp":{"seconds":1750840270,"nanos":704000000}}},{"testStepFinished":{"testCaseStartedId":"0d1f2486-4f40-45f0-8302-8a62ffacdbe4","testStepId":"e0dcb6f0-5774-4f05-98b4-394147fd0ac3","testStepResult":{"status":"SKIPPED","duration":{"seconds":0,"nanos":0}},"timestamp":{"seconds":1750840270,"nanos":704000000}}},{"testStepStarted":{"testCaseStartedId":"0d1f2486-4f40-45f0-8302-8a62ffacdbe4","testStepId":"64e8e8c4-cc0b-40b2-b0b9-2d8e2c24c260","timestamp":{"seconds":1750840270,"nanos":704000000}}},{"testStepFinished":{"testCaseStartedId":"0d1f2486-4f40-45f0-8302-8a62ffacdbe4","testStepId":"64e8e8c4-cc0b-40b2-b0b9-2d8e2c24c260","testStepResult":{"status":"SKIPPED","duration":{"seconds":0,"nanos":0}},"timestamp":{"seconds":1750840270,"nanos":704000000}}},{"testStepStarted":{"testCaseStartedId":"0d1f2486-4f40-45f0-8302-8a62ffacdbe4","testStepId":"4991b36e-c565-4c03-b3ac-3392c41fc21d","timestamp":{"seconds":1750840270,"nanos":704000000}}},{"testStepFinished":{"testCaseStartedId":"0d1f2486-4f40-45f0-8302-8a62ffacdbe4","testStepId":"4991b36e-c565-4c03-b3ac-3392c41fc21d","testStepResult":{"status":"SKIPPED","duration":{"seconds":0,"nanos":0}},"timestamp":{"seconds":1750840270,"nanos":704000000}}},{"testStepStarted":{"testCaseStartedId":"0d1f2486-4f40-45f0-8302-8a62ffacdbe4","testStepId":"d88aa119-7e53-4dee-a1f9-558082b02ebc","timestamp":{"seconds":1750840270,"nanos":704000000}}},{"testStepFinished":{"testCaseStartedId":"0d1f2486-4f40-45f0-8302-8a62ffacdbe4","testStepId":"d88aa119-7e53-4dee-a1f9-558082b02ebc","testStepResult":{"status":"SKIPPED","duration":{"seconds":0,"nanos":0}},"timestamp":{"seconds":1750840270,"nanos":704000000}}},{"testStepStarted":{"testCaseStartedId":"0d1f2486-4f40-45f0-8302-8a62ffacdbe4","testStepId":"3693030a-616d-4d94-beb0-7b90dde941dc","timestamp":{"seconds":1750840270,"nanos":704000000}}},{"testStepFinished":{"testCaseStartedId":"0d1f2486-4f40-45f0-8302-8a62ffacdbe4","testStepId":"3693030a-616d-4d94-beb0-7b90dde941dc","testStepResult":{"status":"SKIPPED","duration":{"seconds":0,"nanos":0}},"timestamp":{"seconds":1750840270,"nanos":704000000}}},{"testStepStarted":{"testCaseStartedId":"0d1f2486-4f40-45f0-8302-8a62ffacdbe4","testStepId":"6bae6ed1-1952-4c9a-91c1-f95526ba184f","timestamp":{"seconds":1750840270,"nanos":704000000}}},{"testStepFinished":{"testCaseStartedId":"0d1f2486-4f40-45f0-8302-8a62ffacdbe4","testStepId":"6bae6ed1-1952-4c9a-91c1-f95526ba184f","testStepResult":{"status":"SKIPPED","duration":{"seconds":0,"nanos":0}},"timestamp":{"seconds":1750840270,"nanos":704000000}}},{"testCaseFinished":{"testCaseStartedId":"0d1f2486-4f40-45f0-8302-8a62ffacdbe4","timestamp":{"seconds":1750840270,"nanos":704000000},"willBeRetried":false}},{"testRunFinished":{"testRunStartedId":"fe759f94-8b97-4456-ab63-1d834c12b3b0","timestamp":{"seconds":1750840270,"nanos":704000000},"success":false}}];
44
44
  </script>
45
45
  <script>
46
46
  /*! For license information please see main.js.LICENSE.txt */