test(app): cover notes controls in mobile landscape - #17548
Conversation
|
CI status after publication:
AI provider/model: OpenAI / gpt-5.6-sol |
lalalune
left a comment
There was a problem hiding this comment.
I reviewed exact draft head de5945e7219bb2d13956aed8d7946d2e0f7becd0 and manually inspected the linked screenshots, both videos, console/network logs, observations, full audit report, and OCR report. The behavioral proof is good: the red control reproduces the trapped composer; the exact test drives the 844x390 real renderer bundle with the overlay present, moves the Notes root to scrollTop=204, reaches/selects green, posts the correct create-note payload, receives 200, and renders the note.
One test assertion should change before promotion: expect(composerPosition).toBe("static") encodes the current CSS implementation, not the acceptance contract. A composer can remain in normal root scroll flow with position: relative, and a future correctly bounded sticky layout could also satisfy reachability. The test already has the stronger behavioral guards: the root actually scrolls, both controls are pointer-reachable, the interaction succeeds, and the note renders. Please remove the exact static requirement (and the corresponding observation), or replace it with a geometry/scroll-owner invariant that fails only when controls become trapped.
The draft is also stale and its own body records repository gates that did not pass. Rebase onto current develop after the audit repair, rerun the focused red/green control, full audit:app, OCR, and root verify, and update the evidence head. Do not promote while any underlying report retains needs-work/broken or repository verification failures. The attached existing visual evidence itself is coherent and supports the scoped behavior.
Relates to
Relates to #17114.
Definition of Done: full standard in
CONTRIBUTING.md.developand is rebased onto the latestorigin/developwith zero conflicts (
git fetch origin && git rebase origin/develop).bun installandbun run verifywere run after sync, or any failure isrecorded below with the exact unrelated blocker.
evidence attached below.
Sync with develop
origin/develop; zero conflicts.bun run verifypasses post-sync, or the exact unrelated blocker isdocumented in Known gaps / failures below.
Risks
Low. This is a test-only change in one Playwright UI-smoke spec. It adds no production runtime, API, schema, persistence, or dependency changes. The main risk is future fixture drift in the real-bundle test path.
Background
What does this PR do?
Adds a focused 844×390 Notes regression that keeps the real chat overlay visible, scrolls through the root Notes flow, selects the green composer color, saves a note, and proves both controls are pointer-reachable. It also asserts the composer remains
position: static, the root actually scrolls, thecreate-noterequest payload is correct, the response is 200, the created note renders, and browser diagnostics stay clean.The production repair is already present on
develop; this PR supplies the missing interaction regression and reproducible evidence. A red control temporarily restored the historical sticky composer locally and failed on pointer reachability; that temporary production edit was reverted and is not part of this diff.What kind of change is this?
Bug-fix regression coverage (non-breaking, test-only).
Documentation changes needed?
My changes do not require a project documentation update.
Testing
Where should a reviewer start?
Start with
packages/app/test/ui-smoke/plugin-views-interaction.spec.ts, testnotes mobile landscape — composer color and save stay reachable.Detailed testing steps
ELIZA_UI_SMOKE_SKIP_BUILD=1 E2E_RECORD=1 CI=1 bun run --cwd packages/app test:e2e -- --project=chromium test/ui-smoke/plugin-views-interaction.spec.ts --grep "notes mobile landscape"(1/1, exact committed-head web bundle).position: sticky; top: 12pxcomposer style temporarily restored, the same interaction failed because the green color control was not pointer-reachable. The temporary edit was then reverted.bun run --cwd packages/app build:web(9,374 modules; 404 assets; chunk-safety verification passed; build revisionde5945e7219b).bun run --cwd plugins/plugin-simple-views test(6 files, 39 tests).bun run --cwd plugins/plugin-simple-views typecheck.bun run --cwd plugins/plugin-simple-views lint:check(30 files).bun run --cwd packages/app typecheck.bun run build(176/176 tasks; 27/27 authoritative view bundles).CI=1 bun run --cwd packages/app audit:app:verifycompleted 254 tests and 252 findings: broken=0, needs-work=2, needs-eyeball=25, good=225, minimalism/hover/density probe failures=0. Notes passed all four audited viewports. The final aggregate check failed only for two current-developmobile-portrait launcher findings listed below.ELIZA_MVP_OCR_ENGINE=packaged bun run --cwd packages/app audit:ocr(252 views; verified=96, broken=0, needs-eyeball=156).bun run verifycompleted its main graph at 579/579, then currentdevelop'saudit:scriptsreported five orphan-file findings listed below. The remaining audits were run individually and passed: script inventory (123 files, 0 orphan), view-bundle inventory (27 targets, 0 exclusions), focused-test audit (8,838 files, 0 focused tests and 0 orphaned skips), and dist typecheck (201 aliases, 28 consumer configs).Evidence Gate
Any change testable on the frontend is not mergeable without a video walkthrough,
before/after screenshots, and logs. If you did not attach them, say why.
Attach each applicable artifact inline in this PR (drag-and-drop into the
description or a comment), or write
N/A - <reason>on the row. Do not leaveevidence rows blank. Videos must be MP4 (GitHub renders them inline);
prefer JPG over PNG for screenshots. Do not commit evidence files to the
repo.
Evidence Details
Real LLM-call trajectory
N/A - no agent, action, provider, prompt, or model behavior changes.
Backend + frontend logs
Backend: N/A - test-only browser coverage with deterministic route fixtures; no backend production path changes.
Frontend: console log and network log. The network trace includes
POST /api/views/notes/interact→ 200; the console has no warnings, errors, or uncaught page diagnostics.Screenshots (before / after) + video walkthrough
All files below are direct GitHub release assets from the author fork; no evidence is committed to the source branch.
Before
Red-control screenshot and red-control MP4. They show the historical sticky composer trapping the lower controls at 844×390 with the chat overlay visible.
After
Reachable controls, created note, and full-audit Notes mobile-landscape capture. They show the green color selector and enabled Add note control reachable in root scroll flow, followed by the rendered green note.
Walkthrough video
Exact-head walkthrough MP4 shows boot, Notes navigation, color selection, save, and the rendered note at 844×390.
Additional machine-readable proof: interaction observations, full app audit report, and packaged OCR triage.
Audio / voice walkthrough
N/A - no voice, transcript, TTS, STT, or omnivoice behavior changes.
Known gaps / failures
developmobile-portrait launcher findings:builtin-viewsandbuiltin-rolodex, where the global chat overlay overlaps the last launcher icons. Notes itself passed desktop landscape, mobile landscape, mobile portrait, and iPad portrait with zero broken/probe/OCR findings.bun run verifyreaches 579/579 tasks, thenaudit:scriptsflags five untouched current-developfiles:packages/scripts/ci-workflow-invariants.test.mjs,develop-pr-aggregate.test.mjs,local-inference-attest.test.mjs,local-inference-performance-check.test.mjs, andscript-test-isolation.test.mjs. The immediately rerun canonical script inventory reports 123 files and 0 orphans.mvp:visual-verify -- --strict --require-baseline-statescheck is also blocked by stale current-developvisual-baseline state: 11 expectation failures, 124 missing required historical states, and 17 screenshots without baselines. This test-only branch does not touch those baselines.AI provider/model: OpenAI / gpt-5.6-sol
Client / agent tooling: Codex desktop
Contribution skill revision: 4b0bad5:packages/skills/skills/contribute-to-eliza
Attribution status: self-reported
— [codex-notes-mobile-landscape]