$ show grumagargler/tester
This is a comprehensive test automation framework for 1C:Enterprise 8.3 managed applications, named 'Tester'. It provides a full suite of tools for creating, managing, executing, and reporting on UI and business logic test scenarios. The repository contains three main integrated components: (1) a native C++ add-in (addon/) that exposes low-level capabilities like screenshot capture, regex, file watching, metadata parsing, and a Model Context Protocol (MCP) server for AI agent integration; (2) a 1C:Enterprise configuration (tester/) with catalogs, documents, common modules, and forms implementing scenario lifecycle management, execution engine with debugging, job scheduling, error logging, and report generation; and (3) a VS Code extension (addon.vscode/) for editing scenarios with syntax highlighting, code completion, and direct test execution. The system supports distributed execution via agent computers, file system synchronization with external editors (EDT, VS Code), version control through git integration, and role-based access control. Notable patterns include a bilingual API (English/Russian method aliases), a fluent assertion library, a custom JSON diff engine for UI state comparison, and an XML log transpiler that converts recorded user actions into executable scripts. Documentation is extensive, including a separate wiki site built with MkDocs. The repository is actively maintained with frequent releases, though it shows medium technical drift due to some outdated dependencies in the VS Code extension and use of platform-specific workarounds.
The LLM identified 4 files worth highlighting for reuse:
A custom JSON comparison engine that produces structured, path-based diffs between two JSON objects. It recursively compares properties and reports additions, removals, and changes with full dot-notation paths (e.g., 'form.items[0].name'). This is used in the testing framework to compare UI state snapshots for assertions. The implementation is isolated within the native addon, depends only on standard types and the internal JSON builder, and could be extracted as a standalone C++ library for any application needing JSON diffing. It demonstrates non-obvious skill in recursive tree comparison and structured output formatting.
A domain-specific language parser for conditional appearance rules of UI controls. It parses text-based rules that specify visibility, enablement, title, and access settings based on field values and platform context (e.g., 'Enabled = (ThisField.Value = 1) and not (ThisObject.AnotherField = 0)'). The parser handles boolean expressions, parenthesized groups, and nested conditions. It is self-contained within the native addon and demonstrates skill in building a small DSL parser for a specific business need. Could be reused in any project requiring rule-based UI customization.
A reusable BSL module for comparing tabular data (e.g., test results) against expected values. It supports CSV-like string format, parameter substitution, wildcard matching, and strict column order comparison. The module handles nested tables, empty value semantics, and provides detailed mismatch messages. It is used by assertion forms (CheckTable) and the recording transpiler. The pattern is isolated with few dependencies (standard collections, conversion) and could be extracted for any 1C project needing table comparison in tests or data validation.
Converts XML action logs (recorded UI interactions) into executable BSL script code using the tester API. It features a hardcoded bilingual dictionary that maps English method names (e.g., 'Connect', 'Click') to Russian aliases (e.g., 'ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ', 'ΠΠ°ΠΆΠ°ΡΡ'), allowing scenarios to be written in either language. The transpiler uses a simple stack-based XML parser and demonstrates a non-obvious pattern for generating maintainable test code from a recorded format. The dictionary itself is a reusable asset for any 1C project requiring bilingual API support.