Поддержка TypeScript для k6
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, Bundle, этапе сборки и т. д.
Считаете ли вы, что современные возможности JavaScript делают TypeScript бессмысленным? xk6-ts также можно использовать для поддержки современных функций JavaScript в k6.
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 со страницы «Релизы». На странице «Пакеты» есть готовые образы Docker k6.
Инструмент сборки xk6 можно использовать для сборки k6, который будет включать расширение xk6-faker:
$ xk6 build --with github.com/szkiba/xk6-ts@latest
Дополнительные параметры сборки и способы использования xk6 можно найти в документации xk6.
Под капотом xk6-ts использует библиотеку esbuild для транспиляции и объединения. Если быть точным, то xk6-ts использует библиотеку k6pack, основанную на esbuild.
Перед тестовым запуском транспиляция и объединение выполняются «на лету».
xk6-ts в настоящее время интегрирован в k6 путем изменения выполнения команды k6 run
. Это временное решение, окончательная интеграция будет осуществляться по-другому. Эта временная интеграция предполагает, что последним аргументом командной строки k6 run
является имя файла сценария. То есть, в отличие от исходной командной строки k6 run
, xk6-ts не принимает флаги после имени файла сценария. Кстати, это предположение не редкость, многие другие команды принимают флаги только перед позиционными аргументами. (исходная команда k6 run
также принимает флаги после позиционного аргумента).
Если для переменной среды XK6_TS_BENCHMARK
установлено значение true
, будет записываться время, затраченное на объединение TypeScript/JavaScript. В это время также входит загрузка любых удаленных модулей.