diff --git a/e2e/members.spec.ts b/e2e/members.spec.ts index 79a8c473..031df253 100644 --- a/e2e/members.spec.ts +++ b/e2e/members.spec.ts @@ -1 +1,77 @@ // TODO: Edit Billable Rate +// TODO: Resend Email Invitation +// TODO: Remove Invitation +import { expect, test } from '../playwright/fixtures'; +import { PLAYWRIGHT_BASE_URL } from '../playwright/config'; + +async function goToMembersPage(page) { + await page.goto(PLAYWRIGHT_BASE_URL + '/members'); +} + +async function openInviteMemberModal(page) { + await Promise.all([ + page.getByRole('button', { name: 'Invite Member' }).click(), + expect(page.getByPlaceholder('Member Email')).toBeVisible(), + ]); +} + +test('test that new manager can be invited', async ({ page }) => { + await goToMembersPage(page); + await openInviteMemberModal(page); + const editorId = Math.round(Math.random() * 10000); + await page.getByLabel('Email').fill(`new+${editorId}@editor.test`); + await page.getByRole('button', { name: 'Manager' }).click(); + await Promise.all([ + page + .getByRole('button', { name: 'Invite Member', exact: true }) + .click(), + expect(page.getByRole('main')).toContainText( + `new+${editorId}@editor.test` + ), + ]); +}); + +test('test that new employee can be invited', async ({ page }) => { + await goToMembersPage(page); + await openInviteMemberModal(page); + const editorId = Math.round(Math.random() * 10000); + await page.getByLabel('Email').fill(`new+${editorId}@editor.test`); + await page.getByRole('button', { name: 'Employee' }).click(); + await Promise.all([ + page + .getByRole('button', { name: 'Invite Member', exact: true }) + .click(), + await expect(page.getByRole('main')).toContainText( + `new+${editorId}@editor.test` + ), + ]); +}); + +test('test that new admin can be invited', async ({ page }) => { + await goToMembersPage(page); + await openInviteMemberModal(page); + const adminId = Math.round(Math.random() * 10000); + await page.getByLabel('Email').fill(`new+${adminId}@admin.test`); + await page.getByRole('button', { name: 'Administrator' }).click(); + await Promise.all([ + page + .getByRole('button', { name: 'Invite Member', exact: true }) + .click(), + expect(page.getByRole('main')).toContainText( + `new+${adminId}@admin.test` + ), + ]); +}); +test('test that error shows if no role is selected', async ({ page }) => { + await goToMembersPage(page); + await openInviteMemberModal(page); + const noRoleId = Math.round(Math.random() * 10000); + + await page.getByLabel('Email').fill(`new+${noRoleId}@norole.test`); + await Promise.all([ + page + .getByRole('button', { name: 'Invite Member', exact: true }) + .click(), + expect(page.getByText('Please select a role')).toBeVisible(), + ]); +}); diff --git a/e2e/organization.spec.ts b/e2e/organization.spec.ts index bd63409c..d697d321 100644 --- a/e2e/organization.spec.ts +++ b/e2e/organization.spec.ts @@ -17,55 +17,4 @@ test('test that organization name can be updated', async ({ page }) => { ).toContainText('NEW ORG NAME'); }); -test('test that new manager can be invited', async ({ page }) => { - await goToOrganizationSettings(page); - const editorId = Math.round(Math.random() * 10000); - await page.getByLabel('Email').fill(`new+${editorId}@editor.test`); - await page.getByRole('button', { name: 'Manager' }).click(); - await Promise.all([ - page.getByRole('button', { name: 'Add', exact: true }).click(), - expect(page.getByRole('main')).toContainText( - `new+${editorId}@editor.test` - ), - ]); -}); - -test('test that new employee can be invited', async ({ page }) => { - await goToOrganizationSettings(page); - const editorId = Math.round(Math.random() * 10000); - await page.getByLabel('Email').fill(`new+${editorId}@editor.test`); - await page.getByRole('button', { name: 'Employee' }).click(); - await Promise.all([ - page.getByRole('button', { name: 'Add', exact: true }).click(), - await expect(page.getByRole('main')).toContainText( - `new+${editorId}@editor.test` - ), - ]); -}); - -test('test that new admin can be invited', async ({ page }) => { - await goToOrganizationSettings(page); - const adminId = Math.round(Math.random() * 10000); - await page.getByLabel('Email').fill(`new+${adminId}@admin.test`); - await page.getByRole('button', { name: 'Administrator' }).click(); - await Promise.all([ - page.getByRole('button', { name: 'Add', exact: true }).click(), - expect(page.getByRole('main')).toContainText( - `new+${adminId}@admin.test` - ), - ]); -}); -test('test that error shows if no role is selected', async ({ page }) => { - await goToOrganizationSettings(page); - const noRoleId = Math.round(Math.random() * 10000); - - await page.getByLabel('Email').fill(`new+${noRoleId}@norole.test`); - await Promise.all([ - page.getByRole('button', { name: 'Add', exact: true }).click(), - expect(page.getByRole('main')).toContainText( - 'The role field is required.' - ), - ]); -}); - // TODO: Add Test for import