/* @vitest-environment jsdom */ import { render, screen } from '@testing-library/react'; import { expect, test } from 'vitest'; import { PlatformActionButton } from './PlatformActionButton'; test('renders platform primary action button by default', () => { render(确认); const button = screen.getByRole('button', { name: '确认' }); expect(button.className).toContain('platform-button'); expect(button.className).toContain('platform-button--primary'); expect(button.className).toContain('rounded-2xl'); expect(button.className).toContain('disabled:cursor-not-allowed'); }); test('supports profile primary button surface', () => { render( 兑换 , ); const button = screen.getByRole('button', { name: '兑换' }); expect(button.className).toContain('platform-primary-button'); expect(button.className).toContain('w-full'); expect(button.className).toContain('py-3'); }); test('supports secondary and pill variants', () => { render( 重新加载 , ); const button = screen.getByRole('button', { name: '重新加载' }); expect(button.className).toContain('platform-button--secondary'); expect(button.className).toContain('rounded-full'); expect(button.className).toContain('text-xs'); expect(button.className).toContain('justify-start'); expect(button.className).toContain('text-left'); }); test('supports label child chrome for file upload controls', () => { render( 上传 , ); const label = screen.getByText('上传'); expect(label.tagName).toBe('LABEL'); expect(label.getAttribute('for')).toBe('upload'); expect(label.className).toContain('platform-button--secondary'); }); test('supports editor dark action surface', () => { render( 确认前往 , ); const button = screen.getByRole('button', { name: '确认前往' }); expect(button.className).toContain('platform-action-button--editor-dark'); expect(button.className).toContain('border-amber-300/30'); expect(button.className).toContain('bg-amber-500/20'); expect(button.className).toContain('text-[10px]'); }); test('supports accent action tone', () => { render( 生成 , ); const button = screen.getByRole('button', { name: '生成' }); expect(button.className).toContain('platform-action-button--accent'); expect(button.className).toContain('bg-amber-200'); expect(button.className).toContain('text-slate-950'); expect(button.className).toContain('h-12'); expect(button.className).toContain('w-full'); }); test('supports accent soft action tone', () => { render( 点赞 , ); const button = screen.getByRole('button', { name: '点赞' }); expect(button.className).toContain('platform-action-button--accent-soft'); expect(button.className).toContain('[color:var(--platform-action-accent,#c7653d)]'); expect(button.className).toContain( '[--platform-action-accent:var(--platform-work-like-accent,#c7653d)]', ); });