mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-19 17:19:42 +03:00
feat(web-test): ловить диалог авторизации + чистая диагностика в start/run
Второй вход в ту же ловушку: публикация без пользователя (нет 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>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
// web-test cli/commands/run v1.0 — autonomous connect → exec → disconnect (no server)
|
||||
// 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';
|
||||
@@ -13,7 +13,14 @@ export async function cmdRun(url, fileOrDash) {
|
||||
? await readStdin()
|
||||
: readFileSync(resolve(fileOrDash), 'utf-8');
|
||||
|
||||
await browser.connect(url);
|
||||
// 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();
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// web-test cli/commands/start v1.0
|
||||
// web-test cli/commands/start v1.1
|
||||
// Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
import http from 'http';
|
||||
import { writeFileSync } from 'fs';
|
||||
@@ -10,7 +10,15 @@ import { handleRequest } from '../server.mjs';
|
||||
export async function cmdStart(url) {
|
||||
if (!url) die('Usage: node src/run.mjs start <url>');
|
||||
|
||||
const state = await browser.connect(url);
|
||||
// A startup blocker (no free 1C licence, publication asking for credentials) is a diagnosis,
|
||||
// not a crash — connect() already released the seance and closed the browser, so print the
|
||||
// message and leave instead of dumping a stack trace that reads like an engine failure.
|
||||
let state;
|
||||
try {
|
||||
state = await browser.connect(url);
|
||||
} catch (e) {
|
||||
die(e.message);
|
||||
}
|
||||
|
||||
const httpServer = http.createServer(handleRequest);
|
||||
httpServer.listen(0, '127.0.0.1', () => {
|
||||
|
||||
Reference in New Issue
Block a user