Frontmatter
| id | 7262 |
| title | Enhance Development Workflow with Mandatory Unit Testing |
| state | Closed |
| labels | enhancementepic |
| assignees | tobiu |
| createdAt | Sep 27, 2025, 1:14 PM |
| updatedAt | Nov 4, 2025, 11:56 AM |
| githubUrl | https://github.com/neomjs/neo/issues/7262 |
| author | tobiu |
| commentsCount | 1 |
| parentIssue | null |
| subIssues | 7256 Refactor Playwright Setup Function for Test-Specific Configurations 7261 Convert core/Effect.mjs Siesta Test to Playwright 7260 Correct Playwright Output Directory 7258 Refactor Playwright Setup and Convert VdomHelper Test 7255 Refactor Playwright Test Configuration 7254 Install Playwright and Convert First Siesta Test 7263 Plan Remaining Siesta to Playwright Test Migrations 7267 Convert ClassConfigsAndFields.mjs Test from Siesta to Playwright 7268 Convert ClassSystem.mjs Test from Siesta to Playwright 7269 Convert CollectionBase.mjs Test from Siesta to Playwright 7270 Convert ManagerInstance.mjs Test from Siesta to Playwright 7271 Convert Rectangle.mjs Test from Siesta to Playwright 7272 Convert VdomCalendar.mjs Test from Siesta to Playwright 7273 Convert config/AfterSetConfig.mjs Test from Siesta to Playwright 7274 Convert config/Basic.mjs Test from Siesta to Playwright 7275 Convert config/CircularDependencies.mjs Test from Siesta to Playwright 7276 Convert config/CustomFunctions.mjs Test from Siesta to Playwright 7277 Convert config/Hierarchy.mjs Test from Siesta to Playwright 7278 Convert config/MemoryLeak.mjs Test from Siesta to Playwright 7279 Convert config/MultiLevelHierarchy.mjs Test from Siesta to Playwright 7280 Convert core/EffectBatching.mjs Test from Siesta to Playwright 7281 Convert form/field/AfterSetValueSequence.mjs Test from Siesta to Playwright 7282 Convert functional/Button.mjs Test from Siesta to Playwright 7283 Convert functional/HtmlTemplateComponent.mjs Test from Siesta to Playwright 7284 Convert functional/Parse5Processor.mjs Test from Siesta to Playwright 7285 Convert neo/MixinStaticConfig.mjs Test from Siesta to Playwright 7286 Convert state/createHierarchicalDataProxy.mjs Test from Siesta to Playwright 7287 Convert state/FeedbackLoop.mjs Test from Siesta to Playwright 7288 Convert state/Provider.mjs Test from Siesta to Playwright 7289 Convert state/ProviderNestedDataConfigs.mjs Test from Siesta to Playwright 7290 Convert vdom/Advanced.mjs Test from Siesta to Playwright 7291 Convert vdom/VdomAsymmetricUpdates.mjs Test from Siesta to Playwright 7292 Convert vdom/VdomRealWorldUpdates.mjs Test from Siesta to Playwright 7293 Convert vdom/layout/Cube.mjs Test from Siesta to Playwright 7294 Convert vdom/table/Container.mjs Test from Siesta to Playwright |
| subIssuesCompleted | 35 |
| subIssuesTotal | 35 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Nov 4, 2025, 11:56 AM |
Enhance Development Workflow with Mandatory Unit Testing
tobiu assigned to @tobiu on Sep 27, 2025, 1:14 PM
tobiu added sub-issue #7256 on Sep 27, 2025, 1:16 PM
tobiu added sub-issue #7261 on Sep 27, 2025, 1:16 PM
tobiu added sub-issue #7260 on Sep 27, 2025, 1:16 PM
tobiu added sub-issue #7258 on Sep 27, 2025, 1:17 PM
tobiu added sub-issue #7255 on Sep 27, 2025, 1:18 PM
tobiu added sub-issue #7254 on Sep 27, 2025, 1:18 PM
tobiu added sub-issue #7263 on Sep 27, 2025, 1:19 PM
tobiu added sub-issue #7266 on Sep 27, 2025, 2:05 PM
tobiu added sub-issue #7267 on Sep 27, 2025, 2:33 PM
tobiu added sub-issue #7268 on Sep 27, 2025, 2:36 PM
tobiu added sub-issue #7269 on Sep 27, 2025, 2:37 PM
tobiu added sub-issue #7270 on Sep 27, 2025, 2:39 PM
tobiu added sub-issue #7271 on Sep 27, 2025, 2:40 PM
tobiu added sub-issue #7272 on Sep 27, 2025, 2:47 PM
tobiu added sub-issue #7273 on Sep 27, 2025, 3:17 PM
tobiu added sub-issue #7274 on Sep 27, 2025, 3:19 PM
tobiu added sub-issue #7275 on Sep 27, 2025, 3:33 PM
tobiu added sub-issue #7276 on Sep 27, 2025, 3:34 PM
tobiu added sub-issue #7277 on Sep 27, 2025, 3:36 PM
tobiu added sub-issue #7278 on Sep 27, 2025, 3:37 PM
tobiu added sub-issue #7279 on Sep 27, 2025, 3:39 PM
tobiu added sub-issue #7280 on Sep 27, 2025, 3:40 PM
tobiu added sub-issue #7281 on Sep 27, 2025, 3:52 PM
tobiu added sub-issue #7282 on Sep 27, 2025, 3:54 PM
tobiu added sub-issue #7283 on Sep 27, 2025, 3:55 PM
tobiu added sub-issue #7284 on Sep 27, 2025, 3:56 PM
tobiu added sub-issue #7285 on Sep 27, 2025, 3:57 PM
tobiu added sub-issue #7286 on Sep 27, 2025, 3:58 PM
tobiu added sub-issue #7287 on Sep 27, 2025, 3:59 PM
tobiu added sub-issue #7288 on Sep 27, 2025, 4:01 PM
tobiu added sub-issue #7289 on Sep 27, 2025, 4:02 PM
tobiu added sub-issue #7290 on Sep 27, 2025, 4:04 PM
tobiu added sub-issue #7291 on Sep 27, 2025, 4:05 PM
tobiu added sub-issue #7292 on Sep 27, 2025, 4:06 PM
tobiu added sub-issue #7293 on Sep 27, 2025, 4:07 PM
tobiu added sub-issue #7294 on Sep 27, 2025, 4:09 PM
tobiu removed sub-issue #7266 on Nov 4, 2025, 11:56 AM

