<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Framework-Neutral on RockB</title><link>https://baeseokjae.github.io/tags/framework-neutral/</link><description>Recent content in Framework-Neutral on RockB</description><image><title>RockB</title><url>https://baeseokjae.github.io/images/og-default.png</url><link>https://baeseokjae.github.io/images/og-default.png</link></image><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 07 Sep 2026 22:02:43 +0000</lastBuildDate><atom:link href="https://baeseokjae.github.io/tags/framework-neutral/index.xml" rel="self" type="application/rss+xml"/><item><title>Browser Automation Agent Workflows: Framework-Neutral Samples from WorkCanvas Studio</title><link>https://baeseokjae.github.io/posts/workcanvas-browser-automation-agent-workflows-2026/</link><pubDate>Mon, 07 Sep 2026 22:02:43 +0000</pubDate><guid>https://baeseokjae.github.io/posts/workcanvas-browser-automation-agent-workflows-2026/</guid><description>Framework-neutral browser automation agent workflow samples from WorkCanvas Studio: reproducible Standard HTML and React fixtures with evidence-based completion.</description><content:encoded><![CDATA[<p>Browser automation agent workflows fail most often not because the AI lacks skill, but because the interfaces it targets were never designed with agent reliability in mind. WorkCanvas Studio is an open-source, synthetic fixture library that gives you two realistic business screens — a Standard HTML inventory inquiry and a React purchase-order form — plus four public workflow plans, so you can evaluate and regression-test agents against the precise controls that break them, without credentials or production data.</p>
<h2 id="what-is-workcanvas-studio">What Is WorkCanvas Studio?</h2>
<p>WorkCanvas Studio is a TypeScript project created on 2026-08-13 and last updated 2026-09-02, hosted on GitHub under the <code>devlesss</code> organization. It is a deliberately small, inspectable collection of realistic business-interface samples built as regression fixtures for browser workflow automation. The public edition ships two applications: a <strong>Standard HTML inventory inquiry screen</strong> and a <strong>React purchase-order screen</strong>. Around those two screens sit four public workflow plans (each in English and Korean), a Playwright regression suite, and a design philosophy that prioritizes reliability over convenience.</p>
<p>The project requires Node.js 22 or later. There are no external services, no authentication, and no live backend dependencies — everything runs locally, so a workflow either reproduces cleanly or fails deterministically. Its status as a young (roughly three-week-old) repository means its value is methodological rather than historical: it is a template for how to build agent-evaluable interfaces, not a large existing corpus.</p>
<h2 id="why-framework-neutral-browser-automation-matters-for-ai-agents">Why Framework-Neutral Browser Automation Matters for AI Agents</h2>
<p>The core insight of WorkCanvas Studio is that automation should be expressed in <strong>framework-neutral semantics</strong>: prefer labels, roles, and observable state changes over generated DOM paths or coordinate-based selectors. A locator like <code>#app &gt; div:nth-child(3) &gt; form &gt; input[type=&quot;text&quot;]</code> is brittle — it breaks the moment any developer reorders a div. A semantic reference like <code>input[aria-label=&quot;Item code&quot;]</code> or &ldquo;the field labeled Item code&rdquo; survives across framework migrations.</p>
<p>This matters because a serious AI automation agent will eventually be pointed at both a React SPA and a plain HTML screen in the same week. If the agent&rsquo;s approach hard-codes framework assumptions, it will succeed on one and fail on the other. Framework-neutral semantics give the agent a single strategy that works everywhere: resolve a control by its label, role, stable ID, or test ID; act on the visible dialog scope; then verify the observable postcondition.</p>
<p>WorkCanvas Studio demonstrates this by making &ldquo;equivalent actions testable across frameworks.&rdquo; The inventory lookup on the Standard HTML screen and the vendor search on the React screen exercise the same underlying interaction pattern — open dialog, type a query, select a result, confirm the dialog closes — using the same semantic approach in two technologies.</p>
<h2 id="the-controls-that-break-workflow-agents">The Controls That Break Workflow Agents</h2>
<p>WorkCanvas Studio was built specifically to expose the interaction patterns that reliably derail automation agents. Understanding them is the first step to designing interfaces — or agent instructions — that survive them.</p>
<ul>
<li><strong>Controlled inputs.</strong> In React, an input&rsquo;s displayed value is governed by component state. If an agent sets a value in a way that bypasses the normal <code>input</code>/<code>change</code> event pipeline, React&rsquo;s state never updates and the value silently reverts. The purchase-order sample verifies that entered text actually persists after a state update.</li>
<li><strong>Search dialogs.</strong> A modal lookup introduces a second &ldquo;Query&rdquo; button that competes with the main form&rsquo;s &ldquo;Query&rdquo; button. Agents must scope their targeting to the <strong>visible <code>role=dialog</code> surface</strong>, or they will click the wrong control.</li>
<li><strong>Result selection.</strong> After a search returns matches, selecting the exact row is an action with a postcondition — the dialog should close and the selection should be reflected back in the originating form.</li>
<li><strong>Date fields.</strong> Date inputs are format-sensitive and frequently rendered as composite controls. They need normalization and a visible confirmation that the value was accepted.</li>
<li><strong>Query result tables.</strong> Verifying the returned rows requires reading grid state, not just confirming a network call ran.</li>
<li><strong>Dynamic grid rows.</strong> Adding a row must change the table by <strong>exactly one</strong> row — and detail inputs must be bound to the row the Add action just created, not an earlier one.</li>
</ul>
<p>These are the exact friction points that turn a &ldquo;successful click&rdquo; into a silent failure.</p>
<h2 id="the-two-sample-workflows-standard-html-inventory-and-react-purchase-order">The Two Sample Workflows: Standard HTML Inventory and React Purchase Order</h2>
<p>The Standard HTML inventory plan walks an agent through a full workflow: select warehouse <strong>Seoul Warehouse</strong>, open the item search dialog, query <strong>ITEM-001</strong>, select the exact result, confirm the dialog closes, verify the selection is reflected in the main form, set item type <strong>Raw material</strong>, base date <strong>2026-08-04</strong>, stock status <strong>Available</strong>, zero-stock <strong>false</strong>, run the query, verify the result table, then add one row and confirm the row count increased by exactly one.</p>
<p>The React purchase-order plan mirrors that structure on a modern stack: enter order date <strong>2026-08-04</strong>, select account type <strong>Raw material</strong>, open the vendor search modal, query <strong>Wonjin</strong>, select the exact <strong>V001 · Wonjin</strong> result, confirm the modal closes, verify reflection in the read-only vendor field, set procurement type <strong>Domestic purchase</strong>, enter item/notes and verify React state retains the value, add one detail row, confirm row count +1, then bind <strong>PART-001</strong>, quantity <strong>10</strong>, and urgent <strong>false</strong> to the new row.</p>
<table>
  <thead>
      <tr>
          <th>Step</th>
          <th>Standard HTML Inventory</th>
          <th>React Purchase Order</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Record type</td>
          <td>Inventory item lookup</td>
          <td>Purchase order creation</td>
      </tr>
      <tr>
          <td>Search control</td>
          <td>Item dialog, query ITEM-001</td>
          <td>Vendor modal, query Wonjin</td>
      </tr>
      <tr>
          <td>Selection</td>
          <td>Exact row, dialog closes</td>
          <td>Exact V001 · Wonjin, modal closes</td>
      </tr>
      <tr>
          <td>Reflection</td>
          <td>Item in main form</td>
          <td>Vendor in read-only field</td>
      </tr>
      <tr>
          <td>Framework hazard</td>
          <td>Dialog scope ambiguity</td>
          <td>Controlled input state retention</td>
      </tr>
      <tr>
          <td>Completion evidence</td>
          <td>Table row count +1</td>
          <td>Detail row bound and count +1</td>
      </tr>
  </tbody>
