From c930b4b04da07236b0c411f9bc88c8535ddc58d7 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Tue, 26 May 2026 16:52:15 +0300 Subject: [PATCH] =?UTF-8?q?refactor(web-test):=20spreadsheet=20=D0=B2?= =?UTF-8?q?=D1=8B=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD=20=D0=B2=20=D1=81=D0=BE?= =?UTF-8?q?=D0=B1=D1=81=D1=82=D0=B2=D0=B5=D0=BD=D0=BD=D1=83=D1=8E=20=D0=BF?= =?UTF-8?q?=D0=B0=D0=BF=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SpreadsheetDocument (отчёты, печатные формы) — другой домен, чем form-grid (табличные части документов, списки). Раньше лежал внутри table/, что было обманчиво. engine/table/spreadsheet.mjs → engine/spreadsheet/spreadsheet.mjs Структура engine/: core/ плумбинг движка (state, wait, errors, session, click, ...) forms/ работа с формами (fill, close, select-value, state) nav/ навигация table/ form-grid (grid, row-fill, filter, grid-toggle) spreadsheet/ SpreadsheetDocument recording/ запись + overlays В будущем при росте spreadsheet можно распилить — engine/spreadsheet/cells.mjs, engine/spreadsheet/scroll.mjs и т.д. без переименований. 11-report регресс зелёный. Co-Authored-By: Claude Opus 4.7 (1M context) --- .claude/skills/web-test/scripts/browser.mjs | 2 +- .claude/skills/web-test/scripts/engine/core/click.mjs | 2 +- .../scripts/engine/{table => spreadsheet}/spreadsheet.mjs | 6 +++--- .claude/skills/web-test/scripts/engine/table/grid.mjs | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) rename .claude/skills/web-test/scripts/engine/{table => spreadsheet}/spreadsheet.mjs (96%) diff --git a/.claude/skills/web-test/scripts/browser.mjs b/.claude/skills/web-test/scripts/browser.mjs index 7e7a2461..a96841cd 100644 --- a/.claude/skills/web-test/scripts/browser.mjs +++ b/.claude/skills/web-test/scripts/browser.mjs @@ -37,7 +37,7 @@ export { closeForm } from './engine/forms/close.mjs'; // ── tables ──────────────────────────────────────────────────────────────── export { readTable, deleteTableRow } from './engine/table/grid.mjs'; -export { readSpreadsheet } from './engine/table/spreadsheet.mjs'; +export { readSpreadsheet } from './engine/spreadsheet/spreadsheet.mjs'; export { fillTableRow } from './engine/table/row-fill.mjs'; export { filterList, unfilterList } from './engine/table/filter.mjs'; diff --git a/.claude/skills/web-test/scripts/engine/core/click.mjs b/.claude/skills/web-test/scripts/engine/core/click.mjs index ef872ea4..7370d1f2 100644 --- a/.claude/skills/web-test/scripts/engine/core/click.mjs +++ b/.claude/skills/web-test/scripts/engine/core/click.mjs @@ -14,7 +14,7 @@ import { safeClick } from './helpers.mjs'; import { getGridToggleIcon, shouldClickToggle } from '../table/grid-toggle.mjs'; import { clickSpreadsheetCell, findSpreadsheetCellByText, -} from '../table/spreadsheet.mjs'; +} from '../spreadsheet/spreadsheet.mjs'; import { getFormState } from '../forms/state.mjs'; /** Click a button/hyperlink/tab on the current form. Use {dblclick: true} to double-click (open items from lists). diff --git a/.claude/skills/web-test/scripts/engine/table/spreadsheet.mjs b/.claude/skills/web-test/scripts/engine/spreadsheet/spreadsheet.mjs similarity index 96% rename from .claude/skills/web-test/scripts/engine/table/spreadsheet.mjs rename to .claude/skills/web-test/scripts/engine/spreadsheet/spreadsheet.mjs index 6fce743d..9743170d 100644 --- a/.claude/skills/web-test/scripts/engine/table/spreadsheet.mjs +++ b/.claude/skills/web-test/scripts/engine/spreadsheet/spreadsheet.mjs @@ -1,10 +1,10 @@ -// web-test table/spreadsheet v1.17 — readSpreadsheet + helpers for SpreadsheetDocument (отчёты, печатные формы). +// web-test spreadsheet v1.17 — readSpreadsheet + helpers for SpreadsheetDocument (отчёты, печатные формы). // Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import { page, ensureConnected } from '../core/state.mjs'; import { detectFormScript } from '../../dom.mjs'; -import { waitForStable } from '../core/wait.mjs'; -import { getFormState } from '../forms/state.mjs'; +import { waitForStable } from '../core/wait.mjs'; +import { getFormState } from '../forms/state.mjs'; // --- Spreadsheet helpers (shared by readSpreadsheet and clickElement) --- diff --git a/.claude/skills/web-test/scripts/engine/table/grid.mjs b/.claude/skills/web-test/scripts/engine/table/grid.mjs index 19b4becd..8d7788f5 100644 --- a/.claude/skills/web-test/scripts/engine/table/grid.mjs +++ b/.claude/skills/web-test/scripts/engine/table/grid.mjs @@ -3,13 +3,13 @@ // // "Grid" в терминах 1С — таблица на форме (.gridLine/.gridBody/.grid в DOM): // табличные части документов, формы списков, ТЧ настроек и т.п. -// Отдельно от SpreadsheetDocument (table/spreadsheet.mjs). +// Отдельно от SpreadsheetDocument (engine/spreadsheet/spreadsheet.mjs). import { page, ensureConnected } from '../core/state.mjs'; import { detectFormScript, readTableScript, resolveGridScript } from '../../dom.mjs'; import { dismissPendingErrors } from '../core/errors.mjs'; import { waitForStable } from '../core/wait.mjs'; -import { clickElement } from '../core/click.mjs'; +import { clickElement } from '../core/click.mjs'; import { getFormState } from '../forms/state.mjs'; /** Read structured table data with pagination. Returns columns, rows, total count. */