اختبار التصميم المتجاوب

يتحقق اختبار التصميم المتجاوب (Responsive Testing) من أن صفحة الويب تُبقي محتواها ووظائفها قابلة للاستخدام عند كل حجم لمنفذ العرض (Viewport) وكل اتجاه للشاشة وكل مستوى تكبير يدعمه المنتج. فشيفرة CSS الخاصة بها تبدّل التخطيط عند نقاط التوقف (Breakpoints)، مثلاً عمود واحد من المنتجات على الهاتف، وعمودان على الجهاز اللوحي، وأربعة أعمدة على الحاسوب المحمول. وأثناء الاختبار تغيّر حجم النافذة وتدير الشاشة وتكبّر الصفحة، ثم تتحقق من أن شيئاً لم يُقطع أو يُغطَّ أو يصبح بعيد المنال أو يضِع.

ويبني هذا الدرس على استعلامات الوسائط (Media queries) من درس أساسيات CSS للمختبِرين، وعلى شريط أدوات الأجهزة (Device toolbar) من درس أدوات المطوّرين في المتصفح.

لماذا يهم

التخطيط الذي لا يعمل إلا عند العروض الواردة في التصميم يخذل أناساً حقيقيين: زر دفع مختبئ تحت تذييل ثابت، وقائمة لا تُفتح في الوضع الأفقي، وسعر مقطوع إلى نصفين. وحين لا يستطيع المستخدم إكمال مهمته فهذا إخفاق وظيفي لا عيب شكلي.

وتجعل WCAG ⁦2.2⁩، معيار إمكانية الوصول الصادر عن W3C، جزءاً من ذلك قابلاً للاختبار: إعادة التدفق عند ⁦320⁩ بكسل CSS (معيار النجاح ⁦1.4.10⁩)، ونص يمكن تكبيره إلى ⁦200%⁩ (⁦1.4.4⁩)، وعدم التقييد باتجاه واحد (⁦1.3.4⁩).

منفذ العرض ونقاط التوقف: اختيار العروض

منفذ العرض هو المساحة التي تُرتَّب فيها الصفحة، ويُقاس ببكسلات CSS. وتحدد متصفحات الجوال حجمه من <meta name="viewport" content="width=device-width, initial-scale=1">؛ ومن دون هذا الوسم ترتّب الصفحة بعرض يشبه سطح المكتب ثم تصغّرها. ونقطة التوقف عرضٌ، وأحياناً ارتفاع، يبدّل عنده استعلام الوسائط التخطيط، واستعلام الوسائط قواعد CSS لا تنطبق إلا ما دام شرط مثل min-width: 600px صحيحاً. وبين نقاط التوقف يتمدد التخطيط المرن ويتقلص مع منفذ العرض.

كل نقطة توقف هي الحد بين تخطيطين، فاختبر آخر عرض في التخطيط الأول وأول عرض في التخطيط التالي، لأن استعلام الوسائط الذي يخطئ ببكسل واحد لا يُخفق إلا عند هذين العرضين. ويشرح درس تحليل القيم الحدّية (Boundary Value Analysis) هذه التقنية بالتفصيل. خذ نقاط التوقف من نظام التصميم أو من شيفرة CSS نفسها (ابحث فيها عن @media، وتجعل أداة منسّق CSS ورقة الأنماط المصغّرة مقروءة)، لا من قائمة الهواتف الشائعة، لأن نقاط التوقف هي حيث يتغير التخطيط.

  • أصغر عرض مدعوم، وغالباً ⁦320⁩ بكسل CSS.
  • جانبا كل نقطة توقف: ⁦599⁩ و⁦600⁩ مع min-width: 600px، لكن ⁦600⁩ و⁦601⁩ مع max-width: 600px.
  • سحبٌ بطيء عبر كل نطاق، لأن التخطيط المرن ينكسر أيضاً بين نقاط التوقف، وغالباً قرب الطرف الضيق.
  • شاشة عريضة جداً يجب أن يتوقف فيها المحتوى عند عرضه الأقصى، وارتفاعات قصيرة مثل هاتف في الوضع الأفقي.

