k6-cucumber-steps 1.2.13 → 1.2.15

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.
Files changed (62) hide show
  1. package/README.md +13 -6
  2. package/docs/data/search.json +1 -0
  3. package/docs/fonts/Inconsolata-Regular.ttf +0 -0
  4. package/docs/fonts/OpenSans-Regular.ttf +0 -0
  5. package/docs/fonts/WorkSans-Bold.ttf +0 -0
  6. package/docs/global.html +36 -0
  7. package/docs/index.html +91 -0
  8. package/docs/k6-cucumber-steps/1.2.8/data/search.json +1 -0
  9. package/docs/k6-cucumber-steps/1.2.8/fonts/Inconsolata-Regular.ttf +0 -0
  10. package/docs/k6-cucumber-steps/1.2.8/fonts/OpenSans-Regular.ttf +0 -0
  11. package/docs/k6-cucumber-steps/1.2.8/fonts/WorkSans-Bold.ttf +0 -0
  12. package/docs/k6-cucumber-steps/1.2.8/global.html +3 -0
  13. package/docs/k6-cucumber-steps/1.2.8/helpers_generateHeaders.js.html +38 -0
  14. package/docs/k6-cucumber-steps/1.2.8/helpers_resolveBody.js.html +65 -0
  15. package/docs/k6-cucumber-steps/1.2.8/index.html +91 -0
  16. package/docs/k6-cucumber-steps/1.2.8/module-generateHeaders.html +3 -0
  17. package/docs/k6-cucumber-steps/1.2.8/module-resolveBody.html +3 -0
  18. package/docs/k6-cucumber-steps/1.2.8/scripts/core.js +726 -0
  19. package/docs/k6-cucumber-steps/1.2.8/scripts/core.min.js +23 -0
  20. package/docs/k6-cucumber-steps/1.2.8/scripts/resize.js +90 -0
  21. package/docs/k6-cucumber-steps/1.2.8/scripts/search.js +265 -0
  22. package/docs/k6-cucumber-steps/1.2.8/scripts/search.min.js +6 -0
  23. package/docs/k6-cucumber-steps/1.2.8/scripts/third-party/Apache-License-2.0.txt +202 -0
  24. package/docs/k6-cucumber-steps/1.2.8/scripts/third-party/fuse.js +9 -0
  25. package/docs/k6-cucumber-steps/1.2.8/scripts/third-party/hljs-line-num-original.js +369 -0
  26. package/docs/k6-cucumber-steps/1.2.8/scripts/third-party/hljs-line-num.js +1 -0
  27. package/docs/k6-cucumber-steps/1.2.8/scripts/third-party/hljs-original.js +5171 -0
  28. package/docs/k6-cucumber-steps/1.2.8/scripts/third-party/hljs.js +1 -0
  29. package/docs/k6-cucumber-steps/1.2.8/scripts/third-party/popper.js +5 -0
  30. package/docs/k6-cucumber-steps/1.2.8/scripts/third-party/tippy.js +1 -0
  31. package/docs/k6-cucumber-steps/1.2.8/scripts/third-party/tocbot.js +672 -0
  32. package/docs/k6-cucumber-steps/1.2.8/scripts/third-party/tocbot.min.js +1 -0
  33. package/docs/k6-cucumber-steps/1.2.8/styles/clean-jsdoc-theme-base.css +1159 -0
  34. package/docs/k6-cucumber-steps/1.2.8/styles/clean-jsdoc-theme-dark.css +412 -0
  35. package/docs/k6-cucumber-steps/1.2.8/styles/clean-jsdoc-theme-light.css +482 -0
  36. package/docs/k6-cucumber-steps/1.2.8/styles/clean-jsdoc-theme-scrollbar.css +30 -0
  37. package/docs/k6-cucumber-steps/1.2.8/styles/clean-jsdoc-theme-without-scrollbar.min.css +1 -0
  38. package/docs/k6-cucumber-steps/1.2.8/styles/clean-jsdoc-theme.min.css +1 -0
  39. package/docs/k6-cucumber-steps/1.2.8/utils_k6Runner.js.html +95 -0
  40. package/docs/load_test_steps.js.html +664 -0
  41. package/docs/scripts/core.js +726 -0
  42. package/docs/scripts/core.min.js +23 -0
  43. package/docs/scripts/resize.js +90 -0
  44. package/docs/scripts/search.js +265 -0
  45. package/docs/scripts/search.min.js +6 -0
  46. package/docs/scripts/third-party/Apache-License-2.0.txt +202 -0
  47. package/docs/scripts/third-party/fuse.js +9 -0
  48. package/docs/scripts/third-party/hljs-line-num-original.js +369 -0
  49. package/docs/scripts/third-party/hljs-line-num.js +1 -0
  50. package/docs/scripts/third-party/hljs-original.js +5171 -0
  51. package/docs/scripts/third-party/hljs.js +1 -0
  52. package/docs/scripts/third-party/popper.js +5 -0
  53. package/docs/scripts/third-party/tippy.js +1 -0
  54. package/docs/scripts/third-party/tocbot.js +672 -0
  55. package/docs/scripts/third-party/tocbot.min.js +1 -0
  56. package/docs/styles/clean-jsdoc-theme-base.css +1159 -0
  57. package/docs/styles/clean-jsdoc-theme-dark.css +412 -0
  58. package/docs/styles/clean-jsdoc-theme-light.css +482 -0
  59. package/docs/styles/clean-jsdoc-theme-scrollbar.css +30 -0
  60. package/docs/styles/clean-jsdoc-theme-without-scrollbar.min.css +1 -0
  61. package/docs/styles/clean-jsdoc-theme.min.css +1 -0
  62. package/package.json +2 -1
package/README.md CHANGED
@@ -103,16 +103,23 @@ Here's a step-by-step guide to using `k6-cucumber-steps` in your project:
103
103
  yarn add --dev @cucumber/cucumber k6 dotenv k6-cucumber-steps cucumber-html-reporter
104
104
  ```
105
105
 
106
- 3. **Create `.env` file (optional):** Create a `.env` file in your project root for environment variables as described in the "Environment Variables" section below.
106
+ 3. **Load step definitions** from the package:
107
107
 
108
- 4. **Create `features` directory and feature files:**
108
+ ```js
109
+ // e2e/steps/index.js or .ts
110
+ import "k6-cucumber-steps";
111
+ ```
112
+
113
+ 4. **Create `.env` file (optional):** Create a `.env` file in your project root for environment variables as described in the "Environment Variables" section below.
114
+
115
+ 5. **Create `features` directory and feature files:**
109
116
 
110
117
  ```bash
111
118
  mkdir features
112
119
  # Create your .feature files inside the features directory (e.g., example.feature)
113
120
  ```
114
121
 
115
- 5. **Configure `cucumber.js`:**
122
+ 6. **Configure `cucumber.js`:**
116
123
  Create a `cucumber.js` file at the root of your project with the following content:
117
124
 
118
125
  ```javascript
@@ -120,18 +127,18 @@ Here's a step-by-step guide to using `k6-cucumber-steps` in your project:
120
127
 
