39 lines
2.0 KiB
TypeScript
39 lines
2.0 KiB
TypeScript
import { mkdtemp, rm } from 'node:fs/promises';
|
|
import { tmpdir } from 'node:os';
|
|
import path from 'node:path';
|
|
import { closeElectronApp, expect, getStableWindow, test } from './fixtures/electron';
|
|
|
|
test.describe('Project-level Superpowers setting', () => {
|
|
test('starts new projects with Superpowers disabled', async ({ launchElectronApp }) => {
|
|
const parentPath = await mkdtemp(path.join(tmpdir(), 'niancode-superpowers-e2e-'));
|
|
const app = await launchElectronApp({ skipSetup: true });
|
|
|
|
try {
|
|
await app.evaluate(({ ipcMain }, selectedPath) => {
|
|
ipcMain.removeHandler('dialog:open');
|
|
ipcMain.handle('dialog:open', async () => ({ canceled: false, filePaths: [selectedPath] }));
|
|
}, parentPath);
|
|
|
|
const page = await getStableWindow(app);
|
|
await page.getByTestId('sidebar-create-project').click();
|
|
await expect(page.getByRole('radio', { name: '直接使用所选文件夹(默认)' })).toBeChecked();
|
|
await page.getByRole('button', { name: '选择路径' }).click();
|
|
await expect(page.getByLabel('项目路径')).toHaveValue(parentPath);
|
|
await page.getByRole('button', { name: '确认创建' }).click();
|
|
|
|
await expect(page.getByTestId('sidebar-nav-project-config')).toBeVisible();
|
|
await expect(page.getByTestId('sidebar-nav-publish')).toHaveCount(0);
|
|
await expect(page.getByText(/还没有联系人/)).toBeVisible();
|
|
await expect(page.getByRole('button', { name: '新增联系人' })).toBeVisible();
|
|
await page.getByTestId('resource-card-skills').click();
|
|
await expect(page.getByRole('switch', { name: '启用 Superpowers' })).toHaveAttribute('aria-checked', 'false');
|
|
await expect(page.getByText('已关闭')).toBeVisible();
|
|
await page.getByRole('button', { name: '关闭' }).click();
|
|
await expect(page.getByTestId('resource-card-publish')).toHaveCount(0);
|
|
} finally {
|
|
await closeElectronApp(app);
|
|
await rm(parentPath, { recursive: true, force: true });
|
|
}
|
|
});
|
|
});
|