mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-18 16:49:41 +03:00
2a71e6c980
Второй вход в ту же ловушку: публикация без пользователя (нет Usr= в vrd). Клиент показывает диалог «Пользователь/Пароль/Войти», ввод учётных данных движок не поддерживает — но вместо ошибки он ждал 67.7с, а затем closeModals() жал Escape и диалог ИСЧЕЗАЛ. Оставалась пустая страница, объявленная здоровым стартом, и дальше та же ложь про «режим отображения панели». Разведка изменила постановку в двух местах: 1. Улику затирал сам движок. Замерено: одного Escape достаточно, чтобы форма логина пропала. Поэтому детект обязан отработать ДО closeModals. 2. Комментарий «страница логина легитимна» оказался фикцией: войти руками через start было невозможно и раньше — движок сам уничтожал форму. Значит падать тут ничего не ломает, и развилка «в раннере падать, в интерактиве нет» отпадает. Комментарий переписан, чтобы следующий читатель не поверил ему больше, чем коду. Хуже, чем с лицензией: на диалоге авторизации сеанс 1С УСПЕВАЕТ создаться и держит лицензию впустую. Поэтому connect() освобождает его (disconnect) перед тем, как ошибка уйдёт наверх: cmdStart зовёт connect без catch, run.mjs не оборачивает команду, а убийство процесса лицензию не освобождает. - session.mjs (v1.19→v1.20): +1 якорь #authWindow в тот же предикат, своё сообщение с рецептом (-UserName → Usr=/Pwd=), очистка в connect(). - start.mjs (v1.0→v1.1), run.mjs (v1.0→v1.1): стартовый блокер — это диагноз, а не крах. Три строки и код 1 вместо стека, который указывал внутрь session.mjs и читался бы как поломка движка (модель пошла бы чинить не то). Проверено вживую: - шаг 0 (до кода): #authWindow не существует на здоровых стартах — ни в клиенте, ни при загрузке; проверено и на bpdemo с автологином (19.5с, опрос 100мс); - позитивный контроль на bpdemo-auth (BP_DEMO без Usr=): бросок за 2.7с вместо 67.7с, слот убран из реестра, лицензия вернулась — 6/6; - то же через connect(): сообщение, браузер закрыт, сеанс освобождён; - негативный контроль: полный регресс 25/25, ноль ложных срабатываний; start на bpdemo (автологин) поднимается штатно; - попутно на испорченном прогоне (сам съел лицензию соседней сессией) детект отработал в раннере на НАСТОЯЩЕМ дефиците: два мультиконтекстных теста упали с внятной причиной, остальные 23 прошли — прогон поехал дальше. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
30 lines
1.1 KiB
JavaScript
30 lines
1.1 KiB
JavaScript
// web-test cli/commands/run v1.1 — autonomous connect → exec → disconnect (no server)
|
|
// Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
|
import { readFileSync } from 'fs';
|
|
import { resolve } from 'path';
|
|
import * as browser from '../../browser.mjs';
|
|
import { out, die, readStdin } from '../util.mjs';
|
|
import { executeScript } from '../exec-context.mjs';
|
|
|
|
export async function cmdRun(url, fileOrDash) {
|
|
if (!url || !fileOrDash) die('Usage: node src/run.mjs run <url> <file|->');
|
|
|
|
const code = fileOrDash === '-'
|
|
? await readStdin()
|
|
: readFileSync(resolve(fileOrDash), 'utf-8');
|
|
|
|
// Same as cmdStart: a startup blocker is a diagnosis, not a crash. connect() has already
|
|
// released the seance and closed the browser; a stack trace pointing into session.mjs would
|
|
// read as an engine bug and send the reader off to debug the wrong thing.
|
|
try {
|
|
await browser.connect(url);
|
|
} catch (e) {
|
|
die(e.message);
|
|
}
|
|
const result = await executeScript(code);
|
|
await browser.disconnect();
|
|
|
|
out(result);
|
|
if (!result.ok) process.exit(1);
|
|
}
|