✔ every documented CLI command works with the source kit alone (58029.2971ms)
﹣ data import browser: XLSX stays local, rules update, exports work and layouts do not overflow (0.5553ms) # SKIP
✔ data import: quoted CSV, multiline values, duplicate headings and type inference are deterministic (2.9455ms)
✔ data import: required, allowed, type, combined-column and duplicate checks separate rejected rows (1.2512ms)
✔ data import: generated Zod, TypeScript and Pydantic use mapped fields without executable input (1.1927ms)
✔ data import: CSV exports neutralize spreadsheet formulas while numeric values stay numeric (0.1784ms)
✔ document: the independently specified half-up fixture totals exactly 840.00 (5.037ms)
✔ document: rounds each line before summing and handles zero/full discount without compounding tax (0.3157ms)
✔ document: hidden pricing is absent from data, calculations, template and PDF inputs (1.8341ms)
✔ document: all templates and page sizes produce strict, reusable, JSON-compatible models (4.0773ms)
✔ document: rejects invalid numbers, dates, excessive discounts and unsafe or unsupported imported values (3.7577ms)
✔ document: accepts a bounded PNG signature and rejects SVG, remote, type-spoofed, truncated and oversized images (1.6203ms)
✔ document PDF: all three templates, both page sizes, accented text and pricing rules survive real pdfme generation (6463.9698ms)
✔ document PDF: unsupported glyphs explain the failure while JSON preserves the original draft (10.5015ms)
✔ document PDF: 60 long line items and French notes paginate without losing the final item or notes (693.6836ms)
﹣ industry preset journeys preserve drafts, confirm replacement once, render real exports and send no entered content (0.4809ms) # SKIP
✔ industry templates use supported models and retain editable data through the existing JSON import validators (5.9983ms)
✔ quotation totals have an independently checked baseline and remain editable; work order exports contain no prices (1.0843ms)
✔ logistics template has connected approval and failed-delivery paths and round-trips between guided and source modes (0.7477ms)
✔ only a single known ID for the current tool is accepted and each request gets an independent copy (0.1869ms)
✔ actual Mermaid engine renders all examples, safe characters, sequence diagrams and real exports (6185.4315ms)
✔ SVG sanitization removes active elements, handlers, external markers and arbitrary CSS (482.5025ms)
✔ portable flowchart labels remain centred inside their nodes after renderer CSS is removed (904.2484ms)
✔ source editing keeps last valid preview, disables stale exports and recovers the preserved graph (1724.7598ms)
✔ keyboard form edits, local draft opt-in, revision handling and 390px layout work (1751.7176ms)
✔ unsupported glyphs give an actionable error while editable data remains exportable (964.9958ms)
Process Mapper 100-node/200-edge render: 571 ms, 215×10066, 914452 SVG bytes.
✔ a measured 100-node / 200-edge process renders within the output boundary (822.4071ms)
✔ all four business examples validate and compile deterministically (4.8743ms)
✔ business-process loops are accepted without planner dependency rules (0.3376ms)
✔ duplicate IDs, dangling connections and blank step names are rejected (0.9217ms)
✔ separate groups and isolated steps produce useful warnings, not false invalidity (0.3538ms)
✔ labels cannot add Mermaid statements, HTML, styling or links (0.2716ms)
✔ encoding keeps accented business text and escapes the entity delimiter exactly once (0.114ms)
✔ editing source preserves a recoverable graph without pretending to reverse parse (0.3894ms)
✔ source-only imports without a graph do not fabricate guided data (0.4727ms)
✔ JSON exports reopen losslessly in both editing modes (0.5389ms)
✔ unknown versions, extra configuration and prototype-pollution payloads are rejected (0.9765ms)
✔ malformed, oversized, cyclic and non-plain inputs fail without mutation (0.4142ms)
✔ safe flowchart shapes and labelled arrows are supported (0.1191ms)
✔ sequence participants, notes, loops and messages are supported (0.3043ms)
✔ source-mode security boundary rejects renderer configuration and executable features (0.1587ms)
✔ source limits reject oversized UTF-8 and excessive nodes/connections (0.3892ms)
✔ 100 nodes and 200 edges remain an accepted bounded case (2.2027ms)
✔ generated IDs remain stable and collision-free after deletion (0.1123ms)
✔ a publishable JSON Schema identifies both modes and rejects extra keys (1.9557ms)
Planner one-day bar widths: Day 45, Week 20, Month 4.
✔ The actual Frappe bridge uses distinct Day, Week and Month date scales (8719.447ms)
﹣ Planner production UI, sandbox rendering, date changes and exports (1.107ms) # SKIP
﹣ Planner mobile, storage failures and invalid imports preserve current data (0.367ms) # SKIP
✔ PDF font supports English, French, decimal and business punctuation (114.444ms)
✔ unsupported glyphs fail clearly before a misleading PDF is produced (116.0778ms)
✔ generated Planner PDFs reopen and contain separate readable timeline pages (2992.7788ms)
✔ planner independently matches the manager-approved arithmetic fixture (3.9489ms)
✔ task costs round half-up before addition, without floating-point errors (1.2167ms)
✔ zero-cost work, zero hours and zero contingency remain valid (0.4476ms)
✔ all three illustrative templates validate with no schedule conflict (0.7403ms)
✔ one-day tasks count inclusive calendar and working days (0.4629ms)
✔ date-only calendar spans cross DST, year and leap boundaries (0.4996ms)
✔ finish-to-start conflicts warn without silently rescheduling tasks (0.2661ms)
✔ self, missing, duplicate and cyclic predecessor links are rejected (0.4981ms)
✔ task order does not change identity, dependencies or budget (0.4175ms)
✔ empty plans and duplicate task IDs are rejected (0.6227ms)
✔ invalid numbers, future schema versions and unknown properties are rejected (1.0768ms)
✔ end-before-start and non-existent dates are rejected (0.6035ms)
✔ prototype keys, complex input and excessive task counts are rejected (1.8137ms)
✔ JSON save and reopen preserve decimal values, task IDs and order (0.235ms)
✔ CSV neutralizes malicious text, quotes commas/newlines and keeps numbers numeric (0.4613ms)
✔ task data cannot smuggle Frappe configuration into JSON import (0.2849ms)
✔ Frappe end callbacks use local date parts without subtracting another day (0.3075ms)
✔ Frappe labels are escaped in a separate rendering copy (0.2179ms)
✔ independent review: century boundaries and large decimal task amounts use calendar and integer expectations (4.5459ms)
✔ independent review: control-prefixed spreadsheet formulas remain inert and imported engine configuration is rejected (3.9826ms)
✔ independent review: guided delimiters stay text and source mode forbids resources and executable directives (0.7796ms)
﹣ independent review browser: restore never opts into storage and only an editable JSON save clears unsaved-work protection (0.1961ms) # SKIP
﹣ independent review browser: edits during delayed PDF generation are preserved and an outdated PDF is not downloaded (0.0973ms) # SKIP
ℹ tests 74
ℹ suites 0
ℹ pass 68
ℹ fail 0
ℹ cancelled 0
ℹ skipped 6
ℹ todo 0
ℹ duration_ms 97707.0212
