mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-18 08:39:40 +03:00
feat(web-test): detect SpreadsheetDocument state bar (stateText)
Extract info bar messages from .stateWindowSupportSurface elements into errors.stateText — covers missing parameters, "report not generated", "settings changed", and "generating..." states. readSpreadsheet() now includes the state message in its error. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -155,6 +155,8 @@ const form = await getFormState();
|
|||||||
|
|
||||||
**confirmation** — if present, a Yes/No dialog is shown. Call `clickElement('Да')` or `clickElement('Нет')`.
|
**confirmation** — if present, a Yes/No dialog is shown. Call `clickElement('Да')` or `clickElement('Нет')`.
|
||||||
|
|
||||||
|
**errors.stateText** — array of SpreadsheetDocument state messages (e.g. `"Не установлено значение параметра \"X\""`, `"Отчет не сформирован..."`, `"Изменились настройки..."`). Present when the report area shows an info bar instead of data.
|
||||||
|
|
||||||
### Reading data
|
### Reading data
|
||||||
|
|
||||||
#### `readTable({ maxRows?, offset?, table? })` → `{ columns, rows, total, shown, offset }`
|
#### `readTable({ maxRows?, offset?, table? })` → `{ columns, rows, total, shown, offset }`
|
||||||
|
|||||||
@@ -1366,7 +1366,12 @@ export async function readSpreadsheet() {
|
|||||||
|
|
||||||
const { allCells } = await scanSpreadsheetCells(formNum);
|
const { allCells } = await scanSpreadsheetCells(formNum);
|
||||||
|
|
||||||
if (allCells.size === 0) throw new Error('readSpreadsheet: no SpreadsheetDocument found. Report may not be generated yet.');
|
if (allCells.size === 0) {
|
||||||
|
// Check for state window messages (info bar) that explain why the report is empty
|
||||||
|
const err = await checkForErrors();
|
||||||
|
const hint = err?.stateText?.length ? err.stateText.join('; ') : '';
|
||||||
|
throw new Error('readSpreadsheet: no SpreadsheetDocument found.' + (hint ? ' State: ' + hint : ' Report may not be generated yet.'));
|
||||||
|
}
|
||||||
|
|
||||||
const mapping = buildSpreadsheetMapping(allCells);
|
const mapping = buildSpreadsheetMapping(allCells);
|
||||||
if (!mapping) {
|
if (!mapping) {
|
||||||
|
|||||||
@@ -1176,7 +1176,15 @@ export function checkErrorsScript() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (result.balloon || result.messages || result.modal || result.confirmation) ? result : null;
|
// 5. SpreadsheetDocument state window (info bar inside moxelContainer)
|
||||||
|
// Shows messages like "Не установлено значение параметра X" or "Отчет не сформирован"
|
||||||
|
const stateWins = [...document.querySelectorAll('.stateWindowSupportSurface')].filter(el => el.offsetWidth > 0);
|
||||||
|
if (stateWins.length) {
|
||||||
|
const texts = stateWins.map(el => el.innerText?.trim()).filter(Boolean);
|
||||||
|
if (texts.length) result.stateText = texts;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (result.balloon || result.messages || result.modal || result.confirmation || result.stateText) ? result : null;
|
||||||
})()`;
|
})()`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user