Typescript и ESM
Typescript в Testplane
Testplane поддерживает TypeScript из коробки — вам не нужно настраивать дополнительные инструменты для транспайлинга, вы сразу можете писать тесты:
describe("test examples", () => {
it("Открыть главную страницу и проверить заголовок", async ({ browser }) => {
await browser.url("https://testplane.io/");
const title = await browser.getTitle();
expect(title).toContain("Testplane");
});
});
И указывать .ts файлы напрямую в конфиге:
// .testplane.config.ts
export default {
sets: {
desktop: {
files: ["tests/**/*.ts"],
},
},
};
Варианты транспайлинга
Testplane автоматически использует @swc/core для транспайлинга, если этот пакет установлен в проекте, в противном случае он задействует esbuild, который уже включён в состав Testplane.
Проверку типов необходимо реализовывать отдельно с помощью tsc и конфига.
Если автоматический трайнспайлинг не подходит из-за специфики проекта, вы можете отключить его с помощью переменной окружения TS_ENABLE=false и провести настройку самостоятельно.
Чтобы передать нужный лоадер при настройке вручную, используйте опцию --require, например:
-r ts-node/register
Работа с алиасами в ипортах
Многие проекты используют алиасы путей в tsconfig.json:
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@components/*": ["src/components/*"],
"@utils/*": ["src/utils/*"],
"@fixtures/*": ["tests/fixtures/*"]
}
}
}
Однако TypeScript-компилятор умеет резолвить эти пути только во время компиляции. В рантайме Node.js не знает об этих алиасах, и вы получите ошибку:
Cannot find module '@components/Button'.
Резолв путей в рантайме
Установите пакет tsconfig-paths:
npm install --save-dev tsconfig-paths
Ипользуйте опцию --require:
npx testplane -r tsconfig-paths/register
Для более подробного знакомства с tsconfig-paths перейдите на сайт с документацией пакета.
Типизация конфига
Testplane экспортирует типы для конфигурации, например:
import type { ConfigInput } from "testplane";
export default {
// ...
} satisfies ConfigInput;