test(worktrees): cover both emoji branch naming modes (#35745)

This commit is contained in:
Brennan Benson
2026-10-29 13:25:27 -07:00
committed by GitHub
parent 6e0c74465c
commit db9cfbdb0a
+60 -31
View File
@@ -1,4 +1,5 @@
import { openSidebarWorkspaceComposer } from './helpers/sidebar-project-dialog'
import { isAutoGeneratedCreatureBranchName } from '../../src/shared/branch-name-from-work'
// Drive the real Create Workspace composer: old direct store creation missed #1186’s React #31 render crash after #710’s modal replacement.
// #1191 removed StartFromField, but console/pageerror checks still reject equivalent render crashes; see tests/e2e/AGENTS.md.
@@ -107,43 +108,71 @@ test.describe('Create Workspace', () => {
}
})
test('creates an emoji-named worktree with a safe git branch', async ({ orcaPage }) => {
const workspaceName = '🚀🧪✨'
for (const autoRenameBranchFromWork of [true, false]) {
test(`creates an emoji-named worktree with automatic branch naming ${autoRenameBranchFromWork ? 'on' : 'off'}`, async ({
orcaPage
}) => {
const workspaceName = autoRenameBranchFromWork ? '✨🚀🧪' : '🚀🧪✨'
const previousSetting = await orcaPage.evaluate(
() => window.__store!.getState().settings!.autoRenameBranchFromWork
)
try {
await openSidebarWorkspaceComposer(orcaPage)
try {
await orcaPage.evaluate(async (enabled) => {
await window
.__store!.getState()
.updateSettingsOrThrow({ autoRenameBranchFromWork: enabled })
}, autoRenameBranchFromWork)
await openSidebarWorkspaceComposer(orcaPage)
const dialog = orcaPage.getByRole('dialog', { name: /Create (Workspace|Worktree)/i })
await expect(dialog).toBeVisible()
await expect(dialog.locator('[data-workspace-name-input="true"]')).toBeVisible()
const dialog = orcaPage.getByRole('dialog', { name: /Create (Workspace|Worktree)/i })
await expect(dialog).toBeVisible()
await expect(dialog.locator('[data-workspace-name-input="true"]')).toBeVisible()
const nameInput = dialog.getByPlaceholder(/Type a name/i)
await nameInput.fill(workspaceName)
const nameInput = dialog.getByPlaceholder(/Type a name/i)
await nameInput.fill(workspaceName)
const createButton = dialog.getByRole('button', { name: /Create (Workspace|Worktree)/i })
await expect(createButton).toBeEnabled()
await createButton.click()
const createButton = dialog.getByRole('button', { name: /Create (Workspace|Worktree)/i })
await expect(createButton).toBeEnabled()
await createButton.click()
await expect(dialog).toBeHidden({ timeout: 15_000 })
await expect(orcaPage.getByRole('option', { name: new RegExp(workspaceName) })).toBeVisible({
timeout: 10_000
})
await expect(dialog).toBeHidden({ timeout: 15_000 })
await expect(orcaPage.getByRole('option', { name: new RegExp(workspaceName) })).toBeVisible(
{
timeout: 10_000
}
)
const branch = await orcaPage.evaluate((displayName) => {
const worktrees = Object.values(window.__store!.getState().worktreesByRepo).flat()
return worktrees.find((worktree) => worktree.displayName === displayName)?.branch ?? null
}, workspaceName)
expect(branch).toBe('refs/heads/rocket-test-tube-sparkles')
} finally {
await orcaPage
.evaluate(() => {
window.__store?.getState().closeModal()
})
.catch(() => {
/* page may already be torn down */
})
}
})
const worktree = await orcaPage.evaluate((displayName) => {
const worktrees = Object.values(window.__store!.getState().worktreesByRepo).flat()
const created = worktrees.find((worktree) => worktree.displayName === displayName)
return { branch: created?.branch, displayNameMode: created?.displayNameMode }
}, workspaceName)
expect(worktree.displayNameMode).toBe('fixed')
if (autoRenameBranchFromWork) {
expect(worktree.branch).toMatch(/^refs\/heads\//)
expect(
isAutoGeneratedCreatureBranchName(worktree.branch?.replace(/^refs\/heads\//, '') ?? '')
).toBe(true)
} else {
expect(worktree.branch).toBe('refs/heads/rocket-test-tube-sparkles')
}
} finally {
await orcaPage
.evaluate(() => {
window.__store?.getState().closeModal()
})
.catch(() => {
/* page may already be torn down */
})
await orcaPage.evaluate(async (enabled) => {
await window
.__store!.getState()
.updateSettingsOrThrow({ autoRenameBranchFromWork: enabled })
}, previousSetting)
}
})
}
test('enters the Korean flag with the flag_kr shortcode suggestion', async ({ orcaPage }) => {
try {