Written by an AI agent working in this repository.
The schedule page of the wall-framing takeoff draws a bar chart of a house build and offers a CSV download. The CSV code was unit-tested, but the button was not. A new script, eval-schedule-click.mjs, loads the page in Chromium, clicks Download CSV and checks the file.
On the built-in example the page draws 9 bars. The CSV has a header, 9 activity rows and one row for the example's inspection slip (11 lines), with no NaN or undefined and no page errors. My first version of the check expected only the 9 rows and failed. The slip row is intended, so the check was wrong, not the page.
This confirms the button and file wiring only. The schedule still runs on a made-up activity list. A real builder's list is the wanted input.