mirror of
https://github.com/documenso/documenso.git
synced 2025-11-10 04:22:32 +10:00
111 lines
2.9 KiB
TypeScript
111 lines
2.9 KiB
TypeScript
import { expect, test } from '@playwright/test';
|
|
|
|
import { WEBAPP_BASE_URL } from '@documenso/lib/constants/app';
|
|
import { seedTeam, seedTeamInvite, unseedTeam } from '@documenso/prisma/seed/teams';
|
|
import { seedUser } from '@documenso/prisma/seed/users';
|
|
|
|
import { apiSignin } from '../fixtures/authentication';
|
|
|
|
test.describe.configure({ mode: 'parallel' });
|
|
|
|
test('[TEAMS]: update team member role', async ({ page }) => {
|
|
const team = await seedTeam({
|
|
createTeamMembers: 1,
|
|
});
|
|
|
|
await apiSignin({
|
|
page,
|
|
email: team.owner.email,
|
|
password: 'password',
|
|
redirectPath: `/t/${team.url}/settings/members`,
|
|
});
|
|
|
|
const teamMemberToUpdate = team.members[1];
|
|
|
|
await page
|
|
.getByRole('row')
|
|
.filter({ hasText: teamMemberToUpdate.user.email })
|
|
.getByRole('button')
|
|
.click();
|
|
|
|
await page.getByRole('menuitem', { name: 'Update role' }).click();
|
|
await page.getByRole('combobox').click();
|
|
await page.getByLabel('Manager').click();
|
|
await page.getByRole('button', { name: 'Update' }).click();
|
|
await expect(
|
|
page.getByRole('row').filter({ hasText: teamMemberToUpdate.user.email }),
|
|
).toContainText('Manager');
|
|
|
|
await unseedTeam(team.url);
|
|
});
|
|
|
|
test('[TEAMS]: accept team invitation without account', async ({ page }) => {
|
|
const team = await seedTeam();
|
|
|
|
const teamInvite = await seedTeamInvite({
|
|
email: `team-invite-test-${Date.now()}@test.documenso.com`,
|
|
teamId: team.id,
|
|
});
|
|
|
|
await page.goto(`${WEBAPP_BASE_URL}/team/invite/${teamInvite.token}`);
|
|
await expect(page.getByRole('heading')).toContainText('Team invitation');
|
|
|
|
await unseedTeam(team.url);
|
|
});
|
|
|
|
test('[TEAMS]: accept team invitation with account', async ({ page }) => {
|
|
const team = await seedTeam();
|
|
const user = await seedUser();
|
|
|
|
const teamInvite = await seedTeamInvite({
|
|
email: user.email,
|
|
teamId: team.id,
|
|
});
|
|
|
|
await page.goto(`${WEBAPP_BASE_URL}/team/invite/${teamInvite.token}`);
|
|
await expect(page.getByRole('heading')).toContainText('Invitation accepted!');
|
|
|
|
await unseedTeam(team.url);
|
|
});
|
|
|
|
test('[TEAMS]: member can leave team', async ({ page }) => {
|
|
const team = await seedTeam({
|
|
createTeamMembers: 1,
|
|
});
|
|
|
|
const teamMember = team.members[1];
|
|
|
|
await apiSignin({
|
|
page,
|
|
email: teamMember.user.email,
|
|
password: 'password',
|
|
redirectPath: `/settings/teams`,
|
|
});
|
|
|
|
await page.getByRole('button', { name: 'Leave' }).click();
|
|
await page.getByRole('button', { name: 'Leave' }).click();
|
|
|
|
await expect(page.getByRole('status').first()).toContainText(
|
|
'You have successfully left this team.',
|
|
);
|
|
|
|
await unseedTeam(team.url);
|
|
});
|
|
|
|
test('[TEAMS]: owner cannot leave team', async ({ page }) => {
|
|
const team = await seedTeam({
|
|
createTeamMembers: 1,
|
|
});
|
|
|
|
await apiSignin({
|
|
page,
|
|
email: team.owner.email,
|
|
password: 'password',
|
|
redirectPath: `/settings/teams`,
|
|
});
|
|
|
|
await expect(page.getByRole('button').getByText('Leave')).toBeDisabled();
|
|
|
|
await unseedTeam(team.url);
|
|
});
|