feat: implement workspace management and member invitations

- Added tenant API for managing workspaces, including listing, creating, and inviting members.
- Introduced new models for organizations, workspaces, and workspace memberships in the backend.
- Created frontend components for workspace administration, allowing users to manage workspaces and invite members.
- Updated document listing to support workspace-specific filtering.
- Implemented account settings page for user profile management and password changes.
- Added end-to-end tests for workspace administration and dashboard functionalities.
This commit is contained in:
Anurag Jangid 2026-10-23 01:19:11 +05:30
parent 809235e962
commit bf5cd44dc1
20 changed files with 928 additions and 27 deletions

View file

@ -0,0 +1,19 @@
import { test, expect } from '@playwright/test'
import { login } from './helpers'
test('authenticated user can open workspace administration', async ({ page }) => {
test.skip(!process.env.E2E_USERNAME || !process.env.E2E_PASSWORD, 'Set E2E_USERNAME and E2E_PASSWORD')
expect(await login(page)).toBe(true)
await page.goto('/settings/workspaces')
await expect(page.getByRole('heading', { name: /organizations and workspaces/i })).toBeVisible()
await expect(page.getByText(/your workspaces/i)).toBeVisible()
})
test('dashboard keeps the profile entry while removing redundant header controls', async ({ page }) => {
test.skip(!process.env.E2E_USERNAME || !process.env.E2E_PASSWORD, 'Set E2E_USERNAME and E2E_PASSWORD')
expect(await login(page)).toBe(true)
await page.goto('/dashboard')
await expect(page.getByRole('link', { name: /open profile/i })).toBeVisible()
await expect(page.getByRole('button', { name: 'Help' })).toHaveCount(0)
await expect(page.getByRole('button', { name: 'Customize' })).toHaveCount(0)
})