रेस्पॉन्सिव टेस्टिंग

Responsive testing यह जाँचती है कि web page हर उस viewport size, orientation और zoom level पर अपना content और functions इस्तेमाल लायक रखे जिसे product support करता है। उसकी CSS breakpoints पर layout बदलती है, जैसे phone पर products का एक column, tablet पर दो और laptop पर चार। आप size बदलते हैं, screen घुमाते हैं और zoom करते हैं, और जाँचते हैं कि कुछ कटा, ढका, पहुँच से बाहर या खोया तो नहीं।

यह lesson "टेस्टर्स के लिए CSS बेसिक्स" की media queries और "टेस्टर्स के लिए ब्राउज़र DevTools" के device toolbar पर बनता है।

यह क्यों ज़रूरी है

जो layout सिर्फ़ design की widths पर चलता है, वह असली लोगों को निराश करता है: sticky footer के नीचे छिपा pay button, landscape में न खुलने वाला menu, आधी कटी price। जब user काम पूरा न कर सके, तो यह cosmetic नहीं, functional failure है।

W3C का accessibility standard WCAG 2.2 इसका एक हिस्सा testable बनाता है: 320 CSS pixels पर reflow (success criterion 1.4.10), 200% तक बड़ा हो सकने वाला text (1.4.4) और किसी एक orientation में बँधा न होना (1.3.4)।

Viewport और breakpoints: widths चुनना

Viewport वह जगह है जिसमें page का layout बनता है, और इसे CSS pixels में नापा जाता है। Mobile browsers इसका size <meta name="viewport" content="width=device-width, initial-scale=1"> से तय करते हैं; इस tag के बिना वे page को desktop जैसी width पर बनाकर छोटा कर देते हैं। Breakpoint वह width (कभी-कभी height) है जिस पर media query layout बदल देती है; media query ऐसे CSS rules हैं जो तभी लागू होते हैं जब min-width: 600px जैसी कोई शर्त सच हो। Breakpoints के बीच fluid layout viewport के साथ फैलता और सिकुड़ता है।

हर breakpoint दो layouts के बीच की boundary है, इसलिए एक layout की आख़िरी width और अगले layout की पहली width टेस्ट करें: एक pixel से गलत media query सिर्फ़ इन्हीं दो widths पर fail होती है। Boundary value analysis वाला lesson इस technique को विस्तार से समझाता है। Breakpoints को popular phones की list से नहीं, design system से या ख़ुद CSS से लें (उसमें @media खोजें; CSS Formatter minified stylesheet को पढ़ने लायक बना देता है), क्योंकि layout breakpoints पर ही बदलता है।

  • सबसे छोटी supported width, आम तौर पर 320 CSS pixels।
  • हर breakpoint के दोनों तरफ़: min-width: 600px के लिए 599 और 600, लेकिन max-width: 600px के लिए 600 और 601।
  • हर range में धीरे-धीरे drag, क्योंकि fluid layouts breakpoints के बीच भी टूटते हैं, ज़्यादातर संकरे सिरे के पास।
  • बहुत चौड़ी screen, जहाँ content को अपनी maximum width पर रुकना चाहिए, और कम heights, जैसे landscape में phone।

आज़माएँ: बाउंड्री वैल्यू जनरेटर आज़माएँ: CSS फ़ॉर्मेटर

Orientation, zoom और reflow

Phone घुमाने से viewport की width और height आपस में बदल जाती हैं: portrait में 360 CSS pixels की width landscape में 740 हो सकती है और काम के बीच में कोई breakpoint पार कर सकती है। WCAG का criterion 1.3.4 कहता है कि content एक orientation में बँधा न हो, जब तक कोई ख़ास orientation ज़रूरी न हो।

Computer पर browser zoom हर CSS pixel को बड़ा करता है, इसलिए viewport संकरा होता है: 1280 CSS pixels चौड़ी window 200% पर 640 और 400% पर 320 की होती है, और छोटी screen जैसी ही media queries चलती हैं। Criterion 1.4.4 कहता है कि text बिना content या function खोए 200% तक बड़ा हो सके; 1.4.10 कहता है कि 320 CSS pixels पर content दो दिशाओं में scroll किए बिना काम करे, सिवाय data tables और maps जैसे हिस्सों के। Phone पर pinch zoom page को दोबारा layout किए बिना सिर्फ़ बड़ा दिखाता है, इसलिए वह reflow टेस्ट नहीं करता।

  • काम के बीच में screen घुमाएँ: typed text, filters, scroll position और खुले dialogs बचे रहने चाहिए।
  • Browser की font-size setting से सिर्फ़ text बड़ा करें, ताकि labels काटने वाले fixed-height boxes सामने आएँ।
  • Viewport tag में user-scalable=no, या 2 से कम maximum-scale जैसे maximum-scale=1, report करें: ये लोगों को page बड़ा करने से रोकने की कोशिश करते हैं, जिससे page criterion 1.4.4 में fail होता है।

