From c194dcd43d7718e0b4099cd24b21122ef2a467fd Mon Sep 17 00:00:00 2001 From: MingLiang Wang Date: Wed, 21 Dec 2022 20:50:27 +0800 Subject: [PATCH 1/5] feat: get default head img blob --- .../workspace-create/workspace-create.tsx | 49 +++++++++++++------ .../providers/app-state-provider/provider.tsx | 2 +- 2 files changed, 35 insertions(+), 16 deletions(-) diff --git a/packages/app/src/components/workspace-slider-bar/WorkspaceSelector/WorkspaceItem/CreateWorkspaceItem/workspace-create/workspace-create.tsx b/packages/app/src/components/workspace-slider-bar/WorkspaceSelector/WorkspaceItem/CreateWorkspaceItem/workspace-create/workspace-create.tsx index 33d07e38c2..cdd86df00b 100644 --- a/packages/app/src/components/workspace-slider-bar/WorkspaceSelector/WorkspaceItem/CreateWorkspaceItem/workspace-create/workspace-create.tsx +++ b/packages/app/src/components/workspace-slider-bar/WorkspaceSelector/WorkspaceItem/CreateWorkspaceItem/workspace-create/workspace-create.tsx @@ -25,6 +25,39 @@ export const WorkspaceCreate = ({ open, onClose }: WorkspaceCreateProps) => { const handlerInputChange = (workspaceName: string) => { setWorkspaceId(workspaceName); }; + const createDefaultHeadImg = (workspaceName: string) => { + const canvas = document.createElement('canvas'); + canvas.height = 100; + canvas.width = 100; + const ctx = canvas.getContext('2d'); + if (ctx) { + // TODO: add a image list + ctx.fillStyle = '#FFDE03'; + ctx.fillRect(0, 0, 100, 100); + ctx.font = "600 50px 'PingFang SC', 'Microsoft Yahei'"; + ctx.fillStyle = '#FFF'; + ctx.textAlign = 'center'; + ctx.textBaseline = 'middle'; + ctx.fillText(workspaceName[0], 50, 50); + const blob = canvas.toBlob(blob => {}, 'image/png'); + } + }; + const handleCreateWorkspace = () => { + setCanCreate(true); + createDefaultHeadImg(workspaceName); + createWorkspace({ name: workspaceName, avatar: '' }) + .then(data => { + // @ts-ignore + router.push(`/workspace/${data.created_at}`); + onClose(); + }) + .catch(err => { + console.log(err, 'err'); + }) + .finally(() => { + setCanCreate(false); + }); + }; return ( @@ -44,21 +77,7 @@ export const WorkspaceCreate = ({ open, onClose }: WorkspaceCreateProps) => { { - setCanCreate(true); - createWorkspace({ name: workspaceName, avatar: '' }) - .then(data => { - // @ts-ignore - router.push(`/workspace/${data.created_at}`); - onClose(); - }) - .catch(err => { - console.log(err, 'err'); - }) - .finally(() => { - setCanCreate(false); - }); - }} + onClick={handleCreateWorkspace} > Create diff --git a/packages/app/src/providers/app-state-provider/provider.tsx b/packages/app/src/providers/app-state-provider/provider.tsx index 2065fc3ea5..7fbc03a1af 100644 --- a/packages/app/src/providers/app-state-provider/provider.tsx +++ b/packages/app/src/providers/app-state-provider/provider.tsx @@ -119,7 +119,7 @@ export const AppStateProvider = ({ children }: { children?: ReactNode }) => { const callback = async (user: AccessTokenMessage | null) => { const workspacesMeta = user ? await getWorkspaces() : []; const workspaces = await Promise.all( - workspacesMeta.map(async ({ id }) => { + workspacesMeta?.map(async ({ id }) => { const workspace = (await loadWorkspaceHandler?.(id)) || null; return workspace; }) From b7bc57b82363cce71e83aa4ccd77d39a732c180a Mon Sep 17 00:00:00 2001 From: tzhangchi Date: Wed, 21 Dec 2022 21:03:48 +0800 Subject: [PATCH 2/5] chore: add quick test command --- package.json | 1 + playwright.config.ts | 18 +++--------------- 2 files changed, 4 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index 712288570f..4cf0b75a22 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "export": "pnpm --filter @pathfinder/app export", "start": "pnpm --filter @pathfinder/app start", "lint": "pnpm --filter @pathfinder/app lint", + "test": "playwright test", "test:e2e": "playwright test", "test:unit": "jest" }, diff --git a/playwright.config.ts b/playwright.config.ts index db2bfa5155..853afe8b80 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -50,21 +50,9 @@ const config: PlaywrightTestConfig = { { name: 'chromium', use: { - ...devices['Desktop Chrome'], - }, - }, - - { - name: 'firefox', - use: { - ...devices['Desktop Firefox'], - }, - }, - - { - name: 'webkit', - use: { - ...devices['Desktop Safari'], + browserName: 'chromium', + viewport: { width: 1920, height: 1080 }, + actionTimeout: 5 * 1000, }, }, From c38b8ff217b6f3e7e59a0bf535e90d9783a417cc Mon Sep 17 00:00:00 2001 From: tzhangchi Date: Wed, 21 Dec 2022 21:16:52 +0800 Subject: [PATCH 3/5] chore: add e2e test codegen command --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 4cf0b75a22..bfe30f73ae 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "lint": "pnpm --filter @pathfinder/app lint", "test": "playwright test", "test:e2e": "playwright test", + "test:e2e:codegen":"npx playwright codegen http://localhost:8080", "test:unit": "jest" }, "devDependencies": { From b94aba355e172c437a78b98da8e5f8c6691e428e Mon Sep 17 00:00:00 2001 From: alt0 Date: Wed, 21 Dec 2022 21:35:04 +0800 Subject: [PATCH 4/5] fix: empty page because the provider position --- .../src/components/workspace-layout/index.tsx | 28 +++++-------------- packages/app/src/pages/_app.tsx | 12 +++++++- 2 files changed, 18 insertions(+), 22 deletions(-) diff --git a/packages/app/src/components/workspace-layout/index.tsx b/packages/app/src/components/workspace-layout/index.tsx index 2eb06a3400..cd111dd958 100644 --- a/packages/app/src/components/workspace-layout/index.tsx +++ b/packages/app/src/components/workspace-layout/index.tsx @@ -2,32 +2,18 @@ import HelpIsland from '@/components/help-island'; import { WorkSpaceSliderBar } from '@/components/workspace-slider-bar'; import { useRouter } from 'next/router'; import { StyledPage, StyledWrapper } from './styles'; -import { AppStateProvider } from '@/providers/app-state-provider/provider'; -import ConfirmProvider from '@/providers/confirm-provider'; -import { ModalProvider } from '@/providers/global-modal-provider'; -import ProviderComposer from '@/components/provider-composer'; import { PropsWithChildren } from 'react'; export const WorkspaceLayout = ({ children }: PropsWithChildren) => { const router = useRouter(); return ( - , - , - , - ]} - > - - - - {children} - - - - + + + + {children} + + + ); }; diff --git a/packages/app/src/pages/_app.tsx b/packages/app/src/pages/_app.tsx index e9031d3c79..858c5eae73 100644 --- a/packages/app/src/pages/_app.tsx +++ b/packages/app/src/pages/_app.tsx @@ -10,6 +10,9 @@ import '../utils/print-build-info'; import ProviderComposer from '@/components/provider-composer'; import type { ReactElement, ReactNode } from 'react'; import type { NextPage } from 'next'; +import { AppStateProvider } from '@/providers/app-state-provider/provider'; +import ConfirmProvider from '@/providers/confirm-provider'; +import { ModalProvider } from '@/providers/global-modal-provider'; const ThemeProvider = dynamic(() => import('@/providers/themeProvider'), { ssr: false, @@ -29,7 +32,14 @@ function MyApp({ Component, pageProps }: AppPropsWithLayout) { return ( <> - ]}> + , + , + , + , + ]} + > {getLayout()} From 8405561e0ce87d7ea9db286c14980e2d6db945b0 Mon Sep 17 00:00:00 2001 From: tzhangchi Date: Wed, 21 Dec 2022 21:38:28 +0800 Subject: [PATCH 5/5] tests: add exception page test --- tests/exception-page.spec.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 tests/exception-page.spec.ts diff --git a/tests/exception-page.spec.ts b/tests/exception-page.spec.ts new file mode 100644 index 0000000000..3512934e9c --- /dev/null +++ b/tests/exception-page.spec.ts @@ -0,0 +1,15 @@ +import { test, expect } from '@playwright/test'; +import { loadPage } from './libs/load-page'; + +loadPage(); + +// ps aux | grep 8080 +test.describe('exception page', () => { + test('bisit 404 page', async ({ page }) => { + await page.goto('http://localhost:8080/404'); + await page.waitForTimeout(300); + const notFoundTipDom = await page.getByText('404 - Page Not Found'); + + await expect(await notFoundTipDom.isVisible()).toBe(true); + }); +});