+ {state === 'idle' &&
}
+ {state === 'sleeping' &&
}
+ {state === 'excited' &&
}
+ {state === 'lonely' &&
}
+ {state === 'sleeping' && (
+
+ )}
+
+ );
+}
diff --git a/packages/web/src/components/ui/__tests__/Mascot.test.tsx b/packages/web/src/components/ui/__tests__/Mascot.test.tsx
new file mode 100644
index 00000000..a269668d
--- /dev/null
+++ b/packages/web/src/components/ui/__tests__/Mascot.test.tsx
@@ -0,0 +1,117 @@
+// packages/web/src/components/ui/__tests__/Mascot.test.tsx
+import { describe, it, expect, vi } from 'vitest';
+import { render } from '@testing-library/react';
+import { Mascot } from '../Mascot';
+
+// Mock the animation hook — Task 2 implements it
+vi.mock('../../../hooks/useMascotAnimation', () => ({
+ useMascotAnimation: vi.fn(),
+}));
+
+describe('Mascot', () => {
+ it('renders an SVG with aria-hidden and presentation role', () => {
+ const { container } = render(