Skip to content

Commit d441f49

Browse files
authored
perf: optimize Playwright tests with workspace reuse and parallel workers (#164)
1 parent 9d90048 commit d441f49

File tree

5 files changed

+204
-336
lines changed

5 files changed

+204
-336
lines changed

playwright.config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ export default defineConfig({
55
fullyParallel: false,
66
forbidOnly: !!process.env.CI,
77
retries: process.env.CI ? 2 : 0,
8-
workers: 1,
8+
workers: process.env.CI ? 3 : undefined,
99
reporter: 'list',
1010
use: {
1111
baseURL: 'http://127.0.0.1:7391',

test/web/fixtures.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { startTestAgent, type TestAgent } from '../helpers/agent';
33

44
type TestFixtures = {
55
agent: TestAgent;
6+
workspaceName: string;
67
};
78

89
export const test = base.extend<TestFixtures>({
@@ -14,6 +15,14 @@ export const test = base.extend<TestFixtures>({
1415
},
1516
{ scope: 'worker' },
1617
],
18+
workspaceName: [
19+
async ({ agent }, use) => {
20+
const name = agent.generateWorkspaceName();
21+
await agent.api.createWorkspace({ name });
22+
await use(name);
23+
},
24+
{ scope: 'worker' },
25+
],
1726
});
1827

1928
export { expect } from '@playwright/test';

test/web/mcp.spec.ts

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,13 @@
11
import { test, expect } from './fixtures';
2-
import { generateTestWorkspaceName } from '../helpers/agent';
32

43
test.describe('Web UI - MCP', () => {
5-
test('mcp page loads from sidebar', async ({ agent, page }) => {
6-
// Create a workspace first to bypass setup guard
7-
const workspaceName = generateTestWorkspaceName();
8-
await agent.api.createWorkspace({ name: workspaceName });
4+
test('mcp page loads from sidebar', async ({ agent, workspaceName, page }) => {
5+
await page.goto(`http://127.0.0.1:${agent.port}/`);
96

10-
try {
11-
await page.goto(`http://127.0.0.1:${agent.port}/`);
7+
await page.getByRole('button', { name: 'Integrations' }).click();
8+
await page.getByRole('link', { name: 'MCP' }).click();
9+
await expect(page.getByRole('heading', { name: 'MCP Servers' })).toBeVisible();
1210

13-
await page.getByRole('button', { name: 'Integrations' }).click();
14-
await page.getByRole('link', { name: 'MCP' }).click();
15-
await expect(page.getByRole('heading', { name: 'MCP Servers' })).toBeVisible();
16-
17-
await expect(page.getByRole('button', { name: 'Add MCP Server' })).toBeVisible();
18-
} finally {
19-
await agent.api.deleteWorkspace(workspaceName);
20-
}
21-
}, 120000);
11+
await expect(page.getByRole('button', { name: 'Add MCP Server' })).toBeVisible();
12+
});
2213
});

test/web/skills.spec.ts

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,13 @@
11
import { test, expect } from './fixtures';
2-
import { generateTestWorkspaceName } from '../helpers/agent';
32

43
test.describe('Web UI - Skills', () => {
5-
test('skills page loads from sidebar', async ({ agent, page }) => {
6-
// Create a workspace first to bypass setup guard
7-
const workspaceName = generateTestWorkspaceName();
8-
await agent.api.createWorkspace({ name: workspaceName });
4+
test('skills page loads from sidebar', async ({ agent, workspaceName, page }) => {
5+
await page.goto(`http://127.0.0.1:${agent.port}/`);
96

10-
try {
11-
await page.goto(`http://127.0.0.1:${agent.port}/`);
7+
await page.getByRole('button', { name: 'Integrations' }).click();
8+
await page.getByRole('link', { name: 'Skills' }).click();
9+
await expect(page.getByRole('heading', { name: 'Skills' })).toBeVisible();
1210

13-
await page.getByRole('button', { name: 'Integrations' }).click();
14-
await page.getByRole('link', { name: 'Skills' }).click();
15-
await expect(page.getByRole('heading', { name: 'Skills' })).toBeVisible();
16-
17-
await expect(page.getByRole('button', { name: 'Add Skill' })).toBeVisible();
18-
} finally {
19-
await agent.api.deleteWorkspace(workspaceName);
20-
}
21-
}, 120000);
11+
await expect(page.getByRole('button', { name: 'Add Skill' })).toBeVisible();
12+
});
2213
});

0 commit comments

Comments
 (0)