mirror of
https://github.com/nexu-io/open-design.git
synced 2026-06-01 03:14:35 +07:00
* Add Claude-style design system workflow * Merge design system workflow into main * Restore design system workflow UI styles * Fix design system setup scrolling * Fix design system setup connector button * Preserve connector auth link after popup block * Simplify connected GitHub setup state * Open generated design system workspace project * Summarize design system auto prompt in chat * Add bounded GitHub connector design intake * Prefer path-scoped GitHub intake tools * Restore branch GitHub design context intake * Restore design system review workspace * Restore design system manager tab * Let design system workflow routes own details * Open editable design systems as projects * Restore design system workspace coverage * Fix bounded GitHub connector intake * Hide design system review while generating * Suppress design system generation questions * Constrain GitHub design intake to bounded command * Tolerate oversized GitHub metadata during intake * Rebuild daemon CLI when sources change * Fallback when GitHub connector snapshots are rate limited * Allow GitHub intake without Composio * Use native GitHub auth for design intake * Remove design system review group heading * Improve design system extraction evidence * Align design system scaffold with Claude output * Add evidence inventory for design system intake * Add local design system evidence intake * Add design system package audit gate * Allow auditing Claude Design reference packages * Audit design system package content quality * Migrate legacy design system artifacts * Clean migrated design system artifacts * Require modular design system UI kits * Reject thin design system UI kits * Prioritize core design evidence intake * Require role-based design system UI kits * Clean stale design system manifest references * Require representative preserved design assets * Warn on generic design system visuals * Enforce design system quality warnings * Audit connected design system UI kits * Require mounted design system UI kits * Require composed design system app shells * Require runnable JSX design system kits * Require browser globals for design system components * Infer design system names from source URLs * Require source examples in design system packages * Bind preserved fonts in design system tokens * Require skill frontmatter in design system packages * Preserve build icons in design system packages * Require real assets in brand previews * Require substantive source examples * Require product overview in design system README * Require reusable UI kit README * Require reusable design system skill docs * Seed Claude-style UI kit entry contract * Preserve runtime build assets in design packages * Audit design system packages after generation * Audit design system first-run output * Audit source-backed preview cards * Align design system UI kit scaffolds * Materialize design evidence package artifacts * Show project chat during design system setup * Hand off design system setup to project chat * Auto-repair design system audit failures * Harden design system evidence preservation * Tighten design system package guidance * Add targeted design system repair guidance * Bound design system audit auto repair * Use connector statuses in design system setup * Audit design system preview manifests * Require README preview manifests for design systems * Fix design system GitHub intake handoff * Fix daemon prompt CI assertions
87 lines
2.3 KiB
TypeScript
87 lines
2.3 KiB
TypeScript
// @vitest-environment jsdom
|
|
|
|
import { cleanup, fireEvent, render, screen } from '@testing-library/react';
|
|
import { afterEach, describe, expect, it, vi } from 'vitest';
|
|
import type { DesignSystemSummary } from '@open-design/contracts';
|
|
|
|
import { DesignSystemsTab } from '../../src/components/DesignSystemsTab';
|
|
|
|
vi.mock('../../src/providers/registry', async () => {
|
|
const actual = await vi.importActual<typeof import('../../src/providers/registry')>(
|
|
'../../src/providers/registry',
|
|
);
|
|
return {
|
|
...actual,
|
|
updateDesignSystemDraft: vi.fn(async () => null),
|
|
deleteDesignSystemDraft: vi.fn(async () => true),
|
|
};
|
|
});
|
|
|
|
afterEach(() => {
|
|
cleanup();
|
|
vi.restoreAllMocks();
|
|
});
|
|
|
|
const systems: DesignSystemSummary[] = [
|
|
{
|
|
id: 'user:acme',
|
|
title: 'Acme Design System',
|
|
category: 'Custom',
|
|
summary: 'Internal product system.',
|
|
surface: 'web',
|
|
source: 'user',
|
|
status: 'draft',
|
|
isEditable: true,
|
|
updatedAt: '2026-05-13T03:19:00.000Z',
|
|
},
|
|
{
|
|
id: 'linear',
|
|
title: 'Linear',
|
|
category: 'Productivity & SaaS',
|
|
summary: 'Quiet issue-tracker system.',
|
|
surface: 'web',
|
|
source: 'built-in',
|
|
status: 'published',
|
|
isEditable: false,
|
|
},
|
|
];
|
|
|
|
describe('DesignSystemsTab', () => {
|
|
it('surfaces user-created design systems in the gallery', () => {
|
|
render(
|
|
<DesignSystemsTab
|
|
systems={systems}
|
|
selectedId="user:acme"
|
|
onSelect={() => {}}
|
|
onPreview={() => {}}
|
|
onCreate={() => {}}
|
|
onOpenSystem={() => {}}
|
|
/>,
|
|
);
|
|
|
|
expect(screen.getByText('Create')).toBeTruthy();
|
|
expect(screen.getByText('Acme Design System')).toBeTruthy();
|
|
expect(screen.getByText('Linear')).toBeTruthy();
|
|
});
|
|
|
|
it('routes create and open actions to the dedicated design-system flow', () => {
|
|
const onCreate = vi.fn();
|
|
const onOpenSystem = vi.fn();
|
|
render(
|
|
<DesignSystemsTab
|
|
systems={systems}
|
|
selectedId={null}
|
|
onSelect={() => {}}
|
|
onPreview={() => {}}
|
|
onCreate={onCreate}
|
|
onOpenSystem={onOpenSystem}
|
|
/>,
|
|
);
|
|
|
|
fireEvent.click(screen.getByText('Create'));
|
|
expect(onCreate).toHaveBeenCalledOnce();
|
|
|
|
fireEvent.click(screen.getByText('Edit'));
|
|
expect(onOpenSystem).toHaveBeenCalledWith('user:acme');
|
|
});
|
|
});
|