mirror of
https://github.com/nextlevelbuilder/ui-ux-pro-max-skill.git
synced 2026-08-13 16:28:41 +00:00
Resolve platform-root-relative script paths for local and global installs, with regression coverage across Claude, Codex, Copilot, and Kiro.
33 lines
1.4 KiB
TypeScript
33 lines
1.4 KiB
TypeScript
import { expect, test } from '@playwright/test';
|
|
import { loadPlatformConfig, renderSkillFile } from '../../src/utils/template.js';
|
|
|
|
const cases = [
|
|
['claude', '.claude/skills/ui-ux-pro-max/scripts/search.py'],
|
|
['codex', '.agents/skills/ui-ux-pro-max/scripts/search.py'],
|
|
['copilot', '.github/prompts/ui-ux-pro-max/scripts/search.py'],
|
|
['kiro', '.kiro/steering/ui-ux-pro-max/scripts/search.py'],
|
|
] as const;
|
|
const SEARCH_COMMAND_COUNT = 16;
|
|
|
|
function extractSearchScriptPaths(content: string): string[] {
|
|
return [...content.matchAll(/^python3\s+(\S*search\.py)\b/gm)].map(match => match[1]);
|
|
}
|
|
|
|
for (const [platform, localPath] of cases) {
|
|
test(`${platform} renders project-root and global script paths`, async () => {
|
|
const config = await loadPlatformConfig(platform);
|
|
|
|
const localContent = await renderSkillFile(config);
|
|
const localPaths = extractSearchScriptPaths(localContent);
|
|
expect(localPaths).toHaveLength(SEARCH_COMMAND_COUNT);
|
|
expect(new Set(localPaths)).toEqual(new Set([localPath]));
|
|
expect(localContent).not.toContain('{{SCRIPT_PATH}}');
|
|
|
|
const globalContent = await renderSkillFile(config, true);
|
|
const globalPaths = extractSearchScriptPaths(globalContent);
|
|
expect(globalPaths).toHaveLength(SEARCH_COMMAND_COUNT);
|
|
expect(new Set(globalPaths)).toEqual(new Set([`~/${localPath}`]));
|
|
expect(globalContent).not.toContain('{{SCRIPT_PATH}}');
|
|
});
|
|
}
|