Skip to content
Open
Show file tree
Hide file tree
Changes from 27 commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
97f7b4f
feat(k6): add @effectionx/k6 preview package
taras Feb 15, 2026
f282b50
fix(k6): return task promise from vu iteration
taras Feb 15, 2026
d33bb2b
refactor(k6): rename vuIteration entrypoint to main
taras Feb 15, 2026
c330866
refactor(k6): align group APIs with Effection conventions
taras Feb 15, 2026
280a573
refactor(k6): unify groups and tags into single TagsContext
taras Feb 15, 2026
64a5311
fix(k6): add k6 type paths to tsconfig.check.json
taras Feb 15, 2026
24d0a87
refactor(k6): rename run.ts to main.ts
taras Feb 15, 2026
7b9b788
fix(k6): avoid mutating useGroups result in group()
taras Feb 15, 2026
aed854a
refactor(k6): organize modules into separate directories
taras Feb 15, 2026
98a235d
refactor(k6): use withResolvers for websocket open handling
taras Feb 15, 2026
1650920
fix(k6): remove conformance from public exports
taras Feb 15, 2026
1d7129f
feat(k6): export interval from effection
taras Feb 15, 2026
f8c8f0f
refactor(k6): rename websocket to websockets, use k6/websockets
taras Feb 15, 2026
0a9ed0d
fix(k6): wait for onclose in websocket cleanup
taras Feb 15, 2026
821ca8e
refactor(k6): rename WebSocketResource to WebSocket, make close() ret…
taras Feb 15, 2026
4eabd1c
refactor(k6): remove isOpen and readyState from WebSocket interface
taras Feb 15, 2026
60191df
refactor(k6): make WebSocket extend Stream<WebSocketMessage, void>
taras Feb 15, 2026
1a4861d
feat(k6): export take, takeWhile, takeUntil from stream-helpers
taras Feb 15, 2026
baad085
refactor(k6): remove redundant helpers, use stream-helpers instead
taras Feb 15, 2026
401ea44
refactor(k6): inline WebSocket object in provide call
taras Feb 15, 2026
0e77adb
feat(k6): export spawn, update WebSocket example to use spawn+forEach
taras Feb 15, 2026
ee027f2
refactor(k6): remove unused on/once exports
taras Feb 15, 2026
a29fea0
fix(k6): defer VU tags initialization to runtime via initTags()
taras Feb 15, 2026
7afdbbb
fix(k6): update Sobek to include all PR #115 fixes for generator.retu…
taras Feb 15, 2026
7069703
feat(k6): add BDD testing module and k6 test suites
taras Feb 15, 2026
d3e4855
docs(k6): document testing module and known panic limitation
taras Feb 15, 2026
e0e2d1a
chore(k6/testing): add optional per-test debug markers
taras Feb 15, 2026
ffb2144
feat(k6): finalize group API with timing, migrate conformance to gist
taras Feb 15, 2026
d5a62ca
style(k6): fix formatting issues
taras Feb 15, 2026
dca7db6
fix(k6): add tsconfig references for workspace dependencies
taras Feb 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ dist/
!process/test/fixtures/dump-args.js
!process/test/fixtures/hello-world.js
!process/test/fixtures/hello-world-failed.js
!k6/build.js

# turborepo cache
.turbo
Expand All @@ -36,10 +37,10 @@ dist/

# Test temp directories
**/test-tmp/
k6/test-results/

# pnpm config (created by test-matrix runner)
.npmrc

# Agent shell directories
.agent-shell/

4 changes: 4 additions & 0 deletions k6/.dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
node_modules
test-results
*.log
.git
1 change: 1 addition & 0 deletions k6/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
test-results/
54 changes: 54 additions & 0 deletions k6/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# Dockerfile for K6 with Effection support
#
# This builds a custom K6 binary that includes the Sobek yield-in-finally fix
# required for Effection's structured concurrency cleanup semantics.
#
# Prerequisites:
# Run `node build.js` in the k6 directory to build the JS bundles first.
#
# Multi-stage build:
# 1. Build custom K6 with patched Sobek
# 2. Alpine runtime with custom K6 + pre-built JS bundles

# =============================================================================
# Stage 1: Build custom K6 with Sobek fix
# =============================================================================
FROM golang:1.24-alpine AS k6-builder

WORKDIR /build

# Install git for cloning
RUN apk add --no-cache git

# Clone K6 source
RUN git clone --depth 1 https://github.com/grafana/k6.git .

# Add replace directive to use our fixed Sobek fork
# This fixes: https://github.com/grafana/sobek/issues/114
RUN echo 'replace github.com/grafana/sobek => github.com/taras/sobek v0.0.0-20260215012414-013550b38489' >> go.mod

# Build K6 with the patched Sobek
RUN go mod tidy && go build -mod=mod -o k6 ./

# =============================================================================
# Stage 2: Runtime image with custom K6
# =============================================================================
FROM alpine:latest

# Install ca-certificates for HTTPS requests
RUN apk add --no-cache ca-certificates

# Copy custom K6 binary
COPY --from=k6-builder /build/k6 /usr/local/bin/k6

# Copy pre-built bundles (must run `node build.js` first)
COPY dist /tests

# Set working directory
WORKDIR /tests

# Default entrypoint
ENTRYPOINT ["k6", "run"]

# Default command runs conformance tests
CMD ["conformance-bundle.js"]
Loading
Loading