k6 の TypeScript サポート
xk6-ts により、TypeScript が k6 の第一級市民になります。
k6 run script.ts
import { User , newUser } from "./user" ;
export default ( ) => {
const user : User = newUser ( "John" ) ;
console . log ( user ) ;
} ;
interface User {
name : string ;
id : number ;
}
class UserAccount implements User {
name : string ;
id : number ;
constructor ( name : string ) {
this . name = name ;
this . id = Math . floor ( Math . random ( ) * Number . MAX_SAFE_INTEGER ) ;
}
}
function newUser ( name : string ) : User {
return new UserAccount ( name ) ;
}
export { User , newUser } ;
それでおしまい。 TypeScript で書かれたテストは、k6 で直接実行できます。 Node.js、babel、webpack、バンドラー、ビルドステップなどは必要ありません。
最新の JavaScript 機能によって TypeScript が無意味になると思いますか? xk6-ts は、k6 の最新の JavaScript 機能をサポートするために使用することもできます。
k6 run script.js
import { newUser } from "./user" ;
export default ( ) => {
const user = newUser ( "John" ) ;
console . log ( user ) ;
} ;
xk6-ts は、 XK6_TS
環境変数をfalse
に設定することで無効にできます。
実行時エラー メッセージが正しいソース コードの位置を報告するように、ソースマップの生成はデフォルトで有効になっています。そうしないと、トランスパイルとバンドルにより、ソース コードの位置が無意味になります。ソースマップの生成は、 XK6_TS_SOURCEMAP
環境変数の値をfalse
に設定することで無効にできます。
TypeScript言語のサポート
k6 run script.ts
リモート (https) TypeScript/JavaScript モジュールのサポート
import { User } from 'https://example.com/user.ts'
console . log ( new User ( ) )
JSON ファイルを JavaScript オブジェクトとしてインポートする
import object from './example.json'
console . log ( object )
テキスト ファイルを JavaScript 文字列としてインポートする
import string from './example.txt'
console . log ( string )
JavaScript と TypeScript を組み合わせて使用する
事前に構築された k6 バイナリは、リリース ページからダウンロードできます。事前に構築された k6 Docker イメージについては、「パッケージ」ページを確認してください。
xk6 ビルド ツールを使用して、xk6-faker 拡張機能を含む k6 をビルドできます。
$ xk6 build --with github.com/szkiba/xk6-ts@latest
その他のビルド オプションと xk6 の使用方法については、xk6 のドキュメントを参照してください。
内部では、xk6-ts はトランスパイルとバンドルに esbuild ライブラリを使用します。正確に言うと、xk6-ts は esbuild をベースにした k6pack ライブラリを使用します。
テスト実行の前に、トランスパイルとバンドルがオンザフライで行われます。
xk6-ts は現在、 k6 run
コマンドの実行を変更することで k6 に統合されています。これは一時的な解決策であり、最終的な統合は別の方法で行われます。この一時的な統合では、 k6 run
コマンド ラインの最後の引数がスクリプト ファイルの名前であることを前提としています。つまり、元のk6 run
コマンド ラインの動作方法とは異なり、xk6-ts はスクリプト ファイル名の後のフラグを受け入れません。ちなみに、この仮定は珍しいことではなく、他の多くのコマンドは位置引数の前にのみフラグを受け入れます。 (元のk6 run
コマンドは、位置引数の後のフラグも受け入れます)。
XK6_TS_BENCHMARK
環境変数をtrue
に設定すると、TypeScript/JavaScript のバンドルに費やされた時間が記録されます。この時間には、リモート モジュールのダウンロードも含まれます。