mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-27 02:42:25 +08:00
feat(core): no-access & local for workspace embedding (#12598)
## TL;DR Workspace embedding settings opt: * **local workspace**: show enable cloud panel * **no-access workspace**: disable settings panel   > CLOSE AI-155 <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Embedding settings UI now displays a tooltip indicating that only workspace owners can enable Workspace Embedding. - Embedding settings are modularized for local and cloud workspaces, with clear separation and appropriate enablement controls. - Attachments in embedding settings cannot be deleted when the settings are disabled. - **Accessibility** - Settings wrapper now includes an aria-disabled attribute for improved assistive technology support. - **Localization** - Added a new tooltip message: "Only the workspace owner can enable Workspace Embedding." - **Tests** - Added end-to-end tests for local workspace UI and disabled state when not the workspace owner. - **UI Improvements** - Updated settings panel to better reflect disabled states with tooltips and conditional controls. - Improved synchronization when opening the embedding settings panel for a smoother user experience. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import { createLocalWorkspace } from '@affine-test/kit/utils/workspace';
|
||||
import { expect } from '@playwright/test';
|
||||
|
||||
import { test } from '../base/base-test';
|
||||
@@ -43,6 +44,57 @@ test.describe('AISettings/Embedding', () => {
|
||||
await utils.settings.waitForWorkspaceEmbeddingSwitchToBe(page, true);
|
||||
});
|
||||
|
||||
test('should show enable cloud panel if workspace is local', async ({
|
||||
loggedInPage: page,
|
||||
utils,
|
||||
}) => {
|
||||
await utils.settings.closeSettingsPanel(page);
|
||||
await createLocalWorkspace({ name: 'test' }, page);
|
||||
await utils.settings.openSettingsPanel(page);
|
||||
await expect(
|
||||
page.getByTestId('publish-enable-affine-cloud-button')
|
||||
).toBeVisible();
|
||||
});
|
||||
|
||||
test('should disable embedding settings if the user is not workspace owner', async ({
|
||||
loggedInPage: page,
|
||||
utils,
|
||||
}) => {
|
||||
// mock the features to be empty(without CopilotEmbedding)
|
||||
await page.route('**/graphql', async (route, request) => {
|
||||
const postData = request.postData();
|
||||
if (postData && postData.includes('serverConfig')) {
|
||||
await route.fulfill({
|
||||
status: 200,
|
||||
contentType: 'application/json',
|
||||
body: JSON.stringify({
|
||||
data: {
|
||||
serverConfig: {
|
||||
version: '1.0.0',
|
||||
baseUrl: 'http://localhost:8080',
|
||||
name: 'AFFiNE',
|
||||
features: [],
|
||||
type: 'cloud',
|
||||
initialized: true,
|
||||
credentialsRequirement: null,
|
||||
},
|
||||
},
|
||||
}),
|
||||
});
|
||||
} else {
|
||||
await route.continue();
|
||||
}
|
||||
});
|
||||
|
||||
await page.reload();
|
||||
await utils.settings.openSettingsPanel(page);
|
||||
|
||||
const wrapper = await page.getByTestId(
|
||||
'workspace-embedding-setting-wrapper'
|
||||
);
|
||||
await expect(wrapper).toHaveAttribute('aria-disabled', 'true');
|
||||
});
|
||||
|
||||
test('should show error message if enable workspace embedding failed', async ({
|
||||
loggedInPage: page,
|
||||
utils,
|
||||
|
||||
Reference in New Issue
Block a user