From 8f94fdb95419a0d0f33331b481ead0819b8501bc Mon Sep 17 00:00:00 2001 From: Yifeng Wang Date: Tue, 21 May 2024 22:24:49 +0800 Subject: [PATCH] feat: add create workspace test --- package.json | 5 ++--- tests/basic.spec.ts | 29 +++++++++++++++++------------ tests/common/agent.ts | 21 +++++++++++++++++++++ 3 files changed, 40 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index 2bf0b40..2336daf 100644 --- a/package.json +++ b/package.json @@ -9,9 +9,8 @@ "dev:web": "pnpm --filter @notesuite/client dev & pnpm --filter @notesuite/common dev", "dev:server": "pnpm --filter @notesuite/server start", "dev:client": "pnpm --filter @notesuite/client tauri dev & pnpm --filter @notesuite/common dev", - "test": "playwright test", - "test:frontend1": "VITE_PORT=5174 BACKEND_URL=localhost:3001 pnpm dev:web", - "test:frontend2": "VITE_PORT=5175 BACKEND_URL=localhost:3002 pnpm dev:web", + "test": "playwright test --debug", + "test:clean": "pnpm clean && pnpm test", "clean": "pnpm --filter @notesuite/server clean" }, "devDependencies": { diff --git a/tests/basic.spec.ts b/tests/basic.spec.ts index ba2d5b7..9ad9e41 100644 --- a/tests/basic.spec.ts +++ b/tests/basic.spec.ts @@ -3,20 +3,25 @@ import { TestAgent } from './common/agent.js'; test.describe('basic test', () => { const agent = new TestAgent(); - - test.beforeAll(() => - agent.start({ - name: 'test-basic', - webPort: 5173, - backendPort: 3000, - }) - ); + const options = { + name: 'test-basic', + webPort: 5173, + backendPort: 3000, + }; + test.beforeAll(() => agent.start(options)); test('local server works', async ({ page }) => { - await page.goto('http://localhost:5173'); - const title = await page.title(); - expect(title).toBe('Note App'); + await page.goto(agent.web.baseUrl); + expect(await page.title()).toBe('Note App'); + }); + + test('can crete workspace', async ({ page }) => { + await page.goto(agent.web.baseUrl); + await page.getByPlaceholder('Workspace name').click(); + await page.getByPlaceholder('Workspace name').fill('hello'); + await page.getByRole('button', { name: 'Create' }).click(); + await expect(page.getByText('Test Client')).toBeVisible(); }); - test.afterAll(async () => await agent.stop()); + test.afterAll(() => agent.stop()); }); diff --git a/tests/common/agent.ts b/tests/common/agent.ts index 03270bf..d0ab869 100644 --- a/tests/common/agent.ts +++ b/tests/common/agent.ts @@ -7,10 +7,31 @@ interface StartOptions { backendPort: number; } +class WebAgentInterface { + constructor(private agent: TestAgent) {} + + get baseUrl() { + return `http://localhost:${this.agent.options.webPort}`; + } +} + +class MockAgentInterface { + constructor(private agent: TestAgent) {} +} + export class TestAgent { runner = new AppRunner(); + web = new WebAgentInterface(this); + mock = new MockAgentInterface(this); + + options = { + name: '', + webPort: 0, + backendPort: 0, + }; async start(options: StartOptions) { + this.options = options; await Promise.all([ this.runner.startServer(options.backendPort, options.name), this.runner.startWeb(options.webPort, options.backendPort),