Skip to content

docs: typescript-esm#122

Open
Nikolaengel wants to merge 3 commits intomasterfrom
docs-tscriptesm
Open

docs: typescript-esm#122
Nikolaengel wants to merge 3 commits intomasterfrom
docs-tscriptesm

Conversation

@Nikolaengel
Copy link
Copy Markdown
Collaborator

No description provided.

@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 27, 2026

✅ Successfully deployed static

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Предлагаю назвать файл typescript-esm.mdx.

Comment on lines +45 to +98
#### @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-хук
},
};
```
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Это невалидно.

Тут поведение такое:

  • Если в проекте установлен @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 и конфига.

};
```

#### Сравнение вариантов
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Табличка не особо полезная, я бы удалил.

`@swc/core` и `esbuild` не выполняют проверку типов во время запуска тестов. Для проверки типов используйте отдельную команду `tsc --noEmit`.
:::

## Работа с путями в конфиге
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

лучше "Работа с алиасами в импортах"

Comment on lines +201 to +218
#### Проверка настройки

После настройки вы можете использовать алиасы в тестах:

```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();
// ...
});
});
```
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

не особо полезная секция, я бы удалил

Cannot find module '@components/Button'.
```

#### Резолв путей в рантайме
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Этот раздел надо сократить до 1 маленького абзаца, где кратко рассказываем, что можно взять пакет tsconfig-paths, способы применения — передать его в опцию -r, причем не в NODE_OPTIONS, а просто при запуске testplane мы поддерживаем такую опцию или программно

По остальному сослаться на документацию самого пакета.


## Типизация конфига

Testplane экспортирует типы для конфигурации, что позволяет получить автодополнение и проверку типов.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Эту секцию тоже надо схлопнуть до 1 маленького абзаца. Достаточно небольшой кусочек конфига с применением satisfies, и всё


## Расширение типов команд браузера

Если вы добавляете собственные команды через `browser.addCommand` или `element.addCommand`, TypeScript не будет знать об этих командах. Вам нужно расширить существующие интерфейсы через декларацию модуля (`Declaration Merging`).
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Про кастомные команды тоже надо очень сильно сократить раздел. Буквально сказать, что такое есть и возможно один очень маленький пример. Остальное у нас рассказывается тут: 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 имеет ряд особенностей.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Тут тоже 2 страницы текста, а самого важного и нет — с какой версии Node поддержана работа с ESM. А диапазон версий: v22.0.0, v20.17.0 и новее (https://nodejs.org/api/modules.html#loading-ecmascript-modules-using-require)

Все остальное честно говоря звучит как рассказ, что такое ESM, который не особо по теме. Но если проект хочет его использовать, он это и так знает. Мы тут должны сказать, что надо настроить со стороны testplane. И единственный пункт тут это версия ноды.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants