host: Playwright check for the relate picker (+ 2 bugs it caught)
Wire a browser check for the picker, run it against an ephemeral host server, and fix the two real bugs it surfaced. - lib/host/playwright/relate-picker.spec.js — drives login-redirect-return, JS candidate load + infinite scroll, debounced filter, and click-to-relate (asserting the relation shows on the post page). - lib/host/playwright/run-picker-check.sh — spins up an ephemeral host server (this worktree's binary + lib, temp persist), seeds a host post + 25 candidates, runs the spec in the main worktree's Playwright/chromium, tears everything down. No live-site dependency, no live-data pollution. 4/4 pass. Bugs the check caught: 1. Query params weren't %-decoded — dream's form parser decodes but its query parser doesn't, so a filter "Item 13" arrived as "Item%2013" and matched nothing. Fix: decode q with dream's own dr/url-decode in host/blog-relate- options. (+ conformance test for a spaced filter.) 2. A filter typed while a load was in flight got dropped (busy guard returned with no trailing fetch). Fix: a `pending` flag re-runs the load when the in-flight one finishes, coalescing to the latest query. 239/239 conformance; JS node --check clean. Verified live: spaced filter returns matches; served JS carries the pending-reload fix. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -261,6 +261,10 @@
|
||||
(let ((body (dream-resp-body (host-bl-app (host-bl-req "/alpha-post/relate-options?q=beta")))))
|
||||
(list (contains? body "Beta Post") (contains? body "Gamma Post")))
|
||||
(list true false))
|
||||
(host-bl-test "relate-options filter url-decodes q (spaces)"
|
||||
(let ((body (dream-resp-body (host-bl-app (host-bl-req "/alpha-post/relate-options?q=Beta%20Post")))))
|
||||
(list (contains? body "Beta Post") (contains? body "Gamma Post")))
|
||||
(list true false))
|
||||
(host-bl-test "relate-options excludes already-related candidates"
|
||||
(begin
|
||||
(host/blog-relate! "alpha-post" "beta-post")
|
||||
|
||||
Reference in New Issue
Block a user