Help build the future of open source observability software Open positions

Check out the open source projects we support Downloads

Grot cannot remember your choice unless you click the consent notice at the bottom.

Grafana k6 v0.46.0 release:  TLS per gRPC connection support, new usage reports in Grafana Cloud k6, and more!

Grafana k6 v0.46.0 release: TLS per gRPC connection support, new usage reports in Grafana Cloud k6, and more!

24 Aug, 2023 8 min

Grafana k6 v0.46.0 is here! 

The new release features the ability to configure TLS, new usage reports and PDF reports in Grafana Cloud, and tons of improvements for Grafana k6 OSS and Grafana Cloud k6.

Here’s an overview of Grafana k6 v0.46.0, as well as some other important updates from the k6 team and community.

Grafana k6 v0.46.0 release

The new release includes: 

  • The ability to configure TLS per gRPC connection: The k6/net/grpc and k6/experimental/grpc modules now support configuring TLS per-connection via ConnectParams. This is useful when connecting to a single gRPC server, using different TLS settings for each virtual user (VU), as well as when connecting to multiple gRPC servers from the same VU.
  • Support for k6 x Tempo: Grafana Cloud k6 and Grafana Cloud Traces customers will be able to start their traces in k6 using the existing k6/experimental/tracing module to enrich their test run analysis page with metrics and aggregations from tracing data. The new cloud traces will work out of the box for  k6 cloud runs. In case of k6 run execution, the K6_CLOUD_TRACES_ENABLED environment variable has to be set to true.
  • Cloud output v2: We refreshed the cloud output, introducing a more efficient end-to-end solution for ingesting the generated tests’ metrics. The main change relates to the protocol used for flushing metrics, which is now a binary-based payload over HTTP. There is no significant difference in the user experience. 
  • xk6-browser extension version bump to v1.0.2, which includes breaking changes. See “k6 browser updates” below for details.
  • k6 now can be configured to send custom headers to Loki log output. This can be done by using the new header config option, similar to label
JavaScript
k6 --log-output=loki=http://example.org,header.X-My-Header=123,header.Authorization=mytoken ...

The v0.46.0 release includes more internal improvements, minor changes, and fixes from the k6 team and the community. Check out the full list in the k6 release notes.

k6 browser updates

k6 browser lets you automate browser actions and collect web performance metrics. It’s still an experimental module, and there is an excellent reason for that! 

In the k6 0.46.0 release, the team introduced a new feature to automatically handle the browser lifecycle and a new mandatory field to specify the browser type inside the scenario options. Previously, users needed to create and close the browser instance. Now, the browser and browserType have been abstracted away in the API, and the chromium entity is no longer importable from k6/experimental/browser.

With this breaking change, a simple browser test now looks like:

JavaScript
import { browser } from 'k6/experimental/browser';

export const options = {
  scenarios: {
    ui: {
      executor: 'shared-iterations',
      options: {
        browser: {
          type: 'chromium',
        },
      },
    },
  },
};

export default async function () {
  const page = browser.newPage();
  await page.goto('https://test.k6.io')

  page.close();
}

When running this test, there is also no need to set the K6_BROWSER_ENABLED environment variable to true. 

As part of this breaking change, we have also introduced a limit to the browser implementation to hold a single browserContext only. Any concurrent actions required will need to be defined as different scenarios instead. 

Finally, there are also changes to the Web Vital metrics naming, refactoring of the browser options, various bug fixes, UX improvements, documentation updates to reflect the new changes for this release, and new guides such as page object model with k6 browser and how to run k6 browser tests in a Docker container.

Make sure to read the full release notes for k6 0.46.0 for all the information, watch k6 Office Hours #98, where we discuss the latest changes in k6 browser, and, as always, ask in the community forum if you need our help!

New in Grafana Cloud k6

This year, we announced the general availability of Grafana Cloud k6, our managed performance testing solution in Grafana Cloud. If you want to try it out, Grafana Cloud has a forever-free plan with 500 virtual user hours per month and more. Sign up for free today. Note: Existing k6 Cloud customers will not be impacted — they will be migrated to the new experience at a later date. 