Worked example: product list का test plan

एक shop की product list 600 CSS pixels से कम पर एक column और menu button, 600 से दो columns, 1024 से चार columns और पूरा menu bar दिखाती है, और content कभी 1200 से ज़्यादा चौड़ा नहीं होता। CSS mobile-first है, @media (min-width: 600px) और @media (min-width: 1024px), इसलिए 600 और 1024 हर नए layout की पहली widths हैं।

Tester नीचे वाला plan device toolbar में चलाता है, फिर add-to-basket flow एक real Android phone और एक real iPhone पर दोहराता है। दो defects मिलते हैं: 600 से 680 pixels तक "Add to basket" label कट जाता है, और phone घुमाने पर चुने हुए filters साफ़ हो जाते हैं। दूसरे defect की report plan के बाद है।

  • 320 × 640: minimum और reflow width; एक column, कोई sideways scrolling नहीं।
  • 599 और 600, 1023 और 1024: हर breakpoint के दोनों तरफ़, साथ में हर range में धीमा drag।
  • 1920 × 1080: content 1200 pixels पर रुका हुआ, बीच में।
  • Filter करते हुए 360 × 740 को घुमाकर 740 × 360: दो columns, filters और scroll position बचे हुए।
  • 1280 pixels की window 200% और 400% पर: पहले दो columns, फिर एक, और हर function पहुँच में।
600 और 1024 CSS px पर breakpoints वाली product list: 320, हर breakpoint के दोनों तरफ़ और चौड़ी screen टेस्ट करें; 1280 px window को zoom करना या phone घुमाना page को दूसरे layout में ले जाता है।

Plan की गई test widths

अक्ष 320 px से 1920 px तक

1300 और 1850 के बीच अक्ष छोटा किया गया है: पैमाने पर नहीं

  • 320–599एक column · menu button
  • 600–1023दो columns · menu button
  • ≥ 1024चार columns · पूरा menu bar
  1. 1320 px सबसे छोटी supported widthWCAG 1.4.10 Reflow: कोई sideways scrolling नहीं
  2. 2599 | 600 breakpoint 1: दोनों तरफ़ टेस्ट करेंएक column → दो columns
  3. 31023 | 1024 breakpoint 2: दोनों तरफ़ टेस्ट करेंmenu button → पूरा menu bar
  4. 41920 px बहुत चौड़ी screencontent 1200 पर रुककर बीच में

वही page: 1280 px window पर zoom, घुमाया गया phone

अक्ष 320 px से 1920 px तक

1300 और 1850 के बीच अक्ष छोटा किया गया है: पैमाने पर नहीं

  • 320–599एक column · menu button
  • 600–1023दो columns · menu button
  • ≥ 1024चार columns · पूरा menu bar
  1. 1100% laptop window 100% परचार columns
  2. 2200% वही window 200% पर640 CSS px: दो columns
  3. 3400% वही window 400% पर320 CSS px: एक column, reflow check
  4. 4360 × 740 portrait में phoneएक column, filters चुने हुए
  5. 5740 × 360 वही phone landscape में600 पार: दो columns, पर filters साफ़ हो गएफ़ेल

Widths CSS pixels में हैं। Phone एक उदाहरण है जिसका viewport 360 × 740 है।

Title:    Product list: phone घुमाने के बाद चुने हुए filters साफ़ हो जाते हैं
Where:    /products, build 3.8.0, staging पर
Device:   real Android phone, Chrome; device toolbar में भी, 360 x 740 से 740 x 360
Steps:    1. Product list portrait में खोलें (viewport 360 x 740)
          2. Filters "Size 42" और "Colour: black" चुनें
          3. Phone को landscape में घुमाएँ (viewport 740 x 360)
Expected: 2-column layout, दोनों filters चुने हुए, list filtered
Actual:   2-column layout, filters साफ़, पूरी unfiltered list दिखती है
Notes:    Desktop window को 600 px के आर-पार resize करने पर भी होता है, इसलिए
          यह device से नहीं, breakpoint से जुड़ा है। Width 600 के एक ही तरफ़
          रहे तो कुछ नहीं खोता।

आज़माएँ: टेस्ट सिनेरियो जनरेटर

Device toolbar क्या बता सकता है और क्या नहीं