جرّبها: مولّد القيم الحدّية جرّبها: منسّق CSS

اتجاه الشاشة والتكبير وإعادة التدفق

تدوير الهاتف يبدّل عرض منفذ العرض وارتفاعه: فعرض ⁦360⁩ بكسل CSS في الوضع العمودي (Portrait) قد يصبح ⁦740⁩ في الوضع الأفقي (Landscape) ويعبر نقطة توقف في منتصف مهمة. ويشترط المعيار ⁦1.3.4⁩ في WCAG ألا يُقيَّد المحتوى باتجاه واحد ما لم يكن اتجاه بعينه ضرورياً.

أما تكبير المتصفح (Zoom) على الحاسوب فيكبّر كل بكسل CSS، فيضيق منفذ العرض: النافذة التي عرضها ⁦1280⁩ بكسل CSS يصبح عرضها ⁦640⁩ عند ⁦200%⁩ و⁦320⁩ عند ⁦400%⁩، وتُفعَّل استعلامات الوسائط نفسها كما في شاشة صغيرة. ويشترط المعيار ⁦1.4.4⁩ إمكان تكبير النص إلى ⁦200%⁩ دون فقدان محتوى أو وظيفة، ويشترط ⁦1.4.10⁩ أن يعمل المحتوى عند ⁦320⁩ بكسل CSS دون تمرير في اتجاهين، باستثناء أجزاء مثل جداول البيانات والخرائط. أما التكبير بإصبعين (Pinch zoom) على الهاتف فيكبّر الصفحة دون إعادة ترتيبها، فلا يختبر إعادة التدفق (Reflow).

  • دوّر الشاشة في منتصف مهمة: يجب أن يبقى النص المكتوب والمرشحات وموضع التمرير ومربعات الحوار المفتوحة.
  • كبّر النص وحده من إعداد حجم الخط في المتصفح لتكشف الصناديق ثابتة الارتفاع التي تقطع تسمياتها.
  • أبلغ عن user-scalable=no، أو عن قيمة maximum-scale أقل من ⁦2⁩ مثل maximum-scale=1، في وسم منفذ العرض: فهما يحاولان منع الناس من تكبير الصفحة، وهذا إخفاق في المعيار ⁦1.4.4⁩.

مثال تطبيقي: خطة اختبار لقائمة المنتجات

تعرض قائمة المنتجات في متجرٍ عموداً واحداً وزر القائمة تحت ⁦600⁩ بكسل CSS، وعمودين من ⁦600⁩، وأربعة أعمدة وشريط قائمة كاملاً من ⁦1024⁩، ولا يزيد عرض المحتوى أبداً على ⁦1200⁩. وشيفرة CSS مكتوبة بنهج الجوال أولاً (Mobile-first): @media (min-width: 600px) و@media (min-width: 1024px)، فالعرضان ⁦600⁩ و⁦1024⁩ هما أول عرض في كل تخطيط جديد.

يمرّ المختبِر على الخطة أدناه في شريط أدوات الأجهزة، ثم يكرر مسار الإضافة إلى السلة على هاتف Android حقيقي وجهاز iPhone حقيقي. ويظهر عيبان: من ⁦600⁩ إلى ⁦680⁩ بكسل تُقطع تسمية «أضف إلى السلة»، وتدوير الهاتف يمسح المرشحات المختارة. ويأتي تقرير العيب الثاني بعد الخطة.

  • ⁦320 × 640⁩: الحد الأدنى وعرض إعادة التدفق؛ عمود واحد بلا تمرير أفقي.
  • ⁦599⁩ و⁦600⁩، و⁦1023⁩ و⁦1024⁩: جانبا كل نقطة توقف، مع سحب بطيء عبر كل نطاق.
  • ⁦1920 × 1080⁩: يتوقف المحتوى عند ⁦1200⁩ بكسل في منتصف الشاشة.
  • ⁦360 × 740⁩ يُدار إلى ⁦740 × 360⁩ أثناء التصفية: عمودان مع بقاء المرشحات وموضع التمرير.
  • نافذة عرضها ⁦1280⁩ بكسل عند ⁦200%⁩ و⁦400%⁩: عمودان ثم عمود واحد، وكل وظيفة في المتناول.