</table>
<p>Both plans define judgment rules and stop/report conditions, so an agent knows exactly when to stop and why: a control it cannot identify, a dialog that never appears, an item not reflected, a row count that does not increase by exactly one, or a destructive/external submission requirement.</p>
<h2 id="evidence-before-completion-verifying-postconditions">Evidence Before Completion: Verifying Postconditions</h2>
<p>The single most important design principle in WorkCanvas Studio is <strong>evidence before completion</strong>: never treat a successful click as completion. Each workflow step ends with an observable postcondition that must be verified before the agent reports the step done.</p>
<ul>
<li>Opening a lookup must produce a <strong>visible dialog</strong>.</li>
<li>Selecting a result must be <strong>reflected in the originating form</strong>.</li>
<li>Adding a row must increase the table by <strong>exactly one</strong>.</li>
<li>A controlled input must <strong>retain its value</strong> after a state update.</li>
</ul>
<p>This converts &ldquo;the agent clicked the button&rdquo; — which proves nothing about outcome — into &ldquo;the agent clicked and the UI state changed as the user intended.&rdquo; On the query side, the plans make one explicitly valid outcome clear: an <strong>empty settled query result is a legitimate zero-result outcome</strong>, not a failure. Evidence is about confirming the postcondition that the workflow contract demands, whatever that postcondition happens to be.</p>
<h2 id="how-to-run-workcanvas-studio-locally">How to Run WorkCanvas Studio Locally</h2>
<p>Running the project requires Node.js 22 or later and takes a few minutes:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>git clone https://github.com/devlesss/WorkCanvas_Studio.git
</span></span><span style="display:flex;"><span>cd WorkCanvas_Studio
</span></span><span style="display:flex;"><span>npm install
</span></span><span style="display:flex;"><span>npx playwright install chromium
</span></span><span style="display:flex;"><span>npm run dev
</span></span></code></pre></div><p>Then open <code>http://127.0.0.1:5173/</code> to reach both sample screens. Both samples include an English/Korean language selector, while the automation-facing IDs, test hooks, and control values remain stable across languages — which makes the project useful for localization testing of agents.</p>
<p>For verification, <code>npm test</code> builds the React sample and runs browser tests against both frameworks, and <code>npm run capture:demos</code> regenerates the public screenshots and source recordings.</p>
<h2 id="using-the-public-workflow-plans-english-and-korean">Using the Public Workflow Plans (English and Korean)</h2>
<p>The repo ships four public workflow plans under <code>plans/</code>: <code>standard-html-inventory</code> and <code>react-purchase-order</code>, each in English and Korean. Because the sample URLs open directly on the target screen, the plans include no login or screen-navigation section — they are pure workflow descriptions.</p>
<p>Each plan separates the same five concerns: <strong>inputs</strong>, <strong>workflow steps</strong>, <strong>judgment rules</strong>, <strong>completion evidence</strong>, and <strong>stop/report conditions</strong>. That structure means a plan doubles as both an AI agent prompt and a human QA checklist. The bilingual editions let you compare how the same workflow is expressed in English and Korean for localization testing of agent instruction-following.</p>
<p>All values are synthetic and safe for public testing — warehouse &ldquo;Seoul Warehouse,&rdquo; item &ldquo;ITEM-001,&rdquo; vendor &ldquo;Wonjin,&rdquo; part &ldquo;PART-001.&rdquo; Nothing in the repo references real credentials, private URLs, or production memory.</p>
<h2 id="workcanvas-studio-as-a-playwright-regression-fixture-library">WorkCanvas Studio as a Playwright Regression Fixture Library</h2>
<p>Because framework-neutral semantics map cleanly onto Playwright&rsquo;s selector model (role-based and label-based locators), the two sample apps work as a <strong>fixture library</strong> even without an AI planner. The design makes them useful for:</p>
<ul>
<li><strong>Playwright regression fixtures</strong> — the existing suite verifies popup visibility, form state, and exact row-count changes.</li>
<li><strong>Locator research</strong> — testing which selectors survive React state updates and dialog scope changes.</li>
<li><strong>QA training</strong> — teaching testers how to reason about evidence rather than clicks.</li>
<li><strong>Automation regression testing</strong> — a stable, reproducible target to run your agent against after every change.</li>
</ul>
<p>The judgment rules codified in the plans — resolve controls by label/role/stable ID/test ID before coordinates, scope dialog controls to the visible <code>role=dialog</code>, bind detail inputs to the row created by the current Add action, check postconditions — are exactly the engineering decisions you want your test suite to enforce.</p>
<h2 id="roadmap-and-what-comes-next">Roadmap and What Comes Next</h2>
<p>The WorkCanvas Studio roadmap signals where the project is heading, and each item is a useful hook for future automation planning:</p>
<ul>
<li><strong>Vue and Web Components samples</strong> — broadening framework coverage beyond Standard HTML and React.</li>
<li><strong>Popup patterns</strong> — handling the window-popup interactions many business apps still rely on.</li>
<li><strong>Empty query results</strong> — formalizing the zero-result outcome as a first-class testable case.</li>
<li><strong>Nested grids</strong> — more complex row/column relationships within dynamic tables.</li>
<li><strong>Framework-neutral action/evidence schemas</strong> — standardizing how actions and their postconditions are described across frameworks.</li>
<li><strong>Benchmark plans</strong> — using the fixtures as a scored evaluation baseline for browser automation agents.</li>
</ul>
<h2 id="who-should-use-workcanvas-studio">Who Should Use WorkCanvas Studio</h2>
<p>WorkCanvas Studio is most valuable for three groups. <strong>AI agent developers</strong> get a clean, reproducible target to evaluate whether their browser agent truly verifies outcomes rather than just clicking through. <strong>QA and automation engineers</strong> get a fixture library for locator research and regression testing that covers the exact controls that fail in production. <strong>Platform and product teams</strong> designing business interfaces get a template for what &ldquo;agent-friendly&rdquo; means — stable IDs, semantic labels, clearly scoped dialogs, and observable state changes.</p>
<p>If you are evaluating a browser automation agent, building an evaluation benchmark, or teaching reliable UI automation, WorkCanvas Studio gives you a small, synthetic, framework-neutral playground where a workflow either succeeds with verified evidence or fails for a reason you can actually see.</p>
<h2 id="faq">FAQ</h2>
<h3 id="what-is-workcanvas-studio-used-for">What is WorkCanvas Studio used for?</h3>
<p>It is an open-source collection of synthetic business-interface samples — a Standard HTML inventory inquiry and a React purchase-order screen — plus workflow plans and a Playwright regression suite, used to evaluate, test, and regression-check browser automation agents.</p>
<h3 id="why-are-the-samples-framework-neutral">Why are the samples framework-neutral?</h3>
<p>Because a reliable agent must work across Standard HTML and React (and, eventually, Vue and Web Components). Framework-neutral semantics — labels, roles, and state changes instead of generated DOM paths — give one strategy that works across technologies.</p>
<h3 id="what-does-evidence-before-completion-mean-in-browser-automation">What does &ldquo;evidence before completion&rdquo; mean in browser automation?</h3>
<p>It means never treating a successful click as success. Every step must verify an observable postcondition — the dialog is visible, the selection is reflected in the form, the row count increased by exactly one — before the step is marked complete.</p>
<h3 id="what-are-the-controls-that-break-workflow-agents">What are the controls that break workflow agents?</h3>
<p>Controlled inputs (React state not receiving updates), search dialogs (competing Query buttons and scope ambiguity), result selection, date fields, query result tables, and dynamic grid rows are the most common failure points covered by the samples.</p>
<h3 id="do-i-need-an-ai-planner-or-credentials-to-use-workcanvas-studio">Do I need an AI planner or credentials to use WorkCanvas Studio?</h3>
<p>No. All values are synthetic and public, there is no login, and the apps double as Playwright fixtures even without an AI planner. You only need Node.js 22 or later and a local clone.</p>
]]></content:encoded></item></channel></rss>