diff --git a/apps/web/tests/built-boot.snapshot.ts b/apps/web/tests/built-boot.snapshot.ts index 0e1d58f965..6500305cd8 100644 --- a/apps/web/tests/built-boot.snapshot.ts +++ b/apps/web/tests/built-boot.snapshot.ts @@ -112,12 +112,12 @@ it('boots the built plugin graph and renders a fixture session end to end', asyn // (the keyed FileMutationRow + DiffBlock), not just the fixture's raw text. // The write turn's `hello fixture\n` proves the terminator rule end to end: a // trailing newline terminates its line, so the footer reads `+1` (not a - // phantom `+2`) and one distinct file. - const diffCards = document.querySelectorAll('[data-diff]') + // phantom `+2`) and one distinct file. The `+ ` prefix is a CSS ::before, so + // it is absent from textContent — assert on the line body and the footer. + const diffCards = [...document.querySelectorAll('[data-diff]')] expect(diffCards.length).toBeGreaterThan(0) - const footers = [...document.querySelectorAll('[data-diff]')] - .map(card => card.textContent ?? '') - expect(footers.some(text => text.includes('+ hello fixture') && text.includes('+1 -0 · 1 file'))).toBe(true) + const footers = diffCards.map(card => card.textContent ?? '') + expect(footers.some(text => text.includes('hello fixture') && text.includes('+1 -0 · 1 file'))).toBe(true) // Every bundle injected its plugin-owned style tag (the loader's CSS path). const styleOwners = [...document.head.querySelectorAll('style[data-plugin]')] diff --git a/packages/client/ui-conversation/tests/diff-card.spec.tsx b/packages/client/ui-conversation/tests/diff-card.spec.tsx index 031216b9f7..bf29f889ae 100644 --- a/packages/client/ui-conversation/tests/diff-card.spec.tsx +++ b/packages/client/ui-conversation/tests/diff-card.spec.tsx @@ -163,11 +163,13 @@ describe('FileMutationRow diff card', () => { expect(view.getByText('复制')).toBeTruthy() }) - it('the summary is a path link that opens through the host, cwd-resolved', () => { + it('the summary is a path link that opens the tool path through the host', () => { const openFile = vi.fn() const view = render() fireEvent.click(view.getByRole('button', { name: 'notes/demo.txt' })) - expect(openFile).toHaveBeenCalledWith('/w/app/notes/demo.txt') + // The row passes the tool's own path; the injected openFile resolves it + // against the session cwd (apply.ts), so the row must not resolve twice. + expect(openFile).toHaveBeenCalledWith('notes/demo.txt') }) it('registers under write too, rendering a create as an added-only diff', () => {