قائمة منتجات بنقطتي توقف عند ⁦600⁩ و⁦1024⁩ بكسل CSS: اختبر ⁦320⁩ وجانبي كل نقطة توقف وشاشة عريضة؛ وتكبير نافذة بعرض ⁦1280⁩ أو تدوير الهاتف ينقل الصفحة إلى تخطيط آخر.

عروض الاختبار المخطط لها

المحور من 320 px إلى 1920 px

المحور مختصر بين 1300 و1850: ليس بمقياس الرسم

  • 320–599عمود واحد · زر القائمة
  • 600–1023عمودان · زر القائمة
  • ≥ 1024أربعة أعمدة · شريط القائمة الكامل
  1. 1320 px أصغر عرض مدعومإعادة التدفق في WCAG ⁦1.4.10⁩: بلا تمرير أفقي
  2. 2599 | 600 نقطة التوقف الأولى: اختبر جانبيهاعمود واحد ← عمودان
  3. 31023 | 1024 نقطة التوقف الثانية: اختبر جانبيهازر القائمة ← شريط القائمة الكامل
  4. 41920 px شاشة عريضة جداًيتوقف المحتوى عند ⁦1200⁩ ويتوسط الشاشة

الصفحة نفسها: تكبير نافذة بعرض ⁦1280⁩ وتدوير هاتف

المحور من 320 px إلى 1920 px

المحور مختصر بين 1300 و1850: ليس بمقياس الرسم

  • 320–599عمود واحد · زر القائمة
  • 600–1023عمودان · زر القائمة
  • ≥ 1024أربعة أعمدة · شريط القائمة الكامل
  1. 1100% نافذة حاسوب عند ⁦100%⁩أربعة أعمدة
  2. 2200% النافذة نفسها عند ⁦200%⁩⁦640⁩ بكسل CSS: عمودان
  3. 3400% النافذة نفسها عند ⁦400%⁩⁦320⁩ بكسل CSS: عمود واحد، فحص إعادة التدفق
  4. 4360 × 740 هاتف في الوضع العموديعمود واحد، والمرشحات مختارة
  5. 5740 × 360 الهاتف نفسه في الوضع الأفقييعبر ⁦600⁩: عمودان، لكن المرشحات مُسحتفشل

العروض ببكسلات CSS. والهاتف مثال بمنفذ عرض ⁦360 × 740⁩.

Title:    قائمة المنتجات: تُمسح المرشحات المختارة بعد تدوير الهاتف
Where:    /products، الإصدار 3.8.0 على Staging
Device:   هاتف Android حقيقي، Chrome؛ ويتكرر في شريط أدوات الأجهزة: 360 x 740 ثم 740 x 360
Steps:    1. افتح قائمة المنتجات في الوضع العمودي (منفذ العرض 360 x 740)
          2. اختر المرشحين «المقاس 42» و«اللون: أسود»
          3. دوّر الهاتف إلى الوضع الأفقي (منفذ العرض 740 x 360)
Expected: تخطيط بعمودين، والمرشحان ما زالا مختارين، والقائمة ما زالت مصفّاة
Actual:   تخطيط بعمودين، والمرشحات ممسوحة، والقائمة كاملة بلا تصفية
Notes:    يحدث أيضاً عند تغيير حجم نافذة الحاسوب عبر 600 px، فهو مرتبط بنقطة
          التوقف لا بالجهاز. ولا يضيع شيء ما دام العرض في جانب واحد من 600.

جرّبها: مولّد سيناريوهات الاختبار

ما يستطيع شريط أدوات الأجهزة إخبارك به وما لا يستطيع

