• Will Chen's avatar
    fix: update E2E tests for plan mode questionnaire and chat history (#2507) · 2661ba3b
    Will Chen 提交于
    ## Summary
    - Fix plan_mode questionnaire test to use `getByText` for Base UI Radio
    components (hidden inputs can't be clicked with
    `getByRole`/`getByLabel`)
    - Update chat_history tests for chronological order (oldest first)
    - Add `clearChatInput()` and `openChatHistoryMenu()` helpers with
    `toPass()` retry logic for reliable Lexical editor interactions
    - Add `Timeout.SHORT` constant for quick retries
    - Update AGENTS.md with Lexical editor and Base UI Radio testing tips
    
    ## Test plan
    - [x] `npm run e2e e2e-tests/plan_mode.spec.ts` passes
    - [x] `npm run e2e e2e-tests/chat_history.spec.ts` passes
    - [x] `npm test` passes
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    <!-- devin-review-badge-begin -->
    
    ---
    
    <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2507"
    target="_blank">
      <picture>
    <source media="(prefers-color-scheme: dark)"
    srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1">
    <img
    src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1"
    alt="Open with Devin">
      </picture>
    </a>
    <!-- devin-review-badge-end -->
    
    <!-- CURSOR_SUMMARY -->
    ---
    
    > [!NOTE]
    > **Low Risk**
    > Changes are confined to E2E tests, developer docs, and pre-commit
    tooling; product/runtime logic is untouched, with minimal risk beyond
    potential CI formatting or test expectation drift.
    > 
    > **Overview**
    > Stabilizes Playwright E2E coverage around plan mode and chat history
    by switching Base UI Radio selection to clicking visible label text and
    by adding Lexical-safe input helpers (`clearChatInput`,
    `openChatHistoryMenu`) with short `toPass()` retries.
    > 
    > Updates chat history assertions to match **chronological ordering**
    (oldest-first) and refreshes related snapshots/docs. Also tightens
    pre-commit formatting via `lint-staged` (limits `oxfmt` to a narrower
    glob) and simplifies the Husky `pre-commit` hook to only run
    `lint-staged`.
    > 
    > <sup>Written by [Cursor
    Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
    11c4809a66819c53a19042450b5da93ef3f1b29c. This will update automatically
    on new commits. Configure
    [here](https://cursor.com/dashboard?tab=bugbot).</sup>
    <!-- /CURSOR_SUMMARY -->
    
    <!-- This is an auto-generated description by cubic. -->
    ---
    ## Summary by cubic
    Fixes flaky E2E tests for plan mode and chat history by using reliable
    selectors and Lexical-safe helpers. Radios can be selected via visible
    labels, and chat history tests now match chronological order.
    
    - **Bug Fixes**
    - Plan mode: select Base UI Radio by clicking label text with getByText.
    - Chat history: update tests for oldest-first order and default
    selection behavior.
    - Helpers and docs: add clearChatInput/openChatHistoryMenu with toPass
    retries and Timeout.SHORT; update AGENTS.md with Lexical and Base UI
    tips.
      - Pre-commit: remove YAML from oxfmt to fix hook failures.
    
    <sup>Written for commit b03d72d2605d98201e7d68231ac381ffb7d64f63.
    Summary will update on new commits.</sup>
    
    <!-- End of auto-generated description by cubic. -->
    
    ---------
    Co-authored-by: 's avatarClaude Opus 4.5 <noreply@anthropic.com>
    Co-authored-by: 's avatargithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
    2661ba3b
名称
最后提交
最后更新
.claude 正在载入提交数据...
.cursor/rules 正在载入提交数据...
.devcontainer 正在载入提交数据...
.github 正在载入提交数据...
.husky 正在载入提交数据...
.storybook 正在载入提交数据...
assets 正在载入提交数据...
docs 正在载入提交数据...
drizzle 正在载入提交数据...
e2e-tests 正在载入提交数据...
makers 正在载入提交数据...
packages/@dyad-sh 正在载入提交数据...
scaffold 正在载入提交数据...
scripts 正在载入提交数据...
shared 正在载入提交数据...
src 正在载入提交数据...
testing 正在载入提交数据...
tools 正在载入提交数据...
worker 正在载入提交数据...
workers/tsc 正在载入提交数据...
.cursorignore 正在载入提交数据...
.env.example 正在载入提交数据...
.eslintrc.json 正在载入提交数据...
.gitattributes 正在载入提交数据...
.gitignore 正在载入提交数据...
.oxfmtrc.json 正在载入提交数据...
.oxlintrc.json 正在载入提交数据...
.prettierignore 正在载入提交数据...
.prettierrc 正在载入提交数据...
AGENTS.md 正在载入提交数据...
CLA.md 正在载入提交数据...
CLAUDE.md 正在载入提交数据...
CONTRIBUTING.md 正在载入提交数据...
LICENSE 正在载入提交数据...
README.md 正在载入提交数据...
SECURITY.md 正在载入提交数据...
biome.json 正在载入提交数据...
components.json 正在载入提交数据...
drizzle.config.ts 正在载入提交数据...
forge.config.ts 正在载入提交数据...
forge.env.d.ts 正在载入提交数据...
index.html 正在载入提交数据...
lint-staged.config.js 正在载入提交数据...
merge.config.ts 正在载入提交数据...
package-lock.json 正在载入提交数据...
package.json 正在载入提交数据...
playwright.config.ts 正在载入提交数据...
tsconfig.app.json 正在载入提交数据...
tsconfig.json 正在载入提交数据...
tsconfig.node.json 正在载入提交数据...
vite.main.config.mts 正在载入提交数据...
vite.preload.config.mts 正在载入提交数据...
vite.renderer.config.mts 正在载入提交数据...
vite.worker.config.mts 正在载入提交数据...
vitest.config.ts 正在载入提交数据...
windowsSign.ts 正在载入提交数据...