k6-cucumber-steps 1.0.17 → 1.0.19
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.
- package/.vscode/extensions.json +5 -4
- package/.vscode/settings.json +4 -2
- package/README.md +122 -39
- package/assets/k6-cucumber-report2.png +0 -0
- package/package.json +1 -1
- package/reports/load-results.html +1 -1
- package/reports/load-results.json +1 -233
- package/step_definitions/load_test_steps.d.ts +7 -7
- package/step_definitions/load_test_steps.js +7 -7
package/.vscode/extensions.json
CHANGED
package/.vscode/settings.json
CHANGED
package/README.md
CHANGED
|
@@ -33,39 +33,122 @@ Run [k6](https://k6.io/) performance/load tests using [Cucumber](https://cucumbe
|
|
|
33
33
|
npm install k6-cucumber-steps
|
|
34
34
|
```
|
|
35
35
|
|
|
36
|
-
---
|
|
37
|
-
|
|
38
36
|
## 🚀 Usage
|
|
39
37
|
|
|
40
38
|
### CLI
|
|
41
39
|
|
|
42
40
|
```bash
|
|
43
|
-
npx k6-cucumber-steps run
|
|
41
|
+
npx k6-cucumber-steps run [options]
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
#### Options
|
|
45
|
+
|
|
46
|
+
The `run` command accepts the following options:
|
|
47
|
+
|
|
48
|
+
- `-f, --feature <path>`: Path to the feature file to execute.
|
|
49
|
+
- `-t, --tags <string>`: Cucumber tags to filter scenarios (e.g., `@smoke and not @regression`).
|
|
50
|
+
- `-r, --reporter`: Generate HTML and JSON reports in the `reports` directory. This is a boolean flag, so just include `-r` or `--reporter` to enable it.
|
|
51
|
+
|
|
52
|
+
### Example Usage with Options
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
npx k6-cucumber-steps run --feature ./features/my_feature.feature --tags "@load and not @wip" --reporter
|
|
44
56
|
```
|
|
45
57
|
|
|
46
|
-
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## 🛠️ Getting Started
|
|
61
|
+
|
|
62
|
+
Here's a step-by-step guide to using `k6-cucumber-steps` in your project:
|
|
63
|
+
|
|
64
|
+
**Prerequisites:**
|
|
65
|
+
|
|
66
|
+
1. **Node.js and npm (or yarn):** Ensure you have Node.js and npm (or yarn) installed.
|
|
67
|
+
2. **k6:** Install k6 on your system following the instructions at [k6.io/docs/getting-started/installation/](https://www.google.com/search?q=https://k6.io/docs/getting-started/installation/).
|
|
68
|
+
3. **@cucumber/cucumber:** This package is required for using Cucumber.
|
|
69
|
+
4. **cucumber-html-reporter:** This package is needed if you intend to generate detailed HTML reports
|
|
70
|
+
|
|
71
|
+
**Setup:**
|
|
72
|
+
|
|
73
|
+
1. **Create a new project:**
|
|
47
74
|
|
|
48
|
-
```
|
|
49
|
-
|
|
75
|
+
```bash
|
|
76
|
+
mkdir my-performance-test
|
|
77
|
+
cd my-performance-test
|
|
78
|
+
npm init -y
|
|
79
|
+
# or
|
|
80
|
+
yarn init -y
|
|
81
|
+
```
|
|
50
82
|
|
|
51
|
-
|
|
83
|
+
2. **Install dependencies:**
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
npm install --save-dev @cucumber/cucumber k6 dotenv k6-cucumber-steps cucumber-html-reporter
|
|
87
|
+
# or
|
|
88
|
+
yarn add --dev @cucumber/cucumber k6 dotenv k6-cucumber-steps cucumber-html-reporter
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
3. **Create `.env` file (optional):** Create a `.env` file in your project root for environment variables as described in the "Environment Variables" section below.
|
|
92
|
+
|
|
93
|
+
4. **Create `features` directory and feature files:**
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
mkdir features
|
|
97
|
+
# Create your .feature files inside the features directory (e.g., example.feature)
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
5. **Configure `cucumber.js`:**
|
|
101
|
+
Create a `cucumber.js` file at the root of your project with the following content:
|
|
102
|
+
|
|
103
|
+
```javascript
|
|
104
|
+
// cucumber.js
|
|
105
|
+
require("dotenv").config();
|
|
106
|
+
|
|
107
|
+
module.exports = {
|
|
108
|
+
requireModule: ["@babel/register"], // If your features or local steps need transpilation
|
|
109
|
+
require: [
|
|
110
|
+
"./node_modules/k6-cucumber-steps/step_definitions/**/*.js", // Path to k6-cucumber-steps' step definitions
|
|
111
|
+
// You can add paths to your local step definitions here if needed
|
|
112
|
+
],
|
|
113
|
+
format: [
|
|
114
|
+
"summary",
|
|
115
|
+
"json:reports/load-report.json", // For JSON report
|
|
116
|
+
"html:reports/report.html", // For HTML report (requires @cucumber/html-formatter)
|
|
117
|
+
],
|
|
118
|
+
tags: process.env.TAGS,
|
|
119
|
+
};
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
**Running Tests:**
|
|
123
|
+
|
|
124
|
+
From the root of your project, use the CLI command:
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
npx k6-cucumber-steps run
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
You can also specify a feature file or tags:
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
npx k6-cucumber-steps run --feature features/example.feature -t "@yourTag"
|
|
52
134
|
```
|
|
53
135
|
|
|
54
136
|
---
|
|
55
137
|
|
|
56
|
-
## Setup
|
|
138
|
+
## Setup (Detailed)
|
|
57
139
|
|
|
58
|
-
1.
|
|
140
|
+
1. **Environment Variables**: Create a `.env` file in your project root based on the provided `.env.example`:
|
|
59
141
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
142
|
+
```env
|
|
143
|
+
BASE_URL=[https://api.example.com](https://api.example.com)
|
|
144
|
+
API_KEY=your_api_key
|
|
145
|
+
BEARER_TOKEN=your_bearer_token
|
|
146
|
+
BASIC_USER=your_basic_user
|
|
147
|
+
BASIC_PASS=your_basic_pass
|
|
148
|
+
TAGS=@yourTag
|
|
149
|
+
```
|
|
67
150
|
|
|
68
|
-
2.
|
|
151
|
+
2. **Feature Files**: Write your feature files using the provided step definitions.
|
|
69
152
|
|
|
70
153
|
## Gherkin Examples
|
|
71
154
|
|
|
@@ -77,17 +160,17 @@ Here’s how you can write a feature file using the provided step definitions:
|
|
|
77
160
|
Feature: API Performance Testing
|
|
78
161
|
|
|
79
162
|
Scenario: Run load tests with dynamic GET requests
|
|
80
|
-
Given I
|
|
81
|
-
When I run the k6 script with the following configurations:
|
|
163
|
+
Given I set a k6 script for GET testing
|
|
164
|
+
When I set to run the k6 script with the following configurations:
|
|
82
165
|
| virtual_users | duration | http_req_failed | http_req_duration |
|
|
83
166
|
| 50 | 10 | rate<0.05 | p(95)<3000 |
|
|
84
|
-
And the following endpoint(s)
|
|
167
|
+
And I set the following endpoint(s) used:
|
|
85
168
|
"""
|
|
86
169
|
/api/profile
|
|
87
|
-
https://reqres.in/api/users?page=2
|
|
170
|
+
[https://reqres.in/api/users?page=2](https://reqres.in/api/users?page=2)
|
|
88
171
|
"""
|
|
89
172
|
And when the authentication type is "none"
|
|
90
|
-
Then the API should handle the GET request successfully
|
|
173
|
+
Then I see the API should handle the GET request successfully
|
|
91
174
|
```
|
|
92
175
|
|
|
93
176
|
### Example 2: Test POST Endpoint with Bearer Token Authentication
|
|
@@ -96,23 +179,23 @@ Feature: API Performance Testing
|
|
|
96
179
|
Feature: API Performance Testing
|
|
97
180
|
|
|
98
181
|
Scenario: Run load tests with dynamic POST requests
|
|
99
|
-
Given I
|
|
100
|
-
When I run the k6 script with the following configurations:
|
|
182
|
+
Given I set a k6 script for POST testing
|
|
183
|
+
When I set to run the k6 script with the following configurations:
|
|
101
184
|
| virtual_users | duration | http_req_failed | http_req_duration |
|
|
102
185
|
| 20 | 60 | rate<0.01 | p(95)<300 |
|
|
103
186
|
And the authentication type is "bearer_token"
|
|
104
|
-
And the following endpoint(s)
|
|
187
|
+
And I set the following endpoint(s) used:
|
|
105
188
|
"""
|
|
106
189
|
/api/v1/users
|
|
107
190
|
"""
|
|
108
|
-
And the following POST body is used for "/api/v1/users"
|
|
191
|
+
And I set the following POST body is used for "/api/v1/users"
|
|
109
192
|
"""
|
|
110
193
|
{
|
|
111
194
|
"username": "{{username}}",
|
|
112
195
|
"email": "{{faker.internet.email}}"
|
|
113
196
|
}
|
|
114
197
|
"""
|
|
115
|
-
Then the API should handle the POST request successfully
|
|
198
|
+
Then I see the API should handle the POST request successfully
|
|
116
199
|
```
|
|
117
200
|
|
|
118
201
|
## Step Definitions
|
|
@@ -120,33 +203,33 @@ Feature: API Performance Testing
|
|
|
120
203
|
### Authentication Steps
|
|
121
204
|
|
|
122
205
|
```gherkin
|
|
123
|
-
When the authentication type is "api_key"
|
|
124
|
-
When the authentication type is "bearer_token"
|
|
125
|
-
When the authentication type is "basic"
|
|
126
|
-
When the authentication type is "none"
|
|
206
|
+
When I set the authentication type is "api_key"
|
|
207
|
+
When I set the authentication type is "bearer_token"
|
|
208
|
+
When I set the authentication type is "basic"
|
|
209
|
+
When I set the authentication type is "none"
|
|
127
210
|
```
|
|
128
211
|
|
|
129
212
|
### Request Configuration Steps
|
|
130
213
|
|
|
131
214
|
```gherkin
|
|
132
|
-
Given I
|
|
133
|
-
When I run the k6 script with the following configurations:
|
|
134
|
-
When the request headers
|
|
135
|
-
When the following endpoint(s)
|
|
136
|
-
When the following {word} body is used for {string}
|
|
215
|
+
Given I set a k6 script for {word} testing
|
|
216
|
+
When I set to run the k6 script with the following configurations:
|
|
217
|
+
When I set the request headers:
|
|
218
|
+
When I set the following endpoint(s) used:
|
|
219
|
+
When I set the following {word} body is used for {string}
|
|
137
220
|
```
|
|
138
221
|
|
|
139
222
|
### Assertion Steps
|
|
140
223
|
|
|
141
224
|
```gherkin
|
|
142
|
-
Then the API should handle the {word} request successfully
|
|
225
|
+
Then I see the API should handle the {word} request successfully
|
|
143
226
|
```
|
|
144
227
|
|
|
145
228
|
## Test Results
|
|
146
229
|
|
|
147
230
|
Below is an example of the Cucumber report generated after running the tests:
|
|
148
|
-
|
|
149
|
-
|
|
231
|
+
<img src="assets/k6-cucumber-report.png" alt="Cucumber report generated after running the tests" width="60%" />
|
|
232
|
+
<img src="assets/k6-cucumber-report2.png" alt="Cucumber report generated after running the tests" width="60%" />
|
|
150
233
|
|
|
151
234
|
### Explanation of the Report
|
|
152
235
|
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -40,7 +40,7 @@ body{padding:0;margin:0}.html-formatter{max-width:1600px;min-height:100vh;margin
|
|
|
40
40
|
<div id="content">
|
|
41
41
|
</div>
|
|
42
42
|
<script>
|
|
43
|
-
window.CUCUMBER_MESSAGES = [{"meta":{"protocolVersion":"27.0.2","implementation":{"version":"11.2.0","name":"cucumber-js"},"cpu":{"name":"arm64"},"os":{"name":"darwin","version":"24.3.0"},"runtime":{"name":"node.js","version":"22.14.0"}}},{"source":{"data":"Feature: Run load tests with dynamic GET and POST body from environment variables and JSON files\n\n Scenario Outline: I run the k6 script for load testing with dynamic POST body from environment variables and JSON files\n Given I have a k6 script for POST testing\n When I run the k6 script with the following configurations:\n | virtual_users | duration | http_req_failed | http_req_duration | error_rate |\n | <virtual_users> | <duration> | <http_req_failed> | <http_req_duration> | <error_rate> |\n When the following endpoint(s) is\/are used:\n \"\"\"\n \/api\/profile\n http:\/\/test.k6.io\n \"\"\"\n When the following POST body is used for \"<endpoint>\"\n \"\"\"\n {\n \"username\": \"{{username}}\",\n \"email\": \"{{email}}\",\n \"address\": \"<address.json>\"\n }\n \"\"\"\n When the authentication type is \"api_key\"\n Then the API should handle the POST request successfully\n\n Examples:\n | virtual_users | duration | http_req_failed | http_req_duration | error_rate |\n | 10 | 5 | rate<0.05 | p(95)<3000 | rate<0.05 |\n | 50 | 10 | rate<0.05 | p(95)<3000 | rate<0.05 |\n | 100 | 15 | rate<0.05 | p(95)<3500 | |\n | 200 | 20 | rate<0.05 | p(95)<3500 | rate<0.05 |\n\n @loadTest\n Scenario Outline: I run the k6 script for load testing with dynamic GET requests\n Given I have a k6 script for GET testing\n When I run the k6 script with the following configurations:\n | virtual_users | duration | http_req_failed | http_req_duration | error_rate |\n | <virtual_users> | <duration> | <http_req_failed> | <http_req_duration> | <error_rate> |\n And the following endpoint(s) is\/are used:\n \"\"\"\n \/get?foo1=bar1&foo2=bar2\n https:\/\/postman-echo.com\/get?foo1=bar1&foo2=bar2\n \"\"\"\n When the authentication type is \"none\"\n Then the API should handle the GET request successfully\n\n Examples:\n | virtual_users | duration | http_req_failed | http_req_duration |\n | 10 | 5 | rate<0.05 | p(95)<3000 |\n | 50 | 10 | rate<0.05 | p(95)<3000 |\n # | 100 | 15 | rate<0.05 | p(95)<3500 |\n # | 200 | 20 | rate<0.05 | p(95)<3500 |\n","uri":"src\/examples\/features\/loadTestTemplate.feature","mediaType":"text\/x.cucumber.gherkin+plain"}},{"gherkinDocument":{"feature":{"tags":[],"location":{"line":1,"column":1},"language":"en","keyword":"Feature","name":"Run load tests with dynamic GET and POST body from environment variables and JSON files","description":"","children":[{"scenario":{"id":"fd1dfb32-6e2c-4b90-ae07-288c6b135309","tags":[],"location":{"line":3,"column":3},"keyword":"Scenario Outline","name":"I run the k6 script for load testing with dynamic POST body from environment variables and JSON files","description":"","steps":[{"id":"b71229df-0f0d-43d7-906b-395b785ccd25","location":{"line":4,"column":5},"keyword":"Given ","keywordType":"Context","text":"I have a k6 script for POST testing"},{"id":"3ae30eee-d57b-453a-93b4-14e6254ccd15","location":{"line":5,"column":5},"keyword":"When ","keywordType":"Action","text":"I run the k6 script with the following configurations:","dataTable":{"location":{"line":6,"column":7},"rows":[{"id":"e027368b-76ba-4b85-a6ed-31f7ae3decac","location":{"line":6,"column":7},"cells":[{"location":{"line":6,"column":9},"value":"virtual_users"},{"location":{"line":6,"column":27},"value":"duration"},{"location":{"line":6,"column":40},"value":"http_req_failed"},{"location":{"line":6,"column":60},"value":"http_req_duration"},{"location":{"line":6,"column":82},"value":"error_rate"}]},{"id":"5867b84b-b483-4068-8eec-7d83e6f30690","location":{"line":7,"column":7},"cells":[{"location":{"line":7,"column":9},"value":"<virtual_users>"},{"location":{"line":7,"column":27},"value":"<duration>"},{"location":{"line":7,"column":40},"value":"<http_req_failed>"},{"location":{"line":7,"column":60},"value":"<http_req_duration>"},{"location":{"line":7,"column":82},"value":"<error_rate>"}]}]}},{"id":"c52ef639-f129-4da1-8e76-ee1dd00cc5fe","location":{"line":8,"column":5},"keyword":"When ","keywordType":"Action","text":"the following endpoint(s) is\/are used:","docString":{"location":{"line":9,"column":7},"content":"\/api\/profile\nhttp:\/\/test.k6.io","delimiter":"\"\"\""}},{"id":"84bc9409-2eb4-40ee-919b-90b905d9baa7","location":{"line":13,"column":5},"keyword":"When ","keywordType":"Action","text":"the following POST body is used for \"<endpoint>\"","docString":{"location":{"line":14,"column":7},"content":"{\n \"username\": \"{{username}}\",\n \"email\": \"{{email}}\",\n \"address\": \"<address.json>\"\n}","delimiter":"\"\"\""}},{"id":"9746d083-b0dd-49ee-a9eb-1e1071b3d9b5","location":{"line":21,"column":5},"keyword":"When ","keywordType":"Action","text":"the authentication type is \"api_key\""},{"id":"8f04bb3c-639a-4a1a-8473-cb66ac36b091","location":{"line":22,"column":5},"keyword":"Then ","keywordType":"Outcome","text":"the API should handle the POST request successfully"}],"examples":[{"id":"d8165bc5-7bc9-4e5d-b777-1e695c446d9b","tags":[],"location":{"line":24,"column":5},"keyword":"Examples","name":"","description":"","tableHeader":{"id":"f4f7f4a4-db15-47e0-a4a3-e6b8a9e9a860","location":{"line":25,"column":7},"cells":[{"location":{"line":25,"column":9},"value":"virtual_users"},{"location":{"line":25,"column":25},"value":"duration"},{"location":{"line":25,"column":36},"value":"http_req_failed"},{"location":{"line":25,"column":54},"value":"http_req_duration"},{"location":{"line":25,"column":74},"value":"error_rate"}]},"tableBody":[{"id":"a037d6ea-ec3e-413a-a1fb-5c34c8c3996f","location":{"line":26,"column":7},"cells":[{"location":{"line":26,"column":20},"value":"10"},{"location":{"line":26,"column":32},"value":"5"},{"location":{"line":26,"column":36},"value":"rate<0.05"},{"location":{"line":26,"column":54},"value":"p(95)<3000"},{"location":{"line":26,"column":74},"value":"rate<0.05"}]},{"id":"e93bbcbf-b8dc-400c-8de9-d7eb1a2a5119","location":{"line":27,"column":7},"cells":[{"location":{"line":27,"column":20},"value":"50"},{"location":{"line":27,"column":31},"value":"10"},{"location":{"line":27,"column":36},"value":"rate<0.05"},{"location":{"line":27,"column":54},"value":"p(95)<3000"},{"location":{"line":27,"column":74},"value":"rate<0.05"}]},{"id":"d61dddf8-967e-4f69-8b04-0f1bb863b52b","location":{"line":28,"column":7},"cells":[{"location":{"line":28,"column":19},"value":"100"},{"location":{"line":28,"column":31},"value":"15"},{"location":{"line":28,"column":36},"value":"rate<0.05"},{"location":{"line":28,"column":54},"value":"p(95)<3500"},{"location":{"line":28,"column":85},"value":""}]},{"id":"8906bba6-b4c2-432a-8b66-76b1cd0e1414","location":{"line":29,"column":7},"cells":[{"location":{"line":29,"column":19},"value":"200"},{"location":{"line":29,"column":31},"value":"20"},{"location":{"line":29,"column":36},"value":"rate<0.05"},{"location":{"line":29,"column":54},"value":"p(95)<3500"},{"location":{"line":29,"column":74},"value":"rate<0.05"}]}]}]}},{"scenario":{"id":"190fd1a8-f264-481b-b45a-06c56b5d50c5","tags":[{"location":{"line":31,"column":3},"name":"@loadTest","id":"97fd9e37-b0f7-46c2-81d9-cbcd98c33834"}],"location":{"line":32,"column":3},"keyword":"Scenario Outline","name":"I run the k6 script for load testing with dynamic GET requests","description":"","steps":[{"id":"16d0548c-2298-482f-8be4-8d065dc8cb16","location":{"line":33,"column":5},"keyword":"Given ","keywordType":"Context","text":"I have a k6 script for GET testing"},{"id":"8fc1aaff-2ab7-442a-8990-81a468ba7dd8","location":{"line":34,"column":5},"keyword":"When ","keywordType":"Action","text":"I run the k6 script with the following configurations:","dataTable":{"location":{"line":35,"column":7},"rows":[{"id":"8828213c-3040-4b2c-8133-efe292340ec6","location":{"line":35,"column":7},"cells":[{"location":{"line":35,"column":9},"value":"virtual_users"},{"location":{"line":35,"column":27},"value":"duration"},{"location":{"line":35,"column":40},"value":"http_req_failed"},{"location":{"line":35,"column":60},"value":"http_req_duration"},{"location":{"line":35,"column":82},"value":"error_rate"}]},{"id":"4b320605-1a02-44de-90d5-ca5a8252ae19","location":{"line":36,"column":7},"cells":[{"location":{"line":36,"column":9},"value":"<virtual_users>"},{"location":{"line":36,"column":27},"value":"<duration>"},{"location":{"line":36,"column":40},"value":"<http_req_failed>"},{"location":{"line":36,"column":60},"value":"<http_req_duration>"},{"location":{"line":36,"column":82},"value":"<error_rate>"}]}]}},{"id":"748afb48-bbe6-486c-b6ca-b9e8cdb5b92b","location":{"line":37,"column":5},"keyword":"And ","keywordType":"Conjunction","text":"the following endpoint(s) is\/are used:","docString":{"location":{"line":38,"column":7},"content":"\/get?foo1=bar1&foo2=bar2\nhttps:\/\/postman-echo.com\/get?foo1=bar1&foo2=bar2","delimiter":"\"\"\""}},{"id":"d63b0073-26fd-4b65-a84c-8925e65c4499","location":{"line":42,"column":5},"keyword":"When ","keywordType":"Action","text":"the authentication type is \"none\""},{"id":"c3421c08-cadf-4e5c-a33f-24a2cb06e837","location":{"line":43,"column":5},"keyword":"Then ","keywordType":"Outcome","text":"the API should handle the GET request successfully"}],"examples":[{"id":"1c2ed159-3434-4ae4-8268-bf331449441b","tags":[],"location":{"line":45,"column":5},"keyword":"Examples","name":"","description":"","tableHeader":{"id":"6a0ec98f-298e-4deb-a97a-1eae4940bdac","location":{"line":46,"column":7},"cells":[{"location":{"line":46,"column":9},"value":"virtual_users"},{"location":{"line":46,"column":25},"value":"duration"},{"location":{"line":46,"column":36},"value":"http_req_failed"},{"location":{"line":46,"column":54},"value":"http_req_duration"}]},"tableBody":[{"id":"0211aa32-6cdb-43d0-8043-a5d784c9d03d","location":{"line":47,"column":7},"cells":[{"location":{"line":47,"column":20},"value":"10"},{"location":{"line":47,"column":32},"value":"5"},{"location":{"line":47,"column":36},"value":"rate<0.05"},{"location":{"line":47,"column":54},"value":"p(95)<3000"}]},{"id":"0057f062-4059-4f84-ae9e-8eb70f5c214b","location":{"line":48,"column":7},"cells":[{"location":{"line":48,"column":20},"value":"50"},{"location":{"line":48,"column":31},"value":"10"},{"location":{"line":48,"column":36},"value":"rate<0.05"},{"location":{"line":48,"column":54},"value":"p(95)<3000"}]}]}]}}]},"comments":[{"location":{"line":49,"column":1},"text":" # | 100 | 15 | rate<0.05 | p(95)<3500 |"},{"location":{"line":50,"column":1},"text":" # | 200 | 20 | rate<0.05 | p(95)<3500 |"}],"uri":"src\/examples\/features\/loadTestTemplate.feature"}},{"pickle":{"id":"caf12b22-1441-4707-9a04-a533f3e55650","uri":"src\/examples\/features\/loadTestTemplate.feature","astNodeIds":["fd1dfb32-6e2c-4b90-ae07-288c6b135309","a037d6ea-ec3e-413a-a1fb-5c34c8c3996f"],"name":"I run the k6 script for load testing with dynamic POST body from environment variables and JSON files","language":"en","steps":[{"id":"aef731ce-bf5f-4295-98d5-c7cbcea8477c","text":"I have a k6 script for POST testing","type":"Context","astNodeIds":["b71229df-0f0d-43d7-906b-395b785ccd25","a037d6ea-ec3e-413a-a1fb-5c34c8c3996f"]},{"id":"e1b956b2-a281-4f47-8319-7b557ad4d2de","text":"I run the k6 script with the following configurations:","type":"Action","argument":{"dataTable":{"rows":[{"cells":[{"value":"virtual_users"},{"value":"duration"},{"value":"http_req_failed"},{"value":"http_req_duration"},{"value":"error_rate"}]},{"cells":[{"value":"10"},{"value":"5"},{"value":"rate<0.05"},{"value":"p(95)<3000"},{"value":"rate<0.05"}]}]}},"astNodeIds":["3ae30eee-d57b-453a-93b4-14e6254ccd15","a037d6ea-ec3e-413a-a1fb-5c34c8c3996f"]},{"id":"b0ab2f9e-1e94-4b96-8829-24cf006b15ea","text":"the following endpoint(s) is\/are used:","type":"Action","argument":{"docString":{"content":"\/api\/profile\nhttp:\/\/test.k6.io"}},"astNodeIds":["c52ef639-f129-4da1-8e76-ee1dd00cc5fe","a037d6ea-ec3e-413a-a1fb-5c34c8c3996f"]},{"id":"7d0d7e2e-21be-4f61-8a64-227d6b6e4ca1","text":"the following POST body is used for \"<endpoint>\"","type":"Action","argument":{"docString":{"content":"{\n \"username\": \"{{username}}\",\n \"email\": \"{{email}}\",\n \"address\": \"<address.json>\"\n}"}},"astNodeIds":["84bc9409-2eb4-40ee-919b-90b905d9baa7","a037d6ea-ec3e-413a-a1fb-5c34c8c3996f"]},{"id":"0aeeb232-3034-4d64-b697-adc0bcc69960","text":"the authentication type is \"api_key\"","type":"Action","astNodeIds":["9746d083-b0dd-49ee-a9eb-1e1071b3d9b5","a037d6ea-ec3e-413a-a1fb-5c34c8c3996f"]},{"id":"78f70380-e3e7-4be9-958a-f059b11e410e","text":"the API should handle the POST request successfully","type":"Outcome","astNodeIds":["8f04bb3c-639a-4a1a-8473-cb66ac36b091","a037d6ea-ec3e-413a-a1fb-5c34c8c3996f"]}],"tags":[]}},{"pickle":{"id":"c6d7cc4d-429c-43e7-a511-330ac60f25ba","uri":"src\/examples\/features\/loadTestTemplate.feature","astNodeIds":["fd1dfb32-6e2c-4b90-ae07-288c6b135309","e93bbcbf-b8dc-400c-8de9-d7eb1a2a5119"],"name":"I run the k6 script for load testing with dynamic POST body from environment variables and JSON files","language":"en","steps":[{"id":"78524cfb-1a4e-4040-9723-51d3e7cc4c55","text":"I have a k6 script for POST testing","type":"Context","astNodeIds":["b71229df-0f0d-43d7-906b-395b785ccd25","e93bbcbf-b8dc-400c-8de9-d7eb1a2a5119"]},{"id":"31f57e0e-eeb9-460d-af7b-0c252784f36b","text":"I run the k6 script with the following configurations:","type":"Action","argument":{"dataTable":{"rows":[{"cells":[{"value":"virtual_users"},{"value":"duration"},{"value":"http_req_failed"},{"value":"http_req_duration"},{"value":"error_rate"}]},{"cells":[{"value":"50"},{"value":"10"},{"value":"rate<0.05"},{"value":"p(95)<3000"},{"value":"rate<0.05"}]}]}},"astNodeIds":["3ae30eee-d57b-453a-93b4-14e6254ccd15","e93bbcbf-b8dc-400c-8de9-d7eb1a2a5119"]},{"id":"07a4c6ab-4256-47e2-ac2b-497d4c1638cf","text":"the following endpoint(s) is\/are used:","type":"Action","argument":{"docString":{"content":"\/api\/profile\nhttp:\/\/test.k6.io"}},"astNodeIds":["c52ef639-f129-4da1-8e76-ee1dd00cc5fe","e93bbcbf-b8dc-400c-8de9-d7eb1a2a5119"]},{"id":"783d3b79-b9bf-4b4b-afc4-81d1d0817d68","text":"the following POST body is used for \"<endpoint>\"","type":"Action","argument":{"docString":{"content":"{\n \"username\": \"{{username}}\",\n \"email\": \"{{email}}\",\n \"address\": \"<address.json>\"\n}"}},"astNodeIds":["84bc9409-2eb4-40ee-919b-90b905d9baa7","e93bbcbf-b8dc-400c-8de9-d7eb1a2a5119"]},{"id":"a73a3d8c-351c-41ce-84ce-8158321bd310","text":"the authentication type is \"api_key\"","type":"Action","astNodeIds":["9746d083-b0dd-49ee-a9eb-1e1071b3d9b5","e93bbcbf-b8dc-400c-8de9-d7eb1a2a5119"]},{"id":"ea9f68dd-0214-49bf-83d0-32ea07ae8660","text":"the API should handle the POST request successfully","type":"Outcome","astNodeIds":["8f04bb3c-639a-4a1a-8473-cb66ac36b091","e93bbcbf-b8dc-400c-8de9-d7eb1a2a5119"]}],"tags":[]}},{"pickle":{"id":"4a37c49f-7446-4973-9e01-0b2445b2621d","uri":"src\/examples\/features\/loadTestTemplate.feature","astNodeIds":["fd1dfb32-6e2c-4b90-ae07-288c6b135309","d61dddf8-967e-4f69-8b04-0f1bb863b52b"],"name":"I run the k6 script for load testing with dynamic POST body from environment variables and JSON files","language":"en","steps":[{"id":"266a9053-bcb4-4526-94f3-c4eede249f64","text":"I have a k6 script for POST testing","type":"Context","astNodeIds":["b71229df-0f0d-43d7-906b-395b785ccd25","d61dddf8-967e-4f69-8b04-0f1bb863b52b"]},{"id":"2dc472e5-5b60-4d9e-9093-fdcef735a3ea","text":"I run the k6 script with the following configurations:","type":"Action","argument":{"dataTable":{"rows":[{"cells":[{"value":"virtual_users"},{"value":"duration"},{"value":"http_req_failed"},{"value":"http_req_duration"},{"value":"error_rate"}]},{"cells":[{"value":"100"},{"value":"15"},{"value":"rate<0.05"},{"value":"p(95)<3500"},{"value":""}]}]}},"astNodeIds":["3ae30eee-d57b-453a-93b4-14e6254ccd15","d61dddf8-967e-4f69-8b04-0f1bb863b52b"]},{"id":"19fc953c-b3a1-4289-9de5-4610ec431c21","text":"the following endpoint(s) is\/are used:","type":"Action","argument":{"docString":{"content":"\/api\/profile\nhttp:\/\/test.k6.io"}},"astNodeIds":["c52ef639-f129-4da1-8e76-ee1dd00cc5fe","d61dddf8-967e-4f69-8b04-0f1bb863b52b"]},{"id":"0950696a-acc3-46fa-a02d-93895f348dbe","text":"the following POST body is used for \"<endpoint>\"","type":"Action","argument":{"docString":{"content":"{\n \"username\": \"{{username}}\",\n \"email\": \"{{email}}\",\n \"address\": \"<address.json>\"\n}"}},"astNodeIds":["84bc9409-2eb4-40ee-919b-90b905d9baa7","d61dddf8-967e-4f69-8b04-0f1bb863b52b"]},{"id":"e03ee708-62eb-49a0-88e3-8a0a5526086d","text":"the authentication type is \"api_key\"","type":"Action","astNodeIds":["9746d083-b0dd-49ee-a9eb-1e1071b3d9b5","d61dddf8-967e-4f69-8b04-0f1bb863b52b"]},{"id":"cb866856-af59-4df6-9bb1-6adfbf9ece1d","text":"the API should handle the POST request successfully","type":"Outcome","astNodeIds":["8f04bb3c-639a-4a1a-8473-cb66ac36b091","d61dddf8-967e-4f69-8b04-0f1bb863b52b"]}],"tags":[]}},{"pickle":{"id":"9b4621f3-9eb5-4d1d-979d-932819047952","uri":"src\/examples\/features\/loadTestTemplate.feature","astNodeIds":["fd1dfb32-6e2c-4b90-ae07-288c6b135309","8906bba6-b4c2-432a-8b66-76b1cd0e1414"],"name":"I run the k6 script for load testing with dynamic POST body from environment variables and JSON files","language":"en","steps":[{"id":"d0ae06c3-b004-48aa-ba42-43ac49b9d051","text":"I have a k6 script for POST testing","type":"Context","astNodeIds":["b71229df-0f0d-43d7-906b-395b785ccd25","8906bba6-b4c2-432a-8b66-76b1cd0e1414"]},{"id":"ce050f57-7831-49b9-85d5-d64b33961b9a","text":"I run the k6 script with the following configurations:","type":"Action","argument":{"dataTable":{"rows":[{"cells":[{"value":"virtual_users"},{"value":"duration"},{"value":"http_req_failed"},{"value":"http_req_duration"},{"value":"error_rate"}]},{"cells":[{"value":"200"},{"value":"20"},{"value":"rate<0.05"},{"value":"p(95)<3500"},{"value":"rate<0.05"}]}]}},"astNodeIds":["3ae30eee-d57b-453a-93b4-14e6254ccd15","8906bba6-b4c2-432a-8b66-76b1cd0e1414"]},{"id":"5834dc24-88b4-4b6d-930e-081f9c4aacc7","text":"the following endpoint(s) is\/are used:","type":"Action","argument":{"docString":{"content":"\/api\/profile\nhttp:\/\/test.k6.io"}},"astNodeIds":["c52ef639-f129-4da1-8e76-ee1dd00cc5fe","8906bba6-b4c2-432a-8b66-76b1cd0e1414"]},{"id":"70ca2d9d-0b78-4598-8dac-3f7b2069fb31","text":"the following POST body is used for \"<endpoint>\"","type":"Action","argument":{"docString":{"content":"{\n \"username\": \"{{username}}\",\n \"email\": \"{{email}}\",\n \"address\": \"<address.json>\"\n}"}},"astNodeIds":["84bc9409-2eb4-40ee-919b-90b905d9baa7","8906bba6-b4c2-432a-8b66-76b1cd0e1414"]},{"id":"432df269-3eea-4f2f-85c4-cd12aadc9217","text":"the authentication type is \"api_key\"","type":"Action","astNodeIds":["9746d083-b0dd-49ee-a9eb-1e1071b3d9b5","8906bba6-b4c2-432a-8b66-76b1cd0e1414"]},{"id":"7c991631-bbd7-4119-918b-7c14ba6a4e9d","text":"the API should handle the POST request successfully","type":"Outcome","astNodeIds":["8f04bb3c-639a-4a1a-8473-cb66ac36b091","8906bba6-b4c2-432a-8b66-76b1cd0e1414"]}],"tags":[]}},{"pickle":{"id":"dbc7658a-6636-48fd-a243-d2e8db3b5ea3","uri":"src\/examples\/features\/loadTestTemplate.feature","astNodeIds":["190fd1a8-f264-481b-b45a-06c56b5d50c5","0211aa32-6cdb-43d0-8043-a5d784c9d03d"],"name":"I run the k6 script for load testing with dynamic GET requests","language":"en","steps":[{"id":"cd8526b1-f856-4057-bf9c-ae2d88791fd0","text":"I have a k6 script for GET testing","type":"Context","astNodeIds":["16d0548c-2298-482f-8be4-8d065dc8cb16","0211aa32-6cdb-43d0-8043-a5d784c9d03d"]},{"id":"dedf390f-cf6e-4f15-8547-a91d4d224cda","text":"I run the k6 script with the following configurations:","type":"Action","argument":{"dataTable":{"rows":[{"cells":[{"value":"virtual_users"},{"value":"duration"},{"value":"http_req_failed"},{"value":"http_req_duration"},{"value":"error_rate"}]},{"cells":[{"value":"10"},{"value":"5"},{"value":"rate<0.05"},{"value":"p(95)<3000"},{"value":"<error_rate>"}]}]}},"astNodeIds":["8fc1aaff-2ab7-442a-8990-81a468ba7dd8","0211aa32-6cdb-43d0-8043-a5d784c9d03d"]},{"id":"5451f38e-395f-41a0-bc57-56077267efd2","text":"the following endpoint(s) is\/are used:","type":"Action","argument":{"docString":{"content":"\/get?foo1=bar1&foo2=bar2\nhttps:\/\/postman-echo.com\/get?foo1=bar1&foo2=bar2"}},"astNodeIds":["748afb48-bbe6-486c-b6ca-b9e8cdb5b92b","0211aa32-6cdb-43d0-8043-a5d784c9d03d"]},{"id":"ac0bd6ef-65bc-4878-a271-9c662c7c7e1a","text":"the authentication type is \"none\"","type":"Action","astNodeIds":["d63b0073-26fd-4b65-a84c-8925e65c4499","0211aa32-6cdb-43d0-8043-a5d784c9d03d"]},{"id":"b78cc87d-9015-41f1-af58-bd8cbd761a12","text":"the API should handle the GET request successfully","type":"Outcome","astNodeIds":["c3421c08-cadf-4e5c-a33f-24a2cb06e837","0211aa32-6cdb-43d0-8043-a5d784c9d03d"]}],"tags":[{"name":"@loadTest","astNodeId":"97fd9e37-b0f7-46c2-81d9-cbcd98c33834"}]}},{"pickle":{"id":"8b5f009c-e976-42c1-8e55-84c2192872cf","uri":"src\/examples\/features\/loadTestTemplate.feature","astNodeIds":["190fd1a8-f264-481b-b45a-06c56b5d50c5","0057f062-4059-4f84-ae9e-8eb70f5c214b"],"name":"I run the k6 script for load testing with dynamic GET requests","language":"en","steps":[{"id":"242aefec-9ab0-41dd-b83e-899bf0f98f9b","text":"I have a k6 script for GET testing","type":"Context","astNodeIds":["16d0548c-2298-482f-8be4-8d065dc8cb16","0057f062-4059-4f84-ae9e-8eb70f5c214b"]},{"id":"05c1d33d-b951-4d02-a5a6-229c13fe4360","text":"I run the k6 script with the following configurations:","type":"Action","argument":{"dataTable":{"rows":[{"cells":[{"value":"virtual_users"},{"value":"duration"},{"value":"http_req_failed"},{"value":"http_req_duration"},{"value":"error_rate"}]},{"cells":[{"value":"50"},{"value":"10"},{"value":"rate<0.05"},{"value":"p(95)<3000"},{"value":"<error_rate>"}]}]}},"astNodeIds":["8fc1aaff-2ab7-442a-8990-81a468ba7dd8","0057f062-4059-4f84-ae9e-8eb70f5c214b"]},{"id":"d2817f09-5ad5-4112-aac4-3ddf85f4f1ee","text":"the following endpoint(s) is\/are used:","type":"Action","argument":{"docString":{"content":"\/get?foo1=bar1&foo2=bar2\nhttps:\/\/postman-echo.com\/get?foo1=bar1&foo2=bar2"}},"astNodeIds":["748afb48-bbe6-486c-b6ca-b9e8cdb5b92b","0057f062-4059-4f84-ae9e-8eb70f5c214b"]},{"id":"65d93103-e6fd-449e-9396-9bc5d0d0be27","text":"the authentication type is \"none\"","type":"Action","astNodeIds":["d63b0073-26fd-4b65-a84c-8925e65c4499","0057f062-4059-4f84-ae9e-8eb70f5c214b"]},{"id":"a7459900-18ad-4203-9bb5-f1af14038393","text":"the API should handle the GET request successfully","type":"Outcome","astNodeIds":["c3421c08-cadf-4e5c-a33f-24a2cb06e837","0057f062-4059-4f84-ae9e-8eb70f5c214b"]}],"tags":[{"name":"@loadTest","astNodeId":"97fd9e37-b0f7-46c2-81d9-cbcd98c33834"}]}},{"source":{"data":"Feature: Extended Load Testing with PUT, DELETE, and Multipart Uploads\n\n Scenario Outline: I run the k6 script for load testing with PUT requests\n Given I have a k6 script for PUT testing\n When I run the k6 script with the following configurations:\n | virtual_users | duration |\n | <virtual_users> | <duration> |\n And the following endpoint is used: \"<endpoint>\"\n When the following PUT body is used:\n \"\"\"\n {\n \"userId\": \"{{user_id}}\",\n \"status\": \"{{status}}\"\n }\n \"\"\"\n And the authentication type is \"bearer_token\"\n Then the API should handle the PUT request successfully\n\n Examples:\n | virtual_users | duration | endpoint |\n | 10 | 5 | \/api\/v1\/update-status |\n\n Scenario Outline: I run the k6 script for load testing with DELETE requests\n Given I have a k6 script for DELETE testing\n When I run the k6 script with the following configurations:\n | virtual_users | duration |\n | <virtual_users> | <duration> |\n And the following endpoint is used: \"<endpoint>\"\n And the authentication type is \"api_key\"\n Then the API should handle the DELETE request successfully\n\n Examples:\n | virtual_users | duration | endpoint |\n | 20 | 3 | \/api\/v1\/delete-record |\n\n Scenario Outline: I run the k6 script for load testing with multipart\/form-data requests\n Given I have a k6 script for multipart POST testing\n When I run the k6 script with the following configurations:\n | virtual_users | duration |\n | <virtual_users> | <duration> |\n And the following endpoint is used: \"<endpoint>\"\n When the following multipart body is used:\n \"\"\"\n file: <sample.pdf>\n description: {{file_description}}\n \"\"\"\n And the authentication type is \"bearer_token\"\n Then the API should handle multipart request successfully\n\n Examples:\n | virtual_users | duration | endpoint |\n | 15 | 5 | \/api\/v1\/upload-file |\n","uri":"src\/examples\/features\/putDeleteMultipartUploads.feature","mediaType":"text\/x.cucumber.gherkin+plain"}},{"gherkinDocument":{"feature":{"tags":[],"location":{"line":1,"column":1},"language":"en","keyword":"Feature","name":"Extended Load Testing with PUT, DELETE, and Multipart Uploads","description":"","children":[{"scenario":{"id":"20936a2a-2a5e-4b7e-b077-d4031b004ff6","tags":[],"location":{"line":3,"column":3},"keyword":"Scenario Outline","name":"I run the k6 script for load testing with PUT requests","description":"","steps":[{"id":"c1b8e729-cb42-4c96-bf02-34d2bc56ccd3","location":{"line":4,"column":5},"keyword":"Given ","keywordType":"Context","text":"I have a k6 script for PUT testing"},{"id":"b4938c55-e7f5-4202-8f88-d1e5d543aa5e","location":{"line":5,"column":5},"keyword":"When ","keywordType":"Action","text":"I run the k6 script with the following configurations:","dataTable":{"location":{"line":6,"column":7},"rows":[{"id":"000f6ebd-11e4-4b7e-aef9-ea5a400baef5","location":{"line":6,"column":7},"cells":[{"location":{"line":6,"column":9},"value":"virtual_users"},{"location":{"line":6,"column":27},"value":"duration"}]},{"id":"0eb933da-3dc5-4003-879e-170a75af298f","location":{"line":7,"column":7},"cells":[{"location":{"line":7,"column":9},"value":"<virtual_users>"},{"location":{"line":7,"column":27},"value":"<duration>"}]}]}},{"id":"8c9415cf-ccbc-499d-9636-2d7d28ae3797","location":{"line":8,"column":5},"keyword":"And ","keywordType":"Conjunction","text":"the following endpoint is used: \"<endpoint>\""},{"id":"9a9361e7-2039-4ea1-9e8a-966648f60a49","location":{"line":9,"column":5},"keyword":"When ","keywordType":"Action","text":"the following PUT body is used:","docString":{"location":{"line":10,"column":7},"content":"{\n \"userId\": \"{{user_id}}\",\n \"status\": \"{{status}}\"\n}","delimiter":"\"\"\""}},{"id":"34a98652-87b1-45d9-9fd1-255893b10145","location":{"line":16,"column":5},"keyword":"And ","keywordType":"Conjunction","text":"the authentication type is \"bearer_token\""},{"id":"82d9604a-1ad1-4200-9974-7d3296c857f8","location":{"line":17,"column":5},"keyword":"Then ","keywordType":"Outcome","text":"the API should handle the PUT request successfully"}],"examples":[{"id":"f4baea7a-794d-497e-b51a-c1a0daf83b2b","tags":[],"location":{"line":19,"column":5},"keyword":"Examples","name":"","description":"","tableHeader":{"id":"322dc7bf-65ff-4a5f-b5e2-040573c4fa87","location":{"line":20,"column":7},"cells":[{"location":{"line":20,"column":9},"value":"virtual_users"},{"location":{"line":20,"column":25},"value":"duration"},{"location":{"line":20,"column":36},"value":"endpoint"}]},"tableBody":[{"id":"7e980d62-1309-46fa-be05-f9e59de3550c","location":{"line":21,"column":7},"cells":[{"location":{"line":21,"column":20},"value":"10"},{"location":{"line":21,"column":32},"value":"5"},{"location":{"line":21,"column":36},"value":"\/api\/v1\/update-status"}]}]}]}},{"scenario":{"id":"c9fe35cf-9d1c-45d2-a3ee-77c472a07675","tags":[],"location":{"line":23,"column":3},"keyword":"Scenario Outline","name":"I run the k6 script for load testing with DELETE requests","description":"","steps":[{"id":"c7ea148d-341b-45db-8a71-17e8a366e265","location":{"line":24,"column":5},"keyword":"Given ","keywordType":"Context","text":"I have a k6 script for DELETE testing"},{"id":"d949704a-95e1-498a-becb-217506d081e4","location":{"line":25,"column":5},"keyword":"When ","keywordType":"Action","text":"I run the k6 script with the following configurations:","dataTable":{"location":{"line":26,"column":7},"rows":[{"id":"75e38f1c-f3da-47b3-8b80-51223ab9f1b0","location":{"line":26,"column":7},"cells":[{"location":{"line":26,"column":9},"value":"virtual_users"},{"location":{"line":26,"column":27},"value":"duration"}]},{"id":"556ab417-58f5-440f-b177-c6dba486ef89","location":{"line":27,"column":7},"cells":[{"location":{"line":27,"column":9},"value":"<virtual_users>"},{"location":{"line":27,"column":27},"value":"<duration>"}]}]}},{"id":"b986fd60-76d3-4da8-9c82-71f2ed551321","location":{"line":28,"column":5},"keyword":"And ","keywordType":"Conjunction","text":"the following endpoint is used: \"<endpoint>\""},{"id":"c9796676-c1cf-4f56-92bf-6f57f170ecf5","location":{"line":29,"column":5},"keyword":"And ","keywordType":"Conjunction","text":"the authentication type is \"api_key\""},{"id":"f64dade8-979a-4c1d-adf7-3f5085b5a2ef","location":{"line":30,"column":5},"keyword":"Then ","keywordType":"Outcome","text":"the API should handle the DELETE request successfully"}],"examples":[{"id":"f77ea1ab-53c7-4972-84a1-038e0f5f4338","tags":[],"location":{"line":32,"column":5},"keyword":"Examples","name":"","description":"","tableHeader":{"id":"3ac6c54a-9467-4a75-a23d-8d64af48f7de","location":{"line":33,"column":7},"cells":[{"location":{"line":33,"column":9},"value":"virtual_users"},{"location":{"line":33,"column":25},"value":"duration"},{"location":{"line":33,"column":36},"value":"endpoint"}]},"tableBody":[{"id":"d5eb4cb3-4d92-4369-8b67-cae7ac653b30","location":{"line":34,"column":7},"cells":[{"location":{"line":34,"column":20},"value":"20"},{"location":{"line":34,"column":32},"value":"3"},{"location":{"line":34,"column":36},"value":"\/api\/v1\/delete-record"}]}]}]}},{"scenario":{"id":"c946ed9a-5eb1-4fb7-b3a0-73cc66b333ea","tags":[],"location":{"line":36,"column":3},"keyword":"Scenario Outline","name":"I run the k6 script for load testing with multipart\/form-data requests","description":"","steps":[{"id":"5fb6a822-4fb7-4627-9eb7-48d0e9970afa","location":{"line":37,"column":5},"keyword":"Given ","keywordType":"Context","text":"I have a k6 script for multipart POST testing"},{"id":"35051722-e8df-4d17-a7ba-5e65e9a3989a","location":{"line":38,"column":5},"keyword":"When ","keywordType":"Action","text":"I run the k6 script with the following configurations:","dataTable":{"location":{"line":39,"column":7},"rows":[{"id":"92988cdb-8445-4de7-ac24-22479d54c72a","location":{"line":39,"column":7},"cells":[{"location":{"line":39,"column":9},"value":"virtual_users"},{"location":{"line":39,"column":27},"value":"duration"}]},{"id":"f572527c-d633-43e5-996e-ba1911d07853","location":{"line":40,"column":7},"cells":[{"location":{"line":40,"column":9},"value":"<virtual_users>"},{"location":{"line":40,"column":27},"value":"<duration>"}]}]}},{"id":"22056ef1-966f-408f-983c-8b171375de92","location":{"line":41,"column":5},"keyword":"And ","keywordType":"Conjunction","text":"the following endpoint is used: \"<endpoint>\""},{"id":"41f4d050-0f8e-41bf-9a2e-d42d653fd784","location":{"line":42,"column":5},"keyword":"When ","keywordType":"Action","text":"the following multipart body is used:","docString":{"location":{"line":43,"column":7},"content":"file: <sample.pdf>\ndescription: {{file_description}}","delimiter":"\"\"\""}},{"id":"22e6f464-a631-49d0-887f-ba0011b75cf7","location":{"line":47,"column":5},"keyword":"And ","keywordType":"Conjunction","text":"the authentication type is \"bearer_token\""},{"id":"fef86789-3731-48c6-9a21-474f0aff5899","location":{"line":48,"column":5},"keyword":"Then ","keywordType":"Outcome","text":"the API should handle multipart request successfully"}],"examples":[{"id":"7dc9463c-b4ce-4844-8938-f9a489970885","tags":[],"location":{"line":50,"column":5},"keyword":"Examples","name":"","description":"","tableHeader":{"id":"86d169b1-9ec8-4442-8f20-fa1afc9ab321","location":{"line":51,"column":7},"cells":[{"location":{"line":51,"column":9},"value":"virtual_users"},{"location":{"line":51,"column":25},"value":"duration"},{"location":{"line":51,"column":36},"value":"endpoint"}]},"tableBody":[{"id":"044565ec-c274-4139-9a9d-c9ccc71abbe7","location":{"line":52,"column":7},"cells":[{"location":{"line":52,"column":20},"value":"15"},{"location":{"line":52,"column":32},"value":"5"},{"location":{"line":52,"column":36},"value":"\/api\/v1\/upload-file"}]}]}]}}]},"comments":[],"uri":"src\/examples\/features\/putDeleteMultipartUploads.feature"}},{"pickle":{"id":"7db219ac-955a-4b28-865a-882e881e62e7","uri":"src\/examples\/features\/putDeleteMultipartUploads.feature","astNodeIds":["20936a2a-2a5e-4b7e-b077-d4031b004ff6","7e980d62-1309-46fa-be05-f9e59de3550c"],"name":"I run the k6 script for load testing with PUT requests","language":"en","steps":[{"id":"88d93f9e-570c-4338-8527-cbaaa81c61d0","text":"I have a k6 script for PUT testing","type":"Context","astNodeIds":["c1b8e729-cb42-4c96-bf02-34d2bc56ccd3","7e980d62-1309-46fa-be05-f9e59de3550c"]},{"id":"16d17ef5-94cd-46c6-b575-e4a6ffeb83d6","text":"I run the k6 script with the following configurations:","type":"Action","argument":{"dataTable":{"rows":[{"cells":[{"value":"virtual_users"},{"value":"duration"}]},{"cells":[{"value":"10"},{"value":"5"}]}]}},"astNodeIds":["b4938c55-e7f5-4202-8f88-d1e5d543aa5e","7e980d62-1309-46fa-be05-f9e59de3550c"]},{"id":"fd29d319-90c4-4701-a55e-e27ac46feabc","text":"the following endpoint is used: \"\/api\/v1\/update-status\"","type":"Action","astNodeIds":["8c9415cf-ccbc-499d-9636-2d7d28ae3797","7e980d62-1309-46fa-be05-f9e59de3550c"]},{"id":"d109919f-4853-4e0e-8202-b12eb65d3626","text":"the following PUT body is used:","type":"Action","argument":{"docString":{"content":"{\n \"userId\": \"{{user_id}}\",\n \"status\": \"{{status}}\"\n}"}},"astNodeIds":["9a9361e7-2039-4ea1-9e8a-966648f60a49","7e980d62-1309-46fa-be05-f9e59de3550c"]},{"id":"9d10b3cb-102f-45d3-bf6d-44101fe706aa","text":"the authentication type is \"bearer_token\"","type":"Action","astNodeIds":["34a98652-87b1-45d9-9fd1-255893b10145","7e980d62-1309-46fa-be05-f9e59de3550c"]},{"id":"995ac329-0c35-43d7-a137-9da7eb035895","text":"the API should handle the PUT request successfully","type":"Outcome","astNodeIds":["82d9604a-1ad1-4200-9974-7d3296c857f8","7e980d62-1309-46fa-be05-f9e59de3550c"]}],"tags":[]}},{"pickle":{"id":"932858d7-a419-4ed7-a4da-1a8de735be31","uri":"src\/examples\/features\/putDeleteMultipartUploads.feature","astNodeIds":["c9fe35cf-9d1c-45d2-a3ee-77c472a07675","d5eb4cb3-4d92-4369-8b67-cae7ac653b30"],"name":"I run the k6 script for load testing with DELETE requests","language":"en","steps":[{"id":"c5c31693-e3e6-451c-928b-6f84db807525","text":"I have a k6 script for DELETE testing","type":"Context","astNodeIds":["c7ea148d-341b-45db-8a71-17e8a366e265","d5eb4cb3-4d92-4369-8b67-cae7ac653b30"]},{"id":"d935bd04-a346-4383-ad71-e480ae5af697","text":"I run the k6 script with the following configurations:","type":"Action","argument":{"dataTable":{"rows":[{"cells":[{"value":"virtual_users"},{"value":"duration"}]},{"cells":[{"value":"20"},{"value":"3"}]}]}},"astNodeIds":["d949704a-95e1-498a-becb-217506d081e4","d5eb4cb3-4d92-4369-8b67-cae7ac653b30"]},{"id":"faad52cc-773e-4924-986a-ff1a61fcb7ae","text":"the following endpoint is used: \"\/api\/v1\/delete-record\"","type":"Action","astNodeIds":["b986fd60-76d3-4da8-9c82-71f2ed551321","d5eb4cb3-4d92-4369-8b67-cae7ac653b30"]},{"id":"823f716e-4c26-4ece-a840-d5540096239d","text":"the authentication type is \"api_key\"","type":"Action","astNodeIds":["c9796676-c1cf-4f56-92bf-6f57f170ecf5","d5eb4cb3-4d92-4369-8b67-cae7ac653b30"]},{"id":"f3c82006-bb6b-49e6-acdd-103536a1fc1f","text":"the API should handle the DELETE request successfully","type":"Outcome","astNodeIds":["f64dade8-979a-4c1d-adf7-3f5085b5a2ef","d5eb4cb3-4d92-4369-8b67-cae7ac653b30"]}],"tags":[]}},{"pickle":{"id":"f9bb765b-cb3b-4496-a77c-d704503b3205","uri":"src\/examples\/features\/putDeleteMultipartUploads.feature","astNodeIds":["c946ed9a-5eb1-4fb7-b3a0-73cc66b333ea","044565ec-c274-4139-9a9d-c9ccc71abbe7"],"name":"I run the k6 script for load testing with multipart\/form-data requests","language":"en","steps":[{"id":"43fce7a9-3666-483d-9331-156d361a577c","text":"I have a k6 script for multipart POST testing","type":"Context","astNodeIds":["5fb6a822-4fb7-4627-9eb7-48d0e9970afa","044565ec-c274-4139-9a9d-c9ccc71abbe7"]},{"id":"31ba1dd9-c4ce-4b27-8a96-d718f1ee61ff","text":"I run the k6 script with the following configurations:","type":"Action","argument":{"dataTable":{"rows":[{"cells":[{"value":"virtual_users"},{"value":"duration"}]},{"cells":[{"value":"15"},{"value":"5"}]}]}},"astNodeIds":["35051722-e8df-4d17-a7ba-5e65e9a3989a","044565ec-c274-4139-9a9d-c9ccc71abbe7"]},{"id":"273cc3ff-7c76-41e5-b1e0-e5b495612dd1","text":"the following endpoint is used: \"\/api\/v1\/upload-file\"","type":"Action","astNodeIds":["22056ef1-966f-408f-983c-8b171375de92","044565ec-c274-4139-9a9d-c9ccc71abbe7"]},{"id":"d2e6dbbf-7220-402a-86ad-27a16fc5ecef","text":"the following multipart body is used:","type":"Action","argument":{"docString":{"content":"file: <sample.pdf>\ndescription: {{file_description}}"}},"astNodeIds":["41f4d050-0f8e-41bf-9a2e-d42d653fd784","044565ec-c274-4139-9a9d-c9ccc71abbe7"]},{"id":"3bec5b72-aafc-4a4d-be36-62f6d07bd424","text":"the authentication type is \"bearer_token\"","type":"Action","astNodeIds":["22e6f464-a631-49d0-887f-ba0011b75cf7","044565ec-c274-4139-9a9d-c9ccc71abbe7"]},{"id":"6146750d-d640-444a-a4d2-874f1eb7bb70","text":"the API should handle multipart request successfully","type":"Outcome","astNodeIds":["fef86789-3731-48c6-9a21-474f0aff5899","044565ec-c274-4139-9a9d-c9ccc71abbe7"]}],"tags":[]}},{"source":{"data":"Feature: Run stress tests with dynamic GET and POST body from environment variables and JSON files\n\n Scenario Outline: I run the k6 script for stress testing with dynamic POST body from environment variables and JSON files\n Given I have a k6 script for POST testing\n When I run the k6 script with the following configurations:\n | virtual_users | duration | http_req_failed | http_req_duration | error_rate |\n | <virtual_users> | <duration> | <http_req_failed> | <http_req_duration> | <error_rate> |\n And the following endpoint(s) is\/are used:\n \"\"\"\n \/api\/v1\/resource1\n https:\/\/api.external.com\/resource2\n \"\"\"\n And the following POST body is used:\n \"\"\"\n {\n \"username\": \"{{username}}\",\n \"email\": \"{{email}}\",\n \"address\": \"<address.json>\"\n }\n \"\"\"\n Then the API should handle the POST request successfully\n\n Examples:\n\n Scenario Outline: I run the k6 script for GET testing with dynamic endpoints\n Given I have a k6 script for GET testing\n When I run the k6 script with the following configurations:\n | virtual_users | duration | http_req_failed | http_req_duration | error_rate |\n | <virtual_users> | <duration> | <http_req_failed> | <http_req_duration> | <error_rate> |\n And the following endpoint(s) is\/are used:\n \"\"\"\n \/api\/v1\/resource1\n https:\/\/api.external.com\/resource2\n \"\"\"\n Then the API should handle the GET request successfully\n\n Examples:\n | virtual_users | duration | http_req_failed |\n | 10 | 5 | rate<0.10 |\n | 50 | 10 | rate<0.05 |\n | 100 | 15 | rate<0.10 |\n | 200 | 20 | rate<0.05 |\n\n Scenario Outline: I run the k6 script for PUT requests\n Given I have a k6 script for PUT testing\n When I run the k6 script with the following configurations:\n | virtual_users | duration | http_req_failed | http_req_duration |\n | <virtual_users> | <duration> | <http_req_failed> | <http_req_duration> |\n And the following endpoint(s) is\/are used:\n \"\"\"\n \/api\/v1\/update-profile\n \"\"\"\n When the following PUT body is used for \"<endpoint>\"\n \"\"\"\n {\n \"id\": \"{{userId}}\",\n \"status\": \"updated\"\n }\n \"\"\"\n And the authentication type is \"bearer_token\"\n Then the API should handle the PUT request successfully\n\n Examples:\n | virtual_users | duration | http_req_failed | http_req_duration |\n | 20 | 10 | rate<0.05 | p(95)<1000 |\n","uri":"src\/examples\/features\/streesTestTemplate.feature","mediaType":"text\/x.cucumber.gherkin+plain"}},{"gherkinDocument":{"feature":{"tags":[],"location":{"line":1,"column":1},"language":"en","keyword":"Feature","name":"Run stress tests with dynamic GET and POST body from environment variables and JSON files","description":"","children":[{"scenario":{"id":"cd320fe5-c65f-4d7f-b085-6be326416ddb","tags":[],"location":{"line":3,"column":3},"keyword":"Scenario Outline","name":"I run the k6 script for stress testing with dynamic POST body from environment variables and JSON files","description":"","steps":[{"id":"dea1c14d-a693-4479-aed0-34657e9e13f2","location":{"line":4,"column":5},"keyword":"Given ","keywordType":"Context","text":"I have a k6 script for POST testing"},{"id":"c149d71b-16b4-491f-b4c0-8d62646448bc","location":{"line":5,"column":5},"keyword":"When ","keywordType":"Action","text":"I run the k6 script with the following configurations:","dataTable":{"location":{"line":6,"column":7},"rows":[{"id":"14beb266-1ed1-42d0-968e-83079b0708ac","location":{"line":6,"column":7},"cells":[{"location":{"line":6,"column":9},"value":"virtual_users"},{"location":{"line":6,"column":27},"value":"duration"},{"location":{"line":6,"column":40},"value":"http_req_failed"},{"location":{"line":6,"column":60},"value":"http_req_duration"},{"location":{"line":6,"column":82},"value":"error_rate"}]},{"id":"6e689dd2-5076-4379-b4c0-311017239794","location":{"line":7,"column":7},"cells":[{"location":{"line":7,"column":9},"value":"<virtual_users>"},{"location":{"line":7,"column":27},"value":"<duration>"},{"location":{"line":7,"column":40},"value":"<http_req_failed>"},{"location":{"line":7,"column":60},"value":"<http_req_duration>"},{"location":{"line":7,"column":82},"value":"<error_rate>"}]}]}},{"id":"10a8764d-0806-48d7-9b01-c1750fe2cfb6","location":{"line":8,"column":5},"keyword":"And ","keywordType":"Conjunction","text":"the following endpoint(s) is\/are used:","docString":{"location":{"line":9,"column":7},"content":"\/api\/v1\/resource1\nhttps:\/\/api.external.com\/resource2","delimiter":"\"\"\""}},{"id":"3e078cde-aa11-46f8-8c74-030c78d18eb5","location":{"line":13,"column":5},"keyword":"And ","keywordType":"Conjunction","text":"the following POST body is used:","docString":{"location":{"line":14,"column":7},"content":"{\n \"username\": \"{{username}}\",\n \"email\": \"{{email}}\",\n \"address\": \"<address.json>\"\n}","delimiter":"\"\"\""}},{"id":"08556d5e-f7d0-408e-b147-a3892a8fab95","location":{"line":21,"column":5},"keyword":"Then ","keywordType":"Outcome","text":"the API should handle the POST request successfully"}],"examples":[{"id":"f9cd3a7f-aaa3-454a-990e-884c451ac333","tags":[],"location":{"line":23,"column":5},"keyword":"Examples","name":"","description":"","tableBody":[]}]}},{"scenario":{"id":"bca37ef3-061c-49b8-a947-cef8b7dedfd0","tags":[],"location":{"line":25,"column":3},"keyword":"Scenario Outline","name":"I run the k6 script for GET testing with dynamic endpoints","description":"","steps":[{"id":"63d3c6e3-ac4c-4063-ba0e-8940c660cec0","location":{"line":26,"column":5},"keyword":"Given ","keywordType":"Context","text":"I have a k6 script for GET testing"},{"id":"81cfd430-21e5-4e94-9da7-f9fd94358740","location":{"line":27,"column":5},"keyword":"When ","keywordType":"Action","text":"I run the k6 script with the following configurations:","dataTable":{"location":{"line":28,"column":7},"rows":[{"id":"daeb7b49-dbb9-4283-9074-d71167033d0e","location":{"line":28,"column":7},"cells":[{"location":{"line":28,"column":9},"value":"virtual_users"},{"location":{"line":28,"column":27},"value":"duration"},{"location":{"line":28,"column":40},"value":"http_req_failed"},{"location":{"line":28,"column":60},"value":"http_req_duration"},{"location":{"line":28,"column":82},"value":"error_rate"}]},{"id":"0851cd8f-7e31-4fa3-a693-06be5b42191c","location":{"line":29,"column":7},"cells":[{"location":{"line":29,"column":9},"value":"<virtual_users>"},{"location":{"line":29,"column":27},"value":"<duration>"},{"location":{"line":29,"column":40},"value":"<http_req_failed>"},{"location":{"line":29,"column":60},"value":"<http_req_duration>"},{"location":{"line":29,"column":82},"value":"<error_rate>"}]}]}},{"id":"348fd54f-6a85-49b5-a08f-347aa2e9bca0","location":{"line":30,"column":5},"keyword":"And ","keywordType":"Conjunction","text":"the following endpoint(s) is\/are used:","docString":{"location":{"line":31,"column":7},"content":"\/api\/v1\/resource1\nhttps:\/\/api.external.com\/resource2","delimiter":"\"\"\""}},{"id":"8a2bb351-122c-445e-803e-20574a396b41","location":{"line":35,"column":5},"keyword":"Then ","keywordType":"Outcome","text":"the API should handle the GET request successfully"}],"examples":[{"id":"23b5ce59-4433-4cd1-a726-56da74a81dda","tags":[],"location":{"line":37,"column":5},"keyword":"Examples","name":"","description":"","tableHeader":{"id":"414a0574-899b-43f7-855f-4c7dc40c6ef4","location":{"line":38,"column":7},"cells":[{"location":{"line":38,"column":9},"value":"virtual_users"},{"location":{"line":38,"column":25},"value":"duration"},{"location":{"line":38,"column":36},"value":"http_req_failed"}]},"tableBody":[{"id":"635e1f1b-9ccd-472e-b604-688b736fc25e","location":{"line":39,"column":7},"cells":[{"location":{"line":39,"column":20},"value":"10"},{"location":{"line":39,"column":32},"value":"5"},{"location":{"line":39,"column":36},"value":"rate<0.10"}]},{"id":"bc6685cb-a5c1-48c1-b122-19568a27bfdc","location":{"line":40,"column":7},"cells":[{"location":{"line":40,"column":20},"value":"50"},{"location":{"line":40,"column":31},"value":"10"},{"location":{"line":40,"column":36},"value":"rate<0.05"}]},{"id":"63f7e6e7-3ef9-4ccc-a827-7595dd10592e","location":{"line":41,"column":7},"cells":[{"location":{"line":41,"column":19},"value":"100"},{"location":{"line":41,"column":31},"value":"15"},{"location":{"line":41,"column":36},"value":"rate<0.10"}]},{"id":"955e01eb-7af7-40d8-94f3-3de8610f4b69","location":{"line":42,"column":7},"cells":[{"location":{"line":42,"column":19},"value":"200"},{"location":{"line":42,"column":31},"value":"20"},{"location":{"line":42,"column":36},"value":"rate<0.05"}]}]}]}},{"scenario":{"id":"77c1662c-c2eb-401a-a1c5-e0e4e749040e","tags":[],"location":{"line":44,"column":3},"keyword":"Scenario Outline","name":"I run the k6 script for PUT requests","description":"","steps":[{"id":"2254b8ec-c800-441b-a1ca-52bf95a334ef","location":{"line":45,"column":5},"keyword":"Given ","keywordType":"Context","text":"I have a k6 script for PUT testing"},{"id":"30a8c34a-0f94-4ed6-b244-c1310047edcf","location":{"line":46,"column":5},"keyword":"When ","keywordType":"Action","text":"I run the k6 script with the following configurations:","dataTable":{"location":{"line":47,"column":7},"rows":[{"id":"6aa93965-6235-4ec4-894d-689075617bc2","location":{"line":47,"column":7},"cells":[{"location":{"line":47,"column":9},"value":"virtual_users"},{"location":{"line":47,"column":27},"value":"duration"},{"location":{"line":47,"column":40},"value":"http_req_failed"},{"location":{"line":47,"column":60},"value":"http_req_duration"}]},{"id":"13e4fca2-ea2b-4f09-9689-2c883b8509c4","location":{"line":48,"column":7},"cells":[{"location":{"line":48,"column":9},"value":"<virtual_users>"},{"location":{"line":48,"column":27},"value":"<duration>"},{"location":{"line":48,"column":40},"value":"<http_req_failed>"},{"location":{"line":48,"column":60},"value":"<http_req_duration>"}]}]}},{"id":"ded1eb50-bd26-4c39-84bf-be594cb80887","location":{"line":49,"column":5},"keyword":"And ","keywordType":"Conjunction","text":"the following endpoint(s) is\/are used:","docString":{"location":{"line":50,"column":7},"content":"\/api\/v1\/update-profile","delimiter":"\"\"\""}},{"id":"cc2433d2-85ee-4fad-87b9-ba9d68588b57","location":{"line":53,"column":5},"keyword":"When ","keywordType":"Action","text":"the following PUT body is used for \"<endpoint>\"","docString":{"location":{"line":54,"column":7},"content":"{\n \"id\": \"{{userId}}\",\n \"status\": \"updated\"\n}","delimiter":"\"\"\""}},{"id":"a8557123-ad05-431b-aa47-709f410253d4","location":{"line":60,"column":5},"keyword":"And ","keywordType":"Conjunction","text":"the authentication type is \"bearer_token\""},{"id":"351fbd29-237d-4a51-9610-567aa4105117","location":{"line":61,"column":5},"keyword":"Then ","keywordType":"Outcome","text":"the API should handle the PUT request successfully"}],"examples":[{"id":"251c68fd-3dc0-427b-8ecd-58e32d2d5265","tags":[],"location":{"line":63,"column":5},"keyword":"Examples","name":"","description":"","tableHeader":{"id":"7509abb9-2675-48c7-8b11-e804dfe46bd7","location":{"line":64,"column":7},"cells":[{"location":{"line":64,"column":9},"value":"virtual_users"},{"location":{"line":64,"column":25},"value":"duration"},{"location":{"line":64,"column":36},"value":"http_req_failed"},{"location":{"line":64,"column":54},"value":"http_req_duration"}]},"tableBody":[{"id":"94838ed3-010a-4f92-a80b-bebef374fee7","location":{"line":65,"column":7},"cells":[{"location":{"line":65,"column":20},"value":"20"},{"location":{"line":65,"column":31},"value":"10"},{"location":{"line":65,"column":36},"value":"rate<0.05"},{"location":{"line":65,"column":54},"value":"p(95)<1000"}]}]}]}}]},"comments":[],"uri":"src\/examples\/features\/streesTestTemplate.feature"}},{"pickle":{"id":"670dd059-253a-4546-88de-d2563bdd2390","uri":"src\/examples\/features\/streesTestTemplate.feature","astNodeIds":["bca37ef3-061c-49b8-a947-cef8b7dedfd0","635e1f1b-9ccd-472e-b604-688b736fc25e"],"name":"I run the k6 script for GET testing with dynamic endpoints","language":"en","steps":[{"id":"f467a92f-237e-4774-abaa-cc48f80d53e1","text":"I have a k6 script for GET testing","type":"Context","astNodeIds":["63d3c6e3-ac4c-4063-ba0e-8940c660cec0","635e1f1b-9ccd-472e-b604-688b736fc25e"]},{"id":"b9d4145a-428e-483c-a6ff-a110c409fb60","text":"I run the k6 script with the following configurations:","type":"Action","argument":{"dataTable":{"rows":[{"cells":[{"value":"virtual_users"},{"value":"duration"},{"value":"http_req_failed"},{"value":"http_req_duration"},{"value":"error_rate"}]},{"cells":[{"value":"10"},{"value":"5"},{"value":"rate<0.10"},{"value":"<http_req_duration>"},{"value":"<error_rate>"}]}]}},"astNodeIds":["81cfd430-21e5-4e94-9da7-f9fd94358740","635e1f1b-9ccd-472e-b604-688b736fc25e"]},{"id":"a374c3e5-8bf3-43af-8772-3e7f64290877","text":"the following endpoint(s) is\/are used:","type":"Action","argument":{"docString":{"content":"\/api\/v1\/resource1\nhttps:\/\/api.external.com\/resource2"}},"astNodeIds":["348fd54f-6a85-49b5-a08f-347aa2e9bca0","635e1f1b-9ccd-472e-b604-688b736fc25e"]},{"id":"d3887702-aed1-4ae3-aba3-4f73c4589315","text":"the API should handle the GET request successfully","type":"Outcome","astNodeIds":["8a2bb351-122c-445e-803e-20574a396b41","635e1f1b-9ccd-472e-b604-688b736fc25e"]}],"tags":[]}},{"pickle":{"id":"e0eca18c-58a2-4db8-bf8e-22eebb2c01d5","uri":"src\/examples\/features\/streesTestTemplate.feature","astNodeIds":["bca37ef3-061c-49b8-a947-cef8b7dedfd0","bc6685cb-a5c1-48c1-b122-19568a27bfdc"],"name":"I run the k6 script for GET testing with dynamic endpoints","language":"en","steps":[{"id":"6a9dc396-2aa7-459d-88d3-27c65c4e59df","text":"I have a k6 script for GET testing","type":"Context","astNodeIds":["63d3c6e3-ac4c-4063-ba0e-8940c660cec0","bc6685cb-a5c1-48c1-b122-19568a27bfdc"]},{"id":"b88cebc5-db2f-49aa-a0be-1519bbfa548d","text":"I run the k6 script with the following configurations:","type":"Action","argument":{"dataTable":{"rows":[{"cells":[{"value":"virtual_users"},{"value":"duration"},{"value":"http_req_failed"},{"value":"http_req_duration"},{"value":"error_rate"}]},{"cells":[{"value":"50"},{"value":"10"},{"value":"rate<0.05"},{"value":"<http_req_duration>"},{"value":"<error_rate>"}]}]}},"astNodeIds":["81cfd430-21e5-4e94-9da7-f9fd94358740","bc6685cb-a5c1-48c1-b122-19568a27bfdc"]},{"id":"023033d5-5a92-41de-81bb-8864cc7c12c6","text":"the following endpoint(s) is\/are used:","type":"Action","argument":{"docString":{"content":"\/api\/v1\/resource1\nhttps:\/\/api.external.com\/resource2"}},"astNodeIds":["348fd54f-6a85-49b5-a08f-347aa2e9bca0","bc6685cb-a5c1-48c1-b122-19568a27bfdc"]},{"id":"d49a2768-72e7-4a2e-8f58-9812bea766e5","text":"the API should handle the GET request successfully","type":"Outcome","astNodeIds":["8a2bb351-122c-445e-803e-20574a396b41","bc6685cb-a5c1-48c1-b122-19568a27bfdc"]}],"tags":[]}},{"pickle":{"id":"58c198f2-5e01-473d-a1b2-29df293f60d3","uri":"src\/examples\/features\/streesTestTemplate.feature","astNodeIds":["bca37ef3-061c-49b8-a947-cef8b7dedfd0","63f7e6e7-3ef9-4ccc-a827-7595dd10592e"],"name":"I run the k6 script for GET testing with dynamic endpoints","language":"en","steps":[{"id":"f8cbdced-8bbc-40ff-8647-85a8f76864c2","text":"I have a k6 script for GET testing","type":"Context","astNodeIds":["63d3c6e3-ac4c-4063-ba0e-8940c660cec0","63f7e6e7-3ef9-4ccc-a827-7595dd10592e"]},{"id":"f88d4da1-bac1-46ff-8fe2-1e97872409d1","text":"I run the k6 script with the following configurations:","type":"Action","argument":{"dataTable":{"rows":[{"cells":[{"value":"virtual_users"},{"value":"duration"},{"value":"http_req_failed"},{"value":"http_req_duration"},{"value":"error_rate"}]},{"cells":[{"value":"100"},{"value":"15"},{"value":"rate<0.10"},{"value":"<http_req_duration>"},{"value":"<error_rate>"}]}]}},"astNodeIds":["81cfd430-21e5-4e94-9da7-f9fd94358740","63f7e6e7-3ef9-4ccc-a827-7595dd10592e"]},{"id":"9a089482-ed14-49f3-81b9-db2aca592711","text":"the following endpoint(s) is\/are used:","type":"Action","argument":{"docString":{"content":"\/api\/v1\/resource1\nhttps:\/\/api.external.com\/resource2"}},"astNodeIds":["348fd54f-6a85-49b5-a08f-347aa2e9bca0","63f7e6e7-3ef9-4ccc-a827-7595dd10592e"]},{"id":"aea6321f-fdce-4f5b-b8ad-31d256f76787","text":"the API should handle the GET request successfully","type":"Outcome","astNodeIds":["8a2bb351-122c-445e-803e-20574a396b41","63f7e6e7-3ef9-4ccc-a827-7595dd10592e"]}],"tags":[]}},{"pickle":{"id":"07a0c1d2-12bd-42fc-ad26-1bf39a9eef17","uri":"src\/examples\/features\/streesTestTemplate.feature","astNodeIds":["bca37ef3-061c-49b8-a947-cef8b7dedfd0","955e01eb-7af7-40d8-94f3-3de8610f4b69"],"name":"I run the k6 script for GET testing with dynamic endpoints","language":"en","steps":[{"id":"a022da5a-2b7d-4663-8a40-22dafa8e4d86","text":"I have a k6 script for GET testing","type":"Context","astNodeIds":["63d3c6e3-ac4c-4063-ba0e-8940c660cec0","955e01eb-7af7-40d8-94f3-3de8610f4b69"]},{"id":"65852cdd-ec72-42f6-8c8d-23277ddd449a","text":"I run the k6 script with the following configurations:","type":"Action","argument":{"dataTable":{"rows":[{"cells":[{"value":"virtual_users"},{"value":"duration"},{"value":"http_req_failed"},{"value":"http_req_duration"},{"value":"error_rate"}]},{"cells":[{"value":"200"},{"value":"20"},{"value":"rate<0.05"},{"value":"<http_req_duration>"},{"value":"<error_rate>"}]}]}},"astNodeIds":["81cfd430-21e5-4e94-9da7-f9fd94358740","955e01eb-7af7-40d8-94f3-3de8610f4b69"]},{"id":"fe14aca3-0189-41d6-89f3-346ec61ea546","text":"the following endpoint(s) is\/are used:","type":"Action","argument":{"docString":{"content":"\/api\/v1\/resource1\nhttps:\/\/api.external.com\/resource2"}},"astNodeIds":["348fd54f-6a85-49b5-a08f-347aa2e9bca0","955e01eb-7af7-40d8-94f3-3de8610f4b69"]},{"id":"d7bf316a-a9d7-4b35-b6c6-bc544f4e5f8b","text":"the API should handle the GET request successfully","type":"Outcome","astNodeIds":["8a2bb351-122c-445e-803e-20574a396b41","955e01eb-7af7-40d8-94f3-3de8610f4b69"]}],"tags":[]}},{"pickle":{"id":"2cb7e186-6838-4d28-852d-82087312cfac","uri":"src\/examples\/features\/streesTestTemplate.feature","astNodeIds":["77c1662c-c2eb-401a-a1c5-e0e4e749040e","94838ed3-010a-4f92-a80b-bebef374fee7"],"name":"I run the k6 script for PUT requests","language":"en","steps":[{"id":"0d8f377e-6fda-4efc-ad69-3ae8fd5339e7","text":"I have a k6 script for PUT testing","type":"Context","astNodeIds":["2254b8ec-c800-441b-a1ca-52bf95a334ef","94838ed3-010a-4f92-a80b-bebef374fee7"]},{"id":"4cbcef56-8945-4443-8ba4-0ce4a92c66ab","text":"I run the k6 script with the following configurations:","type":"Action","argument":{"dataTable":{"rows":[{"cells":[{"value":"virtual_users"},{"value":"duration"},{"value":"http_req_failed"},{"value":"http_req_duration"}]},{"cells":[{"value":"20"},{"value":"10"},{"value":"rate<0.05"},{"value":"p(95)<1000"}]}]}},"astNodeIds":["30a8c34a-0f94-4ed6-b244-c1310047edcf","94838ed3-010a-4f92-a80b-bebef374fee7"]},{"id":"aa37d5ae-7b9c-4d24-8dc5-7c30bf5ed0e2","text":"the following endpoint(s) is\/are used:","type":"Action","argument":{"docString":{"content":"\/api\/v1\/update-profile"}},"astNodeIds":["ded1eb50-bd26-4c39-84bf-be594cb80887","94838ed3-010a-4f92-a80b-bebef374fee7"]},{"id":"05a35da6-67ec-4d59-9501-e2c633ad2fa0","text":"the following PUT body is used for \"<endpoint>\"","type":"Action","argument":{"docString":{"content":"{\n \"id\": \"{{userId}}\",\n \"status\": \"updated\"\n}"}},"astNodeIds":["cc2433d2-85ee-4fad-87b9-ba9d68588b57","94838ed3-010a-4f92-a80b-bebef374fee7"]},{"id":"62808bb5-8eef-485e-8940-7e700f707031","text":"the authentication type is \"bearer_token\"","type":"Action","astNodeIds":["a8557123-ad05-431b-aa47-709f410253d4","94838ed3-010a-4f92-a80b-bebef374fee7"]},{"id":"caf33696-dc6f-43c2-a9c4-34835a0e8142","text":"the API should handle the PUT request successfully","type":"Outcome","astNodeIds":["351fbd29-237d-4a51-9610-567aa4105117","94838ed3-010a-4f92-a80b-bebef374fee7"]}],"tags":[]}},{"stepDefinition":{"id":"50708463-86b1-418f-b124-39aa9fc2b244","pattern":{"source":"I have a k6 script for {word} testing","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"step_definitions\/load_test_steps.js","location":{"line":21}}}},{"stepDefinition":{"id":"df5487d4-4dbf-48a1-9912-961a5ca185aa","pattern":{"source":"I run the k6 script with the following configurations:","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"step_definitions\/load_test_steps.js","location":{"line":25}}}},{"stepDefinition":{"id":"e2c5bf61-8877-4233-9aa6-8b3d166b8177","pattern":{"source":"the request headers are:","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"step_definitions\/load_test_steps.js","location":{"line":71}}}},{"stepDefinition":{"id":"6ef87f95-6263-4c14-8424-67997356541e","pattern":{"source":"the following endpoint\\(s) is\\\/are used:","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"step_definitions\/load_test_steps.js","location":{"line":83}}}},{"stepDefinition":{"id":"0d7aa392-80e0-46e3-9317-0c523f89957c","pattern":{"source":"the following {word} body is used for {string}","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"step_definitions\/load_test_steps.js","location":{"line":90}}}},{"stepDefinition":{"id":"fcef728e-5d7a-49fd-af00-6a5464af9ef1","pattern":{"source":"the authentication type is {string}","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"step_definitions\/load_test_steps.js","location":{"line":99}}}},{"stepDefinition":{"id":"9edfa81e-532d-4236-b16e-0fe458fb6faf","pattern":{"source":"the API should handle the {word} request successfully","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"step_definitions\/load_test_steps.js","location":{"line":134}}}},{"testRunStarted":{"id":"45b9b7a1-eba5-4df1-8f2e-1e2aaee797df","timestamp":{"seconds":1745763411,"nanos":499000000}}},{"testCase":{"testRunStartedId":"45b9b7a1-eba5-4df1-8f2e-1e2aaee797df","pickleId":"dbc7658a-6636-48fd-a243-d2e8db3b5ea3","id":"40c1ad52-9ec0-4f97-8f07-dcd42a9cd87f","testSteps":[{"id":"8ddedec3-465e-431c-b9c9-ce863b22ebf1","pickleStepId":"cd8526b1-f856-4057-bf9c-ae2d88791fd0","stepDefinitionIds":["50708463-86b1-418f-b124-39aa9fc2b244"],"stepMatchArgumentsLists":[{"stepMatchArguments":[{"group":{"start":23,"value":"GET","children":[]},"parameterTypeName":"word"}]}]},{"id":"fb4a1b93-7a40-41eb-ab4e-de9b766e8921","pickleStepId":"dedf390f-cf6e-4f15-8547-a91d4d224cda","stepDefinitionIds":["df5487d4-4dbf-48a1-9912-961a5ca185aa"],"stepMatchArgumentsLists":[{"stepMatchArguments":[]}]},{"id":"87f5c8f5-ee3b-4e70-b9fd-848c6a3dc8c7","pickleStepId":"5451f38e-395f-41a0-bc57-56077267efd2","stepDefinitionIds":["6ef87f95-6263-4c14-8424-67997356541e"],"stepMatchArgumentsLists":[{"stepMatchArguments":[]}]},{"id":"4c9ecfeb-31a9-4b20-a4af-9ddce9025ec8","pickleStepId":"ac0bd6ef-65bc-4878-a271-9c662c7c7e1a","stepDefinitionIds":["fcef728e-5d7a-49fd-af00-6a5464af9ef1"],"stepMatchArgumentsLists":[{"stepMatchArguments":[{"group":{"start":27,"value":"\"none\"","children":[{"start":28,"value":"none","children":[{"children":[]}]},{"children":[{"children":[]}]}]},"parameterTypeName":"string"}]}]},{"id":"801864e0-9664-4d6c-b447-120ca3cfd1a4","pickleStepId":"b78cc87d-9015-41f1-af58-bd8cbd761a12","stepDefinitionIds":["9edfa81e-532d-4236-b16e-0fe458fb6faf"],"stepMatchArgumentsLists":[{"stepMatchArguments":[{"group":{"start":26,"value":"GET","children":[]},"parameterTypeName":"word"}]}]}]}},{"testCase":{"testRunStartedId":"45b9b7a1-eba5-4df1-8f2e-1e2aaee797df","pickleId":"8b5f009c-e976-42c1-8e55-84c2192872cf","id":"27d68193-bc6d-4d6e-b671-ecd69fb5f0ba","testSteps":[{"id":"8d5ed66b-368a-4329-9bfe-8b5214e97738","pickleStepId":"242aefec-9ab0-41dd-b83e-899bf0f98f9b","stepDefinitionIds":["50708463-86b1-418f-b124-39aa9fc2b244"],"stepMatchArgumentsLists":[{"stepMatchArguments":[{"group":{"start":23,"value":"GET","children":[]},"parameterTypeName":"word"}]}]},{"id":"46eb081a-35aa-4eba-9574-18ce910c1516","pickleStepId":"05c1d33d-b951-4d02-a5a6-229c13fe4360","stepDefinitionIds":["df5487d4-4dbf-48a1-9912-961a5ca185aa"],"stepMatchArgumentsLists":[{"stepMatchArguments":[]}]},{"id":"6b2e64b2-6ee5-4e56-beb6-06bc0e24bcdf","pickleStepId":"d2817f09-5ad5-4112-aac4-3ddf85f4f1ee","stepDefinitionIds":["6ef87f95-6263-4c14-8424-67997356541e"],"stepMatchArgumentsLists":[{"stepMatchArguments":[]}]},{"id":"739dcbdd-6e6e-405c-9075-25eaeaa3785b","pickleStepId":"65d93103-e6fd-449e-9396-9bc5d0d0be27","stepDefinitionIds":["fcef728e-5d7a-49fd-af00-6a5464af9ef1"],"stepMatchArgumentsLists":[{"stepMatchArguments":[{"group":{"start":27,"value":"\"none\"","children":[{"start":28,"value":"none","children":[{"children":[]}]},{"children":[{"children":[]}]}]},"parameterTypeName":"string"}]}]},{"id":"ace176b9-0ac4-4201-9c80-d5ca4e5bdb09","pickleStepId":"a7459900-18ad-4203-9bb5-f1af14038393","stepDefinitionIds":["9edfa81e-532d-4236-b16e-0fe458fb6faf"],"stepMatchArgumentsLists":[{"stepMatchArguments":[{"group":{"start":26,"value":"GET","children":[]},"parameterTypeName":"word"}]}]}]}},{"testCaseStarted":{"attempt":0,"testCaseId":"40c1ad52-9ec0-4f97-8f07-dcd42a9cd87f","id":"63658124-26fd-4c30-8bc0-50460a715aa1","timestamp":{"seconds":1745763411,"nanos":508000000}}},{"testStepStarted":{"testCaseStartedId":"63658124-26fd-4c30-8bc0-50460a715aa1","testStepId":"8ddedec3-465e-431c-b9c9-ce863b22ebf1","timestamp":{"seconds":1745763411,"nanos":508000000}}},{"testStepFinished":{"testCaseStartedId":"63658124-26fd-4c30-8bc0-50460a715aa1","testStepId":"8ddedec3-465e-431c-b9c9-ce863b22ebf1","testStepResult":{"duration":{"seconds":0,"nanos":676165},"status":"PASSED"},"timestamp":{"seconds":1745763411,"nanos":509000000}}},{"testStepStarted":{"testCaseStartedId":"63658124-26fd-4c30-8bc0-50460a715aa1","testStepId":"fb4a1b93-7a40-41eb-ab4e-de9b766e8921","timestamp":{"seconds":1745763411,"nanos":509000000}}},{"testStepFinished":{"testCaseStartedId":"63658124-26fd-4c30-8bc0-50460a715aa1","testStepId":"fb4a1b93-7a40-41eb-ab4e-de9b766e8921","testStepResult":{"duration":{"seconds":0,"nanos":277249},"status":"PASSED"},"timestamp":{"seconds":1745763411,"nanos":509000000}}},{"testStepStarted":{"testCaseStartedId":"63658124-26fd-4c30-8bc0-50460a715aa1","testStepId":"87f5c8f5-ee3b-4e70-b9fd-848c6a3dc8c7","timestamp":{"seconds":1745763411,"nanos":509000000}}},{"testStepFinished":{"testCaseStartedId":"63658124-26fd-4c30-8bc0-50460a715aa1","testStepId":"87f5c8f5-ee3b-4e70-b9fd-848c6a3dc8c7","testStepResult":{"duration":{"seconds":0,"nanos":52750},"status":"PASSED"},"timestamp":{"seconds":1745763411,"nanos":510000000}}},{"testStepStarted":{"testCaseStartedId":"63658124-26fd-4c30-8bc0-50460a715aa1","testStepId":"4c9ecfeb-31a9-4b20-a4af-9ddce9025ec8","timestamp":{"seconds":1745763411,"nanos":510000000}}},{"testStepFinished":{"testCaseStartedId":"63658124-26fd-4c30-8bc0-50460a715aa1","testStepId":"4c9ecfeb-31a9-4b20-a4af-9ddce9025ec8","testStepResult":{"duration":{"seconds":0,"nanos":86542},"status":"PASSED"},"timestamp":{"seconds":1745763411,"nanos":510000000}}},{"testStepStarted":{"testCaseStartedId":"63658124-26fd-4c30-8bc0-50460a715aa1","testStepId":"801864e0-9664-4d6c-b447-120ca3cfd1a4","timestamp":{"seconds":1745763411,"nanos":510000000}}},{"testStepFinished":{"testCaseStartedId":"63658124-26fd-4c30-8bc0-50460a715aa1","testStepId":"801864e0-9664-4d6c-b447-120ca3cfd1a4","testStepResult":{"duration":{"seconds":0,"nanos":101674709},"status":"FAILED","message":"Error: k6 test execution failed\n at CustomWorld.<anonymous> (\/Users\/paschal\/personal\/k6-cucumber-steps\/step_definitions\/load_test_steps.js:154:13)\n at processTicksAndRejections (node:internal\/process\/task_queues:105:5)","exception":{"type":"Error","message":"k6 test execution failed","stackTrace":" at CustomWorld.<anonymous> (\/Users\/paschal\/personal\/k6-cucumber-steps\/step_definitions\/load_test_steps.js:154:13)\n at processTicksAndRejections (node:internal\/process\/task_queues:105:5)"}},"timestamp":{"seconds":1745763411,"nanos":617000000}}},{"testCaseFinished":{"testCaseStartedId":"63658124-26fd-4c30-8bc0-50460a715aa1","timestamp":{"seconds":1745763411,"nanos":617000000},"willBeRetried":false}},{"testCaseStarted":{"attempt":0,"testCaseId":"27d68193-bc6d-4d6e-b671-ecd69fb5f0ba","id":"d65da717-d914-4340-97e6-2724da924356","timestamp":{"seconds":1745763411,"nanos":617000000}}},{"testStepStarted":{"testCaseStartedId":"d65da717-d914-4340-97e6-2724da924356","testStepId":"8d5ed66b-368a-4329-9bfe-8b5214e97738","timestamp":{"seconds":1745763411,"nanos":617000000}}},{"testStepFinished":{"testCaseStartedId":"d65da717-d914-4340-97e6-2724da924356","testStepId":"8d5ed66b-368a-4329-9bfe-8b5214e97738","testStepResult":{"duration":{"seconds":0,"nanos":56459},"status":"PASSED"},"timestamp":{"seconds":1745763411,"nanos":617000000}}},{"testStepStarted":{"testCaseStartedId":"d65da717-d914-4340-97e6-2724da924356","testStepId":"46eb081a-35aa-4eba-9574-18ce910c1516","timestamp":{"seconds":1745763411,"nanos":617000000}}},{"testStepFinished":{"testCaseStartedId":"d65da717-d914-4340-97e6-2724da924356","testStepId":"46eb081a-35aa-4eba-9574-18ce910c1516","testStepResult":{"duration":{"seconds":0,"nanos":42250},"status":"PASSED"},"timestamp":{"seconds":1745763411,"nanos":617000000}}},{"testStepStarted":{"testCaseStartedId":"d65da717-d914-4340-97e6-2724da924356","testStepId":"6b2e64b2-6ee5-4e56-beb6-06bc0e24bcdf","timestamp":{"seconds":1745763411,"nanos":617000000}}},{"testStepFinished":{"testCaseStartedId":"d65da717-d914-4340-97e6-2724da924356","testStepId":"6b2e64b2-6ee5-4e56-beb6-06bc0e24bcdf","testStepResult":{"duration":{"seconds":0,"nanos":24791},"status":"PASSED"},"timestamp":{"seconds":1745763411,"nanos":618000000}}},{"testStepStarted":{"testCaseStartedId":"d65da717-d914-4340-97e6-2724da924356","testStepId":"739dcbdd-6e6e-405c-9075-25eaeaa3785b","timestamp":{"seconds":1745763411,"nanos":618000000}}},{"testStepFinished":{"testCaseStartedId":"d65da717-d914-4340-97e6-2724da924356","testStepId":"739dcbdd-6e6e-405c-9075-25eaeaa3785b","testStepResult":{"duration":{"seconds":0,"nanos":120874},"status":"PASSED"},"timestamp":{"seconds":1745763411,"nanos":618000000}}},{"testStepStarted":{"testCaseStartedId":"d65da717-d914-4340-97e6-2724da924356","testStepId":"ace176b9-0ac4-4201-9c80-d5ca4e5bdb09","timestamp":{"seconds":1745763411,"nanos":618000000}}},{"testStepFinished":{"testCaseStartedId":"d65da717-d914-4340-97e6-2724da924356","testStepId":"ace176b9-0ac4-4201-9c80-d5ca4e5bdb09","testStepResult":{"duration":{"seconds":0,"nanos":27540708},"status":"FAILED","message":"Error: k6 test execution failed\n at CustomWorld.<anonymous> (\/Users\/paschal\/personal\/k6-cucumber-steps\/step_definitions\/load_test_steps.js:154:13)\n at processTicksAndRejections (node:internal\/process\/task_queues:105:5)","exception":{"type":"Error","message":"k6 test execution failed","stackTrace":" at CustomWorld.<anonymous> (\/Users\/paschal\/personal\/k6-cucumber-steps\/step_definitions\/load_test_steps.js:154:13)\n at processTicksAndRejections (node:internal\/process\/task_queues:105:5)"}},"timestamp":{"seconds":1745763411,"nanos":646000000}}},{"testCaseFinished":{"testCaseStartedId":"d65da717-d914-4340-97e6-2724da924356","timestamp":{"seconds":1745763411,"nanos":646000000},"willBeRetried":false}},{"testRunFinished":{"testRunStartedId":"45b9b7a1-eba5-4df1-8f2e-1e2aaee797df","timestamp":{"seconds":1745763411,"nanos":646000000},"success":false}}];
|
|
43
|
+
window.CUCUMBER_MESSAGES = [{"meta":{"protocolVersion":"27.0.2","implementation":{"version":"11.2.0","name":"cucumber-js"},"cpu":{"name":"arm64"},"os":{"name":"darwin","version":"24.3.0"},"runtime":{"name":"node.js","version":"22.14.0"}}},{"stepDefinition":{"id":"10328197-b350-4484-b9e5-9b3d47e5b427","pattern":{"source":"I set a k6 script for {word} testing","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"node_modules\/k6-cucumber-steps\/step_definitions\/load_test_steps.js","location":{"line":21}}}},{"stepDefinition":{"id":"a9d5a660-950c-447c-83ce-2240c4958189","pattern":{"source":"I set to run the k6 script with the following configurations:","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"node_modules\/k6-cucumber-steps\/step_definitions\/load_test_steps.js","location":{"line":25}}}},{"stepDefinition":{"id":"6d8c50bc-af04-4cd3-b1bf-454a4e3dddb0","pattern":{"source":"I set the request headers:","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"node_modules\/k6-cucumber-steps\/step_definitions\/load_test_steps.js","location":{"line":71}}}},{"stepDefinition":{"id":"79768ea2-d2c9-470f-a373-2bfdd7696653","pattern":{"source":"I set the following endpoint\\(s) used:","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"node_modules\/k6-cucumber-steps\/step_definitions\/load_test_steps.js","location":{"line":83}}}},{"stepDefinition":{"id":"aba9ee98-d587-4041-abc6-189176191d83","pattern":{"source":"I set the following {word} body is used for {string}","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"node_modules\/k6-cucumber-steps\/step_definitions\/load_test_steps.js","location":{"line":90}}}},{"stepDefinition":{"id":"1279e95a-e52e-4de7-bbd2-fc05c4ca74b5","pattern":{"source":"I set the authentication type is {string}","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"node_modules\/k6-cucumber-steps\/step_definitions\/load_test_steps.js","location":{"line":99}}}},{"stepDefinition":{"id":"4c447da6-eec3-4146-a68c-25fd474c2212","pattern":{"source":"I see the API should handle the {word} request successfully","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"node_modules\/k6-cucumber-steps\/step_definitions\/load_test_steps.js","location":{"line":103}}}},{"stepDefinition":{"id":"db10c2d5-10dd-4301-bfc2-f1bf8af6c95d","pattern":{"source":"I set a k6 script for {word} testing","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"step_definitions\/load_test_steps.js","location":{"line":21}}}},{"stepDefinition":{"id":"f931de79-26c9-4556-8ebf-16d43b45ca47","pattern":{"source":"I set to run the k6 script with the following configurations:","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"step_definitions\/load_test_steps.js","location":{"line":25}}}},{"stepDefinition":{"id":"0db39943-3f2b-4737-9919-0a4a2e425c32","pattern":{"source":"I set the request headers:","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"step_definitions\/load_test_steps.js","location":{"line":71}}}},{"stepDefinition":{"id":"6f4951d9-9744-42e7-b6a0-651d3fce75de","pattern":{"source":"I set the following endpoint\\(s) used:","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"step_definitions\/load_test_steps.js","location":{"line":83}}}},{"stepDefinition":{"id":"e71e973b-c2b4-42d2-a191-35eefaabcbc2","pattern":{"source":"I set the following {word} body is used for {string}","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"step_definitions\/load_test_steps.js","location":{"line":90}}}},{"stepDefinition":{"id":"130868e1-6dda-4720-9e93-5575a5e33c88","pattern":{"source":"I set the authentication type is {string}","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"step_definitions\/load_test_steps.js","location":{"line":99}}}},{"stepDefinition":{"id":"85f3755e-aebe-4a85-9535-0b75b5547c6e","pattern":{"source":"I see the API should handle the {word} request successfully","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"uri":"step_definitions\/load_test_steps.js","location":{"line":103}}}},{"testRunStarted":{"id":"b3662237-3028-4a8b-b30e-47364453f749","timestamp":{"seconds":1745791966,"nanos":315000000}}},{"testRunFinished":{"testRunStartedId":"b3662237-3028-4a8b-b30e-47364453f749","timestamp":{"seconds":1745791966,"nanos":315000000},"success":true}}];
|
|
44
44
|
</script>
|
|
45
45
|
<script>
|
|
46
46
|
/*! For license information please see main.js.LICENSE.txt */
|
|
@@ -1,233 +1 @@
|
|
|
1
|
-
[
|
|
2
|
-
{
|
|
3
|
-
"description": "",
|
|
4
|
-
"elements": [
|
|
5
|
-
{
|
|
6
|
-
"description": "",
|
|
7
|
-
"id": "run-load-tests-with-dynamic-get-and-post-body-from-environment-variables-and-json-files;i-run-the-k6-script-for-load-testing-with-dynamic-get-requests",
|
|
8
|
-
"keyword": "Scenario Outline",
|
|
9
|
-
"line": 47,
|
|
10
|
-
"name": "I run the k6 script for load testing with dynamic GET requests",
|
|
11
|
-
"steps": [
|
|
12
|
-
{
|
|
13
|
-
"arguments": [],
|
|
14
|
-
"keyword": "Given ",
|
|
15
|
-
"line": 33,
|
|
16
|
-
"name": "I have a k6 script for GET testing",
|
|
17
|
-
"match": {
|
|
18
|
-
"location": "step_definitions/load_test_steps.js:21"
|
|
19
|
-
},
|
|
20
|
-
"result": {
|
|
21
|
-
"status": "passed",
|
|
22
|
-
"duration": 676165
|
|
23
|
-
}
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
"arguments": [
|
|
27
|
-
{
|
|
28
|
-
"rows": [
|
|
29
|
-
{
|
|
30
|
-
"cells": [
|
|
31
|
-
"virtual_users",
|
|
32
|
-
"duration",
|
|
33
|
-
"http_req_failed",
|
|
34
|
-
"http_req_duration",
|
|
35
|
-
"error_rate"
|
|
36
|
-
]
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
"cells": [
|
|
40
|
-
"10",
|
|
41
|
-
"5",
|
|
42
|
-
"rate<0.05",
|
|
43
|
-
"p(95)<3000",
|
|
44
|
-
"<error_rate>"
|
|
45
|
-
]
|
|
46
|
-
}
|
|
47
|
-
]
|
|
48
|
-
}
|
|
49
|
-
],
|
|
50
|
-
"keyword": "When ",
|
|
51
|
-
"line": 34,
|
|
52
|
-
"name": "I run the k6 script with the following configurations:",
|
|
53
|
-
"match": {
|
|
54
|
-
"location": "step_definitions/load_test_steps.js:25"
|
|
55
|
-
},
|
|
56
|
-
"result": {
|
|
57
|
-
"status": "passed",
|
|
58
|
-
"duration": 277249
|
|
59
|
-
}
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
"arguments": [
|
|
63
|
-
{
|
|
64
|
-
"content": "/get?foo1=bar1&foo2=bar2\nhttps://postman-echo.com/get?foo1=bar1&foo2=bar2",
|
|
65
|
-
"line": 38
|
|
66
|
-
}
|
|
67
|
-
],
|
|
68
|
-
"keyword": "And ",
|
|
69
|
-
"line": 37,
|
|
70
|
-
"name": "the following endpoint(s) is/are used:",
|
|
71
|
-
"match": {
|
|
72
|
-
"location": "step_definitions/load_test_steps.js:83"
|
|
73
|
-
},
|
|
74
|
-
"result": {
|
|
75
|
-
"status": "passed",
|
|
76
|
-
"duration": 52750
|
|
77
|
-
}
|
|
78
|
-
},
|
|
79
|
-
{
|
|
80
|
-
"arguments": [],
|
|
81
|
-
"keyword": "When ",
|
|
82
|
-
"line": 42,
|
|
83
|
-
"name": "the authentication type is \"none\"",
|
|
84
|
-
"match": {
|
|
85
|
-
"location": "step_definitions/load_test_steps.js:99"
|
|
86
|
-
},
|
|
87
|
-
"result": {
|
|
88
|
-
"status": "passed",
|
|
89
|
-
"duration": 86542
|
|
90
|
-
}
|
|
91
|
-
},
|
|
92
|
-
{
|
|
93
|
-
"arguments": [],
|
|
94
|
-
"keyword": "Then ",
|
|
95
|
-
"line": 43,
|
|
96
|
-
"name": "the API should handle the GET request successfully",
|
|
97
|
-
"match": {
|
|
98
|
-
"location": "step_definitions/load_test_steps.js:134"
|
|
99
|
-
},
|
|
100
|
-
"result": {
|
|
101
|
-
"status": "failed",
|
|
102
|
-
"duration": 101674709,
|
|
103
|
-
"error_message": "Error: k6 test execution failed\n at CustomWorld.<anonymous> (/Users/paschal/personal/k6-cucumber-steps/step_definitions/load_test_steps.js:154:13)\n at processTicksAndRejections (node:internal/process/task_queues:105:5)"
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
],
|
|
107
|
-
"tags": [
|
|
108
|
-
{
|
|
109
|
-
"name": "@loadTest",
|
|
110
|
-
"line": 31
|
|
111
|
-
}
|
|
112
|
-
],
|
|
113
|
-
"type": "scenario"
|
|
114
|
-
},
|
|
115
|
-
{
|
|
116
|
-
"description": "",
|
|
117
|
-
"id": "run-load-tests-with-dynamic-get-and-post-body-from-environment-variables-and-json-files;i-run-the-k6-script-for-load-testing-with-dynamic-get-requests",
|
|
118
|
-
"keyword": "Scenario Outline",
|
|
119
|
-
"line": 48,
|
|
120
|
-
"name": "I run the k6 script for load testing with dynamic GET requests",
|
|
121
|
-
"steps": [
|
|
122
|
-
{
|
|
123
|
-
"arguments": [],
|
|
124
|
-
"keyword": "Given ",
|
|
125
|
-
"line": 33,
|
|
126
|
-
"name": "I have a k6 script for GET testing",
|
|
127
|
-
"match": {
|
|
128
|
-
"location": "step_definitions/load_test_steps.js:21"
|
|
129
|
-
},
|
|
130
|
-
"result": {
|
|
131
|
-
"status": "passed",
|
|
132
|
-
"duration": 56459
|
|
133
|
-
}
|
|
134
|
-
},
|
|
135
|
-
{
|
|
136
|
-
"arguments": [
|
|
137
|
-
{
|
|
138
|
-
"rows": [
|
|
139
|
-
{
|
|
140
|
-
"cells": [
|
|
141
|
-
"virtual_users",
|
|
142
|
-
"duration",
|
|
143
|
-
"http_req_failed",
|
|
144
|
-
"http_req_duration",
|
|
145
|
-
"error_rate"
|
|
146
|
-
]
|
|
147
|
-
},
|
|
148
|
-
{
|
|
149
|
-
"cells": [
|
|
150
|
-
"50",
|
|
151
|
-
"10",
|
|
152
|
-
"rate<0.05",
|
|
153
|
-
"p(95)<3000",
|
|
154
|
-
"<error_rate>"
|
|
155
|
-
]
|
|
156
|
-
}
|
|
157
|
-
]
|
|
158
|
-
}
|
|
159
|
-
],
|
|
160
|
-
"keyword": "When ",
|
|
161
|
-
"line": 34,
|
|
162
|
-
"name": "I run the k6 script with the following configurations:",
|
|
163
|
-
"match": {
|
|
164
|
-
"location": "step_definitions/load_test_steps.js:25"
|
|
165
|
-
},
|
|
166
|
-
"result": {
|
|
167
|
-
"status": "passed",
|
|
168
|
-
"duration": 42250
|
|
169
|
-
}
|
|
170
|
-
},
|
|
171
|
-
{
|
|
172
|
-
"arguments": [
|
|
173
|
-
{
|
|
174
|
-
"content": "/get?foo1=bar1&foo2=bar2\nhttps://postman-echo.com/get?foo1=bar1&foo2=bar2",
|
|
175
|
-
"line": 38
|
|
176
|
-
}
|
|
177
|
-
],
|
|
178
|
-
"keyword": "And ",
|
|
179
|
-
"line": 37,
|
|
180
|
-
"name": "the following endpoint(s) is/are used:",
|
|
181
|
-
"match": {
|
|
182
|
-
"location": "step_definitions/load_test_steps.js:83"
|
|
183
|
-
},
|
|
184
|
-
"result": {
|
|
185
|
-
"status": "passed",
|
|
186
|
-
"duration": 24791
|
|
187
|
-
}
|
|
188
|
-
},
|
|
189
|
-
{
|
|
190
|
-
"arguments": [],
|
|
191
|
-
"keyword": "When ",
|
|
192
|
-
"line": 42,
|
|
193
|
-
"name": "the authentication type is \"none\"",
|
|
194
|
-
"match": {
|
|
195
|
-
"location": "step_definitions/load_test_steps.js:99"
|
|
196
|
-
},
|
|
197
|
-
"result": {
|
|
198
|
-
"status": "passed",
|
|
199
|
-
"duration": 120874
|
|
200
|
-
}
|
|
201
|
-
},
|
|
202
|
-
{
|
|
203
|
-
"arguments": [],
|
|
204
|
-
"keyword": "Then ",
|
|
205
|
-
"line": 43,
|
|
206
|
-
"name": "the API should handle the GET request successfully",
|
|
207
|
-
"match": {
|
|
208
|
-
"location": "step_definitions/load_test_steps.js:134"
|
|
209
|
-
},
|
|
210
|
-
"result": {
|
|
211
|
-
"status": "failed",
|
|
212
|
-
"duration": 27540708,
|
|
213
|
-
"error_message": "Error: k6 test execution failed\n at CustomWorld.<anonymous> (/Users/paschal/personal/k6-cucumber-steps/step_definitions/load_test_steps.js:154:13)\n at processTicksAndRejections (node:internal/process/task_queues:105:5)"
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
],
|
|
217
|
-
"tags": [
|
|
218
|
-
{
|
|
219
|
-
"name": "@loadTest",
|
|
220
|
-
"line": 31
|
|
221
|
-
}
|
|
222
|
-
],
|
|
223
|
-
"type": "scenario"
|
|
224
|
-
}
|
|
225
|
-
],
|
|
226
|
-
"id": "run-load-tests-with-dynamic-get-and-post-body-from-environment-variables-and-json-files",
|
|
227
|
-
"line": 1,
|
|
228
|
-
"keyword": "Feature",
|
|
229
|
-
"name": "Run load tests with dynamic GET and POST body from environment variables and JSON files",
|
|
230
|
-
"tags": [],
|
|
231
|
-
"uri": "src/examples/features/loadTestTemplate.feature"
|
|
232
|
-
}
|
|
233
|
-
]
|
|
1
|
+
[]
|
|
@@ -36,35 +36,35 @@ export function Then(
|
|
|
36
36
|
): void;
|
|
37
37
|
|
|
38
38
|
declare function Given(
|
|
39
|
-
pattern: "I
|
|
39
|
+
pattern: "I set a k6 script for {word} testing",
|
|
40
40
|
implementation: (
|
|
41
41
|
this: import("@cucumber/cucumber").World,
|
|
42
42
|
method: string
|
|
43
43
|
) => void
|
|
44
44
|
): void;
|
|
45
45
|
declare function When(
|
|
46
|
-
pattern: "I run the k6 script with the following configurations:",
|
|
46
|
+
pattern: "I set to run the k6 script with the following configurations:",
|
|
47
47
|
implementation: (
|
|
48
48
|
this: import("@cucumber/cucumber").World,
|
|
49
49
|
dataTable: DataTable
|
|
50
50
|
) => void
|
|
51
51
|
): void;
|
|
52
52
|
declare function When(
|
|
53
|
-
pattern: "the request headers
|
|
53
|
+
pattern: "I set the request headers:",
|
|
54
54
|
implementation: (
|
|
55
55
|
this: import("@cucumber/cucumber").World,
|
|
56
56
|
dataTable: DataTable
|
|
57
57
|
) => void
|
|
58
58
|
): void;
|
|
59
59
|
declare function When(
|
|
60
|
-
pattern: "the following endpoint\\(s)
|
|
60
|
+
pattern: "I set the following endpoint\\(s) used:",
|
|
61
61
|
implementation: (
|
|
62
62
|
this: import("@cucumber/cucumber").World,
|
|
63
63
|
docString: string
|
|
64
64
|
) => void
|
|
65
65
|
): void;
|
|
66
66
|
declare function When(
|
|
67
|
-
pattern: "the following {word} body is used for {string}",
|
|
67
|
+
pattern: "I set the following {word} body is used for {string}",
|
|
68
68
|
implementation: (
|
|
69
69
|
this: import("@cucumber/cucumber").World,
|
|
70
70
|
method: string,
|
|
@@ -73,14 +73,14 @@ declare function When(
|
|
|
73
73
|
) => void
|
|
74
74
|
): void;
|
|
75
75
|
declare function When(
|
|
76
|
-
pattern: "the authentication type is {string}",
|
|
76
|
+
pattern: "I set the authentication type is {string}",
|
|
77
77
|
implementation: (
|
|
78
78
|
this: import("@cucumber/cucumber").World,
|
|
79
79
|
authType: string
|
|
80
80
|
) => void
|
|
81
81
|
): void;
|
|
82
82
|
declare function Then(
|
|
83
|
-
pattern: "the API should handle the {word} request successfully",
|
|
83
|
+
pattern: "I see the API should handle the {word} request successfully",
|
|
84
84
|
implementation: (
|
|
85
85
|
this: import("@cucumber/cucumber").World,
|
|
86
86
|
method: string,
|
|
@@ -18,12 +18,12 @@ const validateThreshold = (threshold) => {
|
|
|
18
18
|
}
|
|
19
19
|
};
|
|
20
20
|
|
|
21
|
-
Given("I
|
|
21
|
+
Given("I set a k6 script for {word} testing", function (method) {
|
|
22
22
|
this.config = { method: method.toUpperCase() };
|
|
23
23
|
});
|
|
24
24
|
|
|
25
25
|
When(
|
|
26
|
-
"I run the k6 script with the following configurations:",
|
|
26
|
+
"I set to run the k6 script with the following configurations:",
|
|
27
27
|
function (dataTable) {
|
|
28
28
|
const row = dataTable.hashes()[0];
|
|
29
29
|
|
|
@@ -68,7 +68,7 @@ When(
|
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
);
|
|
71
|
-
When("the request headers
|
|
71
|
+
When("I set the request headers:", function (dataTable) {
|
|
72
72
|
const headers = {};
|
|
73
73
|
dataTable.hashes().forEach(({ Header, Value }) => {
|
|
74
74
|
headers[Header] = Value;
|
|
@@ -80,7 +80,7 @@ When("the request headers are:", function (dataTable) {
|
|
|
80
80
|
};
|
|
81
81
|
});
|
|
82
82
|
|
|
83
|
-
When("the following endpoint\\(s)
|
|
83
|
+
When("I set the following endpoint\\(s) used:", function (docString) {
|
|
84
84
|
this.config.endpoints = docString
|
|
85
85
|
.trim()
|
|
86
86
|
.split("\n")
|
|
@@ -88,7 +88,7 @@ When("the following endpoint\\(s) is\\/are used:", function (docString) {
|
|
|
88
88
|
});
|
|
89
89
|
|
|
90
90
|
When(
|
|
91
|
-
"the following {word} body is used for {string}",
|
|
91
|
+
"I set the following {word} body is used for {string}",
|
|
92
92
|
function (method, endpoint, docString) {
|
|
93
93
|
this.config.method = method.toUpperCase();
|
|
94
94
|
this.config.body = resolveBody(docString, process.env);
|
|
@@ -96,12 +96,12 @@ When(
|
|
|
96
96
|
}
|
|
97
97
|
);
|
|
98
98
|
|
|
99
|
-
When("the authentication type is {string}", function (authType) {
|
|
99
|
+
When("I set the authentication type is {string}", function (authType) {
|
|
100
100
|
this.config.headers = generateHeaders(authType, process.env);
|
|
101
101
|
});
|
|
102
102
|
|
|
103
103
|
Then(
|
|
104
|
-
"the API should handle the {word} request successfully",
|
|
104
|
+
"I see the API should handle the {word} request successfully",
|
|
105
105
|
{ timeout: 60000 },
|
|
106
106
|
async function (method) {
|
|
107
107
|
if (!this.config || !this.config.method) {
|