Aquí hi ha 57 versions de k6, des de 29 de setembre del 2025 fins a l’actual, 2.2.0. Cadascuna enllaça amb els instal·ladors del mateix desenvolupador.
57 versions en 5 anys · unes 12 per any
| Versió | Data | Mida | Fitxers |
|---|---|---|---|
| 2.2.0Darrera versió | 10 d’agost del 2026 | — | 64 bits MSI |
| 2.1.0 | 1 de juliol del 2026 | — | 64 bits MSI |
| 2.0.0 | 11 de maig del 2026 | — | 64 bits MSI |
| 2.0.0-rc1 | 28 d’abril del 2026 | — | 64 bits MSI |
| 1.8.2 | 12 d’octubre del 2026 | — | 64 bits MSI |
| 1.8.1 | 12 d’agost del 2026 | — | 64 bits MSI |
| 1.8.0 | 8 de juny del 2026 | — | 64 bits MSI |
| 1.7.1 | 30 de març del 2026 | — | 64 bits MSI |
| 1.7.0 | 25 de març del 2026 | — | 64 bits MSI |
| 1.6.1 | 16 de febrer del 2026 | — | 64 bits MSI |
| 1.6.0 | 10 de febrer del 2026 | — | 64 bits MSI |
| 1.5.0 | 6 de gener del 2026 | — | 64 bits MSI |
| 1.4.2 | 25 de novembre del 2025 | — | 64 bits MSI |
| 1.4.1 | 20 de novembre del 2025 | — | 64 bits MSI |
| 1.4.0 | 14 de novembre del 2025 | — | 64 bits MSI |
| 1.3.0 | 23 de setembre del 2025 | — | 64 bits MSI Notes de la versiók6 v1.3.0 is here 🎉! This release includes:
- Browser module gets:
- locator.locator, locator.contentFrame, and FrameLocator.locator for powerful locator chaining and iframe handling.
- locator|frame|FrameLocator.getBy* for targeting elements without relying on brittle CSS selectors.
- locator.filter for filtering locators for more precise element targeting.
- locator.boundingBox for retrieving element geometry.
- page.waitForResponse for waiting on specific HTTP responses.
Deprecations
A new summary mode disabled has been introduced to replace the "no summary" option #5118
The --no-summary flag and its corresponding environment variable K6_NO_SUMMARY have been deprecated in favor of
the new disabled summary mode. This change unifies the configuration experience for controlling the end-of-test summary.
You can now disable the end-of-test summary with either --summary-mode=disabled or K6_SUMMARY_MODE=disabled.
The legacy summary mode has been deprecated #5138
The legacy summary mode was introduced in k6 v1.0, when the end-of-test summary was revamped with the addition of two
new modes: compact and full.
Its purpose was to ease the transition for users who relied heavily on the old summary format.
However, we’ve now reached the point where it’s time to deprecate it.
The plan is to fully remove it in k6 v2.0, so please migrate to either compact or full to ensure readiness for the
next major release.
New features
locator.locator #5073
The locator.locator method allows you to define locators relative to a parent locator, enabling powerful locator chaining and nesting. This feature lets you create more precise element targeting by combining multiple selectors in a hierarchical manner.
await page
.locator('[data-testid="inventory"]')
.locator('[data-item="apples"]')
.locator('button.add')
.click();
This nesting capability provides a more intuitive way to navigate complex DOM structures and serves as the foundation for other locator APIs in this release that require such hierarchical targeting.
locator.contentFrame #5075
The browser module now supports locator.contentFrame(), which returns a new type frameLocator. This method is essential for switching context from the parent page to iframe contents.
frameLocator types target iframe elements on the page and provide a gateway to interact with their contents. Unlike regular locators that work within the current frame context, frameLocators specifically target iframe elements and prepare them for content interaction.
This approach is essential for iframe interaction because:
- Iframes create separate DOM contexts that require special handling.
- Browsers enforce security boundaries between frames.
- Iframe content may load asynchronously and needs proper waiting.
- Using elementHandle for iframe interactions is error-prone and can lead to stale references, while frameLocator provide reliable, auto-retrying approaches.
Example usage:
// Get iframe element and switch to its content frame
const iframeLocator = page.locator('iframe[name="payment-form"]');
const frame = await iframeLocator.contentFrame();
frameLocator.locator #5075
We've also added frameLocator.locator which allows you to create locators for elements inside an iframe. Once you've targeted an iframe with page.contentFrame(), you can use .locator() to find and interact with elements within that iframe's content with the frameLocator type.
Example usage:
// Target an iframe and interact with elements inside it
const iframe = page.locator('iframe[name="checkout-frame"]').contentFrame();
await iframe.locator('input[name="card-number"]').fill('4111111111111111');
await iframe.locator('button[type="submit"]').click();
This functionality enables testing of complex web applications that use iframes for embedded content, payment processing, authentication widgets, and third-party integrations.
locator.boundingBox #5076
The browser module now supports locator.boundingBox(), which returns the bounding box of an element as a rectangle wi |
| 1.2.3 | 27 d’agost del 2025 | — | 64 bits MSI Notes de la versiók6 1.2.3 is a small patch with a couple of bug fixes
Bug fixes
- #5099 Fixes auto extension resolution only working if binary is called k6 after a fix in v1.2.2.
- #5098 Fixes gRPC calls not using loaded types and erroring out, especially around the usage of Any. |
| 1.2.2 | 19 d’agost del 2025 | — | 64 bits MSI |
| 1.2.1 | 13 d’agost del 2025 | — | 64 bits MSI |
| 1.2.0 | 13 d’agost del 2025 | — | 64 bits MSI |
| 1.1.0 | 25 de juny del 2025 | — | 64 bits MSI |
| 1.0.0 | 6 de maig del 2025 | — | 64 bits MSI |
| 0.58.0 | 31 de març del 2025 | — | 64 bits MSI |
| 0.57.0 | 13 de febrer del 2025 | — | 64 bits MSI |
| 0.56.0 | 6 de gener del 2025 | — | 64 bits MSI |
| 0.55.2 | 20 de desembre del 2024 | — | 64 bits MSI |
| 0.55.1 | 19 de desembre del 2024 | — | 64 bits MSI |
| 0.55.0 | 11 de novembre del 2024 | — | 64 bits MSI |
| 0.54.0 | 30 de setembre del 2024 | — | 64 bits MSI |
| 0.53.0 | 13 d’agost del 2024 | — | 64 bits MSI |
| 0.52.0 | 25 de juny del 2024 | — | 64 bits MSI |
| 0.51.0 | 13 de maig del 2024 | — | 64 bits MSI Notes de la versiók6 v0.51.0 is here 🎉! Some special mentions included in this release:- A new experimental streams module
- New algorithms for WebCrypto module
- Timers are globally available
Breaking changes
Transition browser APIs to Async
In the last release notes we mentioned this breaking change, and we wanted to remind and update you on the plan. In the next release (v0.52.0), most of the synchronous browser APIs will be migrated to be asynchronous (promisifying them). We expect this will affect most if not all of our users.This breaking change will require you to add await in front of most of the browser module APIs. Without this await you will witness undocumented and unknown behavior during the runtime. To make the migration simpler we advise that you work with the latest k6 type definitions.You can find a list of all the APIs that we expect to convert to async in a comment in issue browser#428.Awaiting on something that’s not a thenable just returns that value, which means you can add the await keyword today on the APIs that will become async to future proof your test scripts.Here are the reasons for making this large breaking change:- Most browser APIs use some form of long-running IO operation (networking) to perform the requested action on the web browser against the website under test. We need to avoid blocking JavaScript's runtime event loop for such operations.
- We're going to add more asynchronous event-based APIs (such as page.on) that our current synchronous APIs would block.
- To align with how developers expect to work with JavaScript APIs.
- To have better compatibility with Playwright.
As a starting point, we have migrated a single API (the tap method), which you can find the details below that will help visualize the upcoming breaking changes.Browser Tap is now an async method grafana/xk6-browser#1268
This release converts the Tap method in the browser module into an asynchronous method. This change is necessary to ensure that the method can be used in async contexts and to align with the rest of the browser module's planned asynchronous API. To use the Tap method, you must now add the await keyword before the method call.Affected components:- locator.tap
- page.tap
- frame.tap
- elementHandle.tap
See the following example for how to use the Tap method after this change:Before:
import browser from 'k6/experimental/browser'
// ...
export default function () {
// ...
page.tap(selector, { modifiers: ["Alt", "Control", "Meta", "Shift"] });
// ...
}
After:
import browser from 'k6/experimental/browser'
// ...
export default function () {
// ...
await page.tap(selector, { modifiers: ["Alt", "Control", "Meta", "Shift"] });
// ...
}
k6/experimental/websockets will not default binaryType to `"arraybuffer"'
As part of the stabilization of the API it needs to become as close to the specification.Early in the development the idea of adding Blob support as part was deemed feature creep and was dropped in favor of going with only "arraybuffer". But the specification defaults to returning binary responses as Blob - which was another thing that was changed.While adding Blob is still on our radar, moving the default is always going to be a breaking change that we need to do to align with the specification.For this release there is now a warning that will be printed if binaryType is not set to "arraybuffer" and a binary response is received. The warning will go away when binaryType is set to "arraybuffer".In the next release the warning will become an error.More info and place for discussion can be found in an this issue.k6/experimental/grpc is no longer available #3530
As the last step of the graduation process for the experimental gRPC module, we completely removed the module. It is now fully integrated into the stable k6/net/grpc module. So, if you haven't done this yet, replace your imports from k6/experimental/grpc to k6/net/grpc.Deprecations
The following pull requests start the process to introduce breaking changes. They |
| 0.50.0 | 25 de març del 2024 | — | 64 bits MSI |
| 0.49.0 | 29 de gener del 2024 | — | 64 bits MSI |
| 0.48.0 | 6 de desembre del 2023 | — | 64 bits MSI Notes de la versió- Numerous long-awaited breaking changes.
- A new k6 new subcommand to generate a new test script.
- A new k6/experimental/fs module for file interactions.
- CPU and network throttling support for the k6 browser module.
- #3448 limits metric names, aligning to both OpenTelemetry (OTEL) and Prometheus name requirements, while still being limited to 128 ASCII characters.
Warnings about the limit started in v0.45.
- #3439 changes the Client signature in k6/experimental/redis module.
Refer to the module-related section below.
- #3350 removes the grpc.invoke()'s parameter headers, deprecated in k6 v0.37. Use the metadata parameter instead.
- #3389 removes the --logformat flag, deprecated in v0.38. Use the --log-format flag instead.
- #3390 removes all CSV output's CLI arguments, deprecated in v0.35. This change makes the CSV output consistent with other output formats.
- #3365 removes the k6 convert CLI command, deprecated in v0.41. Use the har-to-k6 package instead.
- #3451 removes logic that would attempt to prepend a https:// scheme to module specifiers that were not recognized. Deprecated in k6 v0.25.
Use full URLs if you want to load remote modules instead.
- proto: Specifies the protocol to use in the connection to the traces backend.
Supports grpc (default) and http.
- header.<header_name>: Specifies an additional header to include in the connection to the traces backend.
- Minimum latency from request sent to response headers received (ms).
- Maximal aggregated download throughput (bytes/sec). -1 disables download
- throttling.
- Maximal aggregated upload throughput (bytes/sec). -1 disables upload
- throttling.
UX improvements and enhancements
- browser#1074 adds a new browser.closeContext() method to facilitate closing the current active browser context.
- #3370 adds a new flag --profiling-enabled which enables exposing pprof profiling endpoints. The profiling endpoints are exposed on the same port as the HTTP REST API under the /debug/pprof/ path.
This can be useful for extension developers.
- #3442 adds a new --version flag, which has the same output as k6 version command. Thanks, @ffapitalle!
- #3423 adds an environment variable K6_INFLUXDB_PROXY to the InfluxDB output which allows specifying proxy.
Thanks, @IvanovOleg!
- #3398 enables k6 cloud traces by default.
- #3400 sets a binary-based cloud output (a.k.a. cloud output v2) as the default version for streaming metrics from a local test run via -o cloud.
- #3452 adds fsext.Abs helper function.
Bug fixes
- #3380 corrects console.debug(), aligning -v output to --console-output and stdout.
- #3416 prints the stack trace when there's an exception in handleSummary().
- #3438 prevents an error on HTTP requests with content-encoding header and HTTP statuses known for having no body.
- browser#1077 fixes browserContext.clearPermissions to clear permissions without panic.
- browser#1042 fixes browserContext.waitForEvent which involved promisifying the waitForEvent API.
- browser#1078 fixes request interception deadlock to improve stability.
- browser#1101 fixes page.$ so that it returns null when no matches with given selector are found.
- #3397, #3427, #3417 update goja dependency. Fixes a possible panic and proper handling circular types at JSON.stringify.
Fixes an issue about dumping the correct stack trace when an error is re-thrown.
- browser#1106 fixes an NPE on NavigateFrame when navigate occurs in the same document.
- browser#1096 fixes a panic when trying to interact within nested iframes. Thanks, @bandorko!
Maintenance and internal improvements
- #3378 fixes usage of gh in GitHub actions creating the OSS release.
- #3386, #3387, #3388, browser#1047 update dependencies.
- #3393, #3399 fix lint issues in the js package.
- #3381 disables temporarily ARM tests on GitHub Actions.
- #3401, #3469 refactors a Makefile, removes make ci-like-lint in favor of make lint.
Updates a golangci-lint version to v1.55.2.
- #3410 fixes the tests reference in the all rule of the Makefil |
| 0.47.0 | 10 d’octubre del 2023 | — | 64 bits MSI Notes de la versióDeprecations
- #3347 The built-in statsd output option has been deprecated, and users should use the xk6-output-statsd extension instead.
See #2982 for future plans.
- #3288 Loading remote modules now requires users to prepend them with https://.
Before, k6 would try to resolve importing remote modules by prepending https:// if it was missing.
This behavior has been deprecated and will be fully removed in the next release (v0.48.0).
UX improvements and enhancements
- #3338, xk6-grpc#48 Adds support for the gRPC reflection protocol v1.
- #3290 Adds error logging when executing setup and teardown via REST API.
Thanks to @kmtym1998 for the contribution!
- #3327 Adds commit identifier for the k6 build when running k6 version.
- #3340 Updates k6 *-with-browser Docker images to automatically set the no-sandbox environment variable.
- #3335 The character limit for metric names increased from 63 to 128 after the OpenTelemetry update. k6 will return an error starting on the next release (v0.48.0) if users hit the limit.
- browser#1007 Adds a k6 object (window.k6 = {};) to help identify k6 browser module tests.
- browser#1022 Refactors the check in examples/fillform.js so that it matches the type definitions and documentation for check.
Bug fixes
- xk6-grpc#47 Fixes the premature closing of a gRPC stream when a stream's client has finished sending.
Thanks to @thiagodpf for reporting!
- #3344, xk6-grpc#49 Adds support for Google's protobuf wrappers.
Thanks to @zibul444 for reporting!
- #3308 Updates goja version, and fixes a compiler bug when a class is declared in a function with an argument.
- browser#1039 Fixes goja conversions while adding and retrieving cookies.
- browser#1038 Fixes read/write data race for edge case with remote browsers.
- browser#1034 Fixes page.reload & page.setContent to use the default navigation timeout over the default timeout.
- browser#1033 Fixes the page timeouts so it is actually used after being set.
Maintenance and internal improvements
- #3342 Updates xk6-grpc to the latest version.
This change brings all the latest fixes and improvements to the experimental gRPC module.
- #3271,#3272 Updates the golangci version and adds the interfacebloat linter.
- #3279 Fixes the CI not publishing the SBOM file on a new release.
- #3283 Updates the Go version in k6's CI used to build the binaries.
- #3341, #3339 Updates goja, includes runtime initialization speed-up and a fix for source indexes.
- #3311 Updates the alpine image version that is used as the base of the k6 Docker image.
- browser#1043, browser#1021, browser#1019, browser#1014 Fixes xk6-browser tests.
- browser#1000, browser#1024 Refines xk6-browser issue and PR templates.
- browser#1003, browser#1009, browser#1010 Internal changes to xk6-browser.
- browser#997 Updates xk6-browser readme.
- browser#962 CI fixes.
- browser#1035 Refactors int64 timeout to time.
Duration, to help avoid confusion as to whether a timeout is in milliseconds or seconds.
- #3065 Metric names will be limited to 128 characters and a set of allowed symbols.
This was going to be changed to a 63 character limit to ensure compatibility with OpenTelemetry standards, but since then, the OTel limit has been updated to 255 characters.
You can find more details about the changes in the linked issue.
- #3365 The k6 converter command will be removed.
- #3350 The headers param for the gRPC module will be removed.
Users should use the metadata property instead.
- #3287 Loading remote modules will require users to include the https:// protocol in their URLs, otherwise it will return an error.
- CSV output no longer accepts arguments in snake case (for example, fileName should be used instead of file_name).
- The --logformat flag for defining the Log format option will be removed. --log-format should be used instead. |
| 0.46.0 | 14 d’agost del 2023 | — | 64 bits MSI Notes de la versió- xk6-browser extension version bump to v1.0.2, which includes breaking changes.
- Send custom headers to Loki log output
- Cloud Traces, the new integration between k6 and Tempo
- Ability to configure TLS per gRPC connection
- Cloud output v2
- And many UX improvements, bug fixes, and internal improvements
Deprecations
- #3121 deprecates the loadimpact/k6 docker image. We recommend switching to the grafana/k6 image as soon as possible.
- A custom tag named test_run_id, since that is reserved for internal k6 Cloud operations
- Any tag with a key that starts with two underscores (__), that is marked by Prometheus convention as reserved
UX improvements and enhancements
- #3176 Adds a js/promises package, which enables extension developers to easily create promises that will be dispatched to the eventloop using the New function.
- #3181 Adds a RunOnEventLoop method to the modulestest.
Runtime type, which allows extensions developers to run code on the event loop from their tests.
- xk6-grpc#19 Fixes EOF (end of file) error that was produced when writing to a closed gRPC stream.
Additionally, if no error handlers are set up, the error is logged to the console.
- browser#881 Adds a new browser_http_req_failed metric.
- browser#901 Adds support for shadow DOM piercing in locator.
Thanks to @tmc for its implementation.
- browser#953 Improves Web Vitals reporting for better accuracy and consistency.
Bug fixes
- #3178, xk6-grpc#23 Fixes the registration of nested protobuf messages in the gRPC module.
Thanks @thiagodpf for reporting and fixing the bug!
- #3194 Fixes loki log output exiting before push is finished.
- #3231 Fixes the tracing module sampling option to default to 1.0 when not set by the user.
- browser#866 Disables the timeout on browser process execution.
- browser#942 Fixes deadlock in frameNavigated.
- browser#943 Fixes a race condition in navigation and lifecycle events.
- browser#979 Fixes a deadlock on pagehide event evaluation when page.close() is called.
- browser#980 Fixes Loki log output for console log serializer.
- browser#991 Fixes data directory not being cleared during browser.close() panic.
Maintenance and internal improvements
- #3112 Adds an event system for core JS modules.
- #3170 Upgraded the version of gRPC k6 demo service dependency to address a security vulnerability ([CVE-2023-32731]).
- #3211 Updates the experimental gRPC module version used by k6.
- #3210 Updates the xk6-output-prometheus-remote version used by k6.
- #3136 Updates k6 Go dependencies.
- #3131 Updates our Pull Request template to be more structured and include a checklist for contributors.
- #3177 Updates the version of golangci-lint we use to the latest version.
- #3163 Fixes our gRPC example.
- #3196 Logs packages lint fixes, and test for loki flushing at end.
- browser#849, browser#972, browser#977, browser#978, browser#983 Log fixes and improvements.
- browser#889, browser#889, browser#902, browser#935, browser#936 Internal refactors.
- browser#904, browser#959 Test fixes.
- browser#906 Parses the scenarios JSON definition from the K6_INSTANCE_SCENARIOS environment variable.
- browser#918 Replaces the usage of os.
LookupEnv for k6 LookupEnv and abstracts environment variables lookup.
- browser#984 Ensures CDP requests message ID are unique at the connection scope. |
| 0.45.0 | 19 de juny del 2023 | — | 64 bits MSI Notes de la versió- Experimental gRPC streaming support.
- Update scripts in the cloud without running tests.
- JS Metadata API.
- A lot of internal changes and bugfixes.
Breaking changes
- #3066 k6 will warn users about metric names incompatible with OpenTelemetry or Prometheus.
This is planned to become an error with v0.48.0.
- browser#851 Remove existing browser namespaced metrics.
These have been deprecated in favor of Web Vitals metrics.
UX improvements and enhancements
- #3099 replace "breached" with "crossed" in logs around thresholds. Thanks to @MattDodsonEnglish 🙇.
- #3102 Better error message when SharedArray constructor is provided with an async function.
This is not supported, but the original message wasn't very clear.
- #3089 Add Software Bill of Materials (SBOM) reports to k6 releases.
Thanks to @SadFaceSmith 🙇.
- goja#510 JSON.parse will now fail with a friendlier error message.
Bug fixes
- browser#852 Fix Locator.
WaitFor for detached and hidden states.
- browser#859 Fix remote object parsing when subtype is null.
Maintenance and internal improvements
- #2991 Refactor JS modules system so that is usable in tests.
Which allowed enabling the tc39 tests for modules #3040.
- #3025 Internally stop referring to afero and use an internal package to do all file system interaction.
That package still uses afero.
- #3036 and #3053 Add options to scenarios for usage by browser module.
- #3058 fix repetitive the. Thank you, @cuishuang 🙇.
- #3064, #3070, #3075 and #3106 Go dependencies updates.
- #3067 Add method to retrieve all registered metrics.
- #3068 Add metric Sink constructor.
- #3078 Pin base Docker builder image to Alpine 3.17.
Thank you, @arukiidou 🙇.
- #3086 Fix downloading .golangci.yml for PRs from forks.
- #3088 Make TestDNSResolver less flaky.
- #3094 Fix example from the run command.
Thanks to @rocktwotj 🙇.
- #3095 Maintenance update of .golangci.yml.
- #3103 Fix lint and logical issues in k6/data module tests.
- #3045, #3049, #3073 and #3044 New issues are now automatically assigned to maintainers, to improve response time on issues.
Both new issue and new PR assignments are now not using external actions.
- #3109 Add a way to get the cloudapi Client's base URL.
Thanks to @yorugac 🙇.
- Binary (protobuf) format instead of JSON #2963
- Samples aggregation for every metric instead of only for HTTP ones #3071
- HDR Histogram generation for trend-type metrics #3027 |
| 0.44.1 | 8 de maig del 2023 | — | 64 bits MSI Notes de la versió- #3055 due to an oversight, the k6 package signing key in our RPM repository wasn't updated when its expiration date was extended in March.
- #3060 fixed building of Docker image due to a missing pinned ca-certificates version. |
| 0.43.1 | 27 de febrer del 2023 | — | 64 bits MSI |
| 0.43.0 | 20 de febrer del 2023 | — | 64 bits MSI |
| 0.42.0 | 20 de desembre del 2022 | — | 64 bits MSI |
| 0.41.0 | 2 de novembre del 2022 | — | 64 bits MSI |
| 0.40.0 | 8 de setembre del 2022 | — | 64 bits MSI |
| 0.39.0 | 5 de juliol del 2022 | — | 64 bits MSI |
| 0.38.3 | 18 de maig del 2022 | — | 64 bits MSI |
| 0.38.2 | 11 de maig del 2022 | — | 64 bits MSI |
| 0.38.1 | 6 de maig del 2022 | — | 64 bits MSI |
| 0.38.0 | 5 de maig del 2022 | — | 64 bits MSI |
| 0.37.0 | 15 de març del 2022 | — | 64 bits MSI |
| 0.36.0 | 29 de setembre del 2025 | — | 64 bits MSI |
| 0.35.0 | 29 de setembre del 2025 | — | 64 bits MSI |
| 0.34.1 | 29 de setembre del 2025 | — | 64 bits MSI |
| 0.34.0 | 29 de setembre del 2025 | — | 64 bits MSI |
| 0.33.0 | 29 de setembre del 2025 | — | 64 bits MSI |
| 0.31.1 | 29 de setembre del 2025 | — | 64 bits MSI |
| 0.30.0 | 29 de setembre del 2025 | — | 64 bits MSI |