We continue to add more features to Grafana Cloud k6. Some of the latest additions include:

  • You can schedule tests to run at fixed times and regular intervals.
  • The activity panel lists currently active test runs for quick navigation access, convenience, and awareness.
  • The usage reports help you track everything happening with your team’s performance testing projects. 
  • You can customize and export a PDF of your test results to track and share data with team members. 
A screenshot of a PDF summary report in Grafana Cloud k6
Grafana Cloud k6 now includes the ability to generate a PDF summary report of test results.

k6-operator 

During this release cycle, the k6-operator published a pre-release candidate, v0.0.10rc3

This early release provides the core implementation of the Private Load Zones (PLZ) API. This is an exciting first step to support our Grafana Cloud k6 customers by enabling k6 tests to be executed on their own cloud infrastructure. You can follow progress with our GitHub issue #236.

Additionally, installation of the k6-operator has become even easier! With our new installation bundle, you can apply resources directly to your Kubernetes cluster using kubectl alone. Development tools are no longer required to install the operator.

Other updates include:

  • Container images renamed as grafana/k6-operator from the generic grafana/operator.
  • Documentation and example updates, thanks to @agilgur5.
  • Bug fix from @vukor to correct initializer pod issue when using persistent volumes.

Be sure to read the new Running distributed tests guide to get started with the operator.

The latest on k6 extensions

There has been a great deal of activity in the extensions ecosystem!

During this release cycle, there was a push to ensure extensions are up-to-date using recent versions of k6 as well as other registry requirements. Over 40 GitHub issues were created for extensions not meeting these standards; many have already been addressed and we thank those contributors for addressing these items. Our intent is to ensure consistency and the best developer experience when using k6 and its extensions. 

k6 and all extensions were affected by the removal of transitive dependencies for Protobuf and gRPC by a third-party build registry. As such, k6 released a patched version, v0.45.1, to correct the issue. This did require all extensions to be upgraded to v0.45.1 or above. The k6 development team subsequently created merge requests to listed extensions to upgrade the dependency and resolve build issues. This was an unfortunate event beyond the control of the k6 team.

Several updates were provided by contributors:

Of course, the extension community continues to grow! The following new extensions have been added to the registry:

  • szkiba/xk6-output-plugin allows you to create custom output extensions using languages such as Python, JavaScript, or Go which will be dynamically loaded at run time.
  • deejiw/xk6-gcp allows you to directly query Google Cloud Platform within your test scripts.
  • gpiechnik2/xk6-anomaly by recent k6 Champion Grzegorz Piechnik allows you to discover anomalies within large datasets.
  • acuenca-facephi/xk6-read eases the task of reading from files and directories.
  • Maksimall89/xk6-output-clickhouse enables real-time output of your test metrics to the Clickhouse analytical database.
  • LeonAdato/xk6-output-statsd will be the ongoing implementation to support real-time output to StatsD. This was a port of existing k6 functionality into an extension, allowing for the deprecation and subsequent removal from the core k6 product. Thanks to Leon for carrying the StatsD torch going forward!
  • golioth/xk6-coap was just recently open-sourced by Golioth. k6 Office Hours #97 with Daniel Mangum discusses how this extension is used with constrained devices and the internet of things (IoT).

xk6-notification is now an officially supported extension! Thank you to our own Daniel González Lopes for donating the repository to the Grafana organization. I mean, who doesn’t need more Slack notifications?! 

Once again, a huge thank you to our community! This shows the power of open source software and Grafana’s “big tent” philosophy.

k6 Champions 

The Grafana k6 Champions program aims to recognize experts within our community to amplify their contributions and partner with the k6 team.

We have some fantastic news again, as we have accepted three more contributors to the program. You can check out their individual k6 Champion spotlights:

We look forward to seeing how our new Champions engage and get involved with the community! 

Our existing k6 Champions have also been busy within the community:

If you love using k6 and have done advocacy and education work on behalf of the project, you can apply to be part of our growing program by filling out this Grafana k6 Champions application form.

If you are interested in upcoming k6 news or want to connect with the k6 community, please join us on Slack, Twitter, LinkedIn, or YouTube. Happy testing!

Download the latest version of k6 OSS today, or get started with performance testing on Grafana Cloud, which has a generous forever-free tier that includes 500 Virtual User Hours (VUh) and plans for every use case. Sign up for free now!