Skip to content

features request selection

Douwe de Vries edited this page Jul 1, 2026 · 1 revision

Request selection

Active contributors: Douwe de Vries

Purpose

Request selection lets users choose which imported requests run and whether traffic is sequential or weighted. The UI state lives in src/app/components/collection-summary/ and src/app/hooks/useRunnerOptions.ts; backend validation and generated k6 behavior live in src-tauri/src/importing/runtime.rs and src-tauri/src/importing/script.rs.

Directory layout

src/app/components/CollectionSummaryCard.tsx
src/app/components/collection-summary/model.ts
src/app/components/collection-summary/useCollectionSummaryState.ts
src/app/hooks/useRunnerOptions.ts
src/app/utils.ts
src-tauri/src/importing/runtime.rs
src-tauri/src/importing/script.rs

Key abstractions

Abstraction File Description
CollectionRow src/app/components/collection-summary/model.ts Folder and request row model for the collection tree
selectedRequestIds src/lib/loadrift/types.ts Request IDs sent to validation, smoke tests, and k6
requestWeights src/lib/loadrift/types.ts Per-request weights used by weighted traffic
TrafficMode src/lib/loadrift/types.ts, src-tauri/src/models.rs sequential or weighted

How it works

useCollectionSummaryState in src/app/components/collection-summary/useCollectionSummaryState.ts builds folder rows, filters by method and search query, tracks collapsed folders, and updates selected IDs. syncSelectedRequestIds and syncRequestWeights in src/app/utils.ts keep selected IDs and weights aligned when a new collection is imported.

graph LR
    Collection[Imported requests] --> Rows[Folder/request rows]
    Rows --> Filters[Search + method filter]
    Filters --> Selection[Selected request IDs]
    Selection --> Validation[Backend validation]
    Selection --> Script[k6 script env JSON]
    Weights[Request weights] --> Validation
    Weights --> Script
Loading

Sequential mode executes every runnable selected request each k6 iteration. Weighted mode builds a deterministic schedule from positive weights in src-tauri/src/importing/script.rs; weight 0 excludes a request from the weighted pool.

Integration points

Selection feeds Smoke testing, Results and reporting, and k6 runtime. Advanced k6 scenarios force traffic back to sequential mode in src-tauri/src/k6/process/runtime.rs.

Entry points for modification

Change tree behavior in src/app/components/collection-summary/model.ts. Change selection synchronization in src/app/utils.ts. Change runtime validation in src-tauri/src/importing/runtime.rs.

Key source files

File Purpose
src/app/components/collection-summary/model.ts Builds folder/request rows and filters requests
src/app/components/collection-summary/useCollectionSummaryState.ts Owns UI selection state
src/app/hooks/useRunnerOptions.ts Stores traffic mode and request weights
src-tauri/src/importing/runtime.rs Validates selection and resolves requests
src-tauri/src/importing/script.rs Executes sequential or weighted request schedules in k6

Clone this wiki locally