इस sweep के लिए device toolbar सही tool है: exact sizes लिखें या किसी range में drag करें, rotate करें, और Chrome में media queries को page के ऊपर bars के रूप में देखें। Device preset उस phone का user agent भी भेजता है, जिसे आप User-Agent Parser में पढ़ सकते हैं। फिर भी यह phone की नकल करता desktop browser ही है, इसलिए layout पर निर्भर flows real devices पर पक्के करें। यह reproduce नहीं करता:

  • Phone का engine: Chrome में iPhone preset page को Safari के WebKit से render नहीं करता।
  • छिपने और लौटने वाले mobile browser bars; 100vh उनके छिपे होने वाली height है, इसलिए full-height panel का निचला किनारा छिप सकता है।
  • On-screen keyboard, जो focused field या fixed submit button छिपा सकता है।
  • उँगली की कम सटीकता: WCAG 2.5.8 में fail होने वाले छोटे या पास-पास के targets (24 × 24 CSS pixels या पर्याप्त spacing) mouse से ठीक लगते हैं।
  • Phone की text-size settings और उसकी असली performance: CPU और network throttling सिर्फ़ उसका अनुमान देते हैं। Toolbar का अपना zoom सिर्फ़ preview का size बदलता है, CSS viewport नहीं।

आज़माएँ: User-Agent पार्सर

आम responsive defects

  • Horizontal scrolling: fixed width, बिना टूटा लंबा शब्द या URL, चौड़ी table या बिना maximum width की image।
  • ढका या पहुँच से बाहर content: field या button के ऊपर sticky header या footer, या छोटे viewport से लंबा dialog जो scroll नहीं होता।
  • गायब functions: mobile पर display: none से छिपा action जिस तक कोई और रास्ता नहीं, या landscape में न खुलने या scroll न होने वाला menu।
  • कटा text और खोई state: लंबे translations या बड़े text से कटे labels; rotation के बाद typed input या filters reset, अक्सर इसलिए कि page breakpoint पर components बदल देता है।
  • Queries के बीच gaps और overlaps: max-width: 767px के साथ min-width: 768px होने पर 767.5 जैसी fractional widths पर कोई rule लागू नहीं होता, जो कुछ high-density screens और zoom levels पर आती हैं; max-width: 768px के साथ min-width: 768px होने पर 768 पर दोनों लागू होते हैं।
  • खिंची, कटी या धुंधली images, और right-to-left pages में गलत तरफ़ से खिसककर आने वाला mobile menu।

आज़माएँ: Lorem Ipsum जनरेटर आज़माएँ: बहुभाषी टेस्ट डेटा जनरेटर

आम गलतियाँ

  • Product के breakpoints के दोनों तरफ़ टेस्ट करने और उनके बीच की ranges में drag करने की जगह device list से widths चुनना।
  • Device toolbar में pass होने को इस बात का सबूत मानना कि page phones पर चलता है।
  • Layout सिर्फ़ page load होने के बाद जाँचना, और काम के बीच में कभी rotate, resize या zoom न करना।
  • 320 CSS pixels पर sideways scrolling या blocked zoom को cosmetic मानना; दोनों accessibility failures हैं।

QA का नज़रिया

Refinement या design review में breakpoints, सबसे छोटी supported width और हर layout में क्या होना चाहिए, यह माँगें। Phones पर गायब होने वाला function product का फ़ैसला होना चाहिए, संयोग नहीं।

Bug reports में वह range लिखें जहाँ failure शुरू और ख़त्म होता है (600 से 680 तक fail, 681 पर ठीक), orientation, zoom level, browser, यह कि real device था या emulation, और failing width पर screenshot। Fixes को सबसे नज़दीकी breakpoint के दोनों तरफ़ दोबारा टेस्ट करें, क्योंकि fix अक्सर problem को अगली range में खिसका देता है।

अभ्यास

Booking form के responsive checks plan करें

आपका काम

एक hotel booking page नीचे वाली CSS इस्तेमाल करता है। Form 720 CSS pixels से दो columns का है; price summary 1100 pixels तक screen के नीचे fixed bar है, और वहाँ से side column बन जाता है। सबसे छोटी supported width 320 है।

हर width उसकी वजह के साथ, एक rotation check और दो zoom checks, सबसे पहले ढूँढे जाने वाले defects और real phone पर पक्की की जाने वाली बातें लिखें।

सामग्री
.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. Breakpoints और हर range का layout लिखें।
  2. Widths चुनें, फिर rotation और zoom checks जोड़ें।
  3. संभावित defects और वे बातें बताएँ जिन्हें device toolbar तय नहीं कर सकता।
मॉडल उत्तर दिखाएँ
मॉडल उत्तर

