Conversation
✅ Successfully deployed static |
There was a problem hiding this comment.
Предлагаю назвать файл typescript-esm.mdx.
| #### @swc/core | ||
|
|
||
| Если вы хотите ускорить транспайлинг, используйте `@swc/core` вместо `ts-node`. SWC написан на Rust и значительно быстрее при больших объёмах кода. | ||
|
|
||
| ```bash | ||
| npm install --save-dev @swc/core | ||
| ``` | ||
|
|
||
| Настройте `.swcrc`: | ||
|
|
||
| ```json | ||
| { | ||
| "jsc": { | ||
| "parser": { | ||
| "syntax": "typescript", | ||
| "decorators": true | ||
| }, | ||
| "target": "es2019" | ||
| }, | ||
| "module": { | ||
| "type": "commonjs" | ||
| } | ||
| } | ||
| ``` | ||
|
|
||
| В конфиге Testplane укажите транспайлер явно: | ||
|
|
||
| ```typescript | ||
| // .testplane.conf.ts | ||
| export default { | ||
| system: { | ||
| compilationCache: true, | ||
| }, | ||
| }; | ||
| ``` | ||
|
|
||
| #### esbuild | ||
|
|
||
| Ещё один вариант для ускорения транспайлинга — `esbuild`: | ||
|
|
||
| ```bash | ||
| npm install --save-dev esbuild esbuild-register | ||
| ``` | ||
|
|
||
| В конфиге Testplane укажите транспайлер явно: | ||
|
|
||
| ```typescript | ||
| // .testplane.conf.ts | ||
| export default { | ||
| system: { | ||
| // esbuild подключается через require-хук | ||
| }, | ||
| }; | ||
| ``` |
There was a problem hiding this comment.
Это невалидно.
Тут поведение такое:
- Если в проекте установлен
@swc/core, testplane автоматически будет использовать его для трайнспайлинга - Если нет, Testplane будет использовать esbuild, который поставляется в вместе с testplane
Посмотреть дефолтные настройки трайнспайлинга можно тут: https://github.com/gemini-testing/testplane/blob/master/src/utils/typescript.ts
Если автоматический трайнспайлинг не подходит из-за специфики проекта, можно передать переменную окружения TS_ENABLE=false, чтобы отключить автоматический трайнспайлинг и настроить самостоятельно. При ручной настройки можно передать нужный лоадер через опцию -r, --require, например -r ts-node/register.
Надо отметить, что это именно трайнспайлинг, без проверки типов. Проверку типов надо делать самостоятельно с помощью tsc и конфига.
| }; | ||
| ``` | ||
|
|
||
| #### Сравнение вариантов |
There was a problem hiding this comment.
Табличка не особо полезная, я бы удалил.
| `@swc/core` и `esbuild` не выполняют проверку типов во время запуска тестов. Для проверки типов используйте отдельную команду `tsc --noEmit`. | ||
| ::: | ||
|
|
||
| ## Работа с путями в конфиге |
There was a problem hiding this comment.
лучше "Работа с алиасами в импортах"
| #### Проверка настройки | ||
|
|
||
| После настройки вы можете использовать алиасы в тестах: | ||
|
|
||
| ```typescript | ||
| // tests/auth.test.ts | ||
| import { LoginPage } from "@components/LoginPage"; | ||
| import { createUser } from "@utils/factories"; | ||
| import { userFixture } from "@fixtures/user"; | ||
|
|
||
| describe("Auth", () => { | ||
| it("should login successfully", async ({ browser }) => { | ||
| const loginPage = new LoginPage(browser); | ||
| await loginPage.open(); | ||
| // ... | ||
| }); | ||
| }); | ||
| ``` |
There was a problem hiding this comment.
не особо полезная секция, я бы удалил
| Cannot find module '@components/Button'. | ||
| ``` | ||
|
|
||
| #### Резолв путей в рантайме |
There was a problem hiding this comment.
Этот раздел надо сократить до 1 маленького абзаца, где кратко рассказываем, что можно взять пакет tsconfig-paths, способы применения — передать его в опцию -r, причем не в NODE_OPTIONS, а просто при запуске testplane мы поддерживаем такую опцию или программно
По остальному сослаться на документацию самого пакета.
|
|
||
| ## Типизация конфига | ||
|
|
||
| Testplane экспортирует типы для конфигурации, что позволяет получить автодополнение и проверку типов. |
There was a problem hiding this comment.
Эту секцию тоже надо схлопнуть до 1 маленького абзаца. Достаточно небольшой кусочек конфига с применением satisfies, и всё
|
|
||
| ## Расширение типов команд браузера | ||
|
|
||
| Если вы добавляете собственные команды через `browser.addCommand` или `element.addCommand`, TypeScript не будет знать об этих командах. Вам нужно расширить существующие интерфейсы через декларацию модуля (`Declaration Merging`). |
There was a problem hiding this comment.
Про кастомные команды тоже надо очень сильно сократить раздел. Буквально сказать, что такое есть и возможно один очень маленький пример. Остальное у нас рассказывается тут: https://testplane-ci.website.yandexcloud.net/testplane-docs/website-static/23649641933-511-1/ru/docs/v8/basic-guides/custom-commands/#%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D1%85-%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4-%D1%81-typescript — надо оставить сюда ссылку.
|
|
||
| ## Работа с ESM | ||
|
|
||
| Testplane поддерживает ES Modules (ESM). Однако работа с ESM имеет ряд особенностей. |
There was a problem hiding this comment.
Тут тоже 2 страницы текста, а самого важного и нет — с какой версии Node поддержана работа с ESM. А диапазон версий: v22.0.0, v20.17.0 и новее (https://nodejs.org/api/modules.html#loading-ecmascript-modules-using-require)
Все остальное честно говоря звучит как рассказ, что такое ESM, который не особо по теме. Но если проект хочет его использовать, он это и так знает. Мы тут должны сказать, что надо настроить со стороны testplane. И единственный пункт тут это версия ноды.
No description provided.