技術(tech)

k6 – 拡張機能 xk6-enhanced のビルドに失敗する場合の対処

k6をTypeScriptに対応させるための拡張機能 xk6-enhancedですが、2024/04/02時点で、xk6-tsに内包される形となりました。

xk6でk6コマンドをビルドする際には、代わりにxk6-tsを利用しましょう。

link: https://github.com/szkiba/xk6-ts

事象

例えば以下のようにビルドしたとすると。

xk6 build \
--with github.com/LeonAdato/xk6-output-statsd@latest \
--with github.com/grafana/xk6-dashboard@latest \
--with github.com/szkiba/xk6-enhanced@latest \
--with github.com/szkiba/xk6-dotenv@latest

以下のようなエラーが出るようになっています。

go: downloading github.com/szkiba/xk6-enhanced v0.2.0
go: k6 imports
    github.com/szkiba/xk6-enhanced: github.com/szkiba/xk6-enhanced@v0.2.0: parsing go.mod:
    module declares its path as: github.com/szkiba/xk6-ts
            but was required as: github.com/szkiba/xk6-enhanced

解決策

xk6-enhancedの代わりに、xk6-tsを利用します。

xk6 build \
--with github.com/LeonAdato/xk6-output-statsd@latest \
--with github.com/grafana/xk6-dashboard@latest \
--with github.com/szkiba/xk6-ts@latest \
--with github.com/szkiba/xk6-dotenv@latest

なお、xk6-tsはXK6_TSをfalseに設定することで、一時的に無効化出来ます。

xk6-ts can be disabled by setting the XK6_TS environment variable to false.

https://github.com/szkiba/xk6-ts

webpackでTypeScriptをJavaScriptにコンパイルして、JavaScriptのスクリプトを実行する場合には、k6コマンド実行時にXK6_TSにfalseを設定しましょう。

最終的な修正は以下のようになりました。
https://github.com/gonkunkun/k6-template/pull/4

k6用のCIを設定したことで即時に気付けました。
CIは大事ですね…

k6 - CIでスモークテストを実行してシナリオの品質を担保するはじめに CIで継続的にテストを実施することは、プロダクト開発において非常に重要です。 負荷試験においても上記は例外ではなく、久しぶりに...

皆様もお気をつけください。