flood-io / element

💦Load test your app using real web browsers
https://element.flood.io
Apache License 2.0
350 stars 43 forks source link

Better settings validation #566

Open sed-i opened 2 years ago

sed-i commented 2 years ago

Is your feature request related to a problem? Please describe.

The stages array expects a string for duration:

export const settings: TestSettings = {
  stages: [
    { duration: '2m', target: 5 },
    { duration: '2m', target: 10 },
    { duration: '2m', target: 20 },
  ],
}

if one of the durations is -1 (e.g. { duration: '-1', target: 20 },), then element errors out right away:

✔ Script Compiler
  Compiled successfully in 236.75ms

the duration for stage 4 shouldn't be negative

However, if a duration is zero ('0') or two years ('2y') then element accepts the setting and errors out only when it reaches that stage:

✖ User 3  Iteration 2   Duration reached, user User 8 has been stopped
Run 20 users | Duration 0msation reached, user User 11 has been stopped
> Error! An unexpected error occurred!ed, user User 6 has been stopped
  TypeError: Cannot destructure property 'text' of 'this.spinnies.pick(...)' as it is undefined.
    at Scheduler.<anonymous> (/usr/local/lib/node_modules/element-cli/node_modules/@flood/element-scheduler/dist/src/Scheduler.js:211:31)
    at Generator.next (<anonymous>)ached, user User 9 has been stopped
    at /usr/local/lib/node_modules/element-cli/node_modules/@flood/element-scheduler/dist/src/Scheduler.js:8:71
    at new Promise (<anonymous>)n reached, user User 5 has been stopped
    at __awaiter (/usr/local/lib/node_modules/element-cli/node_modules/@flood/element-scheduler/dist/src/Scheduler.js:4:12)
    at onEndStage (/usr/local/lib/node_modules/element-cli/node_modules/@flood/element-scheduler/dist/src/Scheduler.js:206:55)
    at Timeout._onTimeout (/usr/local/lib/node_modules/element-cli/node_modules/@flood/element-scheduler/dist/src/Plan.js:31:61)
    at listOnTimeout (node:internal/timers:559:17)er 17 has been stopped
    at processTimers (node:internal/timers:502:7) TypeError: Cannot destructure property 'text' of 'this.spinnies.pick(...)' as it is undefined.
    at Scheduler.<anonymous> (/usr/local/lib/node_modules/element-cli/node_modules/@flood/element-scheduler/dist/src/Scheduler.js:211:31)
    at Generator.next (<anonymous>)eached, user User 0 has been stopped
    at /usr/local/lib/node_modules/element-cli/node_modules/@flood/element-scheduler/dist/src/Scheduler.js:8:71
    at new Promise (<anonymous>)n reached, user User 4 has been stopped
    at __awaiter (/usr/local/lib/node_modules/element-cli/node_modules/@flood/element-scheduler/dist/src/Scheduler.js:4:12)
    at onEndStage (/usr/local/lib/node_modules/element-cli/node_modules/@flood/element-scheduler/dist/src/Scheduler.js:206:55)
    at Timeout._onTimeout (/usr/local/lib/node_modules/element-cli/node_modules/@flood/element-scheduler/dist/src/Plan.js:31:61)
    at listOnTimeout (node:internal/timers:559:17)
    at processTimers (node:internal/timers:502:7)
this is a bug, please report it here https://github.com/flood-io/element/issues/new?template=bug_report.md

Describe the solution you'd like

element could better validate input and immediately abort if some input is obviously invalid.

Describe alternatives you've considered NTA.

Additional context NTA.