test(web): follow the renamed launcher and capitalized rows in CI gates

Registers slash/input-pick-files with the cordis catalog walk exemptions
beside its sibling slash-input events, and points the web e2e at the
'Add files or run commands' launcher and the capitalized row titles the
paperclip removal and the menu presentation introduced.
This commit is contained in:
creatixchu committed 2026-09-09 12:58:11 +08:00
1 parent ba066ab5f8
commit a4954e1bd2
5 files changed
+7 -5

No files matched your search

+3 -2
View File
@@ -312,7 +312,8 @@ describe('web e2e: agent-preset selection', () => {
await writeComposerDraft(page, composer, '/')
await expect.poll(() => menuOptions(page), { timeout: 15_000 })
.not.toEqual(expect.arrayContaining([expect.stringContaining(SKILL_NAME)]))
const onMinimal = await menuOptions(page)
// Rows read as `Title Description`; the title is the capitalized command name.
const onMinimal = (await menuOptions(page)).map(option => option.toLowerCase())
expect(onMinimal.some(option => option.startsWith('compact'))).toBe(false)
expect(onMinimal.some(option => option.startsWith('plan'))).toBe(false)
// Preset-scoped commands follow the switch; the client's own model command
@@ -332,7 +333,7 @@ describe('web e2e: agent-preset selection', () => {
await writeComposerDraft(page, composer, '/')
await expect.poll(() => menuOptions(page), { timeout: 15_000 })
.toEqual(expect.arrayContaining([expect.stringContaining(SKILL_NAME)]))
const onStandard = await menuOptions(page)
const onStandard = (await menuOptions(page)).map(option => option.toLowerCase())
expect(onStandard.some(option => option.startsWith('compact'))).toBe(true)
expect(onStandard.some(option => option.startsWith('goal'))).toBe(true)
expect(onStandard.some(option => option.startsWith('plan'))).toBe(true)
+1 -1
View File
@@ -82,7 +82,7 @@ describe('web e2e: /feedback command acknowledgement', () => {
await page.getByText(/Feedback recorded for session/).waitFor({ timeout: 10_000 })
expect(await page.getByText(/Anonymous user: [0-9a-f-]+\.$/i).count()).toBe(1)
await expect.poll(() => input.textContent(), { timeout: 10_000 }).toBe('')
await expect.poll(() => page.getByRole('button', { name: 'Add attachment' }).isEnabled(), { timeout: 10_000 }).toBe(true)
await expect.poll(() => page.getByRole('button', { name: 'Add files or run commands' }).isEnabled(), { timeout: 10_000 }).toBe(true)
const snapshot = await captureStableAria(page, '[class*="centerCol"]', scaffold.workspaceCwd)
await compareOrRefreshGolden(ACK_EXPECTED, snapshot, MODE)
const expanded = await captureExpandedTurnProcessAria(
+1 -1
View File
@@ -335,7 +335,7 @@ describe('web e2e: navigation & panes over a rich seeded session', () => {
const input = page.locator('[data-composer-input]').first()
const slashDownloadPromise = page.waitForEvent('download', { timeout: 30_000 })
await input.fill('/export')
await page.getByRole('option', { name: /export/u }).waitFor({ timeout: 10_000 })
await page.getByRole('option', { name: /^Export/u }).waitFor({ timeout: 10_000 })
await input.press('Enter')
const slashDownload = await slashDownloadPromise
expect(slashDownload.suggestedFilename()).toBe(download.suggestedFilename())
+1 -1
View File
@@ -506,7 +506,7 @@ describe('web e2e: seeded history renders through cold resume', () => {
// command/done can arrive before the submit reply releases the composer.
await expect.poll(() => input.textContent(), { timeout: 10_000 }).toBe('')
await expect.poll(() => page.getByRole('button', { name: 'Add attachment' }).isEnabled(), { timeout: 10_000 }).toBe(true)
await expect.poll(() => page.getByRole('button', { name: 'Add files or run commands' }).isEnabled(), { timeout: 10_000 }).toBe(true)
const snapshot = (await captureStableAria(page, '[class*="centerCol"]', scaffold.workspaceCwd))
.split(SEED_ID).join('{{seededId}}')
.split(userId).join('{{userId}}')
+1
View File
@@ -233,6 +233,7 @@ export const EVENT_WALK_EXEMPTIONS: Record<string, string> = {
'slash/input-consume-token': 'client-face slash-input protocol — packages/client/ui-input-trigger/README.md owns the API',
'slash/input-insert-reference': 'client-face slash-input protocol — packages/client/ui-input-trigger/README.md owns the API',
'slash/input-insert-text': 'client-face slash-input protocol — packages/client/ui-input-trigger/README.md owns the API',
'slash/input-pick-files': 'client-face slash-input protocol — packages/client/ui-input-trigger/README.md owns the API',
'slots/changed': 'client-face slot invalidation signal — packages/client/ui-renderer/README.md owns the API',
'theme/change': 'client-face theme switch signal — packages/client/ui-theme/README.md owns the API',
}