mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-24 13:41:01 +03:00
feat(web-test): управление пулом контекстов/лицензий в раннере
Раннер регресса теперь держит пул 1С-сеансов сам, вместо накопления контекстов
между тестами и ручного закрытия в хуках. Три необязательных поля webtest.config.mjs
(без них поведение прежнее):
- maxContexts — потолок одновременно живых сеансов (null = без лимита);
- contextPolicy — 'reuse' (держать открытыми в пределах лимита) | 'strict'
(закрывать non-pinned контексты теста сразу после него);
- pinnedContexts — не вытесняются LRU (default = [defaultContext]; [] делает
default вытесняемым на тесном стенде).
Перед setup каждого теста LRU-вытеснение освобождает слот под нужды теста;
уже открытые нужные контексты переиспользуются. Default больше не вечно-pinned.
Исчерпание пула даёт внятную ошибку вместо маскирующего «Browser not connected».
- new: cli/test-runner/context-pool.mjs — чистый планировщик planEviction + LRU.
- cli/commands/test.mjs (v1.4): парсинг/валидация полей, вытеснение с фолбэк-парковкой
на нужный контекст (нельзя закрыть единственный активный), strict-закрытие, LRU-трекинг.
- Доки: regression-spec (§7/§8/глоссарий), regression-guide (рецепт), regress.md.
- Регресс дай-фудит фичу: 14-multi-context-routing роутит в 3-й контекст c,
15-multi-context-handover проверяет вытеснение c на границе; конфиг maxContexts:2.
Юнит-краёв планировщика — в debug/ (gitignored). Live-регресс: 25/25 зелёных.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
9e1341b80b
commit
3f1168b975
@@ -12,8 +12,20 @@ export default {
|
||||
// Custom-поля любого типа пробрасываются как есть.
|
||||
a: { url: 'http://localhost:9191/webtest-runner/ru_RU', displayName: 'Пользователь A' },
|
||||
b: { url: 'http://localhost:9191/webtest-runner/ru_RU', displayName: 'Пользователь B' },
|
||||
// c — третий контекст, задействован только 14-multi-context-routing. Под maxContexts:2
|
||||
// он вытесняется на границе 14→15 (см. проверку пула в 15-multi-context-handover).
|
||||
c: { url: 'http://localhost:9191/webtest-runner/ru_RU', displayName: 'Пользователь C' },
|
||||
},
|
||||
defaultContext: 'a',
|
||||
|
||||
// Пул 1С-лицензий (дай-фудим фичу на собственном регрессе). Одновременно живых сеансов —
|
||||
// не больше maxContexts; LRU-вытеснение освобождает слот под нужды следующего теста.
|
||||
// pinnedContexts:[] делает default `a` вытесняемым (здесь он всё равно нужен почти всем тестам,
|
||||
// так что не вытесняется — но снимает жёсткий пин). Благодаря лимиту 3 контекста a/b/c
|
||||
// никогда не живут одновременно: c закрывается до открытия b.
|
||||
maxContexts: 2,
|
||||
contextPolicy: 'reuse',
|
||||
pinnedContexts: [],
|
||||
// isolation: 'tab' (default) — persistent context, tabs in one window, 1С extension loads.
|
||||
// Cookies are shared between tabs but scope by URL path, so different vrd-publications
|
||||
// give independent auth without extra isolation.
|
||||
|
||||
Reference in New Issue
Block a user