Ranges: 320 से 719 तक bar के साथ एक column; 720 से 1099 तक bar के साथ दो columns; 1100 और ऊपर summary column के बगल में form के दो columns। Widths: 320 (minimum और reflow); 719 और 720 (form breakpoint के दोनों तरफ़); 1099 और 1100 (summary breakpoint के दोनों तरफ़: 1100 पर form page की दो-तिहाई width में सिमट जाता है, इसलिए उसके columns लगभग 720 जितने संकरे हो जाते हैं); हर range में धीमा drag; और 1920, क्योंकि CSS कोई maximum width तय नहीं करती और lines बहुत लंबी हो जाती हैं।

Rotation: 360 × 740 phone को घुमाकर 740 × 360 करने पर 720 पार होता है, दो columns आते हैं जबकि fixed bar सिर्फ़ 360 pixels ऊँचे viewport का हिस्सा घेरता है; भरी गई dates और names बचे रहने चाहिए। Zoom: 1280 pixels की window 200% पर (640, bar के साथ एक column) और 400% पर (320, बिना sideways scrolling के reflow; viewport की height भी उसी अनुपात में घटती है, इसलिए जाँचें कि bar screen का ज़्यादातर हिस्सा न ढके)।

सबसे पहले ढूँढें: आख़िरी field या booking button को ढकता bar, 720 के ठीक ऊपर कटे labels, और rotation पर खोया input। Real phone पर keyboard खुला होने पर और browser bars दिखने-छिपने पर bar का व्यवहार, और tap targets का size पक्का करें।

अक्सर पूछे जाने वाले सवाल

मुझे कौन-से screen sizes टेस्ट करने चाहिए?

Device list से नहीं, product के breakpoints और सबसे छोटी supported width से शुरू करें: हर breakpoint के दोनों तरफ़, 320 CSS pixels, हर range में drag और एक बहुत चौड़ी screen। फिर आपके users के devices का data तय करता है कि किन real devices पर पक्का करना है, जो cross-browser और cross-device testing का विषय है।

क्या responsive testing और mobile testing एक ही हैं?

नहीं। Responsive testing जाँचती है कि एक web page sizes, orientations और zoom levels के साथ कैसे ढलता है, और इसका बड़ा हिस्सा computer पर हो सकता है। Mobile testing में native apps, device hardware, networks, interruptions, installation और updates भी आते हैं।

क्या zoom करना छोटी screen टेस्ट करने जैसा ही है?

Layout के लिए ज़्यादातर हाँ: browser zoom CSS pixels में viewport को संकरा करता है और वही media queries चलाता है। लेकिन इसमें touch, on-screen keyboard या mobile browser interface नहीं आते, इसलिए यह resize और reflow जाँचता है, phone का अनुभव नहीं।

संदर्भ

  • Web Content Accessibility Guidelines (WCAG) 2.2W3C · 2024W3C की Recommendation जो सुलभ वेब कंटेंट के लिए टेस्ट करने योग्य success criteria तय करती है — चार सिद्धांतों और तीन conformance स्तरों (A, AA, AAA) में व्यवस्थित।
  • Understanding WCAG 2.2W3C Web Accessibility Initiative (WAI)WCAG 2.2 की हर guideline और success criterion की व्याख्या: उद्देश्य, किसे लाभ, उदाहरण और तकनीकें (नॉर्मेटिव नहीं)।
  • Responsive web design — MDNMDN Web Docs (Mozilla)व्यवहार में responsive design: flexbox और grid से लचीले layout, media queries और viewport meta tag, ताकि एक ही पेज हर स्क्रीन साइज़ पर चले।
  • Responsive web design basicsGoogle (web.dev)responsive design की बुनियादी बातें: viewport सेट करना, content को उसमें फ़िट करना, और ऐसे breakpoints वाली media queries जिन्हें डिवाइस नहीं बल्कि content तय करे।

Mutqan tools से अभ्यास करें

हर declaration अलग लाइन पर, इंडेंटेशन और सॉर्टिंग विकल्पों के साथ CSS सुंदर बनाएँ।

फ़ॉर्मेटिंग

User-Agent स्ट्रिंग से ब्राउज़र, वर्शन, इंजन, OS, डिवाइस टाइप और बॉट की पहचान करें।

वेब

पैराग्राफ़, वाक्य या शब्दों के रूप में प्लेसहोल्डर टेक्स्ट बनाएँ — लैटिन, अरबी या हिंदी में।

यूटिलिटीज़

i18n और RTL/LTR मिश्रण जाँचने के लिए एक ही रिकॉर्ड कई भाषाओं (अंग्रेज़ी, अरबी, हिंदी और अन्य) में जनरेट करें।

टेस्ट डेटा

किसी फ़ीचर के लिए functional, negative, security, usability और compatibility पहलुओं को कवर करने वाले उच्च-स्तरीय टेस्ट सिनेरियो जनरेट करें।

टेस्ट डिज़ाइन

और गहराई से

इस topic में आपकी प्रगति

QA रोडमैप का हिस्सा