tobiu
Nov 4, 2025, 11:56 AM
resolved.
tobiu closed this issue on Nov 4, 2025, 11:56 AM
Scope
This epic outlines the plan to improve the stability of the Neo.mjs framework and enforce API consistency by integrating a mandatory testing step into the development workflow for all contributors, including AI agents.
The primary goal is to prevent regressions, especially in the complex core modules, and to ensure that all public-facing APIs (including configs) remain stable.
Top-Level Items
Migrate Unit Tests to a Node.js Runner:
Update Agent Workflow (
AGENTS.md):Migration Guide & Best Practices
CRITICAL: All contributors (human or AI) assigned to a test migration task MUST follow these instructions to ensure consistency and prevent regressions.
Analyze Existing Examples: Before starting, thoroughly review the already completed Playwright test
test/playwright/unit/VdomHelper.spec.mjsand its original Siesta counterparttest/siesta/tests/VdomHelper.mjs. This will provide the blueprint for structure, assertions, and setup.Do Not Remove Core Imports: The Playwright unit tests run in a Node.js environment, not a browser. They require explicit imports to set up the Neo.mjs environment.
import Neo from '../../../src/Neo.mjs'; import * as core from '../../../src/core/_export.mjs';Even if these imports appear "unused" in the test file, they are ESSENTIAL. They attach the
Neonamespace to theglobalThisobject. Removing them will cause the test environment to fail. DO NOT REMOVE THEM.Follow the Test Structure:
test.describe()to group tests for a class.test()for individual test cases.expect()from Playwright for assertions (toEqual,toBe, etc.).Update Status: Once a migration is complete and verified with
npm test, update the status of the corresponding ticket to "Done" and, if possible, update its status in this epic.Add Intent-Driven JSDoc: At the top of the main
test.describe()block for the test suite, add a JSDoc comment block. This block should include:@summarytag explaining the primary purpose of the test suite.Always Re-Assign After
setupClass: When defining a class locally for a test, you MUST re-assign the class variable to the return value ofNeo.setupClass(). This ensures you are using the final, fully processed constructor. Failure to do so can lead to subtle inheritance bugs in the Node.js test environment.Correct:
class MyTestClass extends Base { /* ... */ } MyTestClass = Neo.setupClass(MyTestClass); // Re-assignment is crucialIncorrect:
class MyTestClass extends Base { /* ... */ } Neo.setupClass(MyTestClass); // Missing re-assignment