get('/') ->assertOk(); }); test('home page displays English tagline when locale is English', function () { $this->withSession(['locale' => 'en']) ->get('/') ->assertOk() ->assertSee('Committed to Justice – Grounded in Dignity – Driven to Advocate'); }); test('home page displays Arabic tagline when locale is Arabic', function () { $this->withSession(['locale' => 'ar']) ->get('/') ->assertOk() ->assertSee('ملتزمون بالعدالة – متجذرون بالكرامة – مدفوعون للدفاع'); }); test('home page displays English intro text when locale is English', function () { $this->withSession(['locale' => 'en']) ->get('/') ->assertOk() ->assertSee('Libra for Rights is a legal institution woven from the fabric of society'); }); test('home page displays Arabic intro text when locale is Arabic', function () { $this->withSession(['locale' => 'ar']) ->get('/') ->assertOk() ->assertSee('ليبرا للحقوق مؤسسة قانونية منسوجة من نسيج المجتمع'); }); test('home page displays Book a Consultation button in English', function () { $this->withSession(['locale' => 'en']) ->get('/') ->assertOk() ->assertSee('Book a Consultation'); }); test('home page displays Book a Consultation button in Arabic', function () { $this->withSession(['locale' => 'ar']) ->get('/') ->assertOk() ->assertSee('احجز استشارة'); }); test('home page displays Our Services button in English', function () { $this->withSession(['locale' => 'en']) ->get('/') ->assertOk() ->assertSee('Our Services'); }); test('home page displays Our Services button in Arabic', function () { $this->withSession(['locale' => 'ar']) ->get('/') ->assertOk() ->assertSee('خدماتنا'); }); test('home page contains link to booking page', function () { $this->get('/') ->assertOk() ->assertSee('href="'.route('booking').'"', false); }); test('home page contains link to services section', function () { $this->get('/') ->assertOk() ->assertSee('href="#services"', false); }); test('home page contains services section with id', function () { $this->get('/') ->assertOk() ->assertSee('id="services"', false); }); // About Section Tests test('home page displays about section title in English', function () { $this->withSession(['locale' => 'en']) ->get('/') ->assertOk() ->assertSee('Meet the Founder'); }); test('home page displays about section title in Arabic', function () { $this->withSession(['locale' => 'ar']) ->get('/') ->assertOk() ->assertSee('تعرف على المؤسِّسة'); }); test('home page displays lawyer name in English', function () { $this->withSession(['locale' => 'en']) ->get('/') ->assertOk() ->assertSee('Huda Armouche'); }); test('home page displays lawyer name in Arabic', function () { $this->withSession(['locale' => 'ar']) ->get('/') ->assertOk() ->assertSee('هدى عرموش'); }); test('home page displays lawyer title in English', function () { $this->withSession(['locale' => 'en']) ->get('/') ->assertOk() ->assertSee('Attorney at Law'); }); test('home page displays lawyer title in Arabic', function () { $this->withSession(['locale' => 'ar']) ->get('/') ->assertOk() ->assertSee('محامية'); }); test('home page displays lawyer bio in English', function () { $this->withSession(['locale' => 'en']) ->get('/') ->assertOk() ->assertSee('Huda Armouche founded Libra for Rights'); }); test('home page displays lawyer bio in Arabic', function () { $this->withSession(['locale' => 'ar']) ->get('/') ->assertOk() ->assertSee('أسست هدى عرموش ليبرا للحقوق'); }); test('home page displays lawyer photo', function () { $this->get('/') ->assertOk() ->assertSee('images/huda-armouche.jpg', false); }); test('home page lawyer photo has alt text for accessibility', function () { $this->withSession(['locale' => 'en']) ->get('/') ->assertOk() ->assertSee('alt="Huda Armouche"', false); }); // Services Section Tests test('home page displays services section title in English', function () { $this->withSession(['locale' => 'en']) ->get('/') ->assertOk() ->assertSee('Our Services'); }); test('home page displays services section title in Arabic', function () { $this->withSession(['locale' => 'ar']) ->get('/') ->assertOk() ->assertSee('خدماتنا'); }); test('home page displays services section subtitle in English', function () { $this->withSession(['locale' => 'en']) ->get('/') ->assertOk() ->assertSee('Comprehensive legal solutions for individuals and businesses'); }); test('home page displays services section subtitle in Arabic', function () { $this->withSession(['locale' => 'ar']) ->get('/') ->assertOk() ->assertSee('حلول قانونية شاملة للأفراد والشركات'); }); // Values Section Tests test('home page contains values section with id', function () { $this->get('/') ->assertOk() ->assertSee('id="values"', false); }); test('home page displays values section title in English', function () { $this->withSession(['locale' => 'en']) ->get('/') ->assertOk() ->assertSee('Our Values'); }); test('home page displays values section title in Arabic', function () { $this->withSession(['locale' => 'ar']) ->get('/') ->assertOk() ->assertSee('قيمنا'); }); test('home page displays values section subtitle in English', function () { $this->withSession(['locale' => 'en']) ->get('/') ->assertOk() ->assertSee('These start in the field and return to the people'); }); test('home page displays values section subtitle in Arabic', function () { $this->withSession(['locale' => 'ar']) ->get('/') ->assertOk() ->assertSee('تبدأ من الميدان وتعود إلى الناس'); }); test('home page displays integrity value in English', function () { $this->withSession(['locale' => 'en']) ->get('/') ->assertOk() ->assertSee('Integrity'); }); test('home page displays integrity value in Arabic', function () { $this->withSession(['locale' => 'ar']) ->get('/') ->assertOk() ->assertSee('النزاهة'); }); test('home page displays justice value in English', function () { $this->withSession(['locale' => 'en']) ->get('/') ->assertOk() ->assertSee('Justice'); }); test('home page displays justice value in Arabic', function () { $this->withSession(['locale' => 'ar']) ->get('/') ->assertOk() ->assertSee('العدالة'); }); test('home page displays knowledge value in English', function () { $this->withSession(['locale' => 'en']) ->get('/') ->assertOk() ->assertSee('Knowledge'); }); test('home page displays knowledge value in Arabic', function () { $this->withSession(['locale' => 'ar']) ->get('/') ->assertOk() ->assertSee('المعرفة'); }); test('home page displays womens empowerment value in English', function () { $this->withSession(['locale' => 'en']) ->get('/') ->assertOk() ->assertSee('Women's Empowerment', false); }); test('home page displays womens empowerment value in Arabic', function () { $this->withSession(['locale' => 'ar']) ->get('/') ->assertOk() ->assertSee('تمكين المرأة'); }); test('home page displays professionalism value in English', function () { $this->withSession(['locale' => 'en']) ->get('/') ->assertOk() ->assertSee('Professionalism'); }); test('home page displays professionalism value in Arabic', function () { $this->withSession(['locale' => 'ar']) ->get('/') ->assertOk() ->assertSee('الاحترافية'); }); test('home page displays social innovation value in English', function () { $this->withSession(['locale' => 'en']) ->get('/') ->assertOk() ->assertSee('Social Innovation'); }); test('home page displays social innovation value in Arabic', function () { $this->withSession(['locale' => 'ar']) ->get('/') ->assertOk() ->assertSee('الابتكار الاجتماعي'); }); // Latest Posts Section Tests test('home page displays posts section when published posts exist', function () { Post::factory()->published()->count(3)->create(); $this->get('/') ->assertOk() ->assertSee('id="posts"', false); }); test('home page displays posts section title in English', function () { Post::factory()->published()->create(); $this->withSession(['locale' => 'en']) ->get('/') ->assertOk() ->assertSee('Latest Articles'); }); test('home page displays posts section title in Arabic', function () { Post::factory()->published()->create(); $this->withSession(['locale' => 'ar']) ->get('/') ->assertOk() ->assertSee('أحدث المقالات'); }); test('home page displays post titles', function () { $post = Post::factory()->published()->create([ 'title' => ['en' => 'Test English Title', 'ar' => 'عنوان اختبار'], ]); $this->withSession(['locale' => 'en']) ->get('/') ->assertOk() ->assertSee('Test English Title'); }); test('home page displays post titles in Arabic', function () { $post = Post::factory()->published()->create([ 'title' => ['en' => 'Test English Title', 'ar' => 'عنوان اختبار عربي'], ]); $this->withSession(['locale' => 'ar']) ->get('/') ->assertOk() ->assertSee('عنوان اختبار عربي'); }); test('home page displays post excerpt', function () { $post = Post::factory()->published()->create([ 'body' => ['en' => 'This is a test body content for the post that should be truncated.', 'ar' => 'هذا محتوى اختبار'], ]); $this->withSession(['locale' => 'en']) ->get('/') ->assertOk() ->assertSee('This is a test body content'); }); test('home page displays read more link in English', function () { Post::factory()->published()->create(); $this->withSession(['locale' => 'en']) ->get('/') ->assertOk() ->assertSee('Read More'); }); test('home page displays read more link in Arabic', function () { Post::factory()->published()->create(); $this->withSession(['locale' => 'ar']) ->get('/') ->assertOk() ->assertSee('اقرأ المزيد'); }); test('home page displays view all posts link in English', function () { Post::factory()->published()->create(); $this->withSession(['locale' => 'en']) ->get('/') ->assertOk() ->assertSee('View All Articles'); }); test('home page displays view all posts link in Arabic', function () { Post::factory()->published()->create(); $this->withSession(['locale' => 'ar']) ->get('/') ->assertOk() ->assertSee('عرض جميع المقالات'); }); test('home page view all posts links to posts index', function () { Post::factory()->published()->create(); $this->get('/') ->assertOk() ->assertSee('href="'.route('posts.index').'"', false); }); test('home page post title links to post show page', function () { $post = Post::factory()->published()->create(); $this->get('/') ->assertOk() ->assertSee('href="'.route('posts.show', $post).'"', false); }); test('home page only shows published posts not drafts', function () { $publishedPost = Post::factory()->published()->create([ 'title' => ['en' => 'Published Post Title', 'ar' => 'منشور'], ]); $draftPost = Post::factory()->draft()->create([ 'title' => ['en' => 'Draft Post Title', 'ar' => 'مسودة'], ]); $this->withSession(['locale' => 'en']) ->get('/') ->assertOk() ->assertSee('Published Post Title') ->assertDontSee('Draft Post Title'); }); test('home page displays posts in order of latest published first', function () { $oldPost = Post::factory()->published()->create([ 'title' => ['en' => 'Old Post', 'ar' => 'قديم'], 'published_at' => now()->subDays(10), ]); $newPost = Post::factory()->published()->create([ 'title' => ['en' => 'New Post', 'ar' => 'جديد'], 'published_at' => now()->subDay(), ]); $response = $this->withSession(['locale' => 'en'])->get('/'); $response->assertOk(); $content = $response->getContent(); $newPostPosition = strpos($content, 'New Post'); $oldPostPosition = strpos($content, 'Old Post'); // New post should appear before old post expect($newPostPosition)->toBeLessThan($oldPostPosition); }); test('home page displays post publication date', function () { $post = Post::factory()->published()->create([ 'published_at' => now()->setDate(2026, 1, 15), ]); $this->withSession(['locale' => 'en']) ->get('/') ->assertOk() ->assertSee('15 January 2026'); }); // Footer Section Tests test('home page displays footer address with street name in Arabic', function () { $this->withSession(['locale' => 'ar']) ->get('/') ->assertOk() ->assertSee('شارع يافا - بجانب الشني - العمارة الأمريكية - الطابق الرابع'); }); test('home page shows the empty articles message when no posts are published', function () { $this->withSession(['locale' => 'en']) ->get('/') ->assertOk() ->assertSee(__('home.posts_empty', [], 'en')); }); test('home page displays maximum 3 latest posts', function () { Post::factory()->published()->count(5)->create(); $html = $this->get('/')->assertOk()->getContent(); expect(substr_count($html, 'class="post"'))->toBe(3); });