From e4a0dfe26285219480effc64f0df37fecf962cc7 Mon Sep 17 00:00:00 2001 From: Charles Bochet Date: Sat, 13 Jun 2026 13:58:24 +0200 Subject: [PATCH] fix(e2e): reach Settings via workspace dropdown to unbreak merge queue (#21528) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Problem The merge queue is red. Two e2e tests fail consistently on `merge_group` runs, both timing out while clicking `Settings`: - `tests/create-kanban-view.spec.ts` ("Create Industry Select Field") - `tests/authentication/signup_invite_email.spec.ts` ("Go to Settings and copy invite link") The earlier tokenPair localStorage fix (#21507 / e2e read in #21519) restored login, so auth works again — but the navigation/settings polish in #21523 then **moved the Settings entry out of the main app navigation and into the workspace switcher dropdown** ("Moves Settings below Support in the workspace switcher menu"). The e2e tests still looked for a top-level `getByRole('button', { name: 'Settings' })`, which no longer exists, so they timed out. ## Fix Reach Settings the new way — open the workspace switcher dropdown, then click the `Settings` link (it is now an `UndecoratedLink`/`MenuItem`, role `link`, in `MultiWorkspaceDropdownDefaultComponents`): - `lib/pom/leftMenu.ts`: `goToSettings()` now opens `workspace-dropdown` first; `settingsTab` locator switched from `button` to `link`. - `tests/create-kanban-view.spec.ts`: open the workspace dropdown before clicking the Settings link. - `tests/authentication/signup_invite_email.spec.ts`: the post-signup "logged in" assertion now checks the `workspace-dropdown` is visible instead of the removed Settings button. ## Testing Triggering the merge-queue e2e suite via the `run-merge-queue` label on this PR. Review in cubic --- packages/twenty-e2e-testing/lib/pom/leftMenu.ts | 3 ++- .../tests/authentication/signup_invite_email.spec.ts | 2 +- packages/twenty-e2e-testing/tests/create-kanban-view.spec.ts | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/twenty-e2e-testing/lib/pom/leftMenu.ts b/packages/twenty-e2e-testing/lib/pom/leftMenu.ts index ee5d2ddc3f..8f2a79d492 100644 --- a/packages/twenty-e2e-testing/lib/pom/leftMenu.ts +++ b/packages/twenty-e2e-testing/lib/pom/leftMenu.ts @@ -22,7 +22,7 @@ export class LeftMenu { this.workspaceDropdown = page.getByTestId('workspace-dropdown'); this.leftMenu = page.getByRole('button').first(); this.searchSubTab = page.getByText('Search'); - this.settingsTab = page.getByRole('button', { name: 'Settings' }); + this.settingsTab = page.getByRole('link', { name: 'Settings' }); this.peopleTab = page.getByRole('link', { name: 'People' }); this.companiesTab = page.getByRole('link', { name: 'Companies' }); this.opportunitiesTab = page.getByRole('link', { name: 'Opportunities' }); @@ -56,6 +56,7 @@ export class LeftMenu { } async goToSettings() { + await this.workspaceDropdown.click(); await this.settingsTab.click(); } diff --git a/packages/twenty-e2e-testing/tests/authentication/signup_invite_email.spec.ts b/packages/twenty-e2e-testing/tests/authentication/signup_invite_email.spec.ts index 884fd556a5..75e1790b96 100644 --- a/packages/twenty-e2e-testing/tests/authentication/signup_invite_email.spec.ts +++ b/packages/twenty-e2e-testing/tests/authentication/signup_invite_email.spec.ts @@ -45,7 +45,7 @@ test('Sign up with invite link via email', async ({ }); await test.step('Delete account from workspace', async () => { - await expect(page.getByRole('button', { name: 'Settings' })).toBeVisible(); + await expect(page.getByTestId('workspace-dropdown')).toBeVisible(); await leftMenu.goToSettings(); await settingsPage.goToProfileSection(); await profileSection.deleteAccount(); diff --git a/packages/twenty-e2e-testing/tests/create-kanban-view.spec.ts b/packages/twenty-e2e-testing/tests/create-kanban-view.spec.ts index 52c58e90f0..31122f071a 100644 --- a/packages/twenty-e2e-testing/tests/create-kanban-view.spec.ts +++ b/packages/twenty-e2e-testing/tests/create-kanban-view.spec.ts @@ -1,7 +1,8 @@ import { expect, test } from '../lib/fixtures/screenshot'; test.describe.serial('Create Kanban View', () => { test('Create Industry Select Field', async ({ page }) => { - await page.getByRole('button', { name: 'Settings' }).click(); + await page.getByTestId('workspace-dropdown').click(); + await page.getByRole('link', { name: 'Settings' }).click(); await page.getByRole('link', { name: 'Data model' }).click(); await page.getByRole('link', { name: 'Opportunities' }).click(); await expect(page.getByRole('button', { name: 'New Field' })).toBeVisible();