اختبار التصميم المتجاوب
يتحقق اختبار التصميم المتجاوب (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. - سحبٌ بطيء عبر كل نطاق، لأن التخطيط المرن ينكسر أيضاً بين نقاط التوقف، وغالباً قرب الطرف الضيق.
- شاشة عريضة جداً يجب أن يتوقف فيها المحتوى عند عرضه الأقصى، وارتفاعات قصيرة مثل هاتف في الوضع الأفقي.
اتجاه الشاشة والتكبير وإعادة التدفق
تدوير الهاتف يبدّل عرض منفذ العرض وارتفاعه: فعرض 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%: عمودان ثم عمود واحد، وكل وظيفة في المتناول.
عروض الاختبار المخطط لها
المحور مختصر بين 1300 و1850: ليس بمقياس الرسم
- 320–599عمود واحد · زر القائمة
- 600–1023عمودان · زر القائمة
- ≥ 1024أربعة أعمدة · شريط القائمة الكامل
- 1320 px أصغر عرض مدعومإعادة التدفق في WCAG 1.4.10: بلا تمرير أفقي
- 2599 | 600 نقطة التوقف الأولى: اختبر جانبيهاعمود واحد ← عمودان
- 31023 | 1024 نقطة التوقف الثانية: اختبر جانبيهازر القائمة ← شريط القائمة الكامل
- 41920 px شاشة عريضة جداًيتوقف المحتوى عند 1200 ويتوسط الشاشة
الصفحة نفسها: تكبير نافذة بعرض 1280 وتدوير هاتف
المحور مختصر بين 1300 و1850: ليس بمقياس الرسم
- 320–599عمود واحد · زر القائمة
- 600–1023عمودان · زر القائمة
- ≥ 1024أربعة أعمدة · شريط القائمة الكامل
- 1100% نافذة حاسوب عند 100%أربعة أعمدة
- 2200% النافذة نفسها عند 200%640 بكسل CSS: عمودان
- 3400% النافذة نفسها عند 400%320 بكسل CSS: عمود واحد، فحص إعادة التدفق
- 4360 × 740 هاتف في الوضع العموديعمود واحد، والمرشحات مختارة
- 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.
عيوب التجاوب الشائعة
- التمرير الأفقي: عرض ثابت، أو كلمة أو رابط طويل بلا مواضع للفصل، أو جدول عريض، أو صورة بلا عرض أقصى.
- محتوى مغطّى أو بعيد المنال: ترويسة أو تذييل ثابت فوق حقل أو زر، أو مربع حوار أطول من منفذ عرض قصير ولا يمكن تمريره.
- وظائف مفقودة: إجراء مخفي بـ
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; }
}- اكتب نقاط التوقف وتخطيط كل نطاق.
- اختر العروض، ثم أضف فحوص التدوير والتكبير.
- سمِّ العيوب المرجّحة وما لا يستطيع شريط أدوات الأجهزة حسمه.
إظهار الإجابة النموذجية
النطاقات: من 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.2توصية W3C التي تحدد معايير النجاح القابلة للاختبار لإتاحة محتوى الويب، مرتّبةً تحت أربعة مبادئ وثلاثة مستويات مطابقة (A وAA وAAA).
- Understanding WCAG 2.2الشرح التوضيحي لكل إرشاد ومعيار نجاح في WCAG 2.2: الغرض، ومن يستفيد، والأمثلة والتقنيات (غير إلزامي).
- Responsive web design — MDNالتصميم المتجاوب عملياً: تخطيطات مرنة باستخدام flexbox وgrid، واستعلامات الوسائط، ووسم viewport، لتعمل الصفحة نفسها على مختلف أحجام الشاشات.
- Responsive web design basicsأساسيات التصميم المتجاوب: ضبط منفذ العرض (viewport)، وتحجيم المحتوى ليلائمه، واستخدام استعلامات الوسائط بنقاط توقف يحددها المحتوى لا الجهاز.
تدرّب بأدوات متقن
ولّد القيم الحدّية (min-1 وmin وmin+1 والقيمة الاسمية وmax-1 وmax وmax+1) للقيود الرقمية وقيود الطول.
تجميل CSS بتصريح واحد في كل سطر، مع خيارات المسافة البادئة وترتيب الناتج.
تحليل سلاسل User-Agent إلى المتصفح والإصدار والمحرك ونظام التشغيل ونوع الجهاز مع كشف الروبوتات.
ولّد نصاً بديلاً (placeholder) على شكل فقرات أو جمل أو كلمات — باللاتينية أو العربية أو الهندية.
ولّد السجلات نفسها بلغات متعددة (الإنجليزية والعربية والهندية وغيرها) لاختبار التدويل (i18n) واختلاط RTL/LTR.
ولّد سيناريوهات اختبار عالية المستوى تغطي الجوانب الوظيفية والسلبية والأمنية وسهولة الاستخدام والتوافق لأي ميزة.
للتعمّق أكثر
تقدّمك في هذا الموضوع
سجّل الدخول لتتابع تقدّمك
علّم الموضوعات مكتملة، وتابع من حيث توقفت، وافتح امتحانات التخصص.