From bfb85a8da73d6d54bfd639e9a013aeb2301ebb6f Mon Sep 17 00:00:00 2001 From: KANISHKA GUPTA Date: Wed, 27 May 2026 21:36:16 +0530 Subject: [PATCH 1/3] recent searches --- app/page.test.tsx | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/app/page.test.tsx b/app/page.test.tsx index fcc9d93b..23a7afd1 100644 --- a/app/page.test.tsx +++ b/app/page.test.tsx @@ -52,7 +52,7 @@ vi.mock('framer-motion', () => ({ vi.mock('@/hooks/useRecentSearches', () => ({ useRecentSearches: () => ({ - searches: [], + searches: ['octocat', 'torvalds'], addSearch: vi.fn(), clearSearches: vi.fn(), }), @@ -100,6 +100,19 @@ describe('LandingPage', () => { expect(input.value).toBe(''); }); + it('renders recent searches and applies a recent search when clicked', () => { + render(); + const input = screen.getByPlaceholderText('Enter GitHub Username') as HTMLInputElement; + const octocatButton = screen.getByRole('button', { name: 'octocat' }); + + expect(octocatButton).toBeDefined(); + expect(screen.getByRole('button', { name: 'Clear' })).toBeDefined(); + + fireEvent.click(octocatButton); + + expect(input.value).toBe('octocat'); + }); + it('renders an empty state before a username is entered', () => { render(); From fb89ecb90e77cc9bd8a4ebc3c741a470088dcf79 Mon Sep 17 00:00:00 2001 From: KANISHKA GUPTA Date: Wed, 27 May 2026 21:57:50 +0530 Subject: [PATCH 2/3] watch dashboard --- app/page.test.tsx | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/app/page.test.tsx b/app/page.test.tsx index 23a7afd1..4e959663 100644 --- a/app/page.test.tsx +++ b/app/page.test.tsx @@ -113,6 +113,20 @@ describe('LandingPage', () => { expect(input.value).toBe('octocat'); }); + it('disables the Watch Dashboard link when username is empty', () => { + render(); + const input = screen.getByPlaceholderText('Enter GitHub Username') as HTMLInputElement; + const dashboardLink = screen.getByRole('link', { name: 'Watch Dashboard' }); + + expect(dashboardLink.getAttribute('aria-disabled')).toBe('true'); + expect(dashboardLink.getAttribute('href')).toBe('/'); + + fireEvent.change(input, { target: { value: 'octocat' } }); + + expect(dashboardLink.getAttribute('aria-disabled')).toBe('false'); + expect(dashboardLink.getAttribute('href')).toBe('/dashboard/octocat'); + }); + it('renders an empty state before a username is entered', () => { render(); From a59f1bb5b3cb2bbbb406e9b0a57118910a47544f Mon Sep 17 00:00:00 2001 From: KANISHKA GUPTA Date: Wed, 27 May 2026 22:13:20 +0530 Subject: [PATCH 3/3] watch dashboard disabled --- app/page.test.tsx | 6 ++++-- app/page.tsx | 7 ++++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/app/page.test.tsx b/app/page.test.tsx index 4e959663..f0515917 100644 --- a/app/page.test.tsx +++ b/app/page.test.tsx @@ -119,11 +119,13 @@ describe('LandingPage', () => { const dashboardLink = screen.getByRole('link', { name: 'Watch Dashboard' }); expect(dashboardLink.getAttribute('aria-disabled')).toBe('true'); - expect(dashboardLink.getAttribute('href')).toBe('/'); + expect(dashboardLink.getAttribute('tabindex')).toBe('-1'); + expect(dashboardLink.getAttribute('href')).toBe('#'); fireEvent.change(input, { target: { value: 'octocat' } }); - expect(dashboardLink.getAttribute('aria-disabled')).toBe('false'); + expect(dashboardLink.getAttribute('aria-disabled')).toBeNull(); + expect(dashboardLink.getAttribute('tabindex')).toBeNull(); expect(dashboardLink.getAttribute('href')).toBe('/dashboard/octocat'); }); diff --git a/app/page.tsx b/app/page.tsx index 68a72cb9..5478a14b 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -254,8 +254,9 @@ export default function LandingPage() { { if (!hasUsername) { e.preventDefault(); @@ -267,7 +268,7 @@ export default function LandingPage() { className={`relative flex min-w-[160px] items-center justify-center gap-2 overflow-hidden rounded-xl border px-6 py-3.5 text-sm font-semibold transition-all duration-200 active:scale-[0.98] ${ hasUsername ? 'border-black/10 bg-gray-100 text-black hover:bg-gray-200 dark:border-[rgba(255,255,255,0.15)] dark:bg-white/[0.04] dark:text-white dark:hover:bg-white/10' - : 'border-black/10 bg-gray-100 text-gray-500 dark:border-[rgba(255,255,255,0.08)] dark:bg-white/[0.02] dark:text-white/35' + : 'pointer-events-none cursor-not-allowed border-black/10 bg-gray-100 text-gray-500 dark:border-[rgba(255,255,255,0.08)] dark:bg-white/[0.02] dark:text-white/35' }`} > Watch Dashboard