gen-testid 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +14 -0
- package/.idea/gen-testid.iml +12 -0
- package/.idea/modules.xml +8 -0
- package/.idea/vcs.xml +6 -0
- package/.idea/workspace.xml +96 -0
- package/README.md +524 -0
- package/bin/cli.js +9 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +87 -0
- package/dist/cli/init.d.ts +1 -0
- package/dist/cli/init.js +95 -0
- package/dist/core/GenTestId.d.ts +12 -0
- package/dist/core/GenTestId.js +127 -0
- package/dist/core/semantic-generator.d.ts +18 -0
- package/dist/core/semantic-generator.js +142 -0
- package/dist/core/strategies.d.ts +24 -0
- package/dist/core/strategies.js +73 -0
- package/dist/core/types.d.ts +28 -0
- package/dist/core/types.js +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -0
- package/dist/shared/element-counter.d.ts +4 -0
- package/dist/shared/element-counter.js +11 -0
- package/dist/shared/parser.d.ts +11 -0
- package/dist/shared/parser.js +132 -0
- package/package.json +24 -0
- package/src/cli/index.ts +102 -0
- package/src/cli/init.ts +114 -0
- package/src/core/GenTestId.ts +169 -0
- package/src/core/semantic-generator.ts +164 -0
- package/src/core/strategies.ts +91 -0
- package/src/core/types.ts +33 -0
- package/src/index.ts +2 -0
- package/src/shared/element-counter.ts +10 -0
- package/src/shared/parser.ts +174 -0
- package/tsconfig.json +24 -0
package/.eslintrc.json
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<module type="WEB_MODULE" version="4">
|
|
3
|
+
<component name="NewModuleRootManager">
|
|
4
|
+
<content url="file://$MODULE_DIR$">
|
|
5
|
+
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
|
|
6
|
+
<excludeFolder url="file://$MODULE_DIR$/temp" />
|
|
7
|
+
<excludeFolder url="file://$MODULE_DIR$/tmp" />
|
|
8
|
+
</content>
|
|
9
|
+
<orderEntry type="inheritedJdk" />
|
|
10
|
+
<orderEntry type="sourceFolder" forTests="false" />
|
|
11
|
+
</component>
|
|
12
|
+
</module>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project version="4">
|
|
3
|
+
<component name="ProjectModuleManager">
|
|
4
|
+
<modules>
|
|
5
|
+
<module fileurl="file://$PROJECT_DIR$/.idea/gen-testid.iml" filepath="$PROJECT_DIR$/.idea/gen-testid.iml" />
|
|
6
|
+
</modules>
|
|
7
|
+
</component>
|
|
8
|
+
</project>
|
package/.idea/vcs.xml
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project version="4">
|
|
3
|
+
<component name="AutoImportSettings">
|
|
4
|
+
<option name="autoReloadType" value="SELECTIVE" />
|
|
5
|
+
</component>
|
|
6
|
+
<component name="ChangeListManager">
|
|
7
|
+
<list default="true" id="03d60fe0-9201-42f6-8ce4-afe0b206e415" name="Changes" comment="">
|
|
8
|
+
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
|
9
|
+
</list>
|
|
10
|
+
<option name="SHOW_DIALOG" value="false" />
|
|
11
|
+
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
|
12
|
+
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
|
13
|
+
<option name="LAST_RESOLUTION" value="IGNORE" />
|
|
14
|
+
</component>
|
|
15
|
+
<component name="FileTemplateManagerImpl">
|
|
16
|
+
<option name="RECENT_TEMPLATES">
|
|
17
|
+
<list>
|
|
18
|
+
<option value="TypeScript JSX File" />
|
|
19
|
+
<option value="tsconfig.json" />
|
|
20
|
+
<option value="JavaScript File" />
|
|
21
|
+
<option value="TypeScript File" />
|
|
22
|
+
</list>
|
|
23
|
+
</option>
|
|
24
|
+
</component>
|
|
25
|
+
<component name="Git.Settings">
|
|
26
|
+
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
|
27
|
+
</component>
|
|
28
|
+
<component name="ProjectColorInfo">{
|
|
29
|
+
"associatedIndex": 3
|
|
30
|
+
}</component>
|
|
31
|
+
<component name="ProjectId" id="3AqUfsz22pMc0YTkLEne2rQh8Qu" />
|
|
32
|
+
<component name="ProjectViewState">
|
|
33
|
+
<option name="hideEmptyMiddlePackages" value="true" />
|
|
34
|
+
<option name="showLibraryContents" value="true" />
|
|
35
|
+
</component>
|
|
36
|
+
<component name="PropertiesComponent"><![CDATA[{
|
|
37
|
+
"keyToString": {
|
|
38
|
+
"ASKED_SHARE_PROJECT_CONFIGURATION_FILES": "true",
|
|
39
|
+
"ModuleVcsDetector.initialDetectionPerformed": "true",
|
|
40
|
+
"RunOnceActivity.ShowReadmeOnStart": "true",
|
|
41
|
+
"RunOnceActivity.git.unshallow": "true",
|
|
42
|
+
"git-widget-placeholder": "main",
|
|
43
|
+
"last_opened_file_path": "/Users/anastasiabortnikova/Documents/for works/gen-testid",
|
|
44
|
+
"node.js.detected.package.eslint": "true",
|
|
45
|
+
"node.js.detected.package.tslint": "true",
|
|
46
|
+
"node.js.selected.package.eslint": "(autodetect)",
|
|
47
|
+
"node.js.selected.package.tslint": "(autodetect)",
|
|
48
|
+
"nodejs_package_manager_path": "npm",
|
|
49
|
+
"ts.external.directory.path": "/Users/anastasiabortnikova/Documents/for works/gen-testid/node_modules/typescript/lib",
|
|
50
|
+
"vue.rearranger.settings.migration": "true"
|
|
51
|
+
}
|
|
52
|
+
}]]></component>
|
|
53
|
+
<component name="RecentsManager">
|
|
54
|
+
<key name="CopyFile.RECENT_KEYS">
|
|
55
|
+
<recent name="$PROJECT_DIR$/src/vue" />
|
|
56
|
+
</key>
|
|
57
|
+
<key name="MoveFile.RECENT_KEYS">
|
|
58
|
+
<recent name="$PROJECT_DIR$" />
|
|
59
|
+
<recent name="$PROJECT_DIR$/src" />
|
|
60
|
+
</key>
|
|
61
|
+
</component>
|
|
62
|
+
<component name="SharedIndexes">
|
|
63
|
+
<attachedChunks>
|
|
64
|
+
<set>
|
|
65
|
+
<option value="bundled-js-predefined-d6986cc7102b-6a121458b545-JavaScript-WS-251.25410.117" />
|
|
66
|
+
</set>
|
|
67
|
+
</attachedChunks>
|
|
68
|
+
</component>
|
|
69
|
+
<component name="TaskManager">
|
|
70
|
+
<task active="true" id="Default" summary="Default task">
|
|
71
|
+
<changelist id="03d60fe0-9201-42f6-8ce4-afe0b206e415" name="Changes" comment="" />
|
|
72
|
+
<created>1773319700445</created>
|
|
73
|
+
<option name="number" value="Default" />
|
|
74
|
+
<option name="presentableId" value="Default" />
|
|
75
|
+
<updated>1773319700445</updated>
|
|
76
|
+
<workItem from="1773319701449" duration="3152000" />
|
|
77
|
+
<workItem from="1773817209925" duration="2293000" />
|
|
78
|
+
<workItem from="1774438332768" duration="10000" />
|
|
79
|
+
<workItem from="1774719620483" duration="6090000" />
|
|
80
|
+
<workItem from="1775128895157" duration="903000" />
|
|
81
|
+
<workItem from="1775459581462" duration="5163000" />
|
|
82
|
+
<workItem from="1775465010645" duration="8951000" />
|
|
83
|
+
<workItem from="1775543974769" duration="4021000" />
|
|
84
|
+
<workItem from="1775716271318" duration="14757000" />
|
|
85
|
+
<workItem from="1777383993002" duration="69000" />
|
|
86
|
+
<workItem from="1777384065424" duration="546000" />
|
|
87
|
+
<workItem from="1777534342009" duration="1719000" />
|
|
88
|
+
<workItem from="1781424620957" duration="1335000" />
|
|
89
|
+
<workItem from="1781426323016" duration="3667000" />
|
|
90
|
+
</task>
|
|
91
|
+
<servers />
|
|
92
|
+
</component>
|
|
93
|
+
<component name="TypeScriptGeneratedFilesManager">
|
|
94
|
+
<option name="version" value="3" />
|
|
95
|
+
</component>
|
|
96
|
+
</project>
|
package/README.md
ADDED
|
@@ -0,0 +1,524 @@
|
|
|
1
|
+
# GenTestID
|
|
2
|
+
|
|
3
|
+
CLI-инструмент для автоматического добавления атрибутов `data-testid` в шаблоны Vue-компонентов.
|
|
4
|
+
|
|
5
|
+
`gen-testid` находит элементы в секции `<template>`, пропускает элементы, у которых уже есть `data-testid`, генерирует идентификаторы по выбранной стратегии и сохраняет изменения непосредственно в `.vue`-файлы.
|
|
6
|
+
|
|
7
|
+
## Возможности
|
|
8
|
+
|
|
9
|
+
- обработка всех Vue-файлов проекта или конкретного списка файлов;
|
|
10
|
+
- четыре стратегии генерации идентификаторов;
|
|
11
|
+
- настройка префикса;
|
|
12
|
+
- исключение файлов по glob-шаблонам;
|
|
13
|
+
- использование локальной Ollama для семантических идентификаторов;
|
|
14
|
+
- автоматическое создание конфигурации `.gentestidrc`;
|
|
15
|
+
- добавление команды `testids` в `package.json`.
|
|
16
|
+
|
|
17
|
+
## Требования
|
|
18
|
+
|
|
19
|
+
- Node.js 20 или новее;
|
|
20
|
+
- Vue-проект с `.vue`-компонентами;
|
|
21
|
+
- `pnpm`, `npm` или другой совместимый пакетный менеджер;
|
|
22
|
+
- Ollama только для стратегии `semantic`.
|
|
23
|
+
|
|
24
|
+
## Установка
|
|
25
|
+
|
|
26
|
+
### Локальная установка через pnpm
|
|
27
|
+
|
|
28
|
+
Если исходный код `gen-testid` находится рядом с вашим проектом:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
cd "/path/for/directory/"
|
|
32
|
+
pnpm add --save-dev "../gen-testid"
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Проверка установки:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
pnpm exec gen-testid --help
|
|
39
|
+
pnpm list gen-testid --depth=0
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Локальная установка через npm
|
|
43
|
+
|
|
44
|
+
Используйте этот вариант только в проектах, которые управляются npm:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
npm install --save-dev "/path/for/directory/gen-testid"
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Проверка:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
npx gen-testid --help
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Не смешивайте npm и pnpm в одном проекте. Если в `package.json` указано поле `"packageManager": "pnpm@..."`, устанавливайте CLI через `pnpm add`.
|
|
57
|
+
|
|
58
|
+
### Установка опубликованного пакета
|
|
59
|
+
|
|
60
|
+
После публикации `gen-testid` в npm registry:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
pnpm add --save-dev gen-testid
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
или:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
npm install --save-dev gen-testid
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Быстрый старт
|
|
73
|
+
|
|
74
|
+
Перейдите в корень Vue-проекта и выполните:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
pnpm exec gen-testid init
|
|
78
|
+
pnpm exec gen-testid inject
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Команда `init`:
|
|
82
|
+
|
|
83
|
+
1. предложит выбрать стратегию;
|
|
84
|
+
2. запросит префикс;
|
|
85
|
+
3. создаст `.gentestidrc`;
|
|
86
|
+
4. добавит в `package.json` скрипт `"testids": "gen-testid inject"`.
|
|
87
|
+
|
|
88
|
+
После этого запуск можно сократить до:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
pnpm run testids
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Команды
|
|
95
|
+
|
|
96
|
+
### Общая справка
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
pnpm exec gen-testid --help
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Для npm-проекта:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
npx gen-testid --help
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Версия
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
pnpm exec gen-testid --version
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Инициализация
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
pnpm exec gen-testid init
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Пример диалога:
|
|
121
|
+
|
|
122
|
+
```text
|
|
123
|
+
Выберите стратегию (1-4) [1]: 1
|
|
124
|
+
Префикс для testid [default: test]: e2e
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
Результат: в корне проекта появится `.gentestidrc`.
|
|
128
|
+
|
|
129
|
+
Справка по команде:
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
pnpm exec gen-testid init --help
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Обработка всех Vue-файлов
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
pnpm exec gen-testid inject
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Без списка файлов CLI использует шаблоны `includeFiles` и `excludeFiles` из `.gentestidrc`.
|
|
142
|
+
|
|
143
|
+
### Обработка одного файла
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
pnpm exec gen-testid inject src/App.vue
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### Обработка нескольких файлов
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
pnpm exec gen-testid inject \
|
|
153
|
+
src/App.vue \
|
|
154
|
+
src/components/LoginForm.vue \
|
|
155
|
+
src/components/CheckoutButton.vue
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### Выбор стратегии
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
pnpm exec gen-testid inject --strategy hierarchical
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
Короткая форма:
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
pnpm exec gen-testid inject -s hierarchical
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
Доступные значения:
|
|
171
|
+
|
|
172
|
+
| Стратегия | Назначение | Пример результата |
|
|
173
|
+
| --- | --- | --- |
|
|
174
|
+
| `hierarchical` | ID на основе файла, элемента, строки и номера вхождения | `test__app__button__line-12__elem-1` |
|
|
175
|
+
| `stable-uuid` | Детерминированный ID на основе MD5-хеша контекста | `test-550e8400-e29b-41d4-a716-446655440000` |
|
|
176
|
+
| `minimal` | Последовательный номер в рамках запуска | `test-1` |
|
|
177
|
+
| `semantic` | Короткий смысловой ID через локальную Ollama | `login-button` |
|
|
178
|
+
|
|
179
|
+
Примеры:
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
pnpm exec gen-testid inject -s hierarchical
|
|
183
|
+
pnpm exec gen-testid inject -s stable-uuid
|
|
184
|
+
pnpm exec gen-testid inject -s minimal
|
|
185
|
+
pnpm exec gen-testid inject -s semantic
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### Настройка префикса
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
pnpm exec gen-testid inject --prefix e2e
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
Короткая форма:
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
pnpm exec gen-testid inject -p e2e
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
Пример результата:
|
|
201
|
+
|
|
202
|
+
```html
|
|
203
|
+
<button data-testid="e2e__app__button__line-12__elem-1">
|
|
204
|
+
Сохранить
|
|
205
|
+
</button>
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### Пользовательский файл конфигурации
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
pnpm exec gen-testid inject --config ./config/gen-testid.json
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
Короткая форма:
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
pnpm exec gen-testid inject -c ./config/gen-testid.json
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
### Комбинация параметров
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
pnpm exec gen-testid inject src/App.vue \
|
|
224
|
+
--strategy hierarchical \
|
|
225
|
+
--prefix e2e \
|
|
226
|
+
--config .gentestidrc
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
Параметры командной строки `--strategy` и `--prefix` имеют приоритет над значениями из конфигурации.
|
|
230
|
+
|
|
231
|
+
### Справка по inject
|
|
232
|
+
|
|
233
|
+
```bash
|
|
234
|
+
pnpm exec gen-testid inject --help
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
Доступные опции:
|
|
238
|
+
|
|
239
|
+
```text
|
|
240
|
+
-c, --config <path> путь к конфигурации
|
|
241
|
+
-s, --strategy <name> стратегия именования
|
|
242
|
+
-p, --prefix <prefix> префикс для testid
|
|
243
|
+
-h, --help справка
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
## Конфигурация
|
|
248
|
+
|
|
249
|
+
По умолчанию CLI ищет `.gentestidrc` в текущей рабочей директории.
|
|
250
|
+
|
|
251
|
+
Пример:
|
|
252
|
+
|
|
253
|
+
```json
|
|
254
|
+
{
|
|
255
|
+
"strategy": "hierarchical",
|
|
256
|
+
"prefix": "test",
|
|
257
|
+
"semanticModel": "",
|
|
258
|
+
"ollamaUrl": "http://localhost:11434",
|
|
259
|
+
"includeFiles": [
|
|
260
|
+
"src/**/*.vue"
|
|
261
|
+
],
|
|
262
|
+
"excludeFiles": [
|
|
263
|
+
"**/*.test.*",
|
|
264
|
+
"**/*.spec.*",
|
|
265
|
+
"**/node_modules/**",
|
|
266
|
+
"**/dist/**"
|
|
267
|
+
]
|
|
268
|
+
}
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
### Параметры конфигурации
|
|
272
|
+
|
|
273
|
+
| Поле | Тип | Значение по умолчанию | Описание |
|
|
274
|
+
| --- | --- | --- | --- |
|
|
275
|
+
| `strategy` | `string` | `hierarchical` | Стратегия генерации ID |
|
|
276
|
+
| `prefix` | `string` | `test` | Префикс идентификатора |
|
|
277
|
+
| `semanticModel` | `string` | пустая строка | Модель Ollama для `semantic` |
|
|
278
|
+
| `ollamaUrl` | `string` | `http://localhost:11434` | Адрес локального Ollama API |
|
|
279
|
+
| `includeFiles` | `string[]` | `src/**/*.vue` | Glob-шаблоны обрабатываемых файлов |
|
|
280
|
+
| `excludeFiles` | `string[]` | тесты, `node_modules`, `dist` | Glob-шаблоны исключений |
|
|
281
|
+
|
|
282
|
+
## Пример преобразования
|
|
283
|
+
|
|
284
|
+
До запуска:
|
|
285
|
+
|
|
286
|
+
```vue
|
|
287
|
+
<template>
|
|
288
|
+
<form>
|
|
289
|
+
<input type="email" />
|
|
290
|
+
<button>Войти</button>
|
|
291
|
+
</form>
|
|
292
|
+
</template>
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
Команда:
|
|
296
|
+
|
|
297
|
+
```bash
|
|
298
|
+
pnpm exec gen-testid inject src/components/LoginForm.vue --prefix e2e
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
После запуска:
|
|
302
|
+
|
|
303
|
+
```vue
|
|
304
|
+
<template>
|
|
305
|
+
<form data-testid="e2e__loginform__form__line-2__elem-1">
|
|
306
|
+
<input data-testid="e2e__loginform__input__line-3__elem-1" type="email" />
|
|
307
|
+
<button data-testid="e2e__loginform__button__line-4__elem-1">Войти</button>
|
|
308
|
+
</form>
|
|
309
|
+
</template>
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
Повторный запуск не добавляет второй `data-testid` элементам, у которых этот атрибут уже существует.
|
|
313
|
+
|
|
314
|
+
## Семантическая стратегия и Ollama
|
|
315
|
+
|
|
316
|
+
Установите Ollama и модель:
|
|
317
|
+
|
|
318
|
+
```bash
|
|
319
|
+
brew install ollama
|
|
320
|
+
ollama pull llama3.2:3b
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
Запустите сервер в отдельном терминале:
|
|
324
|
+
|
|
325
|
+
```bash
|
|
326
|
+
ollama serve
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
Создайте конфигурацию интерактивно:
|
|
330
|
+
|
|
331
|
+
```bash
|
|
332
|
+
pnpm exec gen-testid init
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
Введите:
|
|
336
|
+
|
|
337
|
+
```text
|
|
338
|
+
Выберите стратегию (1-4) [1]: 4
|
|
339
|
+
Модель (llama3.2:3b/mistral/gemma:2b) [llama3.2:3b]: llama3.2:3b
|
|
340
|
+
URL Ollama [http://localhost:11434]:
|
|
341
|
+
Префикс для testid [default: test]: test
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
Или запустите стратегию напрямую:
|
|
345
|
+
|
|
346
|
+
```bash
|
|
347
|
+
pnpm exec gen-testid inject --strategy semantic
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
Если Ollama недоступна или не вернула корректный ID, CLI использует `hierarchical` как резервную стратегию.
|
|
351
|
+
|
|
352
|
+
## Скрипты package.json
|
|
353
|
+
|
|
354
|
+
Рекомендуемая настройка:
|
|
355
|
+
|
|
356
|
+
```json
|
|
357
|
+
{
|
|
358
|
+
"scripts": {
|
|
359
|
+
"testids": "gen-testid inject"
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
Запуск:
|
|
365
|
+
|
|
366
|
+
```bash
|
|
367
|
+
pnpm run testids
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
Для обработки конкретного файла лучше вызвать CLI напрямую:
|
|
371
|
+
|
|
372
|
+
```bash
|
|
373
|
+
pnpm exec gen-testid inject src/App.vue
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
## Локальная разработка CLI
|
|
377
|
+
|
|
378
|
+
Перейдите в репозиторий:
|
|
379
|
+
|
|
380
|
+
```bash
|
|
381
|
+
cd "/path/for/directory/gen-testid"
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
Установите зависимости и соберите проект:
|
|
385
|
+
|
|
386
|
+
```bash
|
|
387
|
+
pnpm install
|
|
388
|
+
pnpm run build
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
Запустите CLI напрямую:
|
|
392
|
+
|
|
393
|
+
```bash
|
|
394
|
+
node bin/cli.js --help
|
|
395
|
+
node bin/cli.js inject --help
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
Режим наблюдения TypeScript:
|
|
399
|
+
|
|
400
|
+
```bash
|
|
401
|
+
pnpm run dev
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
После изменения исходного кода пересоберите CLI:
|
|
405
|
+
|
|
406
|
+
```bash
|
|
407
|
+
pnpm run build
|
|
408
|
+
```
|
|
409
|
+
|
|
410
|
+
Проект, подключенный через `link:../gen-testid`, продолжит использовать эту локальную директорию.
|
|
411
|
+
|
|
412
|
+
## Удаление
|
|
413
|
+
|
|
414
|
+
В pnpm-проекте:
|
|
415
|
+
|
|
416
|
+
```bash
|
|
417
|
+
pnpm remove gen-testid
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
В npm-проекте:
|
|
421
|
+
|
|
422
|
+
```bash
|
|
423
|
+
npm uninstall gen-testid
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
При необходимости удалите конфигурацию и скрипт вручную:
|
|
427
|
+
|
|
428
|
+
```bash
|
|
429
|
+
rm .gentestidrc
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
Из `package.json` удалите:
|
|
433
|
+
|
|
434
|
+
```json
|
|
435
|
+
"testids": "gen-testid inject"
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
## Решение проблем
|
|
439
|
+
|
|
440
|
+
### npm: Cannot read properties of null (reading 'matches')
|
|
441
|
+
|
|
442
|
+
Обычно эта ошибка возникает, когда npm запускают внутри проекта, установленного через pnpm.
|
|
443
|
+
|
|
444
|
+
Проверьте `package.json`:
|
|
445
|
+
|
|
446
|
+
```json
|
|
447
|
+
"packageManager": "pnpm@10.15.1"
|
|
448
|
+
```
|
|
449
|
+
|
|
450
|
+
Если поле присутствует, используйте:
|
|
451
|
+
|
|
452
|
+
```bash
|
|
453
|
+
pnpm add --save-dev "../gen-testid"
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
### Команда gen-testid не найдена
|
|
457
|
+
|
|
458
|
+
Проверьте установку:
|
|
459
|
+
|
|
460
|
+
```bash
|
|
461
|
+
pnpm list gen-testid --depth=0
|
|
462
|
+
```
|
|
463
|
+
|
|
464
|
+
Запускайте локальный бинарный файл через пакетный менеджер:
|
|
465
|
+
|
|
466
|
+
```bash
|
|
467
|
+
pnpm exec gen-testid --help
|
|
468
|
+
```
|
|
469
|
+
|
|
470
|
+
### CLI не находит Vue-файлы
|
|
471
|
+
|
|
472
|
+
Проверьте текущую директорию:
|
|
473
|
+
|
|
474
|
+
```bash
|
|
475
|
+
pwd
|
|
476
|
+
```
|
|
477
|
+
|
|
478
|
+
Запускайте CLI из корня проекта и проверьте `includeFiles` в `.gentestidrc`:
|
|
479
|
+
|
|
480
|
+
```json
|
|
481
|
+
{
|
|
482
|
+
"includeFiles": ["src/**/*.vue"]
|
|
483
|
+
}
|
|
484
|
+
```
|
|
485
|
+
|
|
486
|
+
|
|
487
|
+
## Полный список часто используемых команд
|
|
488
|
+
|
|
489
|
+
```bash
|
|
490
|
+
# Установка в pnpm-проект
|
|
491
|
+
pnpm add --save-dev "../gen-testid"
|
|
492
|
+
|
|
493
|
+
# Инициализация
|
|
494
|
+
pnpm exec gen-testid init
|
|
495
|
+
|
|
496
|
+
# Обработка всех Vue-файлов
|
|
497
|
+
pnpm exec gen-testid inject
|
|
498
|
+
|
|
499
|
+
# Обработка одного файла
|
|
500
|
+
pnpm exec gen-testid inject src/App.vue
|
|
501
|
+
|
|
502
|
+
# Обработка нескольких файлов
|
|
503
|
+
pnpm exec gen-testid inject src/App.vue src/components/LoginForm.vue
|
|
504
|
+
|
|
505
|
+
# Выбор стратегии
|
|
506
|
+
pnpm exec gen-testid inject --strategy hierarchical
|
|
507
|
+
|
|
508
|
+
# Настройка префикса
|
|
509
|
+
pnpm exec gen-testid inject --prefix e2e
|
|
510
|
+
|
|
511
|
+
# Пользовательская конфигурация
|
|
512
|
+
pnpm exec gen-testid inject --config .gentestidrc
|
|
513
|
+
|
|
514
|
+
# Запуск через package.json
|
|
515
|
+
pnpm run testids
|
|
516
|
+
|
|
517
|
+
# Справка и версия
|
|
518
|
+
pnpm exec gen-testid --help
|
|
519
|
+
pnpm exec gen-testid inject --help
|
|
520
|
+
pnpm exec gen-testid --version
|
|
521
|
+
|
|
522
|
+
# Удаление
|
|
523
|
+
pnpm remove gen-testid
|
|
524
|
+
```
|
package/bin/cli.js
ADDED