شريط أدوات الأجهزة هو الأداة المناسبة لهذا المسح: تكتب أحجاماً دقيقة أو تسحب عبر نطاق، وتدوّر الشاشة، وفي Chrome تعرض استعلامات الوسائط أشرطةً فوق الصفحة. واختيار جهاز جاهز (Device preset) يرسل أيضاً وكيل المستخدم (User agent) الخاص بذلك الهاتف، ويمكنك قراءته بأداة محلل وكيل المستخدم. لكنه يبقى متصفح حاسوب يقلّد هاتفاً، فأكّد المسارات التي يتوقف نجاحها على التخطيط على أجهزة حقيقية. فهو لا يحاكي ما يلي:

  • محرك الهاتف: اختيار iPhone الجاهز في Chrome لا يعرض الصفحة بمحرك WebKit الذي يستخدمه Safari.
  • أشرطة متصفح الجوال التي تختفي وتعود؛ و100vh هو الارتفاع مع إخفائها، فقد تفقد اللوحة الممتدة بطول الشاشة حافتها السفلية.
  • لوحة المفاتيح على الشاشة، التي قد تخفي الحقل المحدد أو زر إرسال ثابتاً.
  • عدم دقة الإصبع: الأهداف الصغيرة أو المتزاحمة التي تُخفق في المعيار ⁦2.5.8⁩ (⁦24 × 24⁩ بكسل CSS أو تباعد كافٍ) تبدو سليمة مع الفأرة.
  • إعدادات حجم النص في الهاتف وأداؤه الفعلي، فإبطاء المعالج والشبكة (Throttling) لا يعطي إلا تقريباً له. وإعداد التكبير في الشريط نفسه يغيّر حجم المعاينة فقط، لا منفذ العرض ببكسلات CSS.

جرّبها: محلّل User-Agent

عيوب التجاوب الشائعة

  • التمرير الأفقي: عرض ثابت، أو كلمة أو رابط طويل بلا مواضع للفصل، أو جدول عريض، أو صورة بلا عرض أقصى.
  • محتوى مغطّى أو بعيد المنال: ترويسة أو تذييل ثابت فوق حقل أو زر، أو مربع حوار أطول من منفذ عرض قصير ولا يمكن تمريره.
  • وظائف مفقودة: إجراء مخفي بـ display: none على الجوال دون طريق آخر إليه، أو قائمة لا تُفتح أو لا تُمرَّر في الوضع الأفقي.
  • نص مقطوع وحالة مفقودة: تسميات تقطعها الترجمات الأطول أو النص المكبَّر، ومدخلات أو مرشحات تعود إلى البداية بعد التدوير، غالباً لأن الصفحة تبدّل المكونات عند نقطة توقف.
  • فجوات وتداخلات بين الاستعلامات: مع max-width: 767px وmin-width: 768px لا تنطبق أيٌّ من القاعدتين على العروض الكسرية مثل ⁦767.5⁩، التي تظهر على بعض الشاشات عالية الكثافة وعند بعض مستويات التكبير؛ ومع max-width: 768px وmin-width: 768px تنطبق القاعدتان معاً عند ⁦768⁩.
  • صور ممدّدة أو مقصوصة أو ضبابية، وفي الصفحات التي تُكتب من اليمين إلى اليسار (RTL) قائمة جوال تنزلق من الجهة الخاطئة.

جرّبها: مولّد Lorem Ipsum جرّبها: مولّد بيانات اختبار متعددة اللغات

أخطاء شائعة

  • اختيار العروض من قائمة أجهزة بدلاً من اختبار جانبي نقاط التوقف في المنتج والسحب عبر النطاقات بينها.
  • اعتبار النجاح في شريط أدوات الأجهزة دليلاً على أن الصفحة تعمل على الهواتف.
  • فحص التخطيط بعد تحميل الصفحة فقط، وعدم التدوير أو تغيير الحجم أو التكبير أبداً في منتصف مهمة.
  • قبول التمرير الأفقي عند ⁦320⁩ بكسل CSS أو حظر التكبير بوصفهما عيبين شكليين؛ وكلاهما إخفاق في إمكانية الوصول.

من منظور ضمان الجودة

