test: assert current workspace flavour (#1664)

This commit is contained in:
Himself65
2023-03-22 23:22:29 -05:00
committed by GitHub
parent 35d4560e9f
commit 059d9e5de2
18 changed files with 66 additions and 7 deletions
+13 -1
View File
@@ -28,9 +28,15 @@ import { useRouterTitle } from '../hooks/use-router-title';
import { useWorkspaces } from '../hooks/use-workspaces'; import { useWorkspaces } from '../hooks/use-workspaces';
import { WorkspacePlugins } from '../plugins'; import { WorkspacePlugins } from '../plugins';
import { ModalProvider } from '../providers/ModalProvider'; import { ModalProvider } from '../providers/ModalProvider';
import type { RemWorkspace } from '../shared';
import { pathGenerator, publicPathGenerator } from '../shared'; import { pathGenerator, publicPathGenerator } from '../shared';
import { StyledPage, StyledToolWrapper, StyledWrapper } from './styles'; import { StyledPage, StyledToolWrapper, StyledWrapper } from './styles';
declare global {
// eslint-disable-next-line no-var
var currentWorkspace: RemWorkspace;
}
const QuickSearchModal = dynamic( const QuickSearchModal = dynamic(
() => import('../components/pure/quick-search-modal') () => import('../components/pure/quick-search-modal')
); );
@@ -94,9 +100,15 @@ export const WorkspaceLayoutInner: React.FC<React.PropsWithChildren> = ({
const workspaces = useWorkspaces(); const workspaces = useWorkspaces();
useEffect(() => { useEffect(() => {
console.log(workspaces); logger.info('workspaces: ', workspaces);
}, [workspaces]); }, [workspaces]);
useEffect(() => {
if (currentWorkspace) {
globalThis.currentWorkspace = currentWorkspace;
}
}, [currentWorkspace]);
useEffect(() => { useEffect(() => {
const providers = workspaces.flatMap(workspace => const providers = workspaces.flatMap(workspace =>
workspace.providers.filter(provider => provider.background) workspace.providers.filter(provider => provider.background)
+4 -2
View File
@@ -1,7 +1,9 @@
import type { Page } from '@playwright/test'; import type { Page } from '@playwright/test';
import userA from '../fixtures/userA.json'; // eslint-disable-next-line @typescript-eslint/no-var-requires
import userB from '../fixtures/userB.json'; const userA = require('../fixtures/userA.json');
// eslint-disable-next-line @typescript-eslint/no-var-requires
const userB = require('../fixtures/userB.json');
export async function createFakeUser() { export async function createFakeUser() {
try { try {
@@ -1,4 +1,6 @@
import type { Page } from '@playwright/test'; import type { Page } from '@playwright/test';
import { expect } from '@playwright/test';
interface CreateWorkspaceParams { interface CreateWorkspaceParams {
name: string; name: string;
} }
@@ -20,3 +22,12 @@ export async function createWorkspace(
// click create button // click create button
return page.getByRole('button', { name: 'Create' }).click(); return page.getByRole('button', { name: 'Create' }).click();
} }
export async function assertCurrentWorkspaceFlavour(
flavour: 'affine' | 'local',
page: Page
) {
// @ts-expect-error type globalThis.currentWorkspace is not defined in playwright context
const actual = await page.evaluate(() => globalThis.currentWorkspace.flavour);
expect(actual).toBe(flavour);
}
+2
View File
@@ -3,6 +3,7 @@ import { expect } from '@playwright/test';
import { loadPage } from './libs/load-page'; import { loadPage } from './libs/load-page';
import { newPage } from './libs/page-logic'; import { newPage } from './libs/page-logic';
import { test } from './libs/playwright'; import { test } from './libs/playwright';
import { assertCurrentWorkspaceFlavour } from './libs/workspace';
loadPage(); loadPage();
@@ -35,5 +36,6 @@ test.describe('Local first create page', () => {
.getAttribute('src'); .getAttribute('src');
// out user uploaded avatar // out user uploaded avatar
expect(blobUrl).toContain('blob:'); expect(blobUrl).toContain('blob:');
await assertCurrentWorkspaceFlavour('local', page);
}); });
}); });
+2
View File
@@ -3,6 +3,7 @@ import { expect } from '@playwright/test';
import { loadPage } from './libs/load-page'; import { loadPage } from './libs/load-page';
import { getBlockSuiteEditorTitle, newPage } from './libs/page-logic'; import { getBlockSuiteEditorTitle, newPage } from './libs/page-logic';
import { test } from './libs/playwright'; import { test } from './libs/playwright';
import { assertCurrentWorkspaceFlavour } from './libs/workspace';
loadPage(); loadPage();
@@ -47,5 +48,6 @@ test.describe('Local first delete page', () => {
'Tips: Click Add to Favorites/Trash and the page will appear here.' 'Tips: Click Add to Favorites/Trash and the page will appear here.'
) )
).not.toBeUndefined(); ).not.toBeUndefined();
await assertCurrentWorkspaceFlavour('local', page);
}); });
}); });
@@ -3,6 +3,7 @@ import { expect } from '@playwright/test';
import { loadPage } from './libs/load-page'; import { loadPage } from './libs/load-page';
import { test } from './libs/playwright'; import { test } from './libs/playwright';
import { clickSideBarSettingButton } from './libs/sidebar'; import { clickSideBarSettingButton } from './libs/sidebar';
import { assertCurrentWorkspaceFlavour } from './libs/workspace';
loadPage(); loadPage();
@@ -23,5 +24,6 @@ test.describe('Local first delete workspace', () => {
expect(await page.getByTestId('workspace-card').count()).toBe(0); expect(await page.getByTestId('workspace-card').count()).toBe(0);
await page.mouse.click(1, 1); await page.mouse.click(1, 1);
expect(await page.getByTestId('workspace-card').count()).toBe(0); expect(await page.getByTestId('workspace-card').count()).toBe(0);
await assertCurrentWorkspaceFlavour('local', page);
}); });
}); });
+2
View File
@@ -7,6 +7,7 @@ import {
newPage, newPage,
} from './libs/page-logic'; } from './libs/page-logic';
import { test } from './libs/playwright'; import { test } from './libs/playwright';
import { assertCurrentWorkspaceFlavour } from './libs/workspace';
loadPage(); loadPage();
test.describe('Local first export page', () => { test.describe('Local first export page', () => {
@@ -65,5 +66,6 @@ test.describe('Local first export page', () => {
expect(download.suggestedFilename()).toBe( expect(download.suggestedFilename()).toBe(
'this is a new page to export markdown content.md' 'this is a new page to export markdown content.md'
); );
await assertCurrentWorkspaceFlavour('local', page);
}); });
}); });
+3
View File
@@ -7,6 +7,7 @@ import {
newPage, newPage,
} from './libs/page-logic'; } from './libs/page-logic';
import { test } from './libs/playwright'; import { test } from './libs/playwright';
import { assertCurrentWorkspaceFlavour } from './libs/workspace';
loadPage(); loadPage();
test.describe('Local first favorite and cancel favorite page', () => { test.describe('Local first favorite and cancel favorite page', () => {
@@ -24,6 +25,7 @@ test.describe('Local first favorite and cancel favorite page', () => {
await clickPageMoreActions(page); await clickPageMoreActions(page);
const favoriteBtn = page.getByTestId('editor-option-menu-favorite'); const favoriteBtn = page.getByTestId('editor-option-menu-favorite');
await favoriteBtn.click(); await favoriteBtn.click();
await assertCurrentWorkspaceFlavour('local', page);
}); });
test('Cancel favorite', async ({ page }) => { test('Cancel favorite', async ({ page }) => {
await newPage(page); await newPage(page);
@@ -66,5 +68,6 @@ test.describe('Local first favorite and cancel favorite page', () => {
'Tips: Click Add to Favorites/Trash and the page will appear here.' 'Tips: Click Add to Favorites/Trash and the page will appear here.'
) )
).not.toBeUndefined(); ).not.toBeUndefined();
await assertCurrentWorkspaceFlavour('local', page);
}); });
}); });
@@ -7,6 +7,7 @@ import {
newPage, newPage,
} from './libs/page-logic'; } from './libs/page-logic';
import { test } from './libs/playwright'; import { test } from './libs/playwright';
import { assertCurrentWorkspaceFlavour } from './libs/workspace';
loadPage(); loadPage();
test.describe('Local first favorite items ui', () => { test.describe('Local first favorite items ui', () => {
@@ -59,5 +60,6 @@ test.describe('Local first favorite items ui', () => {
.getByText('Click Add to Favorites and the page will appear here.') .getByText('Click Add to Favorites and the page will appear here.')
.isVisible() .isVisible()
).toBe(true); ).toBe(true);
await assertCurrentWorkspaceFlavour('local', page);
}); });
}); });
+3
View File
@@ -3,6 +3,7 @@ import { expect } from '@playwright/test';
import { loadPage } from './libs/load-page'; import { loadPage } from './libs/load-page';
import { getBlockSuiteEditorTitle, newPage } from './libs/page-logic'; import { getBlockSuiteEditorTitle, newPage } from './libs/page-logic';
import { test } from './libs/playwright'; import { test } from './libs/playwright';
import { assertCurrentWorkspaceFlavour } from './libs/workspace';
loadPage(); loadPage();
test.describe('local first new page', () => { test.describe('local first new page', () => {
@@ -11,6 +12,7 @@ test.describe('local first new page', () => {
await newPage(page); await newPage(page);
const newPageId = page.url().split('/').reverse()[0]; const newPageId = page.url().split('/').reverse()[0];
expect(newPageId).not.toBe(originPageId); expect(newPageId).not.toBe(originPageId);
await assertCurrentWorkspaceFlavour('local', page);
}); });
test('click btn bew page and find it in all pages', async ({ page }) => { test('click btn bew page and find it in all pages', async ({ page }) => {
@@ -20,5 +22,6 @@ test.describe('local first new page', () => {
await page.getByRole('link', { name: 'All pages' }).click(); await page.getByRole('link', { name: 'All pages' }).click();
const cell = page.getByRole('cell', { name: 'this is a new page' }); const cell = page.getByRole('cell', { name: 'this is a new page' });
expect(cell).not.toBeUndefined(); expect(cell).not.toBeUndefined();
await assertCurrentWorkspaceFlavour('local', page);
}); });
}); });
@@ -3,6 +3,7 @@ import { expect } from '@playwright/test';
import { loadPage } from './libs/load-page'; import { loadPage } from './libs/load-page';
import { getBlockSuiteEditorTitle, newPage } from './libs/page-logic'; import { getBlockSuiteEditorTitle, newPage } from './libs/page-logic';
import { test } from './libs/playwright'; import { test } from './libs/playwright';
import { assertCurrentWorkspaceFlavour } from './libs/workspace';
loadPage(); loadPage();
test.describe('local first new page', () => { test.describe('local first new page', () => {
@@ -26,5 +27,6 @@ test.describe('local first new page', () => {
]); ]);
expect(newTabPage.url()).toBe(newPageUrl); expect(newTabPage.url()).toBe(newPageUrl);
await assertCurrentWorkspaceFlavour('local', page);
}); });
}); });
+2
View File
@@ -3,6 +3,7 @@ import { expect } from '@playwright/test';
import { loadPage } from './libs/load-page'; import { loadPage } from './libs/load-page';
import { getBlockSuiteEditorTitle, newPage } from './libs/page-logic'; import { getBlockSuiteEditorTitle, newPage } from './libs/page-logic';
import { test } from './libs/playwright'; import { test } from './libs/playwright';
import { assertCurrentWorkspaceFlavour } from './libs/workspace';
loadPage(); loadPage();
test.describe('Local first delete page', () => { test.describe('Local first delete page', () => {
@@ -47,5 +48,6 @@ test.describe('Local first delete page', () => {
name: 'this is a new page to restore', name: 'this is a new page to restore',
}); });
expect(restoreCell).not.toBeUndefined(); expect(restoreCell).not.toBeUndefined();
await assertCurrentWorkspaceFlavour('local', page);
}); });
}); });
@@ -7,6 +7,7 @@ import {
newPage, newPage,
} from './libs/page-logic'; } from './libs/page-logic';
import { test } from './libs/playwright'; import { test } from './libs/playwright';
import { assertCurrentWorkspaceFlavour } from './libs/workspace';
loadPage(); loadPage();
test.describe('Local first delete page', () => { test.describe('Local first delete page', () => {
@@ -26,6 +27,7 @@ test.describe('Local first delete page', () => {
await deleteBtn.click(); await deleteBtn.click();
const confirmTip = page.getByText('Delete page?'); const confirmTip = page.getByText('Delete page?');
expect(confirmTip).not.toBeUndefined(); expect(confirmTip).not.toBeUndefined();
await assertCurrentWorkspaceFlavour('local', page);
}); });
test('New a page ,then go to all pages and show delete modal', async ({ test('New a page ,then go to all pages and show delete modal', async ({
@@ -50,5 +52,6 @@ test.describe('Local first delete page', () => {
await deleteBtn.click(); await deleteBtn.click();
const confirmTip = page.getByText('Delete page?'); const confirmTip = page.getByText('Delete page?');
expect(confirmTip).not.toBeUndefined(); expect(confirmTip).not.toBeUndefined();
await assertCurrentWorkspaceFlavour('local', page);
}); });
}); });
+2
View File
@@ -3,6 +3,7 @@ import { expect } from '@playwright/test';
import { loadPage } from './libs/load-page'; import { loadPage } from './libs/load-page';
import { getBlockSuiteEditorTitle, newPage } from './libs/page-logic'; import { getBlockSuiteEditorTitle, newPage } from './libs/page-logic';
import { test } from './libs/playwright'; import { test } from './libs/playwright';
import { assertCurrentWorkspaceFlavour } from './libs/workspace';
loadPage(); loadPage();
test.describe('Local first trash page', () => { test.describe('Local first trash page', () => {
@@ -35,5 +36,6 @@ test.describe('Local first trash page', () => {
expect( expect(
page.getByRole('cell', { name: 'this is a new page to delete' }) page.getByRole('cell', { name: 'this is a new page to delete' })
).not.toBeUndefined(); ).not.toBeUndefined();
await assertCurrentWorkspaceFlavour('local', page);
}); });
}); });
+1 -1
View File
@@ -3,7 +3,7 @@ import { expect } from '@playwright/test';
import { loadPage } from './libs/load-page'; import { loadPage } from './libs/load-page';
import { test } from './libs/playwright'; import { test } from './libs/playwright';
import { clickSideBarAllPageButton } from './libs/sidebar'; import { clickSideBarAllPageButton } from './libs/sidebar';
import { createWorkspace } from './libs/workspace-logic'; import { createWorkspace } from './libs/workspace';
loadPage(); loadPage();
test.describe('Local first workspace list', () => { test.describe('Local first workspace list', () => {
+3
View File
@@ -3,6 +3,7 @@ import { expect } from '@playwright/test';
import { loadPage } from './libs/load-page'; import { loadPage } from './libs/load-page';
import { test } from './libs/playwright'; import { test } from './libs/playwright';
import { clickSideBarCurrentWorkspaceBanner } from './libs/sidebar'; import { clickSideBarCurrentWorkspaceBanner } from './libs/sidebar';
import { assertCurrentWorkspaceFlavour } from './libs/workspace';
loadPage(); loadPage();
@@ -10,6 +11,7 @@ test.describe('Local first default workspace', () => {
test('preset workspace name', async ({ page }) => { test('preset workspace name', async ({ page }) => {
const workspaceName = page.getByTestId('workspace-name'); const workspaceName = page.getByTestId('workspace-name');
expect(await workspaceName.textContent()).toBe('Demo Workspace'); expect(await workspaceName.textContent()).toBe('Demo Workspace');
await assertCurrentWorkspaceFlavour('local', page);
}); });
// test('default workspace avatar', async ({ page }) => { // test('default workspace avatar', async ({ page }) => {
@@ -26,5 +28,6 @@ test.describe('Language switch', () => {
await expect(languageMenuButton).toBeVisible(); await expect(languageMenuButton).toBeVisible();
const actual = await languageMenuButton.innerText(); const actual = await languageMenuButton.innerText();
expect(actual).toEqual('English'); expect(actual).toEqual('English');
await assertCurrentWorkspaceFlavour('local', page);
}); });
}); });
+1 -1
View File
@@ -2,7 +2,7 @@ import { expect } from '@playwright/test';
import { loadPage } from './libs/load-page'; import { loadPage } from './libs/load-page';
import { test } from './libs/playwright'; import { test } from './libs/playwright';
import { createWorkspace } from './libs/workspace-logic'; import { createWorkspace } from './libs/workspace';
loadPage(); loadPage();
+8 -2
View File
@@ -1,6 +1,7 @@
import { expect } from '@playwright/test'; import { expect } from '@playwright/test';
import userA from '../fixtures/userA.json'; // eslint-disable-next-line @typescript-eslint/no-var-requires
const userA = require('../fixtures/userA.json');
import { test } from '../libs/playwright'; import { test } from '../libs/playwright';
import { clickCollaborationPanel } from '../libs/setting'; import { clickCollaborationPanel } from '../libs/setting';
import { import {
@@ -10,7 +11,10 @@ import {
clickSideBarSettingButton, clickSideBarSettingButton,
} from '../libs/sidebar'; } from '../libs/sidebar';
import { createFakeUser, loginUser, openHomePage } from '../libs/utils'; import { createFakeUser, loginUser, openHomePage } from '../libs/utils';
import { createWorkspace } from '../libs/workspace-logic'; import {
assertCurrentWorkspaceFlavour,
createWorkspace,
} from '../libs/workspace';
test.describe('affine workspace', () => { test.describe('affine workspace', () => {
test('should login with user A', async ({ page }) => { test('should login with user A', async ({ page }) => {
@@ -21,6 +25,7 @@ test.describe('affine workspace', () => {
const footer = page.locator('[data-testid="workspace-list-modal-footer"]'); const footer = page.locator('[data-testid="workspace-list-modal-footer"]');
expect(await footer.getByText(userA.name).isVisible()).toBe(true); expect(await footer.getByText(userA.name).isVisible()).toBe(true);
expect(await footer.getByText(userA.email).isVisible()).toBe(true); expect(await footer.getByText(userA.email).isVisible()).toBe(true);
await assertCurrentWorkspaceFlavour('local', page);
}); });
test('should enable affine workspace successfully', async ({ page }) => { test('should enable affine workspace successfully', async ({ page }) => {
@@ -43,5 +48,6 @@ test.describe('affine workspace', () => {
await page.locator('[data-block-is-title="true"]').type('Hello, world!', { await page.locator('[data-block-is-title="true"]').type('Hello, world!', {
delay: 50, delay: 50,
}); });
await assertCurrentWorkspaceFlavour('affine', page);
}); });
}); });