e4a0dfe262
## 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.
<!-- This is an auto-generated description by cubic. -->
<a
href="https://cubic.dev/pr/twentyhq/twenty/pull/21528?utm_source=github"
target="_blank" rel="noopener noreferrer"
data-no-image-dialog="true"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img
alt="Review in cubic"
src="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"></picture></a>
<!-- End of auto-generated description by cubic. -->
59 lines
1.9 KiB
TypeScript
59 lines
1.9 KiB
TypeScript
import { randomUUID } from 'crypto';
|
|
import { expect, test } from './fixture';
|
|
|
|
test('Sign up with invite link via email', async ({
|
|
page,
|
|
loginPage,
|
|
leftMenu,
|
|
membersSection,
|
|
settingsPage,
|
|
profileSection,
|
|
confirmationModal,
|
|
}) => {
|
|
const email = `test${randomUUID().replaceAll('-', '')}@apple.dev`;
|
|
const firstName = 'John';
|
|
const lastName = 'Doe';
|
|
|
|
const inviteLink: string =
|
|
await test.step('Go to Settings and copy invite link', async () => {
|
|
await page.goto(process.env.LINK); // skip login page (and redirect) when running on environments with multi-workspace enabled
|
|
await leftMenu.goToSettings();
|
|
await settingsPage.goToMembersSection();
|
|
await membersSection.copyInviteLink();
|
|
return await page.evaluate('navigator.clipboard.readText()');
|
|
});
|
|
|
|
await test.step('Go to invite link', async () => {
|
|
await settingsPage.logout();
|
|
|
|
await Promise.all([
|
|
expect(page.getByText(/Join .+ team/)).toBeVisible(),
|
|
|
|
page.goto(inviteLink),
|
|
]);
|
|
});
|
|
|
|
await test.step('Create new account', async () => {
|
|
await loginPage.clickLoginWithEmailIfVisible();
|
|
await loginPage.typeEmail(email);
|
|
await loginPage.clickContinueButton();
|
|
await loginPage.typePassword(process.env.DEFAULT_PASSWORD);
|
|
await loginPage.clickSignUpButton();
|
|
await loginPage.typeFirstName(firstName);
|
|
await loginPage.typeLastName(lastName);
|
|
await loginPage.clickContinueButton();
|
|
});
|
|
|
|
await test.step('Delete account from workspace', async () => {
|
|
await expect(page.getByTestId('workspace-dropdown')).toBeVisible();
|
|
await leftMenu.goToSettings();
|
|
await settingsPage.goToProfileSection();
|
|
await profileSection.deleteAccount();
|
|
await expect(page.getByText('Account Deletion')).toBeVisible();
|
|
await confirmationModal.typePlaceholderToInput();
|
|
await confirmationModal.clickConfirmButton();
|
|
|
|
await page.waitForURL('**/welcome');
|
|
});
|
|
});
|