121
128
  module.exports = {
122
129
  require: [
123
- // You can add paths to your local step definitions here if needed
130
+ "path/to/steps/index.js", // You can add paths to your local step definitions here if needed
124
131
  ],
125
132
  reporter: true, // To provide HTML and JSON report
126
133
  format: [
127
134
  "summary",
128
135
  "json:reports/load-report.json", // For JSON report
129
- "html:reports/report.html", // For HTML report
136
+ "html:reports/cucumber-report.html", // For HTML report
130
137
  ],
131
138
  paths: ["./features/*.feature"],
132
139
  tags: process.env.TAGS,
133
140
  worldParameters: {
134
- payloadPath: "apps/qa/performance/payloads",
141
+ payloadPath: "/payloads",
135
142
  },
136
143
  overwrite: false, // Default to not overwrite the report file
137
144
  cleanReports: true, // <--- Clean the reports directory before running
@@ -0,0 +1 @@
1
+ {"list":[{"title":"CustomWorld","link":"<a href=\"global.html#CustomWorld\">CustomWorld</a>"},{"title":"Given_I_set_k6_script_for_method_testing","link":"<a href=\"global.html#Given_I_set_k6_script_for_method_testing\">Given_I_set_k6_script_for_method_testing</a>","description":"<p>Initializes the k6 script configuration by setting the primary HTTP method for the load test.</p>\n<pre class=\"prettyprint source lang-gherkin\"><code>Given I set a k6 script for {word} testing\n</code></pre>"},{"title":"Given_I_set_k6_script_for_method_testing#config","link":"<a href=\"global.html#Given_I_set_k6_script_for_method_testing#config\">config</a>"},{"title":"K6Config","link":"<a href=\"global.html#K6Config\">K6Config</a>"},{"title":"Then_I_store_value_as_alias","link":"<a href=\"global.html#Then_I_store_value_as_alias\">Then_I_store_value_as_alias</a>","description":"<p>Stores a value from the last API response into the Cucumber World's aliases context.</p>\n<pre class=\"prettyprint source lang-gherkin\"><code>Then I store the value at &quot;data.token&quot; as alias &quot;authToken&quot;\n</code></pre>"},{"title":"When_I_login_via_POST_with_payload_from_file","link":"<a href=\"global.html#When_I_login_via_POST_with_payload_from_file\">When_I_login_via_POST_with_payload_from_file</a>","description":"<p>Logs in via a POST request to a specified endpoint using a JSON payload from a file.\nThe response data is stored for subsequent steps.</p>\n<pre class=\"prettyprint source lang-gherkin\"><code>When I login via POST to &quot;/auth/login&quot; with payload from &quot;admin_credentials.json&quot;\n</code></pre>"},{"title":"When_I_set_authentication_type","link":"<a href=\"global.html#When_I_set_authentication_type\">When_I_set_authentication_type</a>","description":"<p>Sets the authentication type for the k6 request, generating relevant headers.</p>\n<pre class=\"prettyprint source lang-gherkin\"><code>When I set the authentication type to &quot;BearerToken&quot;\n</code></pre>"},{"title":"When_I_set_endpoints_used","link":"<a href=\"global.html#When_I_set_endpoints_used\">When_I_set_endpoints_used</a>","description":"<p>Sets the list of endpoints to be used in the k6 script. These are typically used when\nthe k6 script iterates over multiple URLs.</p>\n<pre class=\"prettyprint source lang-gherkin\"><code>When I set the following endpoints used:\n/api/v1/users\n/api/v1/products\n/api/v1/orders\n</code></pre>"},{"title":"When_I_set_k6_script_configurations","link":"<a href=\"global.html#When_I_set_k6_script_configurations\">When_I_set_k6_script_configurations</a>","description":"<p>Configures the k6 script options (VUs, duration, stages, thresholds) from a data table.</p>\n<pre class=\"prettyprint source lang-gherkin\"><code>When I set to run the k6 script with the following configurations:\n| virtual_users | duration | stages | http_req_failed | http_req_duration | error_rate |\n| 10 | 30 | | p(99)&lt;0.01 | p(99)&lt;500 | rate&lt;0.01 |\n| | | [{&quot;duration&quot;:&quot;10s&quot;,&quot;target&quot;:10}] | p(90)&lt;0.01 | p(90)&lt;200 | rate&lt;0.001 |\n</code></pre>"},{"title":"When_I_set_method_body_for_endpoint","link":"<a href=\"global.html#When_I_set_method_body_for_endpoint\">When_I_set_method_body_for_endpoint</a>","description":"<p>Sets the request body for a specific HTTP method and endpoint.</p>\n<pre class=\"prettyprint source lang-gherkin\"><code>When I set the following POST body is used for &quot;/api/v1/create&quot;\n{ &quot;name&quot;: &quot;test&quot;, &quot;email&quot;: &quot;test@example.com&quot; }\n</code></pre>"},{"title":"When_I_set_request_headers","link":"<a href=\"global.html#When_I_set_request_headers\">When_I_set_request_headers</a>","description":"<p>Sets request headers for the k6 script. Headers are merged with any existing headers.</p>\n<pre class=\"prettyprint source lang-gherkin\"><code>When I set the request headers:\n| Header | Value |\n| Content-Type | application/json |\n| Authorization | Bearer &lt;my_token> |\n</code></pre>"},{"title":"When_I_use_JSON_payload_from_file_for_method_to_endpoint","link":"<a href=\"global.html#When_I_use_JSON_payload_from_file_for_method_to_endpoint\">When_I_use_JSON_payload_from_file_for_method_to_endpoint</a>","description":"<p>Loads a JSON payload from a file to be used as the request body for a specific\nmethod and endpoint in the k6 script.</p>\n<pre class=\"prettyprint source lang-gherkin\"><code>When I use JSON payload from &quot;user_create.json&quot; for POST to &quot;/api/v1/users&quot;\n</code></pre>"}]}
Binary file
Binary file
@@ -0,0 +1,36 @@
1
+ <!DOCTYPE html><html lang="en" style="font-size:16px"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Global</title><!--[if lt IE 9]>
2
+ <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
3
+ <![endif]--><script src="scripts/third-party/hljs.js" defer="defer"></script><script src="scripts/third-party/hljs-line-num.js" defer="defer"></script><script src="scripts/third-party/popper.js" defer="defer"></script><script src="scripts/third-party/tippy.js" defer="defer"></script><script src="scripts/third-party/tocbot.min.js"></script><script>var baseURL="/",locationPathname="";baseURL=(locationPathname=document.location.pathname).substr(0,locationPathname.lastIndexOf("/")+1)</script><link rel="stylesheet" href="styles/clean-jsdoc-theme.min.css"><svg aria-hidden="true" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="display:none"><defs><symbol id="copy-icon" viewbox="0 0 488.3 488.3"><g><path d="M314.25,85.4h-227c-21.3,0-38.6,17.3-38.6,38.6v325.7c0,21.3,17.3,38.6,38.6,38.6h227c21.3,0,38.6-17.3,38.6-38.6V124 C352.75,102.7,335.45,85.4,314.25,85.4z M325.75,449.6c0,6.4-5.2,11.6-11.6,11.6h-227c-6.4,0-11.6-5.2-11.6-11.6V124 c0-6.4,5.2-11.6,11.6-11.6h227c6.4,0,11.6,5.2,11.6,11.6V449.6z"/><path d="M401.05,0h-227c-21.3,0-38.6,17.3-38.6,38.6c0,7.5,6,13.5,13.5,13.5s13.5-6,13.5-13.5c0-6.4,5.2-11.6,11.6-11.6h227 c6.4,0,11.6,5.2,11.6,11.6v325.7c0,6.4-5.2,11.6-11.6,11.6c-7.5,0-13.5,6-13.5,13.5s6,13.5,13.5,13.5c21.3,0,38.6-17.3,38.6-38.6 V38.6C439.65,17.3,422.35,0,401.05,0z"/></g></symbol><symbol id="search-icon" viewBox="0 0 512 512"><g><g><path d="M225.474,0C101.151,0,0,101.151,0,225.474c0,124.33,101.151,225.474,225.474,225.474 c124.33,0,225.474-101.144,225.474-225.474C450.948,101.151,349.804,0,225.474,0z M225.474,409.323 c-101.373,0-183.848-82.475-183.848-183.848S124.101,41.626,225.474,41.626s183.848,82.475,183.848,183.848 S326.847,409.323,225.474,409.323z"/></g></g><g><g><path d="M505.902,476.472L386.574,357.144c-8.131-8.131-21.299-8.131-29.43,0c-8.131,8.124-8.131,21.306,0,29.43l119.328,119.328 c4.065,4.065,9.387,6.098,14.715,6.098c5.321,0,10.649-2.033,14.715-6.098C514.033,497.778,514.033,484.596,505.902,476.472z"/></g></g></symbol><symbol id="font-size-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M11.246 15H4.754l-2 5H.6L7 4h2l6.4 16h-2.154l-2-5zm-.8-2L8 6.885 5.554 13h4.892zM21 12.535V12h2v8h-2v-.535a4 4 0 1 1 0-6.93zM19 18a2 2 0 1 0 0-4 2 2 0 0 0 0 4z"/></symbol><symbol id="add-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M11 11V5h2v6h6v2h-6v6h-2v-6H5v-2z"/></symbol><symbol id="minus-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M5 11h14v2H5z"/></symbol><symbol id="dark-theme-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M10 7a7 7 0 0 0 12 4.9v.1c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2h.1A6.979 6.979 0 0 0 10 7zm-6 5a8 8 0 0 0 15.062 3.762A9 9 0 0 1 8.238 4.938 7.999 7.999 0 0 0 4 12z"/></symbol><symbol id="light-theme-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 18a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm0-2a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM11 1h2v3h-2V1zm0 19h2v3h-2v-3zM3.515 4.929l1.414-1.414L7.05 5.636 5.636 7.05 3.515 4.93zM16.95 18.364l1.414-1.414 2.121 2.121-1.414 1.414-2.121-2.121zm2.121-14.85l1.414 1.415-2.121 2.121-1.414-1.414 2.121-2.121zM5.636 16.95l1.414 1.414-2.121 2.121-1.414-1.414 2.121-2.121zM23 11v2h-3v-2h3zM4 11v2H1v-2h3z"/></symbol><symbol id="reset-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M18.537 19.567A9.961 9.961 0 0 1 12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10c0 2.136-.67 4.116-1.81 5.74L17 12h3a8 8 0 1 0-2.46 5.772l.997 1.795z"/></symbol><symbol id="down-icon" viewBox="0 0 16 16"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.7803 6.21967C13.0732 6.51256 13.0732 6.98744 12.7803 7.28033L8.53033 11.5303C8.23744 11.8232 7.76256 11.8232 7.46967 11.5303L3.21967 7.28033C2.92678 6.98744 2.92678 6.51256 3.21967 6.21967C3.51256 5.92678 3.98744 5.92678 4.28033 6.21967L8 9.93934L11.7197 6.21967C12.0126 5.92678 12.4874 5.92678 12.7803 6.21967Z"></path></symbol><symbol id="codepen-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M16.5 13.202L13 15.535v3.596L19.197 15 16.5 13.202zM14.697 12L12 10.202 9.303 12 12 13.798 14.697 12zM20 10.869L18.303 12 20 13.131V10.87zM19.197 9L13 4.869v3.596l3.5 2.333L19.197 9zM7.5 10.798L11 8.465V4.869L4.803 9 7.5 10.798zM4.803 15L11 19.131v-3.596l-3.5-2.333L4.803 15zM4 13.131L5.697 12 4 10.869v2.262zM2 9a1 1 0 0 1 .445-.832l9-6a1 1 0 0 1 1.11 0l9 6A1 1 0 0 1 22 9v6a1 1 0 0 1-.445.832l-9 6a1 1 0 0 1-1.11 0l-9-6A1 1 0 0 1 2 15V9z"/></symbol><symbol id="close-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 10.586l4.95-4.95 1.414 1.414-4.95 4.95 4.95 4.95-1.414 1.414-4.95-4.95-4.95 4.95-1.414-1.414 4.95-4.95-4.95-4.95L7.05 5.636z"/></symbol><symbol id="menu-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M3 4h18v2H3V4zm0 7h18v2H3v-2zm0 7h18v2H3v-2z"/></symbol></defs></svg></head><body data-theme="dark"><div class="sidebar-container"><div class="sidebar" id="sidebar"><div class="sidebar-items-container"><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-global"><div>Global</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="global.html#CustomWorld">CustomWorld</a></div><div class="sidebar-section-children"><a href="global.html#Given_I_set_k6_script_for_method_testing">Given_I_set_k6_script_for_method_testing</a></div><div class="sidebar-section-children"><a href="global.html#K6Config">K6Config</a></div><div class="sidebar-section-children"><a href="global.html#Then_I_store_value_as_alias">Then_I_store_value_as_alias</a></div><div class="sidebar-section-children"><a href="global.html#When_I_login_via_POST_with_payload_from_file">When_I_login_via_POST_with_payload_from_file</a></div><div class="sidebar-section-children"><a href="global.html#When_I_set_authentication_type">When_I_set_authentication_type</a></div><div class="sidebar-section-children"><a href="global.html#When_I_set_endpoints_used">When_I_set_endpoints_used</a></div><div class="sidebar-section-children"><a href="global.html#When_I_set_k6_script_configurations">When_I_set_k6_script_configurations</a></div><div class="sidebar-section-children"><a href="global.html#When_I_set_method_body_for_endpoint">When_I_set_method_body_for_endpoint</a></div><div class="sidebar-section-children"><a href="global.html#When_I_set_request_headers">When_I_set_request_headers</a></div><div class="sidebar-section-children"><a href="global.html#When_I_use_JSON_payload_from_file_for_method_to_endpoint">When_I_use_JSON_payload_from_file_for_method_to_endpoint</a></div></div></div></div></div><div class="navbar-container" id="VuAckcnZhf"><nav class="navbar"><div class="navbar-left-items"></div><div class="navbar-right-items"><div class="navbar-right-item"><button class="icon-button search-button" aria-label="open-search"><svg><use xlink:href="#search-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button theme-toggle" aria-label="toggle-theme"><svg><use class="theme-svg-use" xlink:href="#light-theme-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button font-size" aria-label="change-font-size"><svg><use xlink:href="#font-size-icon"></use></svg></button></div></div><nav></nav></nav></div><div class="toc-container"><div class="toc-content"><span class="bold">On this page</span><div id="eed4d2a0bfd64539bb9df78095dec881"></div></div></div><div class="body-wrapper"><div class="main-content"><div class="main-wrapper"><section><article><div class="container-overview"></div><h2 id="methods" class="subsection-title has-anchor">Methods</h2><h3 class="name has-anchor" id="Given_I_set_k6_script_for_method_testing"><span class="type-signature"></span>Given_I_set_k6_script_for_method_testing<span class="signature">(method)</span></h3><div class="description"><p>Initializes the k6 script configuration by setting the primary HTTP method for the load test.</p><pre class="prettyprint source lang-gherkin"><code>Given I set a k6 script for {word} testing
4
+ </code></pre></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>method</code></td><td class="type"><span class="param-type">string</span></td><td class="description last"><p>The HTTP method (e.g., &quot;GET&quot;, &quot;POST&quot;, &quot;PUT&quot;, &quot;DELETE&quot;).</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="load_test_steps.js.html">load_test_steps.js</a>, <a href="load_test_steps.js.html#line63">line 63</a></li></ul></dd></div></dl><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Example</strong><div class="rel"><pre class="prettyprint"><code>Given I set a k6 script for GET testing
5
+ Given I set a k6 script for POST testing</code></pre></div></div><h3 class="name has-anchor" id="Then_I_store_value_as_alias"><span class="type-signature"></span>Then_I_store_value_as_alias<span class="signature">(jsonPath, alias)</span></h3><div class="description"><p>Stores a value from the last API response into the Cucumber World's aliases context.</p><pre class="prettyprint source lang-gherkin"><code>Then I store the value at &quot;data.token&quot; as alias &quot;authToken&quot;
6
+ </code></pre></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>jsonPath</code></td><td class="type"><span class="param-type">string</span></td><td class="description last"><p>A dot-separated JSON path to the value in the last response (e.g., &quot;data.user.id&quot;).</p></td></tr><tr><td class="name"><code>alias</code></td><td class="type"><span class="param-type">string</span></td><td class="description last"><p>The name of the alias to store the value under (e.g., &quot;userId&quot;).</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="load_test_steps.js.html">load_test_steps.js</a>, <a href="load_test_steps.js.html#line440">line 440</a></li></ul></dd></div></dl><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Example</strong><div class="rel"><pre class="prettyprint"><code>Then I store the value at "token" as alias "accessToken"
7
+ Then I store the value at "user.profile.email" as alias "userEmail"</code></pre></div></div><h3 class="name has-anchor" id="When_I_login_via_POST_with_payload_from_file"><span class="type-signature"></span>When_I_login_via_POST_with_payload_from_file<span class="signature">(endpoint, fileName)</span></h3><div class="description"><p>Logs in via a POST request to a specified endpoint using a JSON payload from a file. The response data is stored for subsequent steps.</p><pre class="prettyprint source lang-gherkin"><code>When I login via POST to &quot;/auth/login&quot; with payload from &quot;admin_credentials.json&quot;
8
+ </code></pre></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>endpoint</code></td><td class="type"><span class="param-type">string</span></td><td class="description last"><p>The API endpoint for the login request (relative to <code>BASE_URL</code>).</p></td></tr><tr><td class="name"><code>fileName</code></td><td class="type"><span class="param-type">string</span></td><td class="description last"><p>The name of the JSON file containing login credentials.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="load_test_steps.js.html">load_test_steps.js</a>, <a href="load_test_steps.js.html#line501">line 501</a></li></ul></dd></div></dl><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Example</strong><div class="rel"><pre class="prettyprint"><code>When I login via POST to "/api/login" with payload from "user_creds.json"</code></pre></div></div><h3 class="name has-anchor" id="When_I_set_authentication_type"><span class="type-signature"></span>When_I_set_authentication_type<span class="signature">(authType)</span></h3><div class="description"><p>Sets the authentication type for the k6 request, generating relevant headers.</p><pre class="prettyprint source lang-gherkin"><code>When I set the authentication type to &quot;BearerToken&quot;
9
+ </code></pre></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>authType</code></td><td class="type"><span class="param-type">string</span></td><td class="description last"><p>The type of authentication (e.g., &quot;BearerToken&quot;, &quot;BasicAuth&quot;, &quot;APIKey&quot;).</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="load_test_steps.js.html">load_test_steps.js</a>, <a href="load_test_steps.js.html#line406">line 406</a></li></ul></dd></div></dl><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Example</strong><div class="rel"><pre class="prettyprint"><code>When I set the authentication type to "BearerToken"</code></pre></div></div><h3 class="name has-anchor" id="When_I_set_endpoints_used"><span class="type-signature"></span>When_I_set_endpoints_used<span class="signature">(docString)</span></h3><div class="description"><p>Sets the list of endpoints to be used in the k6 script. These are typically used when the k6 script iterates over multiple URLs.</p><pre class="prettyprint source lang-gherkin"><code>When I set the following endpoints used:
10
+ /api/v1/users
11
+ /api/v1/products
12
+ /api/v1/orders
13
+ </code></pre></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>docString</code></td><td class="type"><span class="param-type">string</span></td><td class="description last"><p>A DocString containing a newline-separated list of endpoints.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="load_test_steps.js.html">load_test_steps.js</a>, <a href="load_test_steps.js.html#line257">line 257</a></li></ul></dd></div></dl><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Example</strong><div class="rel"><pre class="prettyprint"><code>When I set the following endpoints used:
14
+ /health
15
+ /status
16
+ /metrics</code></pre></div></div><h3 class="name has-anchor" id="When_I_set_k6_script_configurations"><span class="type-signature"></span>When_I_set_k6_script_configurations<span class="signature">(dataTable)</span></h3><div class="description"><p>Configures the k6 script options (VUs, duration, stages, thresholds) from a data table.</p><pre class="prettyprint source lang-gherkin"><code>When I set to run the k6 script with the following configurations:
17
+ | virtual_users | duration | stages | http_req_failed | http_req_duration | error_rate |
18
+ | 10 | 30 | | p(99)&lt;0.01 | p(99)&lt;500 | rate&lt;0.01 |
19
+ | | | [{&quot;duration&quot;:&quot;10s&quot;,&quot;target&quot;:10}] | p(90)&lt;0.01 | p(90)&lt;200 | rate&lt;0.001 |
20
+ </code></pre></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>dataTable</code></td><td class="type"><span class="param-type">DataTable</span></td><td class="description last"><p>A Cucumber data table containing k6 configuration parameters. Expected columns: <code>virtual_users</code>, <code>duration</code>, <code>stages</code> (JSON string), <code>http_req_failed</code>, <code>http_req_duration</code>, <code>error_rate</code>.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="load_test_steps.js.html">load_test_steps.js</a>, <a href="load_test_steps.js.html#line99">line 99</a></li></ul></dd></div></dl><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Example</strong><div class="rel"><pre class="prettyprint"><code>When I set to run the k6 script with the following configurations:
21
+ | virtual_users | duration | http_req_failed | http_req_duration |
22
+ | 50 | 60 | p(99)&lt;0.01 | p(99)&lt;1000 |
23
+ When I set to run the k6 script with the following configurations:
24
+ | stages | http_req_failed | http_req_duration | error_rate |
25
+ | [{"duration":"10s","target":10}, {"duration":"20s","target":50}] | p(99)&lt;0.01 | p(99)&lt;500 | rate&lt;0.01 |</code></pre></div></div><h3 class="name has-anchor" id="When_I_set_method_body_for_endpoint"><span class="type-signature"></span>When_I_set_method_body_for_endpoint<span class="signature">(method, endpoint, docString)</span></h3><div class="description"><p>Sets the request body for a specific HTTP method and endpoint.</p><pre class="prettyprint source lang-gherkin"><code>When I set the following POST body is used for &quot;/api/v1/create&quot;
26
+ { &quot;name&quot;: &quot;test&quot;, &quot;email&quot;: &quot;test@example.com&quot; }
27
+ </code></pre></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>method</code></td><td class="type"><span class="param-type">string</span></td><td class="description last"><p>The HTTP method (e.g., &quot;POST&quot;, &quot;PUT&quot;).</p></td></tr><tr><td class="name"><code>endpoint</code></td><td class="type"><span class="param-type">string</span></td><td class="description last"><p>The specific endpoint URL for this body.</p></td></tr><tr><td class="name"><code>docString</code></td><td class="type"><span class="param-type">string</span></td><td class="description last"><p>A DocString containing the request body content (e.g., JSON).</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="load_test_steps.js.html">load_test_steps.js</a>, <a href="load_test_steps.js.html#line290">line 290</a></li></ul></dd></div></dl><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Example</strong><div class="rel"><pre class="prettyprint"><code>When I set the following PUT body is used for "/api/v1/update/1"
28
+ { "status": "active" }</code></pre></div></div><h3 class="name has-anchor" id="When_I_set_request_headers"><span class="type-signature"></span>When_I_set_request_headers<span class="signature">(dataTable)</span></h3><div class="description"><p>Sets request headers for the k6 script. Headers are merged with any existing headers.</p><pre class="prettyprint source lang-gherkin"><code>When I set the request headers:
29
+ | Header | Value |
30
+ | Content-Type | application/json |
31
+ | Authorization | Bearer &lt;my_token> |
32
+ </code></pre></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>dataTable</code></td><td class="type"><span class="param-type">DataTable</span></td><td class="description last"><p>A Cucumber data table with 'Header' and 'Value' columns.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="load_test_steps.js.html">load_test_steps.js</a>, <a href="load_test_steps.js.html#line218">line 218</a></li></ul></dd></div></dl><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Example</strong><div class="rel"><pre class="prettyprint"><code>When I set the request headers:
33
+ | Header | Value |
34
+ | Content-Type | application/json |
35
+ | X-Custom-Header| MyValue |</code></pre></div></div><h3 class="name has-anchor" id="When_I_use_JSON_payload_from_file_for_method_to_endpoint"><span class="type-signature"></span>When_I_use_JSON_payload_from_file_for_method_to_endpoint<span class="signature">(fileName, method, endpoint)</span></h3><div class="description"><p>Loads a JSON payload from a file to be used as the request body for a specific method and endpoint in the k6 script.</p><pre class="prettyprint source lang-gherkin"><code>When I use JSON payload from &quot;user_create.json&quot; for POST to &quot;/api/v1/users&quot;
36
+ </code></pre></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>fileName</code></td><td class="type"><span class="param-type">string</span></td><td class="description last"><p>The name of the JSON payload file (e.g., &quot;user_data.json&quot;).</p></td></tr><tr><td class="name"><code>method</code></td><td class="type"><span class="param-type">string</span></td><td class="description last"><p>The HTTP method (only &quot;POST&quot;, &quot;PUT&quot;, &quot;PATCH&quot; are supported for bodies).</p></td></tr><tr><td class="name"><code>endpoint</code></td><td class="type"><span class="param-type">string</span></td><td class="description last"><p>The specific endpoint URL.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="load_test_steps.js.html">load_test_steps.js</a>, <a href="load_test_steps.js.html#line332">line 332</a></li></ul></dd></div></dl><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Example</strong><div class="rel"><pre class="prettyprint"><code>When I use JSON payload from "login_payload.json" for POST to "/auth/login"</code></pre></div></div><h2 id="type-definitions" class="subsection-title has-anchor">Type Definitions</h2><h3 class="name has-anchor" id="CustomWorld">CustomWorld</h3><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">Object</span></li></ul></div><b class="subsection-title">Properties</b><div class="allow-overflow"><table class="props"><thead><tr><th>Name</th><th>Type</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>config</code></td><td class="type"><span class="param-type">Object</span></td><td class="description last"></td></tr><tr><td class="name"><code>aliases</code></td><td class="type"><span class="param-type">Object</span></td><td class="description last"></td></tr><tr><td class="name"><code>lastResponse</code></td><td class="type"><span class="param-type">Object</span></td><td class="description last"></td></tr><tr><td class="name"><code>parameters</code></td><td class="type"><span class="param-type">Object</span></td><td class="description last"></td></tr><tr><td class="name"><code>log</code></td><td class="type"><span class="param-type">function</span></td><td class="description last"></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="load_test_steps.js.html">load_test_steps.js</a>, <a href="load_test_steps.js.html#line16">line 16</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="K6Config">K6Config</h3><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">Object</span></li></ul></div><b class="subsection-title">Properties</b><div class="allow-overflow"><table class="props"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>method</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"></td><td class="description last"><p>HTTP method for the request (e.g., &quot;GET&quot;, &quot;POST&quot;).</p></td></tr><tr><td class="name"><code>endpoint</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes">&lt;optional><br></td><td class="description last"><p>The specific endpoint for a single request.</p></td></tr><tr><td class="name"><code>endpoints</code></td><td class="type"><span class="param-type">Array.&lt;string></span></td><td class="attributes">&lt;optional><br></td><td class="description last"><p>An array of endpoints for multiple requests.</p></td></tr><tr><td class="name"><code>headers</code></td><td class="type"><span class="param-type">Object</span></td><td class="attributes">&lt;optional><br></td><td class="description last"><p>Request headers.</p></td></tr><tr><td class="name"><code>body</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes">&lt;optional><br></td><td class="description last"><p>Request body content.</p></td></tr><tr><td class="name"><code>options</code></td><td class="type"><span class="param-type">Object</span></td><td class="attributes"></td><td class="description last"><p>k6 test options (vus, duration, stages, thresholds).</p><h6>Properties</h6><div class="allow-overflow"><table class="props"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>thresholds</code></td><td class="type"><span class="param-type">Object</span></td><td class="attributes"></td><td class="description last"><p>k6 metric thresholds.</p><h6>Properties</h6><div class="allow-overflow"><table class="props"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>http_req_failed</code></td><td class="type"><span class="param-type">Array.&lt;string></span></td><td class="attributes"></td><td class="description last"><p>Thresholds for failed HTTP requests.</p></td></tr><tr><td class="name"><code>http_req_duration</code></td><td class="type"><span class="param-type">Array.&lt;string></span></td><td class="attributes"></td><td class="description last"><p>Thresholds for request duration.</p></td></tr><tr><td class="name"><code>error_rate</code></td><td class="type"><span class="param-type">Array.&lt;string></span></td><td class="attributes">&lt;optional><br></td><td class="description last"><p>Optional threshold for error rate.</p></td></tr></tbody></table></div></td></tr><tr><td class="name"><code>vus</code></td><td class="type"><span class="param-type">number</span></td><td class="attributes">&lt;optional><br></td><td class="description last"><p>Number of virtual users (for open model).</p></td></tr><tr><td class="name"><code>duration</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes">&lt;optional><br></td><td class="description last"><p>Test duration (for open model, e.g., &quot;30s&quot;).</p></td></tr><tr><td class="name"><code>stages</code></td><td class="type"><span class="param-type">Array.&lt;Object></span></td><td class="attributes">&lt;optional><br></td><td class="description last"><p>Array of stages for a stepped load model.</p></td></tr></tbody></table></div></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="load_test_steps.js.html">load_test_steps.js</a>, <a href="load_test_steps.js.html#line25">line 25</a></li></ul></dd></div></dl></article></section></div></div></div><div class="search-container" id="PkfLWpAbet" style="display:none"><div class="wrapper" id="iCxFxjkHbP"><button class="icon-button search-close-button" id="VjLlGakifb" aria-label="close search"><svg><use xlink:href="#close-icon"></use></svg></button><div class="search-box-c"><svg><use xlink:href="#search-icon"></use></svg> <input type="text" id="vpcKVYIppa" class="search-input" placeholder="Search..." autofocus></div><div class="search-result-c" id="fWwVHRuDuN"><span class="search-result-c-text">Type anything to view search result</span></div></div></div><div class="mobile-menu-icon-container"><button class="icon-button" id="mobile-menu" data-isopen="false" aria-label="menu"><svg><use xlink:href="#menu-icon"></use></svg></button></div><div id="mobile-sidebar" class="mobile-sidebar-container"><div class="mobile-sidebar-wrapper"><div class="mobile-nav-links"></div><div class="mobile-sidebar-items-c"><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-global"><div>Global</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="global.html#CustomWorld">CustomWorld</a></div><div class="sidebar-section-children"><a href="global.html#Given_I_set_k6_script_for_method_testing">Given_I_set_k6_script_for_method_testing</a></div><div class="sidebar-section-children"><a href="global.html#K6Config">K6Config</a></div><div class="sidebar-section-children"><a href="global.html#Then_I_store_value_as_alias">Then_I_store_value_as_alias</a></div><div class="sidebar-section-children"><a href="global.html#When_I_login_via_POST_with_payload_from_file">When_I_login_via_POST_with_payload_from_file</a></div><div class="sidebar-section-children"><a href="global.html#When_I_set_authentication_type">When_I_set_authentication_type</a></div><div class="sidebar-section-children"><a href="global.html#When_I_set_endpoints_used">When_I_set_endpoints_used</a></div><div class="sidebar-section-children"><a href="global.html#When_I_set_k6_script_configurations">When_I_set_k6_script_configurations</a></div><div class="sidebar-section-children"><a href="global.html#When_I_set_method_body_for_endpoint">When_I_set_method_body_for_endpoint</a></div><div class="sidebar-section-children"><a href="global.html#When_I_set_request_headers">When_I_set_request_headers</a></div><div class="sidebar-section-children"><a href="global.html#When_I_use_JSON_payload_from_file_for_method_to_endpoint">When_I_use_JSON_payload_from_file_for_method_to_endpoint</a></div></div></div><div class="mobile-navbar-actions"><div class="navbar-right-item"><button class="icon-button search-button" aria-label="open-search"><svg><use xlink:href="#search-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button theme-toggle" aria-label="toggle-theme"><svg><use class="theme-svg-use" xlink:href="#light-theme-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button font-size" aria-label="change-font-size"><svg><use xlink:href="#font-size-icon"></use></svg></button></div></div></div></div><script type="text/javascript" src="scripts/core.min.js"></script><script src="scripts/search.min.js" defer="defer"></script><script src="scripts/third-party/fuse.js" defer="defer"></script><script type="text/javascript">var tocbotInstance=tocbot.init({tocSelector:"#eed4d2a0bfd64539bb9df78095dec881",contentSelector:".main-content",headingSelector:"h1, h2, h3",hasInnerContainers:!0,scrollContainer:".main-content",headingsOffset:130,onClick:bringLinkToView})</script></body></html>
@@ -0,0 +1,91 @@
1
+ <!DOCTYPE html><html lang="en" style="font-size:16px"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Home</title><!--[if lt IE 9]>
2
+ <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
3
+ <![endif]--><script src="scripts/third-party/hljs.js" defer="defer"></script><script src="scripts/third-party/hljs-line-num.js" defer="defer"></script><script src="scripts/third-party/popper.js" defer="defer"></script><script src="scripts/third-party/tippy.js" defer="defer"></script><script src="scripts/third-party/tocbot.min.js"></script><script>var baseURL="/",locationPathname="";baseURL=(locationPathname=document.location.pathname).substr(0,locationPathname.lastIndexOf("/")+1)</script><link rel="stylesheet" href="styles/clean-jsdoc-theme.min.css"><svg aria-hidden="true" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="display:none"><defs><symbol id="copy-icon" viewbox="0 0 488.3 488.3"><g><path d="M314.25,85.4h-227c-21.3,0-38.6,17.3-38.6,38.6v325.7c0,21.3,17.3,38.6,38.6,38.6h227c21.3,0,38.6-17.3,38.6-38.6V124 C352.75,102.7,335.45,85.4,314.25,85.4z M325.75,449.6c0,6.4-5.2,11.6-11.6,11.6h-227c-6.4,0-11.6-5.2-11.6-11.6V124 c0-6.4,5.2-11.6,11.6-11.6h227c6.4,0,11.6,5.2,11.6,11.6V449.6z"/><path d="M401.05,0h-227c-21.3,0-38.6,17.3-38.6,38.6c0,7.5,6,13.5,13.5,13.5s13.5-6,13.5-13.5c0-6.4,5.2-11.6,11.6-11.6h227 c6.4,0,11.6,5.2,11.6,11.6v325.7c0,6.4-5.2,11.6-11.6,11.6c-7.5,0-13.5,6-13.5,13.5s6,13.5,13.5,13.5c21.3,0,38.6-17.3,38.6-38.6 V38.6C439.65,17.3,422.35,0,401.05,0z"/></g></symbol><symbol id="search-icon" viewBox="0 0 512 512"><g><g><path d="M225.474,0C101.151,0,0,101.151,0,225.474c0,124.33,101.151,225.474,225.474,225.474 c124.33,0,225.474-101.144,225.474-225.474C450.948,101.151,349.804,0,225.474,0z M225.474,409.323 c-101.373,0-183.848-82.475-183.848-183.848S124.101,41.626,225.474,41.626s183.848,82.475,183.848,183.848 S326.847,409.323,225.474,409.323z"/></g></g><g><g><path d="M505.902,476.472L386.574,357.144c-8.131-8.131-21.299-8.131-29.43,0c-8.131,8.124-8.131,21.306,0,29.43l119.328,119.328 c4.065,4.065,9.387,6.098,14.715,6.098c5.321,0,10.649-2.033,14.715-6.098C514.033,497.778,514.033,484.596,505.902,476.472z"/></g></g></symbol><symbol id="font-size-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M11.246 15H4.754l-2 5H.6L7 4h2l6.4 16h-2.154l-2-5zm-.8-2L8 6.885 5.554 13h4.892zM21 12.535V12h2v8h-2v-.535a4 4 0 1 1 0-6.93zM19 18a2 2 0 1 0 0-4 2 2 0 0 0 0 4z"/></symbol><symbol id="add-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M11 11V5h2v6h6v2h-6v6h-2v-6H5v-2z"/></symbol><symbol id="minus-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M5 11h14v2H5z"/></symbol><symbol id="dark-theme-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M10 7a7 7 0 0 0 12 4.9v.1c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2h.1A6.979 6.979 0 0 0 10 7zm-6 5a8 8 0 0 0 15.062 3.762A9 9 0 0 1 8.238 4.938 7.999 7.999 0 0 0 4 12z"/></symbol><symbol id="light-theme-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 18a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm0-2a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM11 1h2v3h-2V1zm0 19h2v3h-2v-3zM3.515 4.929l1.414-1.414L7.05 5.636 5.636 7.05 3.515 4.93zM16.95 18.364l1.414-1.414 2.121 2.121-1.414 1.414-2.121-2.121zm2.121-14.85l1.414 1.415-2.121 2.121-1.414-1.414 2.121-2.121zM5.636 16.95l1.414 1.414-2.121 2.121-1.414-1.414 2.121-2.121zM23 11v2h-3v-2h3zM4 11v2H1v-2h3z"/></symbol><symbol id="reset-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M18.537 19.567A9.961 9.961 0 0 1 12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10c0 2.136-.67 4.116-1.81 5.74L17 12h3a8 8 0 1 0-2.46 5.772l.997 1.795z"/></symbol><symbol id="down-icon" viewBox="0 0 16 16"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.7803 6.21967C13.0732 6.51256 13.0732 6.98744 12.7803 7.28033L8.53033 11.5303C8.23744 11.8232 7.76256 11.8232 7.46967 11.5303L3.21967 7.28033C2.92678 6.98744 2.92678 6.51256 3.21967 6.21967C3.51256 5.92678 3.98744 5.92678 4.28033 6.21967L8 9.93934L11.7197 6.21967C12.0126 5.92678 12.4874 5.92678 12.7803 6.21967Z"></path></symbol><symbol id="codepen-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M16.5 13.202L13 15.535v3.596L19.197 15 16.5 13.202zM14.697 12L12 10.202 9.303 12 12 13.798 14.697 12zM20 10.869L18.303 12 20 13.131V10.87zM19.197 9L13 4.869v3.596l3.5 2.333L19.197 9zM7.5 10.798L11 8.465V4.869L4.803 9 7.5 10.798zM4.803 15L11 19.131v-3.596l-3.5-2.333L4.803 15zM4 13.131L5.697 12 4 10.869v2.262zM2 9a1 1 0 0 1 .445-.832l9-6a1 1 0 0 1 1.11 0l9 6A1 1 0 0 1 22 9v6a1 1 0 0 1-.445.832l-9 6a1 1 0 0 1-1.11 0l-9-6A1 1 0 0 1 2 15V9z"/></symbol><symbol id="close-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 10.586l4.95-4.95 1.414 1.414-4.95 4.95 4.95 4.95-1.414 1.414-4.95-4.95-4.95 4.95-1.414-1.414 4.95-4.95-4.95-4.95L7.05 5.636z"/></symbol><symbol id="menu-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M3 4h18v2H3V4zm0 7h18v2H3v-2zm0 7h18v2H3v-2z"/></symbol></defs></svg></head><body data-theme="dark"><div class="sidebar-container"><div class="sidebar" id="sidebar"><div class="sidebar-items-container"><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-global"><div>Global</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="global.html#CustomWorld">CustomWorld</a></div><div class="sidebar-section-children"><a href="global.html#Given_I_set_k6_script_for_method_testing">Given_I_set_k6_script_for_method_testing</a></div><div class="sidebar-section-children"><a href="global.html#K6Config">K6Config</a></div><div class="sidebar-section-children"><a href="global.html#Then_I_store_value_as_alias">Then_I_store_value_as_alias</a></div><div class="sidebar-section-children"><a href="global.html#When_I_login_via_POST_with_payload_from_file">When_I_login_via_POST_with_payload_from_file</a></div><div class="sidebar-section-children"><a href="global.html#When_I_set_authentication_type">When_I_set_authentication_type</a></div><div class="sidebar-section-children"><a href="global.html#When_I_set_endpoints_used">When_I_set_endpoints_used</a></div><div class="sidebar-section-children"><a href="global.html#When_I_set_k6_script_configurations">When_I_set_k6_script_configurations</a></div><div class="sidebar-section-children"><a href="global.html#When_I_set_method_body_for_endpoint">When_I_set_method_body_for_endpoint</a></div><div class="sidebar-section-children"><a href="global.html#When_I_set_request_headers">When_I_set_request_headers</a></div><div class="sidebar-section-children"><a href="global.html#When_I_use_JSON_payload_from_file_for_method_to_endpoint">When_I_use_JSON_payload_from_file_for_method_to_endpoint</a></div></div></div></div></div><div class="navbar-container" id="VuAckcnZhf"><nav class="navbar"><div class="navbar-left-items"></div><div class="navbar-right-items"><div class="navbar-right-item"><button class="icon-button search-button" aria-label="open-search"><svg><use xlink:href="#search-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button theme-toggle" aria-label="toggle-theme"><svg><use class="theme-svg-use" xlink:href="#light-theme-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button font-size" aria-label="change-font-size"><svg><use xlink:href="#font-size-icon"></use></svg></button></div></div><nav></nav></nav></div><div class="toc-container"><div class="toc-content"><span class="bold">On this page</span><div id="eed4d2a0bfd64539bb9df78095dec881"></div></div></div><div class="body-wrapper"><div class="main-content"><div class="main-wrapper"><section class="readme"><article><h1 id="k6-cucumber-steps-%F0%9F%A5%92%F0%9F%A7%AA">k6-cucumber-steps 🥒🧪</h1><table align="center" style="margin-bottom:30px"><tr><td align="center" width="9999" heigth="9999"><img src="https://github.com/qaPaschalE/k6-cucumber-steps/blob/main/assets/paschal%20logo%20(2).png?raw=true" alt="paschal Logo" style="margin-top:25px" align="center"></td></tr></table><p><a href="https://www.npmjs.com/package/k6-cucumber-steps"><img src="https://img.shields.io/npm/v/k6-cucumber-steps.svg" alt="npm version"></a><a href="https://k6.io/"><img src="https://img.shields.io/badge/built%20with-k6-7D64FF?logo=k6&amp;logoColor=white&amp;style=flat-square" alt="Built with k6"></a><a href="https://github.com/qaPaschalE/k6-cucumber-steps/blob/main/LICENSE"><img src="https://img.shields.io/npm/l/k6-cucumber-steps?logo=github" alt="license"></a><a href="https://cucumber.io/"><img src="https://img.shields.io/badge/built%20for-Cucumber-23d96c?logo=cucumber&amp;logoColor=white&amp;style=flat-square" alt="Built for Cucumber"></a><a href="https://nodejs.org/"><img src="https://img.shields.io/badge/node-%3E=18-green.svg" alt="Node.js"></a><a href="https://github.com/qaPaschalE/k6-cucumber-steps/actions/workflows/k6-load-test.yml"><img src="https://github.com/qaPaschalE/k6-cucumber-steps/actions/workflows/k6-load-test.yml/badge.svg" alt="Build Status"></a><a href="https://github.com/qaPaschalE/k6-cucumber-steps/issues"><img src="https://img.shields.io/github/issues/qaPaschalE/k6-cucumber-steps?style=flat-square" alt="Issues"></a><a href="https://github.com/qaPaschalE/k6-cucumber-steps/stargazers"><img src="https://img.shields.io/github/stars/qaPaschalE/k6-cucumber-steps?style=flat-square" alt="Stars"></a><a href="https://www.npmjs.com/package/k6-cucumber-steps"><img src="https://img.shields.io/npm/dt/k6-cucumber-steps?logo=download&amp;logoColor=white&amp;style=flat-square" alt="npm downloads"></a></p><p>Run <a href="https://k6.io/">k6</a> performance/load tests using <a href="https://cucumber.io/">Cucumber</a> BDD syntax with ease.</p><hr><h2 id="%E2%9C%A8-features">✨ Features</h2><ul><li>✅ Cucumber + Gherkin for writing k6 tests to generate JSON and HTML reports.</li><li>✅ Flexible configuration through Cucumber data tables.</li><li>✅ Support for JSON body parsing and escaping.</li><li>✅ Dynamic request body generation using environment variables, Faker templates, and JSON file includes.</li><li>✅ <code>.env</code> + <code>K6.env</code>-style variable resolution (<code>{{API_KEY}}</code>)</li><li>✅ Support for headers, query params, stages.</li><li>✅ Supports multiple authentication types: API key, Bearer token, Basic Auth, and No Auth.</li><li>✅ Clean-up of temporary k6 files after execution.</li><li>✅ Built-in support for <strong>distributed load testing</strong> with stages.</li><li>✅ TypeScript-first 🧡</li><li>✅ <strong>Optional report overwriting</strong>: Use the <code>overwrite</code> option to control whether reports are overwritten or appended.</li><li>✅ <strong>Generate detailed reports</strong>: Use the <code>--reporter</code> flag.</li><li>✅ <strong>Clean reports directory before run</strong>: Use the <code>--cleanReports</code>/<code>--clean</code> CLI flag, <code>CLEAN_REPORTS=true</code> in <code>.env</code>, or <code>cleanReports: true</code> in your <code>cucumber.js</code> config.</li></ul><hr><h2 id="%F0%9F%93%A6-install">📦 Install</h2><pre class="prettyprint source lang-bash"><code>npm install k6-cucumber-steps
4
+ </code></pre><h2 id="%F0%9F%9A%80-usage">🚀 Usage</h2><h3 id="cli">CLI</h3><pre class="prettyprint source lang-bash"><code>npx k6-cucumber-steps run [options]
5
+ </code></pre><h4 id="options">Options</h4><p>The <code>run</code> command accepts the following options:</p><ul><li><code>-f, --feature &lt;path&gt;</code>: Path to the feature file to execute.</li><li><code>-t, --tags &lt;string&gt;</code>: Cucumber tags to filter scenarios (e.g., <code>@smoke and not @regression</code>).</li><li><code>-c, --config &lt;file&gt;</code>: Custom config file (default: <code>cucumber.js</code>).</li><li><code>-r, --reporter</code>: Generate HTML and JSON reports in the <code>reports</code> directory. This is a boolean flag, so just include <code>-r, --reporter</code> to enable it.</li><li><code>-o, --overwrite</code>: Overwrite existing reports instead of appending them.</li><li><code>--cleanReports</code>, <code>--clean</code>: <strong>Clean the <code>reports</code> directory before running.</strong><br>You can also set this via the <code>cleanReports</code> property in your <code>cucumber.js</code> config or with the <code>CLEAN_REPORTS=true</code> environment variable.</li></ul><h3 id="example-usage-with-options">Example Usage with Options</h3><pre class="prettyprint source lang-bash"><code>npx k6-cucumber-steps run --feature ./features/my_feature.feature --tags &quot;@load and not @wip&quot; --reporter --cleanReports
6
+ </code></pre><hr><h2 id="%F0%9F%9B%A0%EF%B8%8F-getting-started">🛠️ Getting Started</h2><p>Here's a step-by-step guide to using <code>k6-cucumber-steps</code> in your project:</p><p><strong>Prerequisites:</strong></p><ol><li><strong>Node.js and npm (or yarn):</strong> Ensure you have Node.js and npm (or yarn) installed.</li><li><strong>k6:</strong> Install k6 on your system following the instructions at <a href="https://k6.io/docs/getting-started/installation/">k6.io/docs/getting-started/installation/</a>.</li><li><strong>@cucumber/cucumber (optional):</strong> This package is required for using Cucumber.</li><li><strong>cucumber-html-reporter (optional):</strong> This package is needed if you intend to generate detailed HTML reports.</li></ol><p><strong>Setup:</strong></p><ol><li><p><strong>Create a new project:</strong></p><pre class="prettyprint source lang-bash"><code>mkdir my-performance-test
7
+ cd my-performance-test
8
+ npm init -y
9
+ # or
10
+ yarn init -y
11
+ </code></pre></li><li><p><strong>Install dependencies:</strong></p><pre class="prettyprint source lang-bash"><code>npm install --save-dev @cucumber/cucumber k6 dotenv k6-cucumber-steps cucumber-html-reporter
12
+ # or
13
+ yarn add --dev @cucumber/cucumber k6 dotenv k6-cucumber-steps cucumber-html-reporter
14
+ </code></pre></li><li><p><strong>Create <code>.env</code> file (optional):</strong> Create a <code>.env</code> file in your project root for environment variables as described in the &quot;Environment Variables&quot; section below.</p></li><li><p><strong>Create <code>features</code> directory and feature files:</strong></p><pre class="prettyprint source lang-bash"><code>mkdir features
15
+ # Create your .feature files inside the features directory (e.g., example.feature)
16
+ </code></pre></li><li><p><strong>Configure <code>cucumber.js</code>:</strong> Create a <code>cucumber.js</code> file at the root of your project with the following content:</p><pre class="prettyprint source lang-javascript"><code>// cucumber.js as default name but you can optionally give it any name of choice
17
+
18
+ module.exports = {
19
+ require: [
20
+ // You can add paths to your local step definitions here if needed
21
+ ],
22
+ reporter: true, // To provide HTML and JSON report
23
+ format: [
24
+ &quot;summary&quot;,
25
+ &quot;json:reports/load-report.json&quot;, // For JSON report
26
+ &quot;html:reports/report.html&quot;, // For HTML report
27
+ ],
28
+ paths: [&quot;./features/*.feature&quot;],
29
+ tags: process.env.TAGS,
30
+ worldParameters: {
31
+ payloadPath: &quot;apps/qa/performance/payloads&quot;,
32
+ },
33
+ overwrite: false, // Default to not overwrite the report file
34
+ cleanReports: true, // &lt;--- Clean the reports directory before running
35
+ };
36
+ </code></pre></li></ol><p><strong>Controlling Report Directory Clean-up</strong></p><p>You can control whether the <code>reports</code> directory is cleaned before each run using any of these methods:</p><ul><li><p><strong>Command-line:</strong><br>Add <code>--cleanReports</code> or <code>--clean</code> to your CLI command.</p></li><li><p><strong>Environment variable:</strong><br>Add <code>CLEAN_REPORTS=true</code> to your <code>.env</code> file.</p></li><li><p><strong>Config file:</strong><br>Set <code>cleanReports: true</code> in your <code>cucumber.js</code> config.</p></li></ul><p>Priority order: <strong>CLI &gt; Environment variable &gt; Config file</strong></p><hr><h2 id="setup-(detailed)">Setup (Detailed)</h2><ol><li><p><strong>Environment Variables</strong>: Create a <code>.env</code> file in your project root based on the provided <code>.env.example</code>:</p><pre class="prettyprint source lang-env"><code>BASE_URL=https://api.example.com
37
+ API_BASE_URL=https://api.example.com
38
+ API_KEY=your_api_key
39
+ BEARER_TOKEN=your_bearer_token
40
+ BASIC_USER=your_basic_user
41
+ BASIC_PASS=your_basic_pass
42
+ TAGS=@yourTag
43
+ </code></pre></li><li><p><strong>Feature Files</strong>: Write your feature files using the provided step definitions.</p></li></ol><h2 id="gherkin-examples">Gherkin Examples</h2><p>Here’s how you can write a feature file using the provided step definitions:</p><h3 id="example-1%3A-test-get-endpoint-with-no-authentication">Example 1: Test GET Endpoint with No Authentication</h3><pre class="prettyprint source lang-gherkin"><code>Feature: API Performance Testing
44
+
45
+ Scenario: Run load tests with dynamic GET requests
46
+ Given I set a k6 script for GET testing
47
+ When I set to run the k6 script with the following configurations:
48
+ | virtual_users | duration | http_req_failed | http_req_duration |
49
+ | 50 | 10 | rate&lt;0.05 | p(95)&lt;3000 |
50
+ And I set the following endpoints used:
51
+ &quot;&quot;&quot;
52
+ /api/profile
53
+ https://reqres.in/api/users?page=2
54
+ &quot;&quot;&quot;
55
+ And I set the authentication type to &quot;none&quot;
56
+ Then I see the API should handle the GET request successfully
57
+ </code></pre><h3 id="example-2%3A-test-post-endpoint-with-bearer-token-authentication">Example 2: Test POST Endpoint with Bearer Token Authentication</h3><pre class="prettyprint source lang-gherkin"><code>Feature: API Performance Testing
58
+
59
+ Scenario: Run load tests with dynamic POST requests
60
+ Given I set a k6 script for POST testing
61
+ When I set to run the k6 script with the following configurations:
62
+ | virtual_users | duration | http_req_failed | http_req_duration |
63
+ | 20 | 60 | rate&lt;0.01 | p(95)&lt;300 |
64
+ When I set the authentication type to &quot;bearer_token&quot;
65
+ And I set the following endpoints used:
66
+ &quot;&quot;&quot;
67
+ /api/v1/users
68
+ &quot;&quot;&quot;
69
+ And I set the following POST body is used for &quot;/api/v1/users&quot;
70
+ &quot;&quot;&quot;
71
+ {
72
+ &quot;username&quot;: &quot;{{username}}&quot;,
73
+ &quot;email&quot;: &quot;{{faker.internet.email}}&quot;
74
+ }
75
+ &quot;&quot;&quot;
76
+ Then I see the API should handle the POST request successfully
77
+
78
+ </code></pre><h2 id="step-definitions">Step Definitions</h2><h3 id="authentication-steps">Authentication Steps</h3><pre class="prettyprint source lang-gherkin"><code>When I set the authentication type to &quot;api_key&quot;
79
+ When I set the authentication type to &quot;bearer_token&quot;
80
+ When I set the authentication type to &quot;basic&quot;
81
+ When I set the authentication type to &quot;none&quot;
82
+ When I set the authentication type to &quot;custom-alias&quot;
83
+ </code></pre><h3 id="request-configuration-steps">Request Configuration Steps</h3><pre class="prettyprint source lang-gherkin"><code>Given I set a k6 script for {word} testing
84
+ Given I login via POST to {string} with payload from {string}
85
+ When I set to run the k6 script with the following configurations:
86
+ When I set the request headers:
87
+ When I set the following endpoints used:
88
+ When I set the following {word} body is used for {string}
89
+ When I store the value at {string} as alias {string}
90
+ </code></pre><h3 id="assertion-steps">Assertion Steps</h3><pre class="prettyprint source lang-gherkin"><code>Then I see the API should handle the {word} request successfully
91
+ </code></pre><h2 id="test-results">Test Results</h2><p>Below is an example of the Cucumber report generated after running the tests: <img src="assets/k6-cucumber-report.png" alt="Cucumber report generated after running the tests" width="60%"> <img src="assets/k6-cucumber-report2.png" alt="Cucumber report generated after running the tests" width="60%"></p><h3 id="explanation-of-the-report">Explanation of the Report</h3><ul><li><strong>All Scenarios</strong>: Total number of scenarios executed.</li><li><strong>Passed Scenarios</strong>: Number of scenarios that passed.</li><li><strong>Failed Scenarios</strong>: Number of scenarios that failed.</li><li><strong>Metadata</strong>: Information about the test environment (e.g., browser, platform).</li><li><strong>Feature Overview</strong>: Summary of the feature being tested.</li><li><strong>Scenario Details</strong>: Detailed steps and their execution status.</li></ul><h2 id="%F0%9F%A7%BC-temporary-files-clean-up">🧼 Temporary Files Clean-up</h2><p>All generated k6 scripts and artifacts are cleaned automatically after test execution.</p><hr><h2 id="%F0%9F%92%96-support">💖 Support</h2><p>If you find this package useful, consider <a href="https://github.com/sponsors/qaPaschalE">sponsoring me on GitHub</a>. Your support helps me maintain and improve this project!</p><h2 id="%F0%9F%93%84-license">📄 License</h2><p>MIT License - <a href="https://github.com/qaPaschalE">@qaPaschalE</a></p><p>This project is licensed under the MIT License - see the <a href="LICENSE">LICENSE</a> file for details.</p></article></section></div></div></div><div class="search-container" id="PkfLWpAbet" style="display:none"><div class="wrapper" id="iCxFxjkHbP"><button class="icon-button search-close-button" id="VjLlGakifb" aria-label="close search"><svg><use xlink:href="#close-icon"></use></svg></button><div class="search-box-c"><svg><use xlink:href="#search-icon"></use></svg> <input type="text" id="vpcKVYIppa" class="search-input" placeholder="Search..." autofocus></div><div class="search-result-c" id="fWwVHRuDuN"><span class="search-result-c-text">Type anything to view search result</span></div></div></div><div class="mobile-menu-icon-container"><button class="icon-button" id="mobile-menu" data-isopen="false" aria-label="menu"><svg><use xlink:href="#menu-icon"></use></svg></button></div><div id="mobile-sidebar" class="mobile-sidebar-container"><div class="mobile-sidebar-wrapper"><div class="mobile-nav-links"></div><div class="mobile-sidebar-items-c"><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-global"><div>Global</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="global.html#CustomWorld">CustomWorld</a></div><div class="sidebar-section-children"><a href="global.html#Given_I_set_k6_script_for_method_testing">Given_I_set_k6_script_for_method_testing</a></div><div class="sidebar-section-children"><a href="global.html#K6Config">K6Config</a></div><div class="sidebar-section-children"><a href="global.html#Then_I_store_value_as_alias">Then_I_store_value_as_alias</a></div><div class="sidebar-section-children"><a href="global.html#When_I_login_via_POST_with_payload_from_file">When_I_login_via_POST_with_payload_from_file</a></div><div class="sidebar-section-children"><a href="global.html#When_I_set_authentication_type">When_I_set_authentication_type</a></div><div class="sidebar-section-children"><a href="global.html#When_I_set_endpoints_used">When_I_set_endpoints_used</a></div><div class="sidebar-section-children"><a href="global.html#When_I_set_k6_script_configurations">When_I_set_k6_script_configurations</a></div><div class="sidebar-section-children"><a href="global.html#When_I_set_method_body_for_endpoint">When_I_set_method_body_for_endpoint</a></div><div class="sidebar-section-children"><a href="global.html#When_I_set_request_headers">When_I_set_request_headers</a></div><div class="sidebar-section-children"><a href="global.html#When_I_use_JSON_payload_from_file_for_method_to_endpoint">When_I_use_JSON_payload_from_file_for_method_to_endpoint</a></div></div></div><div class="mobile-navbar-actions"><div class="navbar-right-item"><button class="icon-button search-button" aria-label="open-search"><svg><use xlink:href="#search-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button theme-toggle" aria-label="toggle-theme"><svg><use class="theme-svg-use" xlink:href="#light-theme-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button font-size" aria-label="change-font-size"><svg><use xlink:href="#font-size-icon"></use></svg></button></div></div></div></div><script type="text/javascript" src="scripts/core.min.js"></script><script src="scripts/search.min.js" defer="defer"></script><script src="scripts/third-party/fuse.js" defer="defer"></script><script type="text/javascript">var tocbotInstance=tocbot.init({tocSelector:"#eed4d2a0bfd64539bb9df78095dec881",contentSelector:".main-content",headingSelector:"h1, h2, h3",hasInnerContainers:!0,scrollContainer:".main-content",headingsOffset:130,onClick:bringLinkToView})</script></body></html>
@@ -0,0 +1 @@
1
+ {"list":[{"title":"delay","link":"<a href=\"global.html#delay\">delay</a>","description":"<p>Introduce a delay in milliseconds.</p>"},{"title":"generateK6Script","link":"<a href=\"global.html#generateK6Script\">generateK6Script</a>","description":"<p>Generates a temporary k6 script file.</p>"},{"title":"module:generateHeaders","link":"<a href=\"module-generateHeaders.html\">generateHeaders</a>","description":"<p>This module generates HTTP headers for API requests based on the specified authentication type.\nIt supports API key, bearer token, basic authentication, and no authentication.\nGenerates HTTP headers based on the specified authentication type.\nSupported auth types: api_key, bearer_token, basic, none.</p>"},{"title":"module:resolveBody","link":"<a href=\"module-resolveBody.html\">resolveBody</a>","description":"<p>This module resolves placeholders in a template string using environment variables,\nFaker templates, and JSON file includes.\nIt supports the following types of placeholders:</p>\n<ol>\n<li>Environment variables: {{username}} will be replaced with the value of process.env.username.</li>\n<li>Faker templates: {{faker.internet.email}} will be replaced with a randomly generated email address.</li>\n<li>JSON file includes: &lt;address.json&gt; will be replaced with the contents of the address.json file.</li>\n</ol>"},{"title":"runK6Script","link":"<a href=\"global.html#runK6Script\">runK6Script</a>","description":"<p>Runs the k6 script with custom branding.</p>"}]}
@@ -0,0 +1,3 @@
1
+ <!DOCTYPE html><html lang="en" style="font-size:16px"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Global</title><!--[if lt IE 9]>
2
+ <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
3
+ <![endif]--><script src="scripts/third-party/hljs.js" defer="defer"></script><script src="scripts/third-party/hljs-line-num.js" defer="defer"></script><script src="scripts/third-party/popper.js" defer="defer"></script><script src="scripts/third-party/tippy.js" defer="defer"></script><script src="scripts/third-party/tocbot.min.js"></script><script>var baseURL="/",locationPathname="";baseURL=(locationPathname=document.location.pathname).substr(0,locationPathname.lastIndexOf("/")+1)</script><link rel="stylesheet" href="styles/clean-jsdoc-theme.min.css"><svg aria-hidden="true" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="display:none"><defs><symbol id="copy-icon" viewbox="0 0 488.3 488.3"><g><path d="M314.25,85.4h-227c-21.3,0-38.6,17.3-38.6,38.6v325.7c0,21.3,17.3,38.6,38.6,38.6h227c21.3,0,38.6-17.3,38.6-38.6V124 C352.75,102.7,335.45,85.4,314.25,85.4z M325.75,449.6c0,6.4-5.2,11.6-11.6,11.6h-227c-6.4,0-11.6-5.2-11.6-11.6V124 c0-6.4,5.2-11.6,11.6-11.6h227c6.4,0,11.6,5.2,11.6,11.6V449.6z"/><path d="M401.05,0h-227c-21.3,0-38.6,17.3-38.6,38.6c0,7.5,6,13.5,13.5,13.5s13.5-6,13.5-13.5c0-6.4,5.2-11.6,11.6-11.6h227 c6.4,0,11.6,5.2,11.6,11.6v325.7c0,6.4-5.2,11.6-11.6,11.6c-7.5,0-13.5,6-13.5,13.5s6,13.5,13.5,13.5c21.3,0,38.6-17.3,38.6-38.6 V38.6C439.65,17.3,422.35,0,401.05,0z"/></g></symbol><symbol id="search-icon" viewBox="0 0 512 512"><g><g><path d="M225.474,0C101.151,0,0,101.151,0,225.474c0,124.33,101.151,225.474,225.474,225.474 c124.33,0,225.474-101.144,225.474-225.474C450.948,101.151,349.804,0,225.474,0z M225.474,409.323 c-101.373,0-183.848-82.475-183.848-183.848S124.101,41.626,225.474,41.626s183.848,82.475,183.848,183.848 S326.847,409.323,225.474,409.323z"/></g></g><g><g><path d="M505.902,476.472L386.574,357.144c-8.131-8.131-21.299-8.131-29.43,0c-8.131,8.124-8.131,21.306,0,29.43l119.328,119.328 c4.065,4.065,9.387,6.098,14.715,6.098c5.321,0,10.649-2.033,14.715-6.098C514.033,497.778,514.033,484.596,505.902,476.472z"/></g></g></symbol><symbol id="font-size-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M11.246 15H4.754l-2 5H.6L7 4h2l6.4 16h-2.154l-2-5zm-.8-2L8 6.885 5.554 13h4.892zM21 12.535V12h2v8h-2v-.535a4 4 0 1 1 0-6.93zM19 18a2 2 0 1 0 0-4 2 2 0 0 0 0 4z"/></symbol><symbol id="add-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M11 11V5h2v6h6v2h-6v6h-2v-6H5v-2z"/></symbol><symbol id="minus-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M5 11h14v2H5z"/></symbol><symbol id="dark-theme-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M10 7a7 7 0 0 0 12 4.9v.1c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2h.1A6.979 6.979 0 0 0 10 7zm-6 5a8 8 0 0 0 15.062 3.762A9 9 0 0 1 8.238 4.938 7.999 7.999 0 0 0 4 12z"/></symbol><symbol id="light-theme-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 18a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm0-2a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM11 1h2v3h-2V1zm0 19h2v3h-2v-3zM3.515 4.929l1.414-1.414L7.05 5.636 5.636 7.05 3.515 4.93zM16.95 18.364l1.414-1.414 2.121 2.121-1.414 1.414-2.121-2.121zm2.121-14.85l1.414 1.415-2.121 2.121-1.414-1.414 2.121-2.121zM5.636 16.95l1.414 1.414-2.121 2.121-1.414-1.414 2.121-2.121zM23 11v2h-3v-2h3zM4 11v2H1v-2h3z"/></symbol><symbol id="reset-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M18.537 19.567A9.961 9.961 0 0 1 12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10c0 2.136-.67 4.116-1.81 5.74L17 12h3a8 8 0 1 0-2.46 5.772l.997 1.795z"/></symbol><symbol id="down-icon" viewBox="0 0 16 16"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.7803 6.21967C13.0732 6.51256 13.0732 6.98744 12.7803 7.28033L8.53033 11.5303C8.23744 11.8232 7.76256 11.8232 7.46967 11.5303L3.21967 7.28033C2.92678 6.98744 2.92678 6.51256 3.21967 6.21967C3.51256 5.92678 3.98744 5.92678 4.28033 6.21967L8 9.93934L11.7197 6.21967C12.0126 5.92678 12.4874 5.92678 12.7803 6.21967Z"></path></symbol><symbol id="codepen-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M16.5 13.202L13 15.535v3.596L19.197 15 16.5 13.202zM14.697 12L12 10.202 9.303 12 12 13.798 14.697 12zM20 10.869L18.303 12 20 13.131V10.87zM19.197 9L13 4.869v3.596l3.5 2.333L19.197 9zM7.5 10.798L11 8.465V4.869L4.803 9 7.5 10.798zM4.803 15L11 19.131v-3.596l-3.5-2.333L4.803 15zM4 13.131L5.697 12 4 10.869v2.262zM2 9a1 1 0 0 1 .445-.832l9-6a1 1 0 0 1 1.11 0l9 6A1 1 0 0 1 22 9v6a1 1 0 0 1-.445.832l-9 6a1 1 0 0 1-1.11 0l-9-6A1 1 0 0 1 2 15V9z"/></symbol><symbol id="close-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 10.586l4.95-4.95 1.414 1.414-4.95 4.95 4.95 4.95-1.414 1.414-4.95-4.95-4.95 4.95-1.414-1.414 4.95-4.95-4.95-4.95L7.05 5.636z"/></symbol><symbol id="menu-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M3 4h18v2H3V4zm0 7h18v2H3v-2zm0 7h18v2H3v-2z"/></symbol></defs></svg></head><body data-theme="dark"><div class="sidebar-container"><div class="sidebar" id="sidebar"><div class="sidebar-items-container"><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-modules"><div>Modules</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="module-generateHeaders.html">generateHeaders</a></div><div class="sidebar-section-children"><a href="module-resolveBody.html">resolveBody</a></div></div><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-global"><div>Global</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="global.html#delay">delay</a></div><div class="sidebar-section-children"><a href="global.html#generateK6Script">generateK6Script</a></div><div class="sidebar-section-children"><a href="global.html#runK6Script">runK6Script</a></div></div></div></div></div><div class="navbar-container" id="VuAckcnZhf"><nav class="navbar"><div class="navbar-left-items"></div><div class="navbar-right-items"><div class="navbar-right-item"><button class="icon-button search-button" aria-label="open-search"><svg><use xlink:href="#search-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button theme-toggle" aria-label="toggle-theme"><svg><use class="theme-svg-use" xlink:href="#light-theme-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button font-size" aria-label="change-font-size"><svg><use xlink:href="#font-size-icon"></use></svg></button></div></div><nav></nav></nav></div><div class="toc-container"><div class="toc-content"><span class="bold">On this page</span><div id="eed4d2a0bfd64539bb9df78095dec881"></div></div></div><div class="body-wrapper"><div class="main-content"><div class="main-wrapper"><section><article><div class="container-overview"></div><h2 id="methods" class="subsection-title has-anchor">Methods</h2><h3 class="name has-anchor" id="delay"><span class="type-signature"></span>delay<span class="signature">(ms)</span><span class="type-signature"> &rarr; {Promise.&lt;void>}</span></h3><div class="description"><p>Introduce a delay in milliseconds.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>ms</code></td><td class="type"><span class="param-type">number</span></td><td class="description last"><p>The duration of the delay in milliseconds.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="utils_k6Runner.js.html">utils/k6Runner.js</a>, <a href="utils_k6Runner.js.html#line45">line 45</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><ul><li>A Promise that resolves after the delay.</li></ul></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">Promise.&lt;void></span></dd></dl></div><h3 class="name has-anchor" id="generateK6Script"><span class="type-signature">(async) </span>generateK6Script<span class="signature">(scriptContent, scriptType<span class="signature-attributes">opt</span>, overwrite<span class="signature-attributes">opt</span>)</span><span class="type-signature"> &rarr; {Promise.&lt;string>}</span></h3><div class="description"><p>Generates a temporary k6 script file.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>scriptContent</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"></td><td class="default"></td><td class="description last"><p>The content of the k6 script.</p></td></tr><tr><td class="name"><code>scriptType</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes">&lt;optional><br></td><td class="default">'load'</td><td class="description last"><p>Type of script (e.g., 'load').</p></td></tr><tr><td class="name"><code>overwrite</code></td><td class="type"><span class="param-type">boolean</span></td><td class="attributes">&lt;optional><br></td><td class="default">false</td><td class="description last"><p>Whether to overwrite the report file.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="utils_k6Runner.js.html">utils/k6Runner.js</a>, <a href="utils_k6Runner.js.html#line14">line 14</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><ul><li>Path to the generated k6 script file.</li></ul></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">Promise.&lt;string></span></dd></dl></div><h3 class="name has-anchor" id="runK6Script"><span class="type-signature">(async) </span>runK6Script<span class="signature">(scriptPath, overwrite<span class="signature-attributes">opt</span>)</span><span class="type-signature"> &rarr; {Promise.&lt;{stdout: string, stderr: string, code: number}>}</span></h3><div class="description"><p>Runs the k6 script with custom branding.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>scriptPath</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"></td><td class="default"></td><td class="description last"><p>Path to the k6 script file.</p></td></tr><tr><td class="name"><code>overwrite</code></td><td class="type"><span class="param-type">boolean</span></td><td class="attributes">&lt;optional><br></td><td class="default">false</td><td class="description last"><p>Whether to overwrite the report file.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="utils_k6Runner.js.html">utils/k6Runner.js</a>, <a href="utils_k6Runner.js.html#line53">line 53</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><ul><li>k6 execution result.</li></ul></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">Promise.&lt;{stdout: string, stderr: string, code: number}></span></dd></dl></div></article></section></div></div></div><div class="search-container" id="PkfLWpAbet" style="display:none"><div class="wrapper" id="iCxFxjkHbP"><button class="icon-button search-close-button" id="VjLlGakifb" aria-label="close search"><svg><use xlink:href="#close-icon"></use></svg></button><div class="search-box-c"><svg><use xlink:href="#search-icon"></use></svg> <input type="text" id="vpcKVYIppa" class="search-input" placeholder="Search..." autofocus></div><div class="search-result-c" id="fWwVHRuDuN"><span class="search-result-c-text">Type anything to view search result</span></div></div></div><div class="mobile-menu-icon-container"><button class="icon-button" id="mobile-menu" data-isopen="false" aria-label="menu"><svg><use xlink:href="#menu-icon"></use></svg></button></div><div id="mobile-sidebar" class="mobile-sidebar-container"><div class="mobile-sidebar-wrapper"><div class="mobile-nav-links"></div><div class="mobile-sidebar-items-c"><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-modules"><div>Modules</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="module-generateHeaders.html">generateHeaders</a></div><div class="sidebar-section-children"><a href="module-resolveBody.html">resolveBody</a></div></div><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-global"><div>Global</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="global.html#delay">delay</a></div><div class="sidebar-section-children"><a href="global.html#generateK6Script">generateK6Script</a></div><div class="sidebar-section-children"><a href="global.html#runK6Script">runK6Script</a></div></div></div><div class="mobile-navbar-actions"><div class="navbar-right-item"><button class="icon-button search-button" aria-label="open-search"><svg><use xlink:href="#search-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button theme-toggle" aria-label="toggle-theme"><svg><use class="theme-svg-use" xlink:href="#light-theme-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button font-size" aria-label="change-font-size"><svg><use xlink:href="#font-size-icon"></use></svg></button></div></div></div></div><script type="text/javascript" src="scripts/core.min.js"></script><script src="scripts/search.min.js" defer="defer"></script><script src="scripts/third-party/fuse.js" defer="defer"></script><script type="text/javascript">var tocbotInstance=tocbot.init({tocSelector:"#eed4d2a0bfd64539bb9df78095dec881",contentSelector:".main-content",headingSelector:"h1, h2, h3",hasInnerContainers:!0,scrollContainer:".main-content",headingsOffset:130,onClick:bringLinkToView})</script></body></html>
@@ -0,0 +1,38 @@
1
+ <!DOCTYPE html><html lang="en" style="font-size:16px"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Source: helpers/generateHeaders.js</title><!--[if lt IE 9]>
2
+ <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
3
+ <![endif]--><script src="scripts/third-party/hljs.js" defer="defer"></script><script src="scripts/third-party/hljs-line-num.js" defer="defer"></script><script src="scripts/third-party/popper.js" defer="defer"></script><script src="scripts/third-party/tippy.js" defer="defer"></script><script src="scripts/third-party/tocbot.min.js"></script><script>var baseURL="/",locationPathname="";baseURL=(locationPathname=document.location.pathname).substr(0,locationPathname.lastIndexOf("/")+1)</script><link rel="stylesheet" href="styles/clean-jsdoc-theme.min.css"><svg aria-hidden="true" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="display:none"><defs><symbol id="copy-icon" viewbox="0 0 488.3 488.3"><g><path d="M314.25,85.4h-227c-21.3,0-38.6,17.3-38.6,38.6v325.7c0,21.3,17.3,38.6,38.6,38.6h227c21.3,0,38.6-17.3,38.6-38.6V124 C352.75,102.7,335.45,85.4,314.25,85.4z M325.75,449.6c0,6.4-5.2,11.6-11.6,11.6h-227c-6.4,0-11.6-5.2-11.6-11.6V124 c0-6.4,5.2-11.6,11.6-11.6h227c6.4,0,11.6,5.2,11.6,11.6V449.6z"/><path d="M401.05,0h-227c-21.3,0-38.6,17.3-38.6,38.6c0,7.5,6,13.5,13.5,13.5s13.5-6,13.5-13.5c0-6.4,5.2-11.6,11.6-11.6h227 c6.4,0,11.6,5.2,11.6,11.6v325.7c0,6.4-5.2,11.6-11.6,11.6c-7.5,0-13.5,6-13.5,13.5s6,13.5,13.5,13.5c21.3,0,38.6-17.3,38.6-38.6 V38.6C439.65,17.3,422.35,0,401.05,0z"/></g></symbol><symbol id="search-icon" viewBox="0 0 512 512"><g><g><path d="M225.474,0C101.151,0,0,101.151,0,225.474c0,124.33,101.151,225.474,225.474,225.474 c124.33,0,225.474-101.144,225.474-225.474C450.948,101.151,349.804,0,225.474,0z M225.474,409.323 c-101.373,0-183.848-82.475-183.848-183.848S124.101,41.626,225.474,41.626s183.848,82.475,183.848,183.848 S326.847,409.323,225.474,409.323z"/></g></g><g><g><path d="M505.902,476.472L386.574,357.144c-8.131-8.131-21.299-8.131-29.43,0c-8.131,8.124-8.131,21.306,0,29.43l119.328,119.328 c4.065,4.065,9.387,6.098,14.715,6.098c5.321,0,10.649-2.033,14.715-6.098C514.033,497.778,514.033,484.596,505.902,476.472z"/></g></g></symbol><symbol id="font-size-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M11.246 15H4.754l-2 5H.6L7 4h2l6.4 16h-2.154l-2-5zm-.8-2L8 6.885 5.554 13h4.892zM21 12.535V12h2v8h-2v-.535a4 4 0 1 1 0-6.93zM19 18a2 2 0 1 0 0-4 2 2 0 0 0 0 4z"/></symbol><symbol id="add-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M11 11V5h2v6h6v2h-6v6h-2v-6H5v-2z"/></symbol><symbol id="minus-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M5 11h14v2H5z"/></symbol><symbol id="dark-theme-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M10 7a7 7 0 0 0 12 4.9v.1c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2h.1A6.979 6.979 0 0 0 10 7zm-6 5a8 8 0 0 0 15.062 3.762A9 9 0 0 1 8.238 4.938 7.999 7.999 0 0 0 4 12z"/></symbol><symbol id="light-theme-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 18a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm0-2a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM11 1h2v3h-2V1zm0 19h2v3h-2v-3zM3.515 4.929l1.414-1.414L7.05 5.636 5.636 7.05 3.515 4.93zM16.95 18.364l1.414-1.414 2.121 2.121-1.414 1.414-2.121-2.121zm2.121-14.85l1.414 1.415-2.121 2.121-1.414-1.414 2.121-2.121zM5.636 16.95l1.414 1.414-2.121 2.121-1.414-1.414 2.121-2.121zM23 11v2h-3v-2h3zM4 11v2H1v-2h3z"/></symbol><symbol id="reset-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M18.537 19.567A9.961 9.961 0 0 1 12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10c0 2.136-.67 4.116-1.81 5.74L17 12h3a8 8 0 1 0-2.46 5.772l.997 1.795z"/></symbol><symbol id="down-icon" viewBox="0 0 16 16"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.7803 6.21967C13.0732 6.51256 13.0732 6.98744 12.7803 7.28033L8.53033 11.5303C8.23744 11.8232 7.76256 11.8232 7.46967 11.5303L3.21967 7.28033C2.92678 6.98744 2.92678 6.51256 3.21967 6.21967C3.51256 5.92678 3.98744 5.92678 4.28033 6.21967L8 9.93934L11.7197 6.21967C12.0126 5.92678 12.4874 5.92678 12.7803 6.21967Z"></path></symbol><symbol id="codepen-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M16.5 13.202L13 15.535v3.596L19.197 15 16.5 13.202zM14.697 12L12 10.202 9.303 12 12 13.798 14.697 12zM20 10.869L18.303 12 20 13.131V10.87zM19.197 9L13 4.869v3.596l3.5 2.333L19.197 9zM7.5 10.798L11 8.465V4.869L4.803 9 7.5 10.798zM4.803 15L11 19.131v-3.596l-3.5-2.333L4.803 15zM4 13.131L5.697 12 4 10.869v2.262zM2 9a1 1 0 0 1 .445-.832l9-6a1 1 0 0 1 1.11 0l9 6A1 1 0 0 1 22 9v6a1 1 0 0 1-.445.832l-9 6a1 1 0 0 1-1.11 0l-9-6A1 1 0 0 1 2 15V9z"/></symbol><symbol id="close-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 10.586l4.95-4.95 1.414 1.414-4.95 4.95 4.95 4.95-1.414 1.414-4.95-4.95-4.95 4.95-1.414-1.414 4.95-4.95-4.95-4.95L7.05 5.636z"/></symbol><symbol id="menu-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M3 4h18v2H3V4zm0 7h18v2H3v-2zm0 7h18v2H3v-2z"/></symbol></defs></svg></head><body data-theme="dark"><div class="sidebar-container"><div class="sidebar" id="sidebar"><div class="sidebar-items-container"><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-modules"><div>Modules</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="module-generateHeaders.html">generateHeaders</a></div><div class="sidebar-section-children"><a href="module-resolveBody.html">resolveBody</a></div></div><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-global"><div>Global</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="global.html#delay">delay</a></div><div class="sidebar-section-children"><a href="global.html#generateK6Script">generateK6Script</a></div><div class="sidebar-section-children"><a href="global.html#runK6Script">runK6Script</a></div></div></div></div></div><div class="navbar-container" id="VuAckcnZhf"><nav class="navbar"><div class="navbar-left-items"></div><div class="navbar-right-items"><div class="navbar-right-item"><button class="icon-button search-button" aria-label="open-search"><svg><use xlink:href="#search-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button theme-toggle" aria-label="toggle-theme"><svg><use class="theme-svg-use" xlink:href="#light-theme-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button font-size" aria-label="change-font-size"><svg><use xlink:href="#font-size-icon"></use></svg></button></div></div><nav></nav></nav></div><div class="toc-container"><div class="toc-content"><span class="bold">On this page</span><div id="eed4d2a0bfd64539bb9df78095dec881"></div></div></div><div class="body-wrapper"><div class="main-content"><div class="main-wrapper"><section id="source-page" class="source-page"><header><h1 id="title" class="has-anchor">helpers_generateHeaders.js</h1></header><article><pre class="prettyprint source lang-js"><code>/**
4
+ * @module generateHeaders
5
+ * @description
6
+ * This module generates HTTP headers for API requests based on the specified authentication type.
7
+ * It supports API key, bearer token, basic authentication, and no authentication.
8
+ * Generates HTTP headers based on the specified authentication type.
9
+ * Supported auth types: api_key, bearer_token, basic, none.
10
+ */
11
+ module.exports = function generateHeaders(authType, env, aliases = {}) {
12
+ const headers = { "Content-Type": "application/json" };
13
+
14
+ const getValue = (key) => env[key] || aliases[key] || "";
15
+
16
+ if (authType === "api_key") {
17
+ headers["x-api-key"] = getValue("API_KEY");
18
+ } else if (authType === "bearer_token") {
19
+ headers["Authorization"] = `Bearer ${getValue("token")}`;
20
+ } else if (authType === "basic") {
21
+ const base64 = Buffer.from(
22
+ `${getValue("BASIC_USER")}:${getValue("BASIC_PASS")}`
23
+ ).toString("base64");
24
+ headers["Authorization"] = `Basic ${base64}`;
25
+ } else if (authType === "none") {
26
+ // No auth, just default content-type
27
+ } else if (aliases[authType]) {
28
+ // ✅ Custom alias support
29
+ headers["Authorization"] = `Bearer ${getValue(authType)}`;
30
+ } else {
31
+ throw new Error(
32
+ `Unsupported authentication type or missing alias: ${authType}`
33
+ );
34
+ }
35
+
36
+ return headers;
37
+ };
38
+ </code></pre></article></section></div></div></div><div class="search-container" id="PkfLWpAbet" style="display:none"><div class="wrapper" id="iCxFxjkHbP"><button class="icon-button search-close-button" id="VjLlGakifb" aria-label="close search"><svg><use xlink:href="#close-icon"></use></svg></button><div class="search-box-c"><svg><use xlink:href="#search-icon"></use></svg> <input type="text" id="vpcKVYIppa" class="search-input" placeholder="Search..." autofocus></div><div class="search-result-c" id="fWwVHRuDuN"><span class="search-result-c-text">Type anything to view search result</span></div></div></div><div class="mobile-menu-icon-container"><button class="icon-button" id="mobile-menu" data-isopen="false" aria-label="menu"><svg><use xlink:href="#menu-icon"></use></svg></button></div><div id="mobile-sidebar" class="mobile-sidebar-container"><div class="mobile-sidebar-wrapper"><div class="mobile-nav-links"></div><div class="mobile-sidebar-items-c"><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-modules"><div>Modules</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="module-generateHeaders.html">generateHeaders</a></div><div class="sidebar-section-children"><a href="module-resolveBody.html">resolveBody</a></div></div><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-global"><div>Global</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="global.html#delay">delay</a></div><div class="sidebar-section-children"><a href="global.html#generateK6Script">generateK6Script</a></div><div class="sidebar-section-children"><a href="global.html#runK6Script">runK6Script</a></div></div></div><div class="mobile-navbar-actions"><div class="navbar-right-item"><button class="icon-button search-button" aria-label="open-search"><svg><use xlink:href="#search-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button theme-toggle" aria-label="toggle-theme"><svg><use class="theme-svg-use" xlink:href="#light-theme-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button font-size" aria-label="change-font-size"><svg><use xlink:href="#font-size-icon"></use></svg></button></div></div></div></div><script type="text/javascript" src="scripts/core.min.js"></script><script src="scripts/search.min.js" defer="defer"></script><script src="scripts/third-party/fuse.js" defer="defer"></script><script type="text/javascript">var tocbotInstance=tocbot.init({tocSelector:"#eed4d2a0bfd64539bb9df78095dec881",contentSelector:".main-content",headingSelector:"h1, h2, h3",hasInnerContainers:!0,scrollContainer:".main-content",headingsOffset:130,onClick:bringLinkToView})</script></body></html>