في جلسات تنقيح قائمة المهام (Refinement) أو مراجعة التصميم، اطلب نقاط التوقف وأصغر عرض مدعوم وما يجب أن يحتويه كل تخطيط. فالوظيفة التي تختفي على الهواتف يجب أن تكون قراراً من المنتج لا مصادفة.

وفي تقارير العيوب اذكر النطاق الذي يبدأ عنده الإخفاق وينتهي (يُخفق من ⁦600⁩ إلى ⁦680⁩، وسليم عند ⁦681⁩)، والاتجاه ومستوى التكبير والمتصفح، وهل كان جهازاً حقيقياً أم محاكاة، مع لقطة شاشة عند عرض يظهر فيه الإخفاق. وأعد اختبار الإصلاحات على جانبي أقرب نقطة توقف، لأن الإصلاح كثيراً ما ينقل المشكلة إلى النطاق التالي.

تمرين عملي

خطّط فحوص التجاوب لنموذج حجز

المطلوب

تستخدم صفحة حجز فندقي شيفرة CSS أدناه. للنموذج عمودان من ⁦720⁩ بكسل CSS؛ وملخص السعر شريط مثبت في أسفل الشاشة حتى ⁦1100⁩ بكسل، حيث يصبح عموداً جانبياً. وأصغر عرض مدعوم ⁦320⁩.

اكتب عروض الاختبار مع سبب لكل منها، وفحصاً للتدوير وفحصين للتكبير، والعيوب التي ستبحث عنها أولاً، وما ستؤكده على هاتف حقيقي.

المادة
.form    { display: grid; grid-template-columns: 1fr; gap: 16px; }
.summary { position: fixed; bottom: 0; left: 0; right: 0; }

@media (min-width: 720px) {
  .form { grid-template-columns: 1fr 1fr; }
}

@media (min-width: 1100px) {
  .page    { display: grid; grid-template-columns: 2fr 1fr; }
  .summary { position: static; }
}
الخطوات
  1. اكتب نقاط التوقف وتخطيط كل نطاق.
  2. اختر العروض، ثم أضف فحوص التدوير والتكبير.
  3. سمِّ العيوب المرجّحة وما لا يستطيع شريط أدوات الأجهزة حسمه.
إظهار الإجابة النموذجية
الإجابة النموذجية

النطاقات: من ⁦320⁩ إلى ⁦719⁩ عمود واحد مع الشريط، ومن ⁦720⁩ إلى ⁦1099⁩ عمودان مع الشريط، و⁦1100⁩ فأكثر عمودان للنموذج بجانب عمود الملخص. العروض: ⁦320⁩ (الحد الأدنى وإعادة التدفق)؛ و⁦719⁩ و⁦720⁩ (جانبا نقطة توقف النموذج)؛ و⁦1099⁩ و⁦1100⁩ (جانبا نقطة توقف الملخص: عند ⁦1100⁩ يتقلص النموذج إلى ثلثي عرض الصفحة، فيضيق عموداه حتى يقاربا عرضهما عند ⁦720⁩)؛ وسحب بطيء عبر كل نطاق؛ و⁦1920⁩، لأن شيفرة CSS لا تحدد عرضاً أقصى فتطول الأسطر كثيراً.

التدوير: هاتف ⁦360 × 740⁩ يُدار إلى ⁦740 × 360⁩ فيعبر ⁦720⁩، فيظهر عمودان بينما يشغل الشريط الثابت جزءاً من منفذ عرض لا يتجاوز ارتفاعه ⁦360⁩ بكسل؛ ويجب أن تبقى التواريخ والأسماء المُدخلة. التكبير: نافذة عرضها ⁦1280⁩ بكسل عند ⁦200%⁩ (⁦640⁩، عمود واحد مع الشريط) وعند ⁦400%⁩ (⁦320⁩، إعادة تدفق دون تمرير أفقي؛ ويتقلص ارتفاع منفذ العرض بالنسبة نفسها، فتحقق من أن الشريط لا يغطي معظم الشاشة).

ابحث أولاً عن الشريط وهو يغطي الحقل الأخير أو زر الحجز، وعن تسميات مقطوعة فوق ⁦720⁩ مباشرة، وعن ضياع المدخلات عند التدوير. وعلى هاتف حقيقي أكّد سلوك الشريط مع لوحة المفاتيح مفتوحة ومع ظهور أشرطة المتصفح واختفائها، وحجم أهداف اللمس.

أسئلة شائعة

ما أحجام الشاشات التي يجب أن أختبرها؟

ابدأ من نقاط التوقف في المنتج وأصغر عرض يدعمه، لا من قائمة أجهزة: جانبا كل نقطة توقف، و⁦320⁩ بكسل CSS، وسحب عبر كل نطاق، وشاشة عريضة جداً. ثم تحدد بيانات أجهزة مستخدميك الأجهزة الحقيقية التي تؤكد عليها، وهذا موضوع الاختبار عبر المتصفحات والأجهزة.

هل اختبار التصميم المتجاوب هو نفسه اختبار الجوال؟

لا. يتحقق اختبار التصميم المتجاوب من تكيّف صفحة ويب واحدة مع الأحجام والاتجاهات ومستويات التكبير، ويمكن إجراء كثير منه على حاسوب. أما اختبار الجوال فيشمل أيضاً التطبيقات الأصلية وعتاد الجهاز والشبكات والمقاطعات والتثبيت والتحديثات.

هل التكبير يساوي اختبار شاشة أصغر؟

من ناحية التخطيط، غالباً نعم: تكبير المتصفح يضيّق منفذ العرض ببكسلات CSS ويفعّل استعلامات الوسائط نفسها. لكنه لا يجلب اللمس ولا لوحة المفاتيح على الشاشة ولا واجهة متصفح الجوال، فهو يفحص تكبير النص وإعادة التدفق، لا تجربة الهاتف.

المراجع

  • Web Content Accessibility Guidelines (WCAG) 2.2W3C · 2024توصية W3C التي تحدد معايير النجاح القابلة للاختبار لإتاحة محتوى الويب، مرتّبةً تحت أربعة مبادئ وثلاثة مستويات مطابقة (A وAA وAAA).
  • Understanding WCAG 2.2W3C Web Accessibility Initiative (WAI)الشرح التوضيحي لكل إرشاد ومعيار نجاح في WCAG 2.2: الغرض، ومن يستفيد، والأمثلة والتقنيات (غير إلزامي).
  • Responsive web design — MDNMDN Web Docs (Mozilla)التصميم المتجاوب عملياً: تخطيطات مرنة باستخدام flexbox وgrid، واستعلامات الوسائط، ووسم viewport، لتعمل الصفحة نفسها على مختلف أحجام الشاشات.
  • Responsive web design basicsGoogle (web.dev)أساسيات التصميم المتجاوب: ضبط منفذ العرض (viewport)، وتحجيم المحتوى ليلائمه، واستخدام استعلامات الوسائط بنقاط توقف يحددها المحتوى لا الجهاز.

تدرّب بأدوات متقن

ولّد القيم الحدّية (min-1 وmin وmin+1 والقيمة الاسمية وmax-1 وmax وmax+1) للقيود الرقمية وقيود الطول.

تصميم الاختبارات

تجميل CSS بتصريح واحد في كل سطر، مع خيارات المسافة البادئة وترتيب الناتج.

التنسيق

تحليل سلاسل User-Agent إلى المتصفح والإصدار والمحرك ونظام التشغيل ونوع الجهاز مع كشف الروبوتات.

الويب

ولّد نصاً بديلاً (placeholder) على شكل فقرات أو جمل أو كلمات — باللاتينية أو العربية أو الهندية.

أدوات مساعدة

ولّد سيناريوهات اختبار عالية المستوى تغطي الجوانب الوظيفية والسلبية والأمنية وسهولة الاستخدام والتوافق لأي ميزة.

تصميم الاختبارات

للتعمّق أكثر

تقدّمك في هذا الموضوع

جزء من مسار تعلم